From ff8b002c3b2bc68bdf4b88c1687a711d2d7c0ca6 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Thu, 10 Oct 2013 13:56:06 -0500 Subject: Quite down log spam from loading shaders. Up bone cap to 64 for rigged meshes. --- .../shaders/class1/avatar/objectSkinV.glsl | 38 +++++++-- .../shaders/class1/deferred/alphaF.glsl | 1 + indra/newview/lldrawpoolavatar.cpp | 40 ++++++++- indra/newview/llviewermenu.cpp | 4 + indra/newview/llvoavatar.cpp | 96 +++++++++++++++++++++- indra/newview/llvoavatar.h | 1 + indra/newview/pipeline.h | 19 +++-- indra/newview/skins/default/xui/en/menu_viewer.xml | 10 +++ 8 files changed, 185 insertions(+), 24 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl index efd0d03965..3bbcf32482 100755 --- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl @@ -26,7 +26,9 @@ ATTRIBUTE vec4 weight4; -uniform mat4 matrixPalette[32]; +uniform mat3 matrixPalette[64]; +uniform vec3 translationPalette[64]; + mat4 getObjectSkinnedTransform() { @@ -34,15 +36,35 @@ mat4 getObjectSkinnedTransform() vec4 w = fract(weight4); vec4 index = floor(weight4); - + + index = min(index, vec4(63.0)); + index = max(index, vec4( 0.0)); + float scale = 1.0/(w.x+w.y+w.z+w.w); w *= scale; - - mat4 mat = matrixPalette[int(index.x)]*w.x; - mat += matrixPalette[int(index.y)]*w.y; - mat += matrixPalette[int(index.z)]*w.z; - mat += matrixPalette[int(index.w)]*w.w; + + int i1 = int(index.x); + int i2 = int(index.y); + int i3 = int(index.z); + int i4 = int(index.w); - return mat; + mat3 mat = matrixPalette[i1]*w.x; + mat += matrixPalette[i2]*w.y; + mat += matrixPalette[i3]*w.z; + mat += matrixPalette[i4]*w.w; + + vec3 trans = translationPalette[i1]*w.x; + trans += translationPalette[i2]*w.y; + trans += translationPalette[i3]*w.z; + trans += translationPalette[i4]*w.w; + + mat4 ret; + + ret[0] = vec4(mat[0], 0); + ret[1] = vec4(mat[1], 0); + ret[2] = vec4(mat[2], 0); + ret[3] = vec4(trans, 1.0); + + return ret; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index e5f7366b70..2b5f001873 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -534,6 +534,7 @@ void main() #ifdef FOR_IMPOSTOR vec4 color; color.rgb = diff.rgb; + color.a = 1.0; #ifdef USE_VERTEX_COLOR float final_alpha = diff.a * vertex_color.a; diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index f622d5a63a..e77ed27fa2 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1708,9 +1708,9 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) { if (sShaderLevel > 0) { //upload matrix palette to shader - LLMatrix4 mat[32]; + LLMatrix4 mat[64]; - U32 count = llmin((U32) skin->mJointNames.size(), (U32) 32); + U32 count = llmin((U32) skin->mJointNames.size(), (U32) 64); for (U32 i = 0; i < count; ++i) { @@ -1724,10 +1724,42 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) stop_glerror(); - LLDrawPoolAvatar::sVertexProgram->uniformMatrix4fv(LLViewerShaderMgr::AVATAR_MATRIX, + F32 mp[64*9]; + + F32 transp[64*3]; + + for (U32 i = 0; i < count; ++i) + { + F32* m = (F32*) mat[i].mMatrix; + + U32 idx = i*9; + + mp[idx+0] = m[0]; + mp[idx+1] = m[1]; + mp[idx+2] = m[2]; + + mp[idx+3] = m[4]; + mp[idx+4] = m[5]; + mp[idx+5] = m[6]; + + mp[idx+6] = m[8]; + mp[idx+7] = m[9]; + mp[idx+8] = m[10]; + + idx = i*3; + + transp[idx+0] = m[12]; + transp[idx+1] = m[13]; + transp[idx+2] = m[14]; + } + + LLDrawPoolAvatar::sVertexProgram->uniformMatrix3fv(LLViewerShaderMgr::AVATAR_MATRIX, count, FALSE, - (GLfloat*) mat[0].mMatrix); + (GLfloat*) mp); + + LLDrawPoolAvatar::sVertexProgram->uniform3fv(LLShaderMgr::AVATAR_TRANSLATION, count, transp); + stop_glerror(); } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index ac2940fcfc..fb07ab8fbe 100755 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1025,6 +1025,10 @@ U32 info_display_from_string(std::string info_display) { return LLPipeline::RENDER_DEBUG_AVATAR_VOLUME; } + else if ("joints" == info_display) + { + return LLPipeline::RENDER_DEBUG_AVATAR_JOINTS; + } else if ("raycast" == info_display) { return LLPipeline::RENDER_DEBUG_RAYCAST; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index fe035a0a7f..bd33ddf1a5 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -1392,9 +1392,11 @@ void LLVOAvatar::getSpatialExtents(LLVector4a& newMin, LLVector4a& newMax) //----------------------------------------------------------------------------- void LLVOAvatar::renderCollisionVolumes() { + std::ostringstream ostr; for (S32 i = 0; i < mNumCollisionVolumes; i++) { mCollisionVolumes[i].renderCollision(); + ostr << mCollisionVolumes[i].getName() << ", "; } if (mNameText.notNull()) @@ -1403,6 +1405,96 @@ void LLVOAvatar::renderCollisionVolumes() mNameText->lineSegmentIntersect(unused, unused, unused, TRUE); } + + mDebugText.clear(); + addDebugText(ostr.str()); +} + +void LLVOAvatar::renderJoints() +{ + std::ostringstream ostr; + std::ostringstream nullstr; + + for (joint_map_t::iterator iter = mJointMap.begin(); iter != mJointMap.end(); ++iter) + { + LLJoint* jointp = iter->second; + if (!jointp) + { + nullstr << iter->first << " is NULL" << std::endl; + continue; + } + + ostr << jointp->getName() << ", "; + + jointp->updateWorldMatrix(); + + gGL.pushMatrix(); + gGL.multMatrix( &jointp->getXform()->getWorldMatrix().mMatrix[0][0] ); + + gGL.diffuseColor3f( 1.f, 0.f, 1.f ); + + gGL.begin(LLRender::LINES); + + LLVector3 v[] = + { + LLVector3(1,0,0), + LLVector3(-1,0,0), + LLVector3(0,1,0), + LLVector3(0,-1,0), + + LLVector3(0,0,-1), + LLVector3(0,0,1), + }; + + //sides + gGL.vertex3fv(v[0].mV); + gGL.vertex3fv(v[2].mV); + + gGL.vertex3fv(v[0].mV); + gGL.vertex3fv(v[3].mV); + + gGL.vertex3fv(v[1].mV); + gGL.vertex3fv(v[2].mV); + + gGL.vertex3fv(v[1].mV); + gGL.vertex3fv(v[3].mV); + + + //top + gGL.vertex3fv(v[0].mV); + gGL.vertex3fv(v[4].mV); + + gGL.vertex3fv(v[1].mV); + gGL.vertex3fv(v[4].mV); + + gGL.vertex3fv(v[2].mV); + gGL.vertex3fv(v[4].mV); + + gGL.vertex3fv(v[3].mV); + gGL.vertex3fv(v[4].mV); + + + //bottom + gGL.vertex3fv(v[0].mV); + gGL.vertex3fv(v[5].mV); + + gGL.vertex3fv(v[1].mV); + gGL.vertex3fv(v[5].mV); + + gGL.vertex3fv(v[2].mV); + gGL.vertex3fv(v[5].mV); + + gGL.vertex3fv(v[3].mV); + gGL.vertex3fv(v[5].mV); + + gGL.end(); + + gGL.popMatrix(); + } + + mDebugText.clear(); + addDebugText(ostr.str()); + addDebugText(nullstr.str()); } BOOL LLVOAvatar::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, @@ -3077,9 +3169,6 @@ void LLVOAvatar::forceUpdateVisualMuteSettings() //------------------------------------------------------------------------ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) { - // clear debug text - mDebugText.clear(); - if (gSavedSettings.getBOOL("DebugAvatarAppearanceMessage")) { S32 central_bake_version = -1; @@ -3588,6 +3677,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) { setDebugText(mDebugText); } + mDebugText.clear(); //mesh vertices need to be reskinned mNeedsSkin = TRUE; diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 931e65b3ea..5d897ee44e 100755 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -406,6 +406,7 @@ public: F32 getLastSkinTime() { return mLastSkinTime; } U32 renderTransparent(BOOL first_pass); void renderCollisionVolumes(); + void renderJoints(); static void deleteCachedImages(bool clearAll=true); static void destroyGL(); static void restoreGL(); diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 9aeb2d4978..1c7154d413 100755 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -535,15 +535,16 @@ public: RENDER_DEBUG_SHADOW_FRUSTA = 0x00040000, RENDER_DEBUG_SCULPTED = 0x00080000, RENDER_DEBUG_AVATAR_VOLUME = 0x00100000, - RENDER_DEBUG_BUILD_QUEUE = 0x00200000, - RENDER_DEBUG_AGENT_TARGET = 0x00400000, - RENDER_DEBUG_UPDATE_TYPE = 0x00800000, - RENDER_DEBUG_PHYSICS_SHAPES = 0x01000000, - RENDER_DEBUG_NORMALS = 0x02000000, - RENDER_DEBUG_LOD_INFO = 0x04000000, - RENDER_DEBUG_RENDER_COMPLEXITY = 0x08000000, - RENDER_DEBUG_ATTACHMENT_BYTES = 0x10000000, - RENDER_DEBUG_TEXEL_DENSITY = 0x20000000 + RENDER_DEBUG_AVATAR_JOINTS = 0x00200000, + RENDER_DEBUG_BUILD_QUEUE = 0x00400000, + RENDER_DEBUG_AGENT_TARGET = 0x00800000, + RENDER_DEBUG_UPDATE_TYPE = 0x01000000, + RENDER_DEBUG_PHYSICS_SHAPES = 0x02000000, + RENDER_DEBUG_NORMALS = 0x04000000, + RENDER_DEBUG_LOD_INFO = 0x08000000, + RENDER_DEBUG_RENDER_COMPLEXITY = 0x10000000, + RENDER_DEBUG_ATTACHMENT_BYTES = 0x20000000, + RENDER_DEBUG_TEXEL_DENSITY = 0x40000000 }; public: diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index d635b8ee93..7d28d87f63 100755 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2571,6 +2571,16 @@ function="Advanced.ToggleInfoDisplay" parameter="collision skeleton" /> + + + + -- cgit v1.2.3 From 356db2b9b9e2c04d50cc37d0101f559b190f3578 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Mon, 21 Oct 2013 12:55:51 -0500 Subject: MAINT-3311 Add avatar_lad and avatar_skeleton changes from Jeremiah --- indra/newview/character/avatar_lad.xml | 148 +++++++++++++++++++++++++--- indra/newview/character/avatar_skeleton.xml | 10 +- 2 files changed, 144 insertions(+), 14 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index e5b385f4aa..b615d8d469 100755 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -3826,6 +3826,10 @@ name="BELLY" scale="0.075 0.04 0.03" pos="0.07 0 -0.07"/> + @@ -3844,7 +3848,16 @@ camera_elevation=".1" camera_distance="1" camera_angle="15"> - + + + + - + + + + - + + + + + + + - + + + + + + @@ -4162,7 +4220,16 @@ value_max="1.3" camera_elevation=".3" camera_distance=".8"> - + + + + - + + + + This resident has turned on 'Do Not Disturb' and will see your message later. + + [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] + (By name) (Resident) -- cgit v1.2.3 From 7d4deed8bef62cee1fc782a9676505136b231412 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Tue, 5 Nov 2013 17:47:00 -0500 Subject: STORM-1980/1983 Attempt to test alert message with a new uploaded sound --- indra/newview/llviewermessage.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index bcd535bb90..51260c98cd 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5960,21 +5960,21 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE); } - if (notificationID == "RegionRestartMinutes" || - notificationID == "RegionRestartSeconds") - { - // Get current UTC time, adjusted for the user's clock - // being off. - time_t utc_time; - utc_time = time_corrected(); - std::string timeStr = LLTrans::getString("ViewerMessageTime"); - LLSD substitution; - substitution["datetime"] = (S32) utc_time; - LLStringUtil::format(timeStr, substitution); - llsdBlock["TIME"] = timeStr; + if (notificationID == "RegionRestartMinutes" || + notificationID == "RegionRestartSeconds") + { + // Get current UTC time, adjusted for the user's clock + // being off. + time_t utc_time; + utc_time = time_corrected(); + std::string timeStr = LLTrans::getString("ViewerMessageTime"); + LLSD substitution; + substitution["datetime"] = (S32) utc_time; + LLStringUtil::format(timeStr, substitution); + llsdBlock["TIME"] = timeStr; - send_sound_trigger(LLUUID(gSavedSettings.getString("UISndAlert")), 1.0f); - } + send_sound_trigger(LLUUID("4b315701-1972-9e23-cdd8-23cbc8cb0f42"), 1.0f); + } LLNotificationsUtil::add(notificationID, llsdBlock); return true; -- cgit v1.2.3 From 21ff4de02669f04ca9afec8d3f5aa0b68864fd13 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Tue, 5 Nov 2013 17:57:56 -0500 Subject: STORM-1980/1983 Revert previous change --- indra/newview/llviewermessage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 51260c98cd..f66b3ba805 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5973,7 +5973,7 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) LLStringUtil::format(timeStr, substitution); llsdBlock["TIME"] = timeStr; - send_sound_trigger(LLUUID("4b315701-1972-9e23-cdd8-23cbc8cb0f42"), 1.0f); + send_sound_trigger(LLUUID(gSavedSettings.getString("UISndAlert")), 1.0f); } LLNotificationsUtil::add(notificationID, llsdBlock); -- cgit v1.2.3 From b8f1e2a7704bdac5ef270be21918317a17f77b2a Mon Sep 17 00:00:00 2001 From: "jeremiah@lindenlab.com" Date: Wed, 6 Nov 2013 11:30:39 -0500 Subject: updated avatar files --- indra/newview/character/avatar_lad.xml | 24 ++++++++++-------------- indra/newview/character/avatar_skeleton.xml | 7 +++---- 2 files changed, 13 insertions(+), 18 deletions(-) mode change 100755 => 100644 indra/newview/character/avatar_lad.xml mode change 100755 => 100644 indra/newview/character/avatar_skeleton.xml (limited to 'indra/newview') diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml old mode 100755 new mode 100644 index b615d8d469..884d16b94b --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -3826,10 +3826,6 @@ name="BELLY" scale="0.075 0.04 0.03" pos="0.07 0 -0.07"/> - @@ -4080,10 +4076,6 @@ name="RIGHT_PEC" scale="0.0367 0.0367 0.016" pos="0.031 0.005 -0.013"/> - @@ -4252,11 +4244,11 @@ + pos="-0.01 -0.024 -0.05"/> + pos="-0.01 0.024 -0.05"/> @@ -4275,8 +4267,8 @@ + scale="0 0 0" + pos="0 0 0"/> @@ -4634,6 +4626,10 @@ name="PELVIS" scale="-0.01 0.0 0.0" pos="0.01 0 0.0"/> + diff --git a/indra/newview/character/avatar_skeleton.xml b/indra/newview/character/avatar_skeleton.xml old mode 100755 new mode 100644 index 48cf419246..7ab20f8c6b --- a/indra/newview/character/avatar_skeleton.xml +++ b/indra/newview/character/avatar_skeleton.xml @@ -1,13 +1,12 @@ - + - - - + + -- cgit v1.2.3 From 662efccfb821c2bf61c286aeec97563d7f95a9f8 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Wed, 6 Nov 2013 15:11:11 -0500 Subject: STORM-1980/1983 Add debug setting UISndRestart and value. This UUID will need to be replaced with an official UUID once one has been established. --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llviewermessage.cpp | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 41aac583d7..be5f81e7e7 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12621,6 +12621,17 @@ Value 00000000-0000-0000-0000-000000000000 + UISndRestart + + Comment + Sound file for region restarting (uuid for sound asset) + Persist + 1 + Type + String + Value + 4b315701-1972-9e23-cdd8-23cbc8cb0f42 + UISndSnapshot Comment diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index f66b3ba805..48bfdc03ac 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5973,7 +5973,7 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) LLStringUtil::format(timeStr, substitution); llsdBlock["TIME"] = timeStr; - send_sound_trigger(LLUUID(gSavedSettings.getString("UISndAlert")), 1.0f); + send_sound_trigger(LLUUID(gSavedSettings.getString("UISndRestart")), 1.0f); } LLNotificationsUtil::add(notificationID, llsdBlock); -- cgit v1.2.3 From 3e429c1e11ab5d9a3279598fd671cee230d40afd Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Fri, 8 Nov 2013 16:15:36 -0500 Subject: STORM-1980/1983 Small XML cleanup. Changed notification type to Alert. Addes seconds field to notification message. --- indra/newview/llviewermessage.cpp | 2 +- indra/newview/skins/default/xui/en/notifications.xml | 6 ++---- indra/newview/skins/default/xui/en/strings.xml | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 48bfdc03ac..805b3aab18 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5967,7 +5967,7 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) // being off. time_t utc_time; utc_time = time_corrected(); - std::string timeStr = LLTrans::getString("ViewerMessageTime"); + std::string timeStr = LLTrans::getString("HMSTime"); LLSD substitution; substitution["datetime"] = (S32) utc_time; LLStringUtil::format(timeStr, substitution); diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index a0a5a0395a..083ff46ebb 100755 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6885,8 +6885,7 @@ This will add a bookmark in your inventory so you can quickly IM this Resident. icon="notify.tga" name="RegionRestartMinutes" priority="high" - sound="UISndAlert" - type="notify"> + type="alert"> [TIME] This region will restart in [MINUTES] minutes. If you stay in this region you will be logged out. @@ -6895,8 +6894,7 @@ If you stay in this region you will be logged out. icon="notify.tga" name="RegionRestartSeconds" priority="high" - sound="UISndAlert" - type="notify"> + type="alert"> [TIME] This region will restart in [SECONDS] seconds. If you stay in this region you will be logged out. diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 3fc1609cd4..4534434c46 100755 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2552,7 +2552,7 @@ Drag folders to this area and click "Send to Marketplace" to list them for sale This resident has turned on 'Do Not Disturb' and will see your message later. - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] + [hour12, datetime, slt]:[min, datetime, slt]:[second, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] (By name) -- cgit v1.2.3 From 8298e5e558fb6236fc32feb60fe097cee1751d7c Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Tue, 12 Nov 2013 16:20:41 -0500 Subject: STORM-1980/1983 Merge changes to region restart message format made by Simon to include region name. --- indra/newview/skins/default/xui/en/notifications.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 083ff46ebb..f3917f66d9 100755 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6886,7 +6886,7 @@ This will add a bookmark in your inventory so you can quickly IM this Resident. name="RegionRestartMinutes" priority="high" type="alert"> -[TIME] This region will restart in [MINUTES] minutes. +[TIME] The region [NAME] will restart in [MINUTES] minutes. If you stay in this region you will be logged out. @@ -6895,7 +6895,7 @@ If you stay in this region you will be logged out. name="RegionRestartSeconds" priority="high" type="alert"> -[TIME] This region will restart in [SECONDS] seconds. +[TIME] The region [NAME] will restart in [SECONDS] seconds. If you stay in this region you will be logged out. -- cgit v1.2.3 From dd7b0f96157bdfbdd8892cc8aa209182ae777380 Mon Sep 17 00:00:00 2001 From: "jeremiah@lindenlab.com" Date: Wed, 13 Nov 2013 14:44:46 -0500 Subject: correct some male/female shape differences --- indra/newview/character/avatar_lad.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 884d16b94b..4631e012fd 100644 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -4267,8 +4267,8 @@ + scale="0.03 0.04 0.02" + pos="-0.03 0 -0.01"/> Date: Fri, 15 Nov 2013 11:49:35 -0500 Subject: STORM-1980 Added a floater displaying a countdown timer. Removed most of the previous changes. --- indra/newview/CMakeLists.txt | 2 + indra/newview/llfloaterregioninfo.cpp | 1 + indra/newview/llfloaterregionrestarting.cpp | 119 +++++++++++++++++++++ indra/newview/llfloaterregionrestarting.h | 55 ++++++++++ indra/newview/llviewerfloaterreg.cpp | 2 + indra/newview/llviewermessage.cpp | 41 +++++-- indra/newview/skins/default/colors.xml | 3 + .../default/xui/en/floater_region_restarting.xml | 62 +++++++++++ .../newview/skins/default/xui/en/notifications.xml | 6 +- indra/newview/skins/default/xui/en/strings.xml | 3 - 10 files changed, 280 insertions(+), 14 deletions(-) create mode 100644 indra/newview/llfloaterregionrestarting.cpp create mode 100644 indra/newview/llfloaterregionrestarting.h create mode 100644 indra/newview/skins/default/xui/en/floater_region_restarting.xml (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 1fea6dea9f..34c3489f9f 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -267,6 +267,7 @@ set(viewer_SOURCE_FILES llfloaterregiondebugconsole.cpp llfloaterregioninfo.cpp llfloaterreporter.cpp + llfloaterregionrestarting.cpp llfloaterscriptdebug.cpp llfloaterscriptlimits.cpp llfloatersearch.cpp @@ -855,6 +856,7 @@ set(viewer_HEADER_FILES llfloaterregiondebugconsole.h llfloaterregioninfo.h llfloaterreporter.h + llfloaterregionrestarting.h llfloaterscriptdebug.h llfloaterscriptlimits.h llfloatersearch.h diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 66bf49331b..cc0053cb99 100755 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -91,6 +91,7 @@ #include "lltrans.h" #include "llagentui.h" #include "llmeshrepository.h" +#include "llfloaterregionrestarting.h" const S32 TERRAIN_TEXTURE_COUNT = 4; const S32 CORNER_COUNT = 4; diff --git a/indra/newview/llfloaterregionrestarting.cpp b/indra/newview/llfloaterregionrestarting.cpp new file mode 100644 index 0000000000..62bce27d09 --- /dev/null +++ b/indra/newview/llfloaterregionrestarting.cpp @@ -0,0 +1,119 @@ +/** + * @file llfloaterregionrestarting.cpp + * @brief Shows countdown timer during region restart + * + * $LicenseInfo:firstyear=2006&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llfloaterregionrestarting.h" + +#include "llfloaterreg.h" +#include "lluictrl.h" +#include "llenvmanager.h" + + +static S32 mSeconds; + +LLFloaterRegionRestarting::LLFloaterRegionRestarting(const LLSD& key) : + LLFloater(key), + LLEventTimer(1) +{ + mName = key["NAME"]; + mSeconds = (LLSD::Integer)key["SECONDS"]; +} + +LLFloaterRegionRestarting::~LLFloaterRegionRestarting() +{ +} + +BOOL LLFloaterRegionRestarting::postBuild() +{ + LLStringUtil::format_map_t args; + std::string text; + + args["[NAME]"] = mName; + text = getString("RegionName", args); + LLTextBox* textbox = getChild("region_name"); + textbox->setValue(text); + + refresh(); + + LLEnvManagerNew::instance().setRegionChangeCallback(boost::bind(&LLFloaterRegionRestarting::regionChange, this)); + + LLFloaterRegionRestarting* floaterp = LLFloaterReg::findTypedInstance("region_restarting"); + + if (floaterp) + { +llwarns << "DBG setting color" << llendl; + LLColor4 bg_color; + bg_color = LLUIColorTable::instance().getColor("LtOrange"); + floaterp->setBackgroundColor(bg_color); + } + + return TRUE; +} + +void LLFloaterRegionRestarting::regionChange() +{ + close(); +} + +BOOL LLFloaterRegionRestarting::tick() +{ + refresh(); + + return FALSE; +} + +void LLFloaterRegionRestarting::refresh() +{ + LLStringUtil::format_map_t args; + std::string text; + + args["[SECONDS]"] = llformat("%d", mSeconds); + text = getString("RestartSeconds", args); + LLTextBox* textbox = getChild("restart_seconds"); + textbox->setValue(text); + + mSeconds = mSeconds - 1; + if(mSeconds < 0.0) + { + mSeconds = 0; + } +} + +void LLFloaterRegionRestarting::close() +{ + LLFloaterRegionRestarting* floaterp = LLFloaterReg::findTypedInstance("region_restarting"); + + if (floaterp) + { + floaterp->closeFloater(); + } +} + +void LLFloaterRegionRestarting::updateTime(U32 time) +{ + mSeconds = time; +} diff --git a/indra/newview/llfloaterregionrestarting.h b/indra/newview/llfloaterregionrestarting.h new file mode 100644 index 0000000000..84f1bc65fb --- /dev/null +++ b/indra/newview/llfloaterregionrestarting.h @@ -0,0 +1,55 @@ +/** + * @file llfloaterregionrestarting.h + * @brief Shows countdown timer during region restart + * + * $LicenseInfo:firstyear=2006&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LL_LLFLOATERREGIONRESTARTING_H +#define LL_LLFLOATERREGIONRESTARTING_H + +#include "llfloater.h" +#include "lltextbox.h" +#include "lleventtimer.h" + +class LLFloaterRegionRestarting : public LLFloater, public LLEventTimer +{ + friend class LLFloaterReg; + +public: + static void close(); + static void updateTime(U32 time); + +private: + LLFloaterRegionRestarting(const LLSD& key); + virtual ~LLFloaterRegionRestarting(); + virtual BOOL postBuild(); + virtual BOOL tick(); + virtual void refresh(); + virtual void regionChange(); + + LLTextBox* mRestartSeconds; + + std::string mName; +}; + +#endif // LL_LLFLOATERREGIONRESTARTING_H diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 4ce049df03..a8eeddb798 100755 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -95,6 +95,7 @@ #include "llfloaterproperties.h" #include "llfloaterregiondebugconsole.h" #include "llfloaterregioninfo.h" +#include "llfloaterregionrestarting.h" #include "llfloaterreporter.h" #include "llfloaterscriptdebug.h" #include "llfloaterscriptlimits.h" @@ -296,6 +297,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("reset_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("region_debug_console", "floater_region_debug_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("region_info", "floater_region_info.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); + LLFloaterReg::add("region_restarting", "floater_region_restarting.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("script_debug", "floater_script_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("script_debug_output", "floater_script_debug_panel.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 805b3aab18..ac652ef329 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -110,6 +110,7 @@ #include "llpanelblockedlist.h" #include "llpanelplaceprofile.h" #include "llviewerregion.h" +#include "llfloaterregionrestarting.h" #include // #include @@ -5963,15 +5964,30 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) if (notificationID == "RegionRestartMinutes" || notificationID == "RegionRestartSeconds") { - // Get current UTC time, adjusted for the user's clock - // being off. - time_t utc_time; - utc_time = time_corrected(); - std::string timeStr = LLTrans::getString("HMSTime"); - LLSD substitution; - substitution["datetime"] = (S32) utc_time; - LLStringUtil::format(timeStr, substitution); - llsdBlock["TIME"] = timeStr; + U32 seconds; + if (notificationID == "RegionRestartMinutes") + { + seconds = 60 * static_cast(llsdBlock["MINUTES"].asInteger()); + } + else + { + seconds = static_cast(llsdBlock["SECONDS"].asInteger()); + } + + LLSD params; + params["NAME"] = llsdBlock["NAME"]; + params["SECONDS"] = (LLSD::Integer)seconds; + + LLFloaterRegionRestarting* floaterp = LLFloaterReg::findTypedInstance("region_restarting"); + + if (floaterp) + { + LLFloaterRegionRestarting::updateTime(seconds); + } + else + { + LLFloaterReg::showInstance("region_restarting", params); + } send_sound_trigger(LLUUID(gSavedSettings.getString("UISndRestart")), 1.0f); } @@ -6094,6 +6110,13 @@ void process_alert_core(const std::string& message, BOOL modal) std::string text(message.substr(1)); LLSD args; + // *NOTE: If the text from the server ever changes this line will need to be adjusted. + std::string restart_cancelled = "Region restart cancelled."; + if (text.substr(0, restart_cancelled.length()) == restart_cancelled) + { + LLFloaterRegionRestarting::close(); + } + std::string new_msg =LLNotifications::instance().getGlobalString(text); args["MESSAGE"] = new_msg; LLNotificationsUtil::add("SystemMessage", args); diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index f53995732f..1587e6124d 100755 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -122,6 +122,9 @@ + This resident has turned on 'Do Not Disturb' and will see your message later. - - [hour12, datetime, slt]:[min, datetime, slt]:[second, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - (By name) (Resident) -- cgit v1.2.3 From 590630a32fee3205861e61438a88de0944d9c996 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Sat, 16 Nov 2013 10:54:30 -0500 Subject: STORM-1980 Code cleanup and an attempt to fix a mac/linux compile error --- indra/newview/llfloaterregionrestarting.cpp | 18 +++--------------- indra/newview/llfloaterregionrestarting.h | 4 +--- indra/newview/llviewermessage.cpp | 6 +++--- 3 files changed, 7 insertions(+), 21 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterregionrestarting.cpp b/indra/newview/llfloaterregionrestarting.cpp index 62bce27d09..09518fff2d 100644 --- a/indra/newview/llfloaterregionrestarting.cpp +++ b/indra/newview/llfloaterregionrestarting.cpp @@ -39,7 +39,7 @@ LLFloaterRegionRestarting::LLFloaterRegionRestarting(const LLSD& key) : LLFloater(key), LLEventTimer(1) { - mName = key["NAME"]; + mName = (std::string)key["NAME"]; mSeconds = (LLSD::Integer)key["SECONDS"]; } @@ -61,16 +61,6 @@ BOOL LLFloaterRegionRestarting::postBuild() LLEnvManagerNew::instance().setRegionChangeCallback(boost::bind(&LLFloaterRegionRestarting::regionChange, this)); - LLFloaterRegionRestarting* floaterp = LLFloaterReg::findTypedInstance("region_restarting"); - - if (floaterp) - { -llwarns << "DBG setting color" << llendl; - LLColor4 bg_color; - bg_color = LLUIColorTable::instance().getColor("LtOrange"); - floaterp->setBackgroundColor(bg_color); - } - return TRUE; } @@ -92,9 +82,7 @@ void LLFloaterRegionRestarting::refresh() std::string text; args["[SECONDS]"] = llformat("%d", mSeconds); - text = getString("RestartSeconds", args); - LLTextBox* textbox = getChild("restart_seconds"); - textbox->setValue(text); + getChild("restart_seconds")->setValue(getString("RestartSeconds", args)); mSeconds = mSeconds - 1; if(mSeconds < 0.0) @@ -113,7 +101,7 @@ void LLFloaterRegionRestarting::close() } } -void LLFloaterRegionRestarting::updateTime(U32 time) +void LLFloaterRegionRestarting::updateTime(S32 time) { mSeconds = time; } diff --git a/indra/newview/llfloaterregionrestarting.h b/indra/newview/llfloaterregionrestarting.h index 84f1bc65fb..fef0dcddfe 100644 --- a/indra/newview/llfloaterregionrestarting.h +++ b/indra/newview/llfloaterregionrestarting.h @@ -37,7 +37,7 @@ class LLFloaterRegionRestarting : public LLFloater, public LLEventTimer public: static void close(); - static void updateTime(U32 time); + static void updateTime(S32 time); private: LLFloaterRegionRestarting(const LLSD& key); @@ -47,8 +47,6 @@ private: virtual void refresh(); virtual void regionChange(); - LLTextBox* mRestartSeconds; - std::string mName; }; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index ac652ef329..0ce8585c15 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5964,14 +5964,14 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) if (notificationID == "RegionRestartMinutes" || notificationID == "RegionRestartSeconds") { - U32 seconds; + S32 seconds; if (notificationID == "RegionRestartMinutes") { - seconds = 60 * static_cast(llsdBlock["MINUTES"].asInteger()); + seconds = 60 * static_cast(llsdBlock["MINUTES"].asInteger()); } else { - seconds = static_cast(llsdBlock["SECONDS"].asInteger()); + seconds = static_cast(llsdBlock["SECONDS"].asInteger()); } LLSD params; -- cgit v1.2.3 From 6bd777214c535b91048533c792cb2dd499ec6ebf Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Mon, 18 Nov 2013 19:05:34 -0500 Subject: add callbacks to LLAgent for Region and Parcel changes --- indra/newview/llagent.cpp | 48 +++++++++++++++++++++++++++-------- indra/newview/llagent.h | 28 +++++++++++++++++--- indra/newview/lllocationinputctrl.cpp | 4 +-- indra/newview/llmoveview.cpp | 2 +- indra/newview/llpanelplaces.cpp | 2 +- indra/newview/llpaneltopinfobar.cpp | 2 +- indra/newview/llviewerparcelmgr.cpp | 9 +++---- indra/newview/llviewerparcelmgr.h | 10 +++----- 8 files changed, 75 insertions(+), 30 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 325707bbf1..da29aaff50 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -259,9 +259,9 @@ bool handleSlowMotionAnimation(const LLSD& newvalue) return true; } -// static -void LLAgent::parcelChangedCallback() +void LLAgent::setCanEditParcel() // called via mParcelChangedSignal { + LL_DEBUGS("AgentLocation") << LL_ENDL; bool can_edit = LLToolMgr::getInstance()->canEdit(); gAgent.mCanEditParcel = can_edit; @@ -425,6 +425,8 @@ LLAgent::LLAgent() : mListener.reset(new LLAgentListener(*this)); + addParcelChangedCallback(&setCanEditParcel); + mMoveTimer.stop(); } @@ -451,8 +453,6 @@ void LLAgent::init() mLastKnownRequestMaturity = mLastKnownResponseMaturity; mIsDoSendMaturityPreferenceToServer = true; - LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(boost::bind(&LLAgent::parcelChangedCallback)); - if (!mTeleportFinishedSlot.connected()) { mTeleportFinishedSlot = LLViewerParcelMgr::getInstance()->setTeleportFinishedCallback(boost::bind(&LLAgent::handleTeleportFinished, this)); @@ -835,22 +835,34 @@ void LLAgent::handleServerBakeRegionTransition(const LLUUID& region_id) } } +void LLAgent::changeParcels() +{ + LL_DEBUGS("AgentLocation") << LL_ENDL; + // Notify anything that wants to know about parcel changes + mParcelChangedSignal(); +} + +boost::signals2::connection LLAgent::addParcelChangedCallback(parcel_changed_callback_t cb) +{ + return mParcelChangedSignal.connect(cb); +} + //----------------------------------------------------------------------------- // setRegion() //----------------------------------------------------------------------------- void LLAgent::setRegion(LLViewerRegion *regionp) { bool teleport = true; - + bool notifyRegionChange; + llassert(regionp); if (mRegionp != regionp) { - // std::string host_name; - // host_name = regionp->getHost().getHostName(); - + notifyRegionChange = true; + std::string ip = regionp->getHost().getString(); - llinfos << "Moving agent into region: " << regionp->getName() - << " located at " << ip << llendl; + LL_INFOS("AgentLocation") << "Moving agent into region: " << regionp->getName() + << " located at " << ip << LL_ENDL; if (mRegionp) { // We've changed regions, we're now going to change our agent coordinate frame. @@ -902,6 +914,10 @@ void LLAgent::setRegion(LLViewerRegion *regionp) // Pass new region along to metrics components that care about this level of detail. LLAppViewer::metricsUpdateRegion(regionp->getHandle()); } + else + { + notifyRegionChange = false; + } mRegionp = regionp; // Pass the region host to LLUrlEntryParcel to resolve parcel name @@ -943,6 +959,12 @@ void LLAgent::setRegion(LLViewerRegion *regionp) // Need to handle via callback after caps arrive. mRegionp->setCapabilitiesReceivedCallback(boost::bind(&LLAgent::handleServerBakeRegionTransition,this,_1)); } + + if (notifyRegionChange) + { + LL_DEBUGS("AgentLocation") << "Calling RegionChanged callbacks" << LL_ENDL; + mRegionChangedSignal(); + } } @@ -967,6 +989,12 @@ LLHost LLAgent::getRegionHost() const } } +boost::signals2::connection LLAgent::addRegionChangedCallback(region_changed_callback_t cb) +{ + return mRegionChangedSignal.connect(cb); +} + + //----------------------------------------------------------------------------- // inPrelude() //----------------------------------------------------------------------------- diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 7fac17d098..fafa166efd 100755 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -231,15 +231,36 @@ private: LLVector3 mHomePosRegion; //-------------------------------------------------------------------- - // Region + // Parcel //-------------------------------------------------------------------- public: + void changeParcels(); // called by LLViewerParcelMgr when we cross a parcel boundary + + // Register a boost callback to be called when the agent changes parcels + typedef boost::function parcel_changed_callback_t; + boost::signals2::connection addParcelChangedCallback(parcel_changed_callback_t); + +private: + typedef boost::signals2::signal parcel_changed_signal_t; + parcel_changed_signal_t mParcelChangedSignal; + + //-------------------------------------------------------------------- + // Region + //-------------------------------------------------------------------- + public: void setRegion(LLViewerRegion *regionp); LLViewerRegion *getRegion() const; LLHost getRegionHost() const; BOOL inPrelude(); -private: + + // Register a boost callback to be called when the agent changes regions + typedef boost::function region_changed_callback_t; + boost::signals2::connection addRegionChangedCallback(region_changed_callback_t); + + private: LLViewerRegion *mRegionp; + typedef boost::signals2::signal region_changed_signal_t; + region_changed_signal_t mRegionChangedSignal; //-------------------------------------------------------------------- // History @@ -640,9 +661,10 @@ private: public: bool canEditParcel() const { return mCanEditParcel; } private: + static void setCanEditParcel(); bool mCanEditParcel; - static void parcelChangedCallback(); + /******************************************************************************** ** ** diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 5022dba934..dbdff11f11 100755 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -407,14 +407,14 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p) // - Make the "Add landmark" button updated when either current parcel gets changed // or a landmark gets created or removed from the inventory. // - Update the location string on parcel change. - mParcelMgrConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback( + mParcelMgrConnection = gAgent.addParcelChangedCallback( boost::bind(&LLLocationInputCtrl::onAgentParcelChange, this)); // LLLocationHistory instance is being created before the location input control, so we have to update initial state of button manually. mButton->setEnabled(LLLocationHistory::instance().getItemCount() > 0); mLocationHistoryConnection = LLLocationHistory::getInstance()->setChangedCallback( boost::bind(&LLLocationInputCtrl::onLocationHistoryChanged, this,_1)); - mRegionCrossingSlot = LLEnvManagerNew::getInstance()->setRegionChangeCallback(boost::bind(&LLLocationInputCtrl::onRegionBoundaryCrossed, this)); + mRegionCrossingSlot = gAgent.addRegionChangedCallback(boost::bind(&LLLocationInputCtrl::onRegionBoundaryCrossed, this)); createNavMeshStatusListenerForCurrentRegion(); mRemoveLandmarkObserver = new LLRemoveLandmarkObserver(this); diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index eb6591eb39..32b168b8c5 100755 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -140,7 +140,7 @@ BOOL LLFloaterMove::postBuild() initMovementMode(); - LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(LLFloaterMove::sUpdateFlyingStatus); + gAgent.addParcelChangedCallback(LLFloaterMove::sUpdateFlyingStatus); return TRUE; } diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 6c2a01fc82..8bb3ace2d9 100755 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -251,7 +251,7 @@ LLPanelPlaces::LLPanelPlaces() gInventory.addObserver(mInventoryObserver); - mAgentParcelChangedConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback( + mAgentParcelChangedConnection = gAgent.addParcelChangedCallback( boost::bind(&LLPanelPlaces::updateVerbs, this)); //buildFromFile( "panel_places.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder() diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp index 9dd665198f..0d09f0bbfc 100755 --- a/indra/newview/llpaneltopinfobar.cpp +++ b/indra/newview/llpaneltopinfobar.cpp @@ -166,7 +166,7 @@ BOOL LLPanelTopInfoBar::postBuild() mShowCoordsCtrlConnection = ctrl->getSignal()->connect(boost::bind(&LLPanelTopInfoBar::onNavBarShowParcelPropertiesCtrlChanged, this)); } - mParcelMgrConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback( + mParcelMgrConnection = gAgent.addParcelChangedCallback( boost::bind(&LLPanelTopInfoBar::onAgentParcelChange, this)); setVisibleCallback(boost::bind(&LLPanelTopInfoBar::onVisibilityChange, this, _2)); diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 4cdb568d17..e361fad9de 100755 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1580,7 +1580,8 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use // Let interesting parties know about agent parcel change. LLViewerParcelMgr* instance = LLViewerParcelMgr::getInstance(); - instance->mAgentParcelChangedSignal(); + // Notify anything that wants to know when the agent changes parcels + gAgent.changeParcels(); if (instance->mTeleportInProgress) { @@ -2458,10 +2459,6 @@ LLViewerTexture* LLViewerParcelMgr::getPassImage() const return sPassImage; } -boost::signals2::connection LLViewerParcelMgr::addAgentParcelChangedCallback(parcel_changed_callback_t cb) -{ - return mAgentParcelChangedSignal.connect(cb); -} /* * Set finish teleport callback. You can use it to observe all teleport events. * NOTE: @@ -2475,7 +2472,7 @@ boost::signals2::connection LLViewerParcelMgr::setTeleportFinishedCallback(telep return mTeleportFinishedSignal.connect(cb); } -boost::signals2::connection LLViewerParcelMgr::setTeleportFailedCallback(parcel_changed_callback_t cb) +boost::signals2::connection LLViewerParcelMgr::setTeleportFailedCallback(teleport_failed_callback_t cb) { return mTeleportFailedSignal.connect(cb); } diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h index 6183b7e90e..9da49bb3f3 100755 --- a/indra/newview/llviewerparcelmgr.h +++ b/indra/newview/llviewerparcelmgr.h @@ -80,8 +80,8 @@ class LLViewerParcelMgr : public LLSingleton public: typedef boost::function teleport_finished_callback_t; typedef boost::signals2::signal teleport_finished_signal_t; - typedef boost::function parcel_changed_callback_t; - typedef boost::signals2::signal parcel_changed_signal_t; + typedef boost::function teleport_failed_callback_t; + typedef boost::signals2::signal teleport_failed_signal_t; LLViewerParcelMgr(); ~LLViewerParcelMgr(); @@ -283,9 +283,8 @@ public: // the agent is banned or not in the allowed group BOOL isCollisionBanned(); - boost::signals2::connection addAgentParcelChangedCallback(parcel_changed_callback_t cb); boost::signals2::connection setTeleportFinishedCallback(teleport_finished_callback_t cb); - boost::signals2::connection setTeleportFailedCallback(parcel_changed_callback_t cb); + boost::signals2::connection setTeleportFailedCallback(teleport_failed_callback_t cb); void onTeleportFinished(bool local, const LLVector3d& new_pos); void onTeleportFailed(); @@ -338,8 +337,7 @@ private: BOOL mTeleportInProgress; teleport_finished_signal_t mTeleportFinishedSignal; - parcel_changed_signal_t mTeleportFailedSignal; - parcel_changed_signal_t mAgentParcelChangedSignal; + teleport_failed_signal_t mTeleportFailedSignal; // Array of pieces of parcel edges to potentially draw // Has (parcels_per_edge + 1) * (parcels_per_edge + 1) elements so -- cgit v1.2.3 From a5db4f6c3d1f6804c20b3095b39203887728d3a6 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 19 Nov 2013 09:28:58 -0500 Subject: add documentation to LLAgent::addRegionChangedCallback and improve logging --- indra/newview/llagent.cpp | 6 +++--- indra/newview/llagent.h | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index da29aaff50..5302ae2636 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -261,9 +261,7 @@ bool handleSlowMotionAnimation(const LLSD& newvalue) void LLAgent::setCanEditParcel() // called via mParcelChangedSignal { - LL_DEBUGS("AgentLocation") << LL_ENDL; bool can_edit = LLToolMgr::getInstance()->canEdit(); - gAgent.mCanEditParcel = can_edit; } @@ -837,7 +835,7 @@ void LLAgent::handleServerBakeRegionTransition(const LLUUID& region_id) void LLAgent::changeParcels() { - LL_DEBUGS("AgentLocation") << LL_ENDL; + LL_DEBUGS("AgentLocation") << "Calling ParcelChanged callbacks" << LL_ENDL; // Notify anything that wants to know about parcel changes mParcelChangedSignal(); } @@ -920,6 +918,8 @@ void LLAgent::setRegion(LLViewerRegion *regionp) } mRegionp = regionp; + // TODO - most of what follows probably should be moved into callbacks + // Pass the region host to LLUrlEntryParcel to resolve parcel name // with a server request. LLUrlEntryParcel::setRegionHost(getRegionHost()); diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index fafa166efd..0662be897a 100755 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -253,7 +253,24 @@ private: LLHost getRegionHost() const; BOOL inPrelude(); - // Register a boost callback to be called when the agent changes regions + /** + * Register a boost callback to be called when the agent changes regions + * Note that if you need to access a capability for the region, you may need to wait + * for the capabilities to be received, since in some cases your region changed + * callback will be called before the capabilities have been received. Your callback + * may need to look something like: + * + * LLViewerRegion* region = gAgent.getRegion(); + * if (region->capabilitiesReceived()) + * { + * useCapability(region); + * } + * else // Need to handle via callback after caps arrive. + * { + * region->setCapabilitiesReceivedCallback(boost::bind(&useCapability,region,_1)); + * // you may or may not want to remove that callback + * } + */ typedef boost::function region_changed_callback_t; boost::signals2::connection addRegionChangedCallback(region_changed_callback_t); -- cgit v1.2.3 From fcc885d4fc5ef63dad33e89a9324edc39d466d37 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 19 Nov 2013 15:51:27 -0500 Subject: replace uses of LLEnvManagerNew::setRegionChangeCallback with LLAgent::addRegionChangedCallback --- indra/newview/llagent.cpp | 13 ---- indra/newview/llenvmanager.cpp | 76 +++++++++++----------- indra/newview/llenvmanager.h | 9 +-- indra/newview/llfloatereditdaycycle.cpp | 2 +- indra/newview/llfloaterpathfindingconsole.cpp | 4 +- indra/newview/llfloaterpathfindingobjects.cpp | 3 +- indra/newview/llfloaterregioninfo.cpp | 2 +- .../llmenuoptionpathfindingrebakenavmesh.cpp | 2 +- 8 files changed, 46 insertions(+), 65 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 5302ae2636..6ee8f26b9f 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -850,7 +850,6 @@ boost::signals2::connection LLAgent::addParcelChangedCallback(parcel_changed_cal //----------------------------------------------------------------------------- void LLAgent::setRegion(LLViewerRegion *regionp) { - bool teleport = true; bool notifyRegionChange; llassert(regionp); @@ -888,9 +887,6 @@ void LLAgent::setRegion(LLViewerRegion *regionp) { gSky.mVOGroundp->setRegion(regionp); } - - // Notify windlight managers - teleport = (gAgent.getTeleportState() != LLAgent::TELEPORT_NONE); } else { @@ -938,15 +934,6 @@ void LLAgent::setRegion(LLViewerRegion *regionp) LLFloaterMove::sUpdateFlyingStatus(); - if (teleport) - { - LLEnvManagerNew::instance().onTeleport(); - } - else - { - LLEnvManagerNew::instance().onRegionCrossing(); - } - // If the newly entered region is using server bakes, and our // current appearance is non-baked, request appearance update from // server. diff --git a/indra/newview/llenvmanager.cpp b/indra/newview/llenvmanager.cpp index 86fe6754dc..589cf28615 100755 --- a/indra/newview/llenvmanager.cpp +++ b/indra/newview/llenvmanager.cpp @@ -92,9 +92,11 @@ void LLEnvPrefs::setUseDayCycle(const std::string& name) } //============================================================================= -LLEnvManagerNew::LLEnvManagerNew() +LLEnvManagerNew::LLEnvManagerNew(): + mInterpNextChangeMessage(true), + mCurRegionUUID(LLUUID::null), + mLastReceivedID(LLUUID::null) { - mInterpNextChangeMessage = true; // Set default environment settings. mUserPrefs.mUseRegionSettings = true; @@ -102,6 +104,9 @@ LLEnvManagerNew::LLEnvManagerNew() mUserPrefs.mWaterPresetName = "Default"; mUserPrefs.mSkyPresetName = "Default"; mUserPrefs.mDayCycleName = "Default"; + + LL_DEBUGS("Windlight")<getRegionID() : LLUUID::null; - if (region_uuid == mCurRegionUUID) + if (region_uuid != mCurRegionUUID) { - return; + // Clear locally modified region settings. + mNewRegionPrefs.clear(); + + // *TODO: clear environment settings of the previous region? + + // Request environment settings of the new region. + mCurRegionUUID = region_uuid; + // for region crossings, interpolate the change; for teleports, don't + mInterpNextChangeMessage = (gAgent.getTeleportState() == LLAgent::TELEPORT_NONE); + LL_DEBUGS("Windlight") << (mInterpNextChangeMessage ? "Crossed" : "Teleported") + << " to new region: " << region_uuid + << LL_ENDL; + requestRegionSettings(); + } + else + { + LL_DEBUGS("Windlight") << "disregarding region change; interp: " + << (mInterpNextChangeMessage ? "true" : "false") + << " regionp: " << regionp + << " old: " << mCurRegionUUID + << " new: " << region_uuid + << LL_ENDL; } - - // Clear locally modified region settings. - mNewRegionPrefs.clear(); - - // *TODO: clear environment settings of the previous region? - - // Request environment settings of the new region. - LL_DEBUGS("Windlight") << "New viewer region: " << region_uuid << LL_ENDL; - mCurRegionUUID = region_uuid; - mInterpNextChangeMessage = interpolate; - requestRegionSettings(); - - // Let interested parties know agent region has been changed. - mRegionChangeSignal(); } diff --git a/indra/newview/llenvmanager.h b/indra/newview/llenvmanager.h index ad56761bc7..c7877303fc 100755 --- a/indra/newview/llenvmanager.h +++ b/indra/newview/llenvmanager.h @@ -166,7 +166,6 @@ class LLEnvManagerNew : public LLSingleton public: typedef boost::signals2::signal prefs_change_signal_t; typedef boost::signals2::signal region_settings_change_signal_t; - typedef boost::signals2::signal region_change_signal_t; typedef boost::signals2::signal region_settings_applied_signal_t; LLEnvManagerNew(); @@ -222,15 +221,12 @@ public: bool sendRegionSettings(const LLEnvironmentSettings& new_settings); boost::signals2::connection setPreferencesChangeCallback(const prefs_change_signal_t::slot_type& cb); boost::signals2::connection setRegionSettingsChangeCallback(const region_settings_change_signal_t::slot_type& cb); - boost::signals2::connection setRegionChangeCallback(const region_change_signal_t::slot_type& cb); boost::signals2::connection setRegionSettingsAppliedCallback(const region_settings_applied_signal_t::slot_type& cb); static bool canEditRegionSettings(); /// @return true if we have access to editing region environment static const std::string getScopeString(LLEnvKey::EScope scope); // Public callbacks. - void onRegionCrossing(); - void onTeleport(); void onRegionSettingsResponse(const LLSD& content); void onRegionSettingsApplyResponse(bool ok); @@ -251,7 +247,7 @@ private: bool useDefaultSky(); bool useDefaultWater(); - void onRegionChange(bool interpolate); + void onRegionChange(); /// Emitted when user environment preferences change. prefs_change_signal_t mUsePrefsChangeSignal; @@ -259,9 +255,6 @@ private: /// Emitted when region environment settings update comes. region_settings_change_signal_t mRegionSettingsChangeSignal; - /// Emitted when agent region changes. Move to LLAgent? - region_change_signal_t mRegionChangeSignal; - /// Emitted when agent region changes. Move to LLAgent? region_settings_applied_signal_t mRegionSettingsAppliedSignal; diff --git a/indra/newview/llfloatereditdaycycle.cpp b/indra/newview/llfloatereditdaycycle.cpp index b63677b258..78e20e3bf0 100755 --- a/indra/newview/llfloatereditdaycycle.cpp +++ b/indra/newview/llfloatereditdaycycle.cpp @@ -145,7 +145,7 @@ void LLFloaterEditDayCycle::initCallbacks(void) // Connect to env manager events. LLEnvManagerNew& env_mgr = LLEnvManagerNew::instance(); env_mgr.setRegionSettingsChangeCallback(boost::bind(&LLFloaterEditDayCycle::onRegionSettingsChange, this)); - env_mgr.setRegionChangeCallback(boost::bind(&LLFloaterEditDayCycle::onRegionChange, this)); + gAgent.addRegionChangedCallback(boost::bind(&LLFloaterEditDayCycle::onRegionChange, this)); env_mgr.setRegionSettingsAppliedCallback(boost::bind(&LLFloaterEditDayCycle::onRegionSettingsApplied, this, _1)); // Connect to day cycle manager events. diff --git a/indra/newview/llfloaterpathfindingconsole.cpp b/indra/newview/llfloaterpathfindingconsole.cpp index 298454724b..161259d049 100755 --- a/indra/newview/llfloaterpathfindingconsole.cpp +++ b/indra/newview/llfloaterpathfindingconsole.cpp @@ -34,11 +34,11 @@ #include +#include "llagent.h" #include "llbutton.h" #include "llcheckboxctrl.h" #include "llcombobox.h" #include "llcontrol.h" -#include "llenvmanager.h" #include "llfloaterpathfindingcharacters.h" #include "llfloaterpathfindinglinksets.h" #include "llfloaterreg.h" @@ -224,7 +224,7 @@ void LLFloaterPathfindingConsole::onOpen(const LLSD& pKey) if (!mRegionBoundarySlot.connected()) { - mRegionBoundarySlot = LLEnvManagerNew::instance().setRegionChangeCallback(boost::bind(&LLFloaterPathfindingConsole::onRegionBoundaryCross, this)); + mRegionBoundarySlot = gAgent.addRegionChangedCallback(boost::bind(&LLFloaterPathfindingConsole::onRegionBoundaryCross, this)); } if (!mTeleportFailedSlot.connected()) diff --git a/indra/newview/llfloaterpathfindingobjects.cpp b/indra/newview/llfloaterpathfindingobjects.cpp index 20c1215bcb..d72ee073e1 100755 --- a/indra/newview/llfloaterpathfindingobjects.cpp +++ b/indra/newview/llfloaterpathfindingobjects.cpp @@ -41,7 +41,6 @@ #include "llavatarnamecache.h" #include "llbutton.h" #include "llcheckboxctrl.h" -#include "llenvmanager.h" #include "llfloater.h" #include "llfontgl.h" #include "llnotifications.h" @@ -85,7 +84,7 @@ void LLFloaterPathfindingObjects::onOpen(const LLSD &pKey) if (!mRegionBoundaryCrossingSlot.connected()) { - mRegionBoundaryCrossingSlot = LLEnvManagerNew::getInstance()->setRegionChangeCallback(boost::bind(&LLFloaterPathfindingObjects::onRegionBoundaryCrossed, this)); + mRegionBoundaryCrossingSlot = gAgent.addRegionChangedCallback(boost::bind(&LLFloaterPathfindingObjects::onRegionBoundaryCrossed, this)); } if (!mGodLevelChangeSlot.connected()) diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 66bf49331b..ed0209f90b 100755 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -219,7 +219,7 @@ BOOL LLFloaterRegionInfo::postBuild() &processEstateOwnerRequest); // Request region info when agent region changes. - LLEnvManagerNew::instance().setRegionChangeCallback(boost::bind(&LLFloaterRegionInfo::requestRegionInfo, this)); + gAgent.addRegionChangedCallback(boost::bind(&LLFloaterRegionInfo::requestRegionInfo, this)); return TRUE; } diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp b/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp index a567d1217a..8879cfd7fb 100755 --- a/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp +++ b/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp @@ -79,7 +79,7 @@ void LLMenuOptionPathfindingRebakeNavmesh::initialize() if ( !mRegionCrossingSlot.connected() ) { - mRegionCrossingSlot = LLEnvManagerNew::getInstance()->setRegionChangeCallback(boost::bind(&LLMenuOptionPathfindingRebakeNavmesh::handleRegionBoundaryCrossed, this)); + mRegionCrossingSlot = gAgent.addRegionChangedCallback(boost::bind(&LLMenuOptionPathfindingRebakeNavmesh::handleRegionBoundaryCrossed, this)); } if (!mAgentStateSlot.connected()) -- cgit v1.2.3 From dad992ea31b6b823c316400e61d50d1aa9e52330 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Tue, 19 Nov 2013 16:17:58 -0500 Subject: STORM-1980 Minor xml change --- indra/newview/skins/default/xui/en/floater_region_restarting.xml | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/floater_region_restarting.xml b/indra/newview/skins/default/xui/en/floater_region_restarting.xml index 1bf5884653..dcb5fcc41d 100644 --- a/indra/newview/skins/default/xui/en/floater_region_restarting.xml +++ b/indra/newview/skins/default/xui/en/floater_region_restarting.xml @@ -25,6 +25,7 @@ If you stay in this region you will be logged out. top="0" left="0" background_visible="true" + bg_opaque_color="Orange" bg_alpha_color="Orange"> Date: Sun, 24 Nov 2013 15:46:21 -0500 Subject: STORM-1981 Rough initial changes for evaluation purposes. --- indra/newview/lltracker.cpp | 87 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 76 insertions(+), 11 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp index cbd16e873d..1aa61cf50e 100755 --- a/indra/newview/lltracker.cpp +++ b/indra/newview/lltracker.cpp @@ -412,7 +412,7 @@ const std::string& LLTracker::getTrackedLocationName() return instance()->mTrackedLocationName; } -F32 pulse_func(F32 t, F32 z) +F32 pulse_func(F32 t, F32 z, bool tracking_avatar) { if (!LLTracker::sCheesyBeacon) { @@ -420,8 +420,15 @@ F32 pulse_func(F32 t, F32 z) } t *= F_PI; - z -= t*64.f - 256.f; - + if (tracking_avatar) + { + z += t*64.f - 256.f; + } + else + { + z -= t*64.f - 256.f; + } + F32 a = cosf(z*F_PI/512.f)*10.0f; a = llmax(a, 9.9f); a -= 9.9f; @@ -497,9 +504,11 @@ void LLTracker::renderBeacon(LLVector3d pos_global, } LLColor4 fogged_color = color_frac * color + (1 - color_frac)*gSky.getFogColor(); + LLColor4 under_color = color_frac * LLColor4::blue + (1 - color_frac) * gSky.getFogColor(); F32 FADE_DIST = 3.f; fogged_color.mV[3] = llmax(0.2f, llmin(0.5f,(dist-FADE_DIST)/FADE_DIST)); + under_color.mV[3] = llmax(0.2f, llmin(0.5f,(dist-FADE_DIST)/FADE_DIST)); LLVector3 pos_agent = gAgent.getPosAgentFromGlobal(pos_global); @@ -508,22 +517,21 @@ void LLTracker::renderBeacon(LLVector3d pos_global, LLGLDisable cull_face(GL_CULL_FACE); LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); - gGL.matrixMode(LLRender::MM_MODELVIEW); gGL.pushMatrix(); { gGL.translatef(pos_agent.mV[0], pos_agent.mV[1], pos_agent.mV[2]); - + draw_shockwave(1024.f, gRenderStartTime.getElapsedTimeF32(), 32, fogged_color); gGL.color4fv(fogged_color.mV); const U32 BEACON_VERTS = 256; - const F32 step = 1024.0f/BEACON_VERTS; - + const F32 step = (5020.0f - pos_agent.mV[2]) / BEACON_VERTS; + LLVector3 x_axis = LLViewerCamera::getInstance()->getLeftAxis(); F32 t = gRenderStartTime.getElapsedTimeF32(); F32 dr = dist/LLViewerCamera::getInstance()->getFar(); - + for (U32 i = 0; i < BEACON_VERTS; i++) { F32 x = x_axis.mV[0]; @@ -531,9 +539,10 @@ void LLTracker::renderBeacon(LLVector3d pos_global, F32 z = i * step; F32 z_next = (i+1)*step; - - F32 a = pulse_func(t, z); - F32 an = pulse_func(t, z_next); + + bool tracking_avatar = getTrackingStatus() == TRACKING_AVATAR; + F32 a = pulse_func(t, z, tracking_avatar); + F32 an = pulse_func(t, z_next, tracking_avatar); LLColor4 c_col = fogged_color + LLColor4(a,a,a,a); LLColor4 col_next = fogged_color + LLColor4(an,an,an,an); @@ -561,7 +570,63 @@ void LLTracker::renderBeacon(LLVector3d pos_global, gGL.vertex3f(x*a,y*a,z); gGL.color4fv(col_edge_next.mV); gGL.vertex3f(x*an,y*an,z_next); + gGL.end(); + } + } + gGL.popMatrix(); + + gGL.pushMatrix(); + { + gGL.translatef(pos_agent.mV[0], pos_agent.mV[1], 0); + +// draw_shockwave(1024.f, gRenderStartTime.getElapsedTimeF32(), 32, under_color); + + gGL.color4fv(under_color.mV); + const U32 BEACON_VERTS = 256; + const F32 step = pos_agent.mV[2] / BEACON_VERTS; + + LLVector3 x_axis = LLViewerCamera::getInstance()->getLeftAxis(); + F32 t = gRenderStartTime.getElapsedTimeF32(); + F32 dr = dist/LLViewerCamera::getInstance()->getFar(); + + for (U32 i = 0; i < BEACON_VERTS; i++) + { + F32 x = x_axis.mV[0]; + F32 y = x_axis.mV[1]; + + F32 z = i * step; + F32 z_next = (i+1)*step; + + bool tracking_avatar = getTrackingStatus() == TRACKING_AVATAR; + F32 a = pulse_func(t, z, tracking_avatar); + F32 an = pulse_func(t, z_next, tracking_avatar); + + LLColor4 c_col = under_color + LLColor4(a,a,a,a); + LLColor4 col_next = under_color + LLColor4(an,an,an,an); + LLColor4 col_edge = under_color * LLColor4(a,a,a,0.0f); + LLColor4 col_edge_next = under_color * LLColor4(an,an,an,0.0f); + + a *= 2.f; + a += 1.0f+dr; + + an *= 2.f; + an += 1.0f+dr; + + gGL.begin(LLRender::TRIANGLE_STRIP); + gGL.color4fv(col_edge.mV); + gGL.vertex3f(-x*a, -y*a, z); + gGL.color4fv(col_edge_next.mV); + gGL.vertex3f(-x*an, -y*an, z_next); + gGL.color4fv(c_col.mV); + gGL.vertex3f(0, 0, z); + gGL.color4fv(col_next.mV); + gGL.vertex3f(0, 0, z_next); + + gGL.color4fv(col_edge.mV); + gGL.vertex3f(x*a,y*a,z); + gGL.color4fv(col_edge_next.mV); + gGL.vertex3f(x*an,y*an,z_next); gGL.end(); } } -- cgit v1.2.3 From f04c2a781ce1ff65f17bee24187a1ea1fc667787 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Mon, 25 Nov 2013 13:54:43 -0500 Subject: STORM-1981 Make pulse operate properly in both directions. Move duplicated common code into its own function. --- indra/newview/lltracker.cpp | 202 +++++++++++++-------------------- indra/newview/lltracker.h | 2 + indra/newview/skins/default/colors.xml | 3 + 3 files changed, 85 insertions(+), 122 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp index 1aa61cf50e..e242cd6f5e 100755 --- a/indra/newview/lltracker.cpp +++ b/indra/newview/lltracker.cpp @@ -167,6 +167,7 @@ void LLTracker::render3D() } static LLUIColor map_track_color = LLUIColorTable::instance().getColor("MapTrackColor", LLColor4::white); + static LLUIColor map_track_color_under = LLUIColorTable::instance().getColor("MapTrackColorUnder", LLColor4::white); // Arbitary location beacon if( instance()->mIsTrackingLocation ) @@ -187,7 +188,7 @@ void LLTracker::render3D() } else { - renderBeacon( instance()->mTrackedPositionGlobal, map_track_color, + renderBeacon( instance()->mTrackedPositionGlobal, map_track_color, map_track_color_under, instance()->mBeaconText, instance()->mTrackedLocationName ); } } @@ -229,7 +230,7 @@ void LLTracker::render3D() // and back again instance()->mHasReachedLandmark = FALSE; } - renderBeacon( instance()->mTrackedPositionGlobal, map_track_color, + renderBeacon( instance()->mTrackedPositionGlobal, map_track_color, map_track_color_under, instance()->mBeaconText, instance()->mTrackedLandmarkName ); } } @@ -258,7 +259,7 @@ void LLTracker::render3D() } else { - renderBeacon( av_tracker.getGlobalPos(), map_track_color, + renderBeacon( av_tracker.getGlobalPos(), map_track_color, map_track_color_under, instance()->mBeaconText, av_tracker.getName() ); } } @@ -412,7 +413,7 @@ const std::string& LLTracker::getTrackedLocationName() return instance()->mTrackedLocationName; } -F32 pulse_func(F32 t, F32 z, bool tracking_avatar) +F32 pulse_func(F32 t, F32 z, bool tracking_avatar, std::string direction) { if (!LLTracker::sCheesyBeacon) { @@ -420,7 +421,7 @@ F32 pulse_func(F32 t, F32 z, bool tracking_avatar) } t *= F_PI; - if (tracking_avatar) + if ("DOWN" == direction) { z += t*64.f - 256.f; } @@ -481,10 +482,79 @@ void draw_shockwave(F32 center_z, F32 t, S32 steps, LLColor4 color) gGL.end(); } +void LLTracker::drawBeacon(LLVector3 pos_agent, std::string direction, LLColor4 fogged_color, F32 dist) +{ + const U32 BEACON_VERTS = 256; + F32 step; + + gGL.matrixMode(LLRender::MM_MODELVIEW); + gGL.pushMatrix(); + + if ("DOWN" == direction) + { + gGL.translatef(pos_agent.mV[0], pos_agent.mV[1], pos_agent.mV[2]); + draw_shockwave(1024.f, gRenderStartTime.getElapsedTimeF32(), 32, fogged_color); + step = (5020.0f - pos_agent.mV[2]) / BEACON_VERTS; + } + else + { + gGL.translatef(pos_agent.mV[0], pos_agent.mV[1], 0); + step = pos_agent.mV[2] / BEACON_VERTS; + } + + gGL.color4fv(fogged_color.mV); + + LLVector3 x_axis = LLViewerCamera::getInstance()->getLeftAxis(); + F32 t = gRenderStartTime.getElapsedTimeF32(); + F32 dr = dist/LLViewerCamera::getInstance()->getFar(); + + for (U32 i = 0; i < BEACON_VERTS; i++) + { + F32 x = x_axis.mV[0]; + F32 y = x_axis.mV[1]; + + F32 z = i * step; + F32 z_next = (i+1)*step; + + bool tracking_avatar = getTrackingStatus() == TRACKING_AVATAR; + F32 a = pulse_func(t, z, tracking_avatar, direction); + F32 an = pulse_func(t, z_next, tracking_avatar, direction); + + LLColor4 c_col = fogged_color + LLColor4(a,a,a,a); + LLColor4 col_next = fogged_color + LLColor4(an,an,an,an); + LLColor4 col_edge = fogged_color * LLColor4(a,a,a,0.0f); + LLColor4 col_edge_next = fogged_color * LLColor4(an,an,an,0.0f); + + a *= 2.f; + a += 1.0f+dr; + + an *= 2.f; + an += 1.0f+dr; + + gGL.begin(LLRender::TRIANGLE_STRIP); + gGL.color4fv(col_edge.mV); + gGL.vertex3f(-x*a, -y*a, z); + gGL.color4fv(col_edge_next.mV); + gGL.vertex3f(-x*an, -y*an, z_next); + + gGL.color4fv(c_col.mV); + gGL.vertex3f(0, 0, z); + gGL.color4fv(col_next.mV); + gGL.vertex3f(0, 0, z_next); + + gGL.color4fv(col_edge.mV); + gGL.vertex3f(x*a,y*a,z); + gGL.color4fv(col_edge_next.mV); + gGL.vertex3f(x*an,y*an,z_next); + gGL.end(); + } + gGL.popMatrix(); +} // static void LLTracker::renderBeacon(LLVector3d pos_global, - const LLColor4& color, + const LLColor4& color, + const LLColor4& color_under, LLHUDText* hud_textp, const std::string& label ) { @@ -504,11 +574,11 @@ void LLTracker::renderBeacon(LLVector3d pos_global, } LLColor4 fogged_color = color_frac * color + (1 - color_frac)*gSky.getFogColor(); - LLColor4 under_color = color_frac * LLColor4::blue + (1 - color_frac) * gSky.getFogColor(); + LLColor4 fogged_color_under = color_frac * color_under + (1 - color_frac) * gSky.getFogColor(); F32 FADE_DIST = 3.f; fogged_color.mV[3] = llmax(0.2f, llmin(0.5f,(dist-FADE_DIST)/FADE_DIST)); - under_color.mV[3] = llmax(0.2f, llmin(0.5f,(dist-FADE_DIST)/FADE_DIST)); + fogged_color_under.mV[3] = llmax(0.2f, llmin(0.5f,(dist-FADE_DIST)/FADE_DIST)); LLVector3 pos_agent = gAgent.getPosAgentFromGlobal(pos_global); @@ -517,120 +587,8 @@ void LLTracker::renderBeacon(LLVector3d pos_global, LLGLDisable cull_face(GL_CULL_FACE); LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); - gGL.matrixMode(LLRender::MM_MODELVIEW); - gGL.pushMatrix(); - { - gGL.translatef(pos_agent.mV[0], pos_agent.mV[1], pos_agent.mV[2]); - - draw_shockwave(1024.f, gRenderStartTime.getElapsedTimeF32(), 32, fogged_color); - - gGL.color4fv(fogged_color.mV); - const U32 BEACON_VERTS = 256; - const F32 step = (5020.0f - pos_agent.mV[2]) / BEACON_VERTS; - - LLVector3 x_axis = LLViewerCamera::getInstance()->getLeftAxis(); - F32 t = gRenderStartTime.getElapsedTimeF32(); - F32 dr = dist/LLViewerCamera::getInstance()->getFar(); - - for (U32 i = 0; i < BEACON_VERTS; i++) - { - F32 x = x_axis.mV[0]; - F32 y = x_axis.mV[1]; - - F32 z = i * step; - F32 z_next = (i+1)*step; - - bool tracking_avatar = getTrackingStatus() == TRACKING_AVATAR; - F32 a = pulse_func(t, z, tracking_avatar); - F32 an = pulse_func(t, z_next, tracking_avatar); - - LLColor4 c_col = fogged_color + LLColor4(a,a,a,a); - LLColor4 col_next = fogged_color + LLColor4(an,an,an,an); - LLColor4 col_edge = fogged_color * LLColor4(a,a,a,0.0f); - LLColor4 col_edge_next = fogged_color * LLColor4(an,an,an,0.0f); - - a *= 2.f; - a += 1.0f+dr; - - an *= 2.f; - an += 1.0f+dr; - - gGL.begin(LLRender::TRIANGLE_STRIP); - gGL.color4fv(col_edge.mV); - gGL.vertex3f(-x*a, -y*a, z); - gGL.color4fv(col_edge_next.mV); - gGL.vertex3f(-x*an, -y*an, z_next); - - gGL.color4fv(c_col.mV); - gGL.vertex3f(0, 0, z); - gGL.color4fv(col_next.mV); - gGL.vertex3f(0, 0, z_next); - - gGL.color4fv(col_edge.mV); - gGL.vertex3f(x*a,y*a,z); - gGL.color4fv(col_edge_next.mV); - gGL.vertex3f(x*an,y*an,z_next); - gGL.end(); - } - } - gGL.popMatrix(); - - gGL.pushMatrix(); - { - gGL.translatef(pos_agent.mV[0], pos_agent.mV[1], 0); - -// draw_shockwave(1024.f, gRenderStartTime.getElapsedTimeF32(), 32, under_color); - - gGL.color4fv(under_color.mV); - const U32 BEACON_VERTS = 256; - const F32 step = pos_agent.mV[2] / BEACON_VERTS; - - LLVector3 x_axis = LLViewerCamera::getInstance()->getLeftAxis(); - F32 t = gRenderStartTime.getElapsedTimeF32(); - F32 dr = dist/LLViewerCamera::getInstance()->getFar(); - - for (U32 i = 0; i < BEACON_VERTS; i++) - { - F32 x = x_axis.mV[0]; - F32 y = x_axis.mV[1]; - - F32 z = i * step; - F32 z_next = (i+1)*step; - - bool tracking_avatar = getTrackingStatus() == TRACKING_AVATAR; - F32 a = pulse_func(t, z, tracking_avatar); - F32 an = pulse_func(t, z_next, tracking_avatar); - - LLColor4 c_col = under_color + LLColor4(a,a,a,a); - LLColor4 col_next = under_color + LLColor4(an,an,an,an); - LLColor4 col_edge = under_color * LLColor4(a,a,a,0.0f); - LLColor4 col_edge_next = under_color * LLColor4(an,an,an,0.0f); - - a *= 2.f; - a += 1.0f+dr; - - an *= 2.f; - an += 1.0f+dr; - - gGL.begin(LLRender::TRIANGLE_STRIP); - gGL.color4fv(col_edge.mV); - gGL.vertex3f(-x*a, -y*a, z); - gGL.color4fv(col_edge_next.mV); - gGL.vertex3f(-x*an, -y*an, z_next); - - gGL.color4fv(c_col.mV); - gGL.vertex3f(0, 0, z); - gGL.color4fv(col_next.mV); - gGL.vertex3f(0, 0, z_next); - - gGL.color4fv(col_edge.mV); - gGL.vertex3f(x*a,y*a,z); - gGL.color4fv(col_edge_next.mV); - gGL.vertex3f(x*an,y*an,z_next); - gGL.end(); - } - } - gGL.popMatrix(); + LLTracker::drawBeacon(pos_agent, "DOWN", fogged_color, dist); + LLTracker::drawBeacon(pos_agent, "UP", fogged_color_under, dist); std::string text; text = llformat( "%.0f m", to_vec.magVec()); diff --git a/indra/newview/lltracker.h b/indra/newview/lltracker.h index 8e916af315..d8d5803787 100755 --- a/indra/newview/lltracker.h +++ b/indra/newview/lltracker.h @@ -108,8 +108,10 @@ protected: LLTracker(); ~LLTracker(); + static void drawBeacon(LLVector3 pos_agent, std::string direction, LLColor4 fogged_color, F32 dist); static void renderBeacon( LLVector3d pos_global, const LLColor4& color, + const LLColor4& color_under, LLHUDText* hud_textp, const std::string& label ); diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index f53995732f..6f1a24d7f8 100755 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -510,6 +510,9 @@ + -- cgit v1.2.3 From 44ea72848fd64201ceef344e4136b9323c258615 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Tue, 26 Nov 2013 09:30:53 -0500 Subject: STORM-1981 Eliminate beam spreading --- indra/newview/lltracker.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp index e242cd6f5e..73ceb783b5 100755 --- a/indra/newview/lltracker.cpp +++ b/indra/newview/lltracker.cpp @@ -506,7 +506,6 @@ void LLTracker::drawBeacon(LLVector3 pos_agent, std::string direction, LLColor4 LLVector3 x_axis = LLViewerCamera::getInstance()->getLeftAxis(); F32 t = gRenderStartTime.getElapsedTimeF32(); - F32 dr = dist/LLViewerCamera::getInstance()->getFar(); for (U32 i = 0; i < BEACON_VERTS; i++) { @@ -526,10 +525,10 @@ void LLTracker::drawBeacon(LLVector3 pos_agent, std::string direction, LLColor4 LLColor4 col_edge_next = fogged_color * LLColor4(an,an,an,0.0f); a *= 2.f; - a += 1.0f+dr; + a += 1.0f; an *= 2.f; - an += 1.0f+dr; + an += 1.0f; gGL.begin(LLRender::TRIANGLE_STRIP); gGL.color4fv(col_edge.mV); -- cgit v1.2.3 From 52ec6f9af029797615a80e5a889572c18914d56e Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 26 Nov 2013 15:09:55 -0500 Subject: remove excessively complex fixes for MAINT-2914 and MAINT-3142 --- indra/newview/app_settings/commands.xml | 48 ---------------------- indra/newview/skins/default/textures/textures.xml | 3 -- .../newview/skins/default/xui/en/panel_people.xml | 3 +- .../default/xui/en/widgets/location_input.xml | 1 - .../skins/default/xui/en/widgets/tab_container.xml | 15 ++----- 5 files changed, 4 insertions(+), 66 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml index ce878f156b..60c942094a 100755 --- a/indra/newview/app_settings/commands.xml +++ b/indra/newview/app_settings/commands.xml @@ -3,8 +3,6 @@ - - @@ -165,7 +163,6 @@ with the same filename but different name - diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 3caf2b3d7e..05013f6b1e 100755 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -66,8 +66,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M tab_position="top" top="0" halign="center" - right="-5" - use_highlighting_on_hover="true"> + right="-5"> diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml index 4ea1aa6efb..61ec046649 100755 --- a/indra/newview/skins/default/xui/en/widgets/location_input.xml +++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml @@ -150,7 +150,6 @@ + tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/> + tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/> + tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/> -- cgit v1.2.3 From db8e4824e7f00516142461fa25616e3527007d66 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Tue, 26 Nov 2013 19:43:15 -0500 Subject: STORM-1986 Added right click Show on Map context menu for Inventory floater landmarks Possible fix for BUG-4593 --- indra/newview/llfloaterworldmap.cpp | 6 ++-- indra/newview/llinventorybridge.cpp | 36 ++++++++++++++++++++++ indra/newview/llinventorybridge.h | 4 +++ .../skins/default/xui/en/menu_inventory.xml | 8 +++++ 4 files changed, 51 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 137b5446cf..cb637c7162 100755 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -627,8 +627,8 @@ void LLFloaterWorldMap::trackLocation(const LLVector3d& pos_global) if (!sim_info) { // We haven't found a region for that point yet, leave the tracking to the world map - LLWorldMap::getInstance()->setTracking(pos_global); LLTracker::stopTracking(NULL); + LLWorldMap::getInstance()->setTracking(pos_global); S32 world_x = S32(pos_global.mdV[0] / 256); S32 world_y = S32(pos_global.mdV[1] / 256); LLWorldMapMessage::getInstance()->sendMapBlockRequest(world_x, world_y, world_x, world_y, true); @@ -643,9 +643,9 @@ void LLFloaterWorldMap::trackLocation(const LLVector3d& pos_global) { // Down region. Show the blue circle of death! // i.e. let the world map that this and tell it it's invalid + LLTracker::stopTracking(NULL); LLWorldMap::getInstance()->setTracking(pos_global); LLWorldMap::getInstance()->setTrackingInvalid(); - LLTracker::stopTracking(NULL); setDefaultBtn(""); // clicked on a down region - turn off coord display @@ -665,8 +665,8 @@ void LLFloaterWorldMap::trackLocation(const LLVector3d& pos_global) std::string tooltip(""); mTrackedStatus = LLTracker::TRACKING_LOCATION; - LLTracker::trackLocation(pos_global, full_name, tooltip); LLWorldMap::getInstance()->cancelTracking(); // The floater is taking over the tracking + LLTracker::trackLocation(pos_global, full_name, tooltip); LLVector3d coord_pos = LLTracker::getTrackedPositionGlobal(); updateTeleportCoordsDisplay( coord_pos ); diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 80ef506272..f65e28a165 100755 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -74,6 +74,7 @@ #include "llvoavatarself.h" #include "llwearablelist.h" #include "lllandmarkactions.h" +#include "llpanellandmarks.h" void copy_slurl_to_clipboard_callback_inv(const std::string& slurl); @@ -1449,6 +1450,40 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action) } } } + else if ("show_on_map" == action) + { + doActionOnCurSelectedLandmark(boost::bind(&LLItemBridge::doShowOnMap, this, _1)); + } +} + +void LLItemBridge::doActionOnCurSelectedLandmark(LLLandmarkList::loaded_callback_t cb) +{ + LLViewerInventoryItem* cur_item = getItem(); + if(cur_item && cur_item->getInventoryType() == LLInventoryType::IT_LANDMARK) + { + LLLandmark* landmark = LLLandmarkActions::getLandmark(cur_item->getUUID(), cb); + if (landmark) + { + cb(landmark); + } + } +} + +void LLItemBridge::doShowOnMap(LLLandmark* landmark) +{ + LLVector3d landmark_global_pos; + // landmark has already been tested for NULL by calling routine + if (!landmark->getGlobalPos(landmark_global_pos)) + { + return; + } + + LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance(); + if (!landmark_global_pos.isExactlyZero() && worldmap_instance) + { + worldmap_instance->trackLocation(landmark_global_pos); + LLFloaterReg::showInstance("world_map", "center"); + } } void copy_slurl_to_clipboard_callback_inv(const std::string& slurl) @@ -4580,6 +4615,7 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags) items.push_back(std::string("Landmark Separator")); items.push_back(std::string("url_copy")); items.push_back(std::string("About Landmark")); + items.push_back(std::string("show_on_map")); } // Disable "About Landmark" menu item for diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index 517153e171..bc875e8f37 100755 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -36,6 +36,7 @@ #include "llviewercontrol.h" #include "llviewerwearable.h" #include "lltooldraganddrop.h" +#include "lllandmarklist.h" class LLInventoryFilter; class LLInventoryPanel; @@ -239,7 +240,10 @@ protected: BOOL confirmRemoveItem(const LLSD& notification, const LLSD& response); virtual BOOL isItemPermissive() const; virtual void buildDisplayName() const; + void doActionOnCurSelectedLandmark(LLLandmarkList::loaded_callback_t cb); +private: + void doShowOnMap(LLLandmark* landmark); }; class LLFolderBridge : public LLInvFVBridge diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 512205ba43..6fa45d7d66 100755 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -552,6 +552,14 @@ function="Inventory.DoToSelected" parameter="about" /> + + + -- cgit v1.2.3 From d533dcebf77aa5d62c15488b3e6bed97ecffec02 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Wed, 27 Nov 2013 10:26:27 -0500 Subject: STORM-1987 Inconsistent menu naming and behavior in Places floater --- indra/newview/llpanelteleporthistory.cpp | 5 +++++ indra/newview/skins/default/xui/en/menu_teleport_history_item.xml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 0756faf5c0..9c380f63bd 100755 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -359,6 +359,11 @@ void LLTeleportHistoryPanel::ContextMenu::onInfo() void LLTeleportHistoryPanel::ContextMenu::gotSLURLCallback(const std::string& slurl) { LLClipboard::instance().copyToClipboard(utf8str_to_wstring(slurl),0,slurl.size()); + + LLSD args; + args["SLURL"] = slurl; + + LLNotificationsUtil::add("CopySLURL", args); } void LLTeleportHistoryPanel::ContextMenu::onCopyToClipboard() diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml index 0160d52b17..f939c3996d 100755 --- a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml @@ -17,7 +17,7 @@ function="TeleportHistory.MoreInformation" /> Date: Wed, 27 Nov 2013 10:43:02 -0500 Subject: STORM-1986 Eliminated early return per code review --- indra/newview/llinventorybridge.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index f65e28a165..44943d8722 100755 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -1473,16 +1473,14 @@ void LLItemBridge::doShowOnMap(LLLandmark* landmark) { LLVector3d landmark_global_pos; // landmark has already been tested for NULL by calling routine - if (!landmark->getGlobalPos(landmark_global_pos)) + if (landmark->getGlobalPos(landmark_global_pos)) { - return; - } - - LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance(); - if (!landmark_global_pos.isExactlyZero() && worldmap_instance) - { - worldmap_instance->trackLocation(landmark_global_pos); - LLFloaterReg::showInstance("world_map", "center"); + LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance(); + if (!landmark_global_pos.isExactlyZero() && worldmap_instance) + { + worldmap_instance->trackLocation(landmark_global_pos); + LLFloaterReg::showInstance("world_map", "center"); + } } } -- cgit v1.2.3 From 56f9b9c04868de2dbf106736ce7ee6f454e3ec38 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Tue, 3 Dec 2013 04:19:23 -0500 Subject: STORM-1989 Overlapping UI elements in Upload Model floater --- .../skins/default/xui/en/floater_model_preview.xml | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index 5e92a12251..9fa416012c 100755 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -212,11 +212,11 @@ follows="top|left" height="20" layout="topleft" - left="215" + left="222" name="lod_mode_high" top_delta="0" visible="false" - width="135"> + width="130"> @@ -230,7 +230,7 @@ height="20" increment="10" layout="topleft" - left_pad="5" + left_pad="3" name="lod_triangle_limit_high" visible="false" width="55" /> @@ -342,10 +342,10 @@ follows="top|left" height="20" layout="topleft" - left="215" + left="222" name="lod_mode_medium" top_delta="0" - width="135"> + width="130"> @@ -359,7 +359,7 @@ height="20" increment="10" layout="topleft" - left_pad="5" + left_pad="3" name="lod_triangle_limit_medium" width="55" /> + width="130"> @@ -487,7 +487,7 @@ height="20" increment="10" layout="topleft" - left_pad="5" + left_pad="3" name="lod_triangle_limit_low" width="55" /> + width="130"> @@ -615,7 +615,7 @@ height="20" increment="10" layout="topleft" - left_pad="5" + left_pad="3" name="lod_triangle_limit_lowest" width="55" /> Date: Tue, 3 Dec 2013 09:25:30 -0500 Subject: Update based on first project viewer tests. Two more bones to better address back deformation: UPPER_BACK and LOWER_BACK Better deformation for breasts, belly, upper and lower back (seen using the Body Fat and Belly Size sliders) Minor tweaks in the avatar_lad.xml file for a few other minor shapes. Small typo bug (FITMESH-2) Updated rigs and corrected female mesh Removed skeleton-only files so that people all start from the same base meshes with example skinning These updates specifically address the following bugs: FITMESH-2, FITMESH-4, FITMESH-5, FITMESH-7, FITMESH-10 (.ma formats, not .dae) --- indra/newview/character/avatar_lad.xml | 59 ++++++++++++++++++++++------- indra/newview/character/avatar_skeleton.xml | 6 ++- 2 files changed, 50 insertions(+), 15 deletions(-) mode change 100644 => 100755 indra/newview/character/avatar_lad.xml mode change 100644 => 100755 indra/newview/character/avatar_skeleton.xml (limited to 'indra/newview') diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml old mode 100644 new mode 100755 index 4631e012fd..5268498d56 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -3825,7 +3825,11 @@ + pos="0.07 0 -0.02"/> + @@ -3873,12 +3877,12 @@ + scale="-0.05 0.0 0.0" + pos="-0.01 -0.01 -0.02"/> + scale="-0.05 0.0 0.0" + pos="-0.01 -0.01 -0.02"/> @@ -3899,12 +3903,12 @@ + scale="-0.051 0.0 0.0" + pos="-0.02 -0.01 -0.03"/> + scale="-0.051 0.0 0.0" + pos="-0.02 -0.01 -0.03"/> @@ -3970,6 +3974,10 @@ name="BELLY" scale="0.0 -0.01 0.0" pos="0.0 0.0 0"/> + + + + + + + + pos="0.00 -0.005 -0.013"/> + pos="0.00 0.005 -0.013"/> + @@ -4244,11 +4277,11 @@ + pos="-0.03 -0.024 -0.01"/> + pos="-0.03 0.024 -0.01"/> diff --git a/indra/newview/character/avatar_skeleton.xml b/indra/newview/character/avatar_skeleton.xml old mode 100644 new mode 100755 index 7ab20f8c6b..6b07bbc1d3 --- a/indra/newview/character/avatar_skeleton.xml +++ b/indra/newview/character/avatar_skeleton.xml @@ -1,14 +1,16 @@ - + - + + + -- cgit v1.2.3 From e390255de640827f3f4f1c39c7ebb443142e490f Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Wed, 4 Dec 2013 19:33:10 -0500 Subject: STORM-1992 'Open voice connection' and 'Expand participant list' buttons are overlapping each other in IM conversation after resizing. --- indra/newview/skins/default/xui/en/floater_im_session.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index 43d0f2fb18..7076de55e3 100755 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -210,7 +210,7 @@ default_tab_group="3" tab_group="2" name="right_part_holder" - min_width="172"> + min_width="230"> Date: Wed, 4 Dec 2013 19:38:52 -0500 Subject: STORM-1993 In the About Land floater only send object return time to server when it has been changed --- indra/newview/llfloaterland.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 6c8e81e563..b16ef6dd79 100755 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -1791,10 +1791,15 @@ void LLPanelLandObjects::onCommitClean(LLUICtrl *caller, void* user_data) LLParcel* parcel = lop->mParcel->getParcel(); if (parcel) { - lop->mOtherTime = atoi(lop->mCleanOtherObjectsTime->getText().c_str()); + S32 return_time = atoi(lop->mCleanOtherObjectsTime->getText().c_str()); + // Only send return time if it has changed + if (return_time != lop->mOtherTime) + { + lop->mOtherTime = return_time; - parcel->setCleanOtherTime(lop->mOtherTime); - send_other_clean_time_message(parcel->getLocalID(), lop->mOtherTime); + parcel->setCleanOtherTime(lop->mOtherTime); + send_other_clean_time_message(parcel->getLocalID(), lop->mOtherTime); + } } } -- cgit v1.2.3 From 81d1d427f194c969031c334151df0dda231331b8 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Wed, 11 Dec 2013 10:41:28 -0500 Subject: OPEN-113 Build > Upload > Model > Calculate weights & fee is not disabled in OS built viewers --- indra/newview/llfloatermodelpreview.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 19cec55837..1699fb4e8d 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -535,9 +535,16 @@ BOOL LLFloaterModelPreview::postBuild() mUploadBtn = getChild("ok_btn"); mCalculateBtn = getChild("calculate_btn"); - mCalculateBtn->setClickedCallback(boost::bind(&LLFloaterModelPreview::onClickCalculateBtn, this)); + if (LLConvexDecomposition::isFunctional()) + { + mCalculateBtn->setClickedCallback(boost::bind(&LLFloaterModelPreview::onClickCalculateBtn, this)); - toggleCalculateButton(true); + toggleCalculateButton(true); + } + else + { + mCalculateBtn->setEnabled(false); + } return TRUE; } -- cgit v1.2.3 From 97d9eee4ffc56123656abfe46db140bd1acca685 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Wed, 11 Dec 2013 14:29:52 -0500 Subject: OPEN-113 Use better way of testing for stub that will not impact TPVs. --- indra/newview/llfloatermodelpreview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 1699fb4e8d..855836af7a 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -535,7 +535,7 @@ BOOL LLFloaterModelPreview::postBuild() mUploadBtn = getChild("ok_btn"); mCalculateBtn = getChild("calculate_btn"); - if (LLConvexDecomposition::isFunctional()) + if (LLConvexDecomposition::getInstance() != NULL) { mCalculateBtn->setClickedCallback(boost::bind(&LLFloaterModelPreview::onClickCalculateBtn, this)); -- cgit v1.2.3 From 0e346960bb45900cf1d9472834687c9b7b928e1f Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 17 Dec 2013 13:05:12 -0500 Subject: add LLAgent::removeRegionChangedCallback --- indra/newview/llagent.cpp | 4 ++++ indra/newview/llagent.h | 1 + 2 files changed, 5 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 6ee8f26b9f..b1cd68140e 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -981,6 +981,10 @@ boost::signals2::connection LLAgent::addRegionChangedCallback(region_changed_cal return mRegionChangedSignal.connect(cb); } +void LLAgent::removeRegionChangedCallback(boost::signals2::connection callback) +{ + mRegionChangedSignal.disconnect(callback); +} //----------------------------------------------------------------------------- // inPrelude() diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 0662be897a..bc003387de 100755 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -273,6 +273,7 @@ private: */ typedef boost::function region_changed_callback_t; boost::signals2::connection addRegionChangedCallback(region_changed_callback_t); + void removeRegionChangedCallback(boost::signals2::connection callback); private: LLViewerRegion *mRegionp; -- cgit v1.2.3 From 1886428638c2cb1e82db9f97ad311c2a506677a6 Mon Sep 17 00:00:00 2001 From: Ima Mechanique Date: Wed, 18 Dec 2013 06:26:22 +0000 Subject: STORM-1831 Changing addRegionChangedCallback to more closely resemble the feature it replaces. This fixes the crashes reported by Whirly ;-) --- indra/newview/llagent.cpp | 2 +- indra/newview/llagent.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index b1cd68140e..14a2508697 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -976,7 +976,7 @@ LLHost LLAgent::getRegionHost() const } } -boost::signals2::connection LLAgent::addRegionChangedCallback(region_changed_callback_t cb) +boost::signals2::connection LLAgent::addRegionChangedCallback(const region_changed_signal_t::slot_type& cb) { return mRegionChangedSignal.connect(cb); } diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index bc003387de..0766407494 100755 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -271,13 +271,13 @@ private: * // you may or may not want to remove that callback * } */ - typedef boost::function region_changed_callback_t; - boost::signals2::connection addRegionChangedCallback(region_changed_callback_t); + typedef boost::signals2::signal region_changed_signal_t; + + boost::signals2::connection addRegionChangedCallback(const region_changed_signal_t::slot_type& cb); void removeRegionChangedCallback(boost::signals2::connection callback); private: LLViewerRegion *mRegionp; - typedef boost::signals2::signal region_changed_signal_t; region_changed_signal_t mRegionChangedSignal; //-------------------------------------------------------------------- -- cgit v1.2.3 From 02afa9cfb050fbc23f5de89bd0adcdc0fb832dea Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 18 Dec 2013 13:39:18 -0500 Subject: STORM-1980: set new region restart sound uuid --- indra/newview/app_settings/settings.xml | 2 +- indra/newview/llvieweraudio.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index abe7b95266..b6b9f40db7 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12641,7 +12641,7 @@ Type String Value - 4b315701-1972-9e23-cdd8-23cbc8cb0f42 + b92a0f64-7709-8811-40c5-16afd624a45f UISndSnapshot diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp index 3da934b148..826d296117 100755 --- a/indra/newview/llvieweraudio.cpp +++ b/indra/newview/llvieweraudio.cpp @@ -368,6 +368,7 @@ void init_audio() gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndTyping"))); gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndWindowClose"))); gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndWindowOpen"))); + gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndRestart"))); } audio_update_volume(true); -- cgit v1.2.3 From 5f635f7942130ab25f74f5c6aaeb5b135d0cb43e Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Thu, 2 Jan 2014 13:40:16 -0500 Subject: STORM-1980 Remove callback in destructor. Shrink floater and add a "!" icon in the top left corner. --- indra/newview/llfloaterregionrestarting.cpp | 3 +- indra/newview/llfloaterregionrestarting.h | 2 ++ .../default/xui/en/floater_region_restarting.xml | 36 ++++++++++++++-------- 3 files changed, 28 insertions(+), 13 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterregionrestarting.cpp b/indra/newview/llfloaterregionrestarting.cpp index 899216b966..003ed488c6 100644 --- a/indra/newview/llfloaterregionrestarting.cpp +++ b/indra/newview/llfloaterregionrestarting.cpp @@ -44,6 +44,7 @@ LLFloaterRegionRestarting::LLFloaterRegionRestarting(const LLSD& key) : LLFloaterRegionRestarting::~LLFloaterRegionRestarting() { + mRegionChangedConnection.disconnect(); } BOOL LLFloaterRegionRestarting::postBuild() @@ -58,7 +59,7 @@ BOOL LLFloaterRegionRestarting::postBuild() refresh(); - gAgent.addRegionChangedCallback(boost::bind(&LLFloaterRegionRestarting::regionChange, this)); + mRegionChangedConnection = gAgent.addRegionChangedCallback(boost::bind(&LLFloaterRegionRestarting::regionChange, this)); return TRUE; } diff --git a/indra/newview/llfloaterregionrestarting.h b/indra/newview/llfloaterregionrestarting.h index fef0dcddfe..6ff067e0a8 100644 --- a/indra/newview/llfloaterregionrestarting.h +++ b/indra/newview/llfloaterregionrestarting.h @@ -48,6 +48,8 @@ private: virtual void regionChange(); std::string mName; + + boost::signals2::connection mRegionChangedConnection; }; #endif // LL_LLFLOATERREGIONRESTARTING_H diff --git a/indra/newview/skins/default/xui/en/floater_region_restarting.xml b/indra/newview/skins/default/xui/en/floater_region_restarting.xml index dcb5fcc41d..2fe4d0190a 100644 --- a/indra/newview/skins/default/xui/en/floater_region_restarting.xml +++ b/indra/newview/skins/default/xui/en/floater_region_restarting.xml @@ -1,7 +1,7 @@ - + + + + + top="5" + left="40" + width="230"> The region you are in now (-The longest region name-) is about to restart. If you stay in this region you will be logged out. @@ -51,11 +62,12 @@ If you stay in this region you will be logged out. layout="topleft" name="restart_seconds" text_color="Black" - font="SansSerifHuge" - height="100" + font="SansSerifLargeBold" + height="40" + top="110" left="0" halign="center" - width="500"> + width="290"> Seconds until restart 32767 -- cgit v1.2.3 From 4e4cf8b528701275d2c095c1b10c6cd27cead62e Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Thu, 2 Jan 2014 18:09:29 -0500 Subject: increment version to 3.7.0 --- indra/newview/VIEWER_VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 3609cf7707..7c69a55dbb 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -3.6.13 +3.7.0 -- cgit v1.2.3 From d15cc2dadc34c757d1ac6aef66d5baa38fb80968 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Fri, 3 Jan 2014 13:31:51 -0500 Subject: STORM-1980 Add shake effect --- indra/newview/llfloaterregionrestarting.cpp | 83 +++++++++++++++++++++++++---- indra/newview/llfloaterregionrestarting.h | 13 +++++ indra/newview/llviewermessage.cpp | 7 ++- 3 files changed, 90 insertions(+), 13 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterregionrestarting.cpp b/indra/newview/llfloaterregionrestarting.cpp index 003ed488c6..111daf93eb 100644 --- a/indra/newview/llfloaterregionrestarting.cpp +++ b/indra/newview/llfloaterregionrestarting.cpp @@ -31,15 +31,18 @@ #include "llfloaterreg.h" #include "lluictrl.h" #include "llagent.h" +#include "llagentcamera.h" +#include "llviewerwindow.h" -static S32 mSeconds; +static S32 sSeconds; +static U32 sShakeState; LLFloaterRegionRestarting::LLFloaterRegionRestarting(const LLSD& key) : LLFloater(key), LLEventTimer(1) { mName = (std::string)key["NAME"]; - mSeconds = (LLSD::Integer)key["SECONDS"]; + sSeconds = (LLSD::Integer)key["SECONDS"]; } LLFloaterRegionRestarting::~LLFloaterRegionRestarting() @@ -49,6 +52,8 @@ LLFloaterRegionRestarting::~LLFloaterRegionRestarting() BOOL LLFloaterRegionRestarting::postBuild() { + mRegionChangedConnection = gAgent.addRegionChangedCallback(boost::bind(&LLFloaterRegionRestarting::regionChange, this)); + LLStringUtil::format_map_t args; std::string text; @@ -57,9 +62,9 @@ BOOL LLFloaterRegionRestarting::postBuild() LLTextBox* textbox = getChild("region_name"); textbox->setValue(text); - refresh(); + sShakeState = SHAKE_START; - mRegionChangedConnection = gAgent.addRegionChangedCallback(boost::bind(&LLFloaterRegionRestarting::regionChange, this)); + refresh(); return TRUE; } @@ -81,13 +86,72 @@ void LLFloaterRegionRestarting::refresh() LLStringUtil::format_map_t args; std::string text; - args["[SECONDS]"] = llformat("%d", mSeconds); + args["[SECONDS]"] = llformat("%d", sSeconds); getChild("restart_seconds")->setValue(getString("RestartSeconds", args)); - mSeconds = mSeconds - 1; - if(mSeconds < 0.0) + sSeconds = sSeconds - 1; + if(sSeconds < 0.0) + { + sSeconds = 0; + } +} + +void LLFloaterRegionRestarting::draw() +{ + LLFloater::draw(); + + const F32 SHAKE_INTERVAL = 0.05; + const U32 SHAKE_ITERATIONS = 4; + + if(SHAKE_START == sShakeState) + { + mShakeTimer.setTimerExpirySec(SHAKE_INTERVAL); + sShakeState = SHAKE_LEFT; + mIterations = 0; + } + + if(SHAKE_DONE != sShakeState && mShakeTimer.hasExpired()) { - mSeconds = 0; + gAgentCamera.unlockView(); + + switch(sShakeState) + { + case SHAKE_LEFT: + gAgentCamera.setPanLeftKey(1.0); + gAgentCamera.setPanLeftKey(1.0); + sShakeState = SHAKE_UP; + break; + + case SHAKE_UP: + gAgentCamera.setPanUpKey(1.0); + gAgentCamera.setPanUpKey(1.0); + sShakeState = SHAKE_RIGHT; + break; + + case SHAKE_RIGHT: + gAgentCamera.setPanRightKey(1.0); + gAgentCamera.setPanRightKey(1.0); + sShakeState = SHAKE_DOWN; + break; + + case SHAKE_DOWN: + gAgentCamera.setPanDownKey(1.0); + gAgentCamera.setPanDownKey(1.0); + mIterations = mIterations + 1; + if(SHAKE_ITERATIONS == mIterations) + { + sShakeState = SHAKE_DONE; + } + else + { + sShakeState = SHAKE_LEFT; + } + break; + + default: + break; + } + mShakeTimer.setTimerExpirySec(SHAKE_INTERVAL); } } @@ -103,5 +167,6 @@ void LLFloaterRegionRestarting::close() void LLFloaterRegionRestarting::updateTime(S32 time) { - mSeconds = time; + sSeconds = time; + sShakeState = SHAKE_START; } diff --git a/indra/newview/llfloaterregionrestarting.h b/indra/newview/llfloaterregionrestarting.h index 6ff067e0a8..95fe772a28 100644 --- a/indra/newview/llfloaterregionrestarting.h +++ b/indra/newview/llfloaterregionrestarting.h @@ -45,11 +45,24 @@ private: virtual BOOL postBuild(); virtual BOOL tick(); virtual void refresh(); + virtual void draw(); virtual void regionChange(); std::string mName; + U32 mIterations; + LLTimer mShakeTimer; boost::signals2::connection mRegionChangedConnection; + + enum + { + SHAKE_START, + SHAKE_LEFT, + SHAKE_UP, + SHAKE_RIGHT, + SHAKE_DOWN, + SHAKE_DONE + }; }; #endif // LL_LLFLOATERREGIONRESTARTING_H diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index e81de844d1..076419e96a 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5967,10 +5967,6 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) seconds = static_cast(llsdBlock["SECONDS"].asInteger()); } - LLSD params; - params["NAME"] = llsdBlock["NAME"]; - params["SECONDS"] = (LLSD::Integer)seconds; - LLFloaterRegionRestarting* floaterp = LLFloaterReg::findTypedInstance("region_restarting"); if (floaterp) @@ -5979,6 +5975,9 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) } else { + LLSD params; + params["NAME"] = llsdBlock["NAME"]; + params["SECONDS"] = (LLSD::Integer)seconds; LLFloaterReg::showInstance("region_restarting", params); } -- cgit v1.2.3 From 6051a865578f08e65e058478a6cc7fedb5aefb7b Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Fri, 3 Jan 2014 14:08:55 -0500 Subject: STORM-1980 Small optimization and tweaks of shaking constants --- indra/newview/llfloaterregionrestarting.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterregionrestarting.cpp b/indra/newview/llfloaterregionrestarting.cpp index 111daf93eb..b793d259cd 100644 --- a/indra/newview/llfloaterregionrestarting.cpp +++ b/indra/newview/llfloaterregionrestarting.cpp @@ -100,8 +100,9 @@ void LLFloaterRegionRestarting::draw() { LLFloater::draw(); - const F32 SHAKE_INTERVAL = 0.05; + const F32 SHAKE_INTERVAL = 0.03; const U32 SHAKE_ITERATIONS = 4; + const F32 SHAKE_AMOUNT = 1.5; if(SHAKE_START == sShakeState) { @@ -117,26 +118,22 @@ void LLFloaterRegionRestarting::draw() switch(sShakeState) { case SHAKE_LEFT: - gAgentCamera.setPanLeftKey(1.0); - gAgentCamera.setPanLeftKey(1.0); + gAgentCamera.setPanLeftKey(SHAKE_AMOUNT); sShakeState = SHAKE_UP; break; case SHAKE_UP: - gAgentCamera.setPanUpKey(1.0); - gAgentCamera.setPanUpKey(1.0); + gAgentCamera.setPanUpKey(SHAKE_AMOUNT); sShakeState = SHAKE_RIGHT; break; case SHAKE_RIGHT: - gAgentCamera.setPanRightKey(1.0); - gAgentCamera.setPanRightKey(1.0); + gAgentCamera.setPanRightKey(SHAKE_AMOUNT); sShakeState = SHAKE_DOWN; break; case SHAKE_DOWN: - gAgentCamera.setPanDownKey(1.0); - gAgentCamera.setPanDownKey(1.0); + gAgentCamera.setPanDownKey(SHAKE_AMOUNT); mIterations = mIterations + 1; if(SHAKE_ITERATIONS == mIterations) { -- cgit v1.2.3 From 05a313f546c4f943a74ec2214cabf4df747eda5a Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Fri, 3 Jan 2014 18:19:25 -0500 Subject: change shaking to decay exponentially --- indra/newview/llfloaterregionrestarting.cpp | 28 +++++++++++++++++----------- indra/newview/llfloaterregionrestarting.h | 3 ++- 2 files changed, 19 insertions(+), 12 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterregionrestarting.cpp b/indra/newview/llfloaterregionrestarting.cpp index b793d259cd..94c805205a 100644 --- a/indra/newview/llfloaterregionrestarting.cpp +++ b/indra/newview/llfloaterregionrestarting.cpp @@ -100,15 +100,17 @@ void LLFloaterRegionRestarting::draw() { LLFloater::draw(); - const F32 SHAKE_INTERVAL = 0.03; - const U32 SHAKE_ITERATIONS = 4; - const F32 SHAKE_AMOUNT = 1.5; - + const F32 SHAKE_INTERVAL = 0.04; + const F32 SHAKE_TOTAL_DURATION = 1.8; // the length of the default alert tone for this + const F32 SHAKE_INITIAL_MAGNITUDE = 1.5; + F32 time_shaking; + if(SHAKE_START == sShakeState) { mShakeTimer.setTimerExpirySec(SHAKE_INTERVAL); sShakeState = SHAKE_LEFT; - mIterations = 0; + mShakeIterations = 0; + mShakeMagnitude = SHAKE_INITIAL_MAGNITUDE; } if(SHAKE_DONE != sShakeState && mShakeTimer.hasExpired()) @@ -118,30 +120,34 @@ void LLFloaterRegionRestarting::draw() switch(sShakeState) { case SHAKE_LEFT: - gAgentCamera.setPanLeftKey(SHAKE_AMOUNT); + gAgentCamera.setPanLeftKey(mShakeMagnitude); sShakeState = SHAKE_UP; break; case SHAKE_UP: - gAgentCamera.setPanUpKey(SHAKE_AMOUNT); + gAgentCamera.setPanUpKey(mShakeMagnitude); sShakeState = SHAKE_RIGHT; break; case SHAKE_RIGHT: - gAgentCamera.setPanRightKey(SHAKE_AMOUNT); + gAgentCamera.setPanRightKey(mShakeMagnitude); sShakeState = SHAKE_DOWN; break; case SHAKE_DOWN: - gAgentCamera.setPanDownKey(SHAKE_AMOUNT); - mIterations = mIterations + 1; - if(SHAKE_ITERATIONS == mIterations) + gAgentCamera.setPanDownKey(mShakeMagnitude); + mShakeIterations++; + time_shaking = SHAKE_INTERVAL * (mShakeIterations * 4 /* left, up, right, down */); + if(SHAKE_TOTAL_DURATION <= time_shaking) { sShakeState = SHAKE_DONE; + mShakeMagnitude = 0.0; } else { sShakeState = SHAKE_LEFT; + F32 percent_done_shaking = (SHAKE_TOTAL_DURATION - time_shaking) / SHAKE_TOTAL_DURATION; + mShakeMagnitude = SHAKE_INITIAL_MAGNITUDE * (percent_done_shaking * percent_done_shaking); // exponential decay } break; diff --git a/indra/newview/llfloaterregionrestarting.h b/indra/newview/llfloaterregionrestarting.h index 95fe772a28..46416db2c8 100644 --- a/indra/newview/llfloaterregionrestarting.h +++ b/indra/newview/llfloaterregionrestarting.h @@ -49,7 +49,8 @@ private: virtual void regionChange(); std::string mName; - U32 mIterations; + U32 mShakeIterations; + F32 mShakeMagnitude; LLTimer mShakeTimer; boost::signals2::connection mRegionChangedConnection; -- cgit v1.2.3 From 24c5ac7417f8b32c39dd5defec21845bd03786c4 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Sat, 4 Jan 2014 10:40:20 -0500 Subject: STORM-1980 Center floater on screen. Tweak shaking parameters. --- indra/newview/llfloaterregionrestarting.cpp | 7 ++++--- indra/newview/llviewermessage.cpp | 6 +++++- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterregionrestarting.cpp b/indra/newview/llfloaterregionrestarting.cpp index 94c805205a..95d4265bb4 100644 --- a/indra/newview/llfloaterregionrestarting.cpp +++ b/indra/newview/llfloaterregionrestarting.cpp @@ -100,9 +100,10 @@ void LLFloaterRegionRestarting::draw() { LLFloater::draw(); - const F32 SHAKE_INTERVAL = 0.04; + const F32 SHAKE_INTERVAL = 0.025; const F32 SHAKE_TOTAL_DURATION = 1.8; // the length of the default alert tone for this const F32 SHAKE_INITIAL_MAGNITUDE = 1.5; + const F32 SHAKE_HORIZONTAL_BIAS = 0.25; F32 time_shaking; if(SHAKE_START == sShakeState) @@ -120,7 +121,7 @@ void LLFloaterRegionRestarting::draw() switch(sShakeState) { case SHAKE_LEFT: - gAgentCamera.setPanLeftKey(mShakeMagnitude); + gAgentCamera.setPanLeftKey(mShakeMagnitude * SHAKE_HORIZONTAL_BIAS); sShakeState = SHAKE_UP; break; @@ -130,7 +131,7 @@ void LLFloaterRegionRestarting::draw() break; case SHAKE_RIGHT: - gAgentCamera.setPanRightKey(mShakeMagnitude); + gAgentCamera.setPanRightKey(mShakeMagnitude * SHAKE_HORIZONTAL_BIAS); sShakeState = SHAKE_DOWN; break; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 076419e96a..267aa9532c 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5978,7 +5978,11 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) LLSD params; params["NAME"] = llsdBlock["NAME"]; params["SECONDS"] = (LLSD::Integer)seconds; - LLFloaterReg::showInstance("region_restarting", params); + LLFloaterRegionRestarting* restarting_floater = dynamic_cast(LLFloaterReg::showInstance("region_restarting", params)); + if(restarting_floater) + { + restarting_floater->center(); + } } send_sound_trigger(LLUUID(gSavedSettings.getString("UISndRestart")), 1.0f); -- cgit v1.2.3 From cdec438683bedb4d9cabc95abf711125694a8138 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 22 Jan 2014 16:44:34 -0500 Subject: add retries around OSX codesign to try to work around frequent build farm failures --- indra/newview/viewer_manifest.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 9a617c2a13..bf19722a82 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -38,7 +38,7 @@ viewer_dir = os.path.dirname(__file__) # Put it FIRST because some of our build hosts have an ancient install of # indra.util.llmanifest under their system Python! sys.path.insert(0, os.path.join(viewer_dir, os.pardir, "lib", "python")) -from indra.util.llmanifest import LLManifest, main, proper_windows_path, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL +from indra.util.llmanifest import LLManifest, main, proper_windows_path, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL, ManifestError try: from llbase import llsd except ImportError: @@ -818,11 +818,27 @@ class Darwin_i386_Manifest(ViewerManifest): keychain_pwd = open(keychain_pwd_path).read().rstrip() self.run_command('security unlock-keychain -p "%s" "%s/Library/Keychains/viewer.keychain"' % ( keychain_pwd, home_path ) ) - self.run_command('codesign --verbose --force --keychain "%(home_path)s/Library/Keychains/viewer.keychain" --sign %(identity)r %(bundle)r' % { - 'home_path' : home_path, - 'identity': identity, - 'bundle': self.get_dst_prefix() - }) + signed=False + sign_attempts=3 + sign_retry_wait=15 + while (not signed) and (sign_attempts > 0): + try: + sign_attempts-=1; + self.run_command( + 'codesign --verbose --force --keychain "%(home_path)s/Library/Keychains/viewer.keychain" --sign %(identity)r %(bundle)r' % { + 'home_path' : home_path, + 'identity': identity, + 'bundle': self.get_dst_prefix() + }) + signed=True # if no exception was raised, the codesign worked + except ManifestError, err: + if sign_attempts: + print >> sys.stderr, "codesign failed, waiting %d seconds before retrying" + time.sleep(sign_retry_wait) + sign_retry_wait*=2 + else: + print >> sys.stderr, "Maximum codesign attempts exceeded; giving up" + raise imagename="SecondLife_" + '_'.join(self.args['version']) -- cgit v1.2.3 From 476e317c8b4803926e1775ec206d013bd717ad98 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Thu, 23 Jan 2014 17:55:03 -0600 Subject: FITMESH-6, FITMESH-20 Fix for some objects disappearing when hardware skinning enabled and ALM disabled. --- .../app_settings/shaders/class1/avatar/objectSkinV.glsl | 9 +++------ indra/newview/lldrawpoolavatar.cpp | 12 +++++++----- 2 files changed, 10 insertions(+), 11 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl index 972d10b325..8eb5a977bc 100755 --- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl @@ -22,17 +22,14 @@ * $/LicenseInfo$ */ - - ATTRIBUTE vec4 weight4; -uniform mat3 matrixPalette[64]; -uniform vec3 translationPalette[64]; - +uniform mat3 matrixPalette[52]; +uniform vec3 translationPalette[52]; mat4 getObjectSkinnedTransform() { - int i; + int i; vec4 w = fract(weight4); vec4 index = floor(weight4); diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index e77ed27fa2..4578d3d0cd 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -55,6 +55,7 @@ static U32 sDataMask = LLDrawPoolAvatar::VERTEX_DATA_MASK; static U32 sBufferUsage = GL_STREAM_DRAW_ARB; static U32 sShaderLevel = 0; +#define JOINT_COUNT 52 LLGLSLShader* LLDrawPoolAvatar::sVertexProgram = NULL; BOOL LLDrawPoolAvatar::sSkipOpaque = FALSE; @@ -1582,7 +1583,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* LLVector4a* norm = has_normal ? (LLVector4a*) normal.get() : NULL; //build matrix palette - LLMatrix4a mp[64]; + LLMatrix4a mp[JOINT_COUNT]; LLMatrix4* mat = (LLMatrix4*) mp; for (U32 j = 0; j < skin->mJointNames.size(); ++j) @@ -1642,6 +1643,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* LLVector4a& n = vol_face.mNormals[j]; bind_shape_matrix.rotate(n, t); final_mat.rotate(t, dst); + dst.normalize3fast(); norm[j] = dst; } } @@ -1708,9 +1710,9 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) { if (sShaderLevel > 0) { //upload matrix palette to shader - LLMatrix4 mat[64]; + LLMatrix4 mat[JOINT_COUNT]; - U32 count = llmin((U32) skin->mJointNames.size(), (U32) 64); + U32 count = llmin((U32) skin->mJointNames.size(), (U32) JOINT_COUNT); for (U32 i = 0; i < count; ++i) { @@ -1724,9 +1726,9 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) stop_glerror(); - F32 mp[64*9]; + F32 mp[JOINT_COUNT*9]; - F32 transp[64*3]; + F32 transp[JOINT_COUNT*3]; for (U32 i = 0; i < count; ++i) { -- cgit v1.2.3 From cec62b7872db7a9ca52e3872b96bf36f6e271f77 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Fri, 24 Jan 2014 16:39:00 -0500 Subject: fix error message python boo-boo --- indra/newview/viewer_manifest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index bf19722a82..96b4c7268c 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -833,7 +833,7 @@ class Darwin_i386_Manifest(ViewerManifest): signed=True # if no exception was raised, the codesign worked except ManifestError, err: if sign_attempts: - print >> sys.stderr, "codesign failed, waiting %d seconds before retrying" + print >> sys.stderr, "codesign failed, waiting %d seconds before retrying" % sign_retry_wait time.sleep(sign_retry_wait) sign_retry_wait*=2 else: -- cgit v1.2.3 From 7b1e1e4e35351936f2ab0305a91691f78f69519d Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 29 Jan 2014 18:25:03 -0500 Subject: FITMESH-6: correct bounds checking --- indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl | 2 +- indra/newview/lldrawpoolavatar.cpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl index 8eb5a977bc..57129c3bd1 100755 --- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl @@ -34,7 +34,7 @@ mat4 getObjectSkinnedTransform() vec4 w = fract(weight4); vec4 index = floor(weight4); - index = min(index, vec4(63.0)); + index = min(index, vec4(51.0)); index = max(index, vec4( 0.0)); float scale = 1.0/(w.x+w.y+w.z+w.w); diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 4578d3d0cd..906b7b2809 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -698,7 +698,7 @@ void LLDrawPoolAvatar::beginDeferredImpostor() specular_channel = sVertexProgram->enableTexture(LLViewerShaderMgr::SPECULAR_MAP); normal_channel = sVertexProgram->enableTexture(LLViewerShaderMgr::DEFERRED_NORMAL); sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP); - sVertexProgram->bind(); + U1573sVertexProgram->bind(); sVertexProgram->setMinimumAlpha(0.01f); } @@ -1586,7 +1586,8 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* LLMatrix4a mp[JOINT_COUNT]; LLMatrix4* mat = (LLMatrix4*) mp; - for (U32 j = 0; j < skin->mJointNames.size(); ++j) + U32 count = llmin((U32) skin->mJointNames.size(), (U32) JOINT_COUNT); + for (U32 j = 0; j < count; ++j) { LLJoint* joint = avatar->getJoint(skin->mJointNames[j]); if (joint) -- cgit v1.2.3 From 9bb2bc6099c37a1d3efb4f1400a1a42750f85bac Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Thu, 30 Jan 2014 14:18:58 -0500 Subject: fix odd editor artifact --- indra/newview/lldrawpoolavatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 906b7b2809..24f467f954 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -698,7 +698,7 @@ void LLDrawPoolAvatar::beginDeferredImpostor() specular_channel = sVertexProgram->enableTexture(LLViewerShaderMgr::SPECULAR_MAP); normal_channel = sVertexProgram->enableTexture(LLViewerShaderMgr::DEFERRED_NORMAL); sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP); - U1573sVertexProgram->bind(); + sVertexProgram->bind(); sVertexProgram->setMinimumAlpha(0.01f); } -- cgit v1.2.3 From 413be91cf5044889ade97dcbec4b17fceff122e3 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Mon, 10 Feb 2014 16:00:37 -0500 Subject: increment viewer version to 3.7.1 --- indra/newview/VIEWER_VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 7c69a55dbb..a76ccff2a6 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -3.7.0 +3.7.1 -- cgit v1.2.3