summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/llfloaterland.cpp11
-rwxr-xr-xindra/newview/llfloatermodelpreview.cpp11
-rwxr-xr-xindra/newview/llfloaterworldmap.cpp6
-rwxr-xr-xindra/newview/llinventorybridge.cpp34
-rwxr-xr-xindra/newview/llinventorybridge.h4
-rwxr-xr-xindra/newview/llpanelteleporthistory.cpp5
-rwxr-xr-xindra/newview/lltracker.cpp152
-rwxr-xr-xindra/newview/lltracker.h2
-rwxr-xr-xindra/newview/skins/default/colors.xml3
-rwxr-xr-xindra/newview/skins/default/xui/en/floater_im_session.xml2
-rwxr-xr-xindra/newview/skins/default/xui/en/floater_model_preview.xml24
-rwxr-xr-xindra/newview/skins/default/xui/en/menu_inventory.xml8
-rwxr-xr-xindra/newview/skins/default/xui/en/menu_teleport_history_item.xml2
13 files changed, 177 insertions, 87 deletions
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);
+ }
}
}
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index 19cec55837..855836af7a 100755
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -535,9 +535,16 @@ BOOL LLFloaterModelPreview::postBuild()
mUploadBtn = getChild<LLButton>("ok_btn");
mCalculateBtn = getChild<LLButton>("calculate_btn");
- mCalculateBtn->setClickedCallback(boost::bind(&LLFloaterModelPreview::onClickCalculateBtn, this));
+ if (LLConvexDecomposition::getInstance() != NULL)
+ {
+ mCalculateBtn->setClickedCallback(boost::bind(&LLFloaterModelPreview::onClickCalculateBtn, this));
- toggleCalculateButton(true);
+ toggleCalculateButton(true);
+ }
+ else
+ {
+ mCalculateBtn->setEnabled(false);
+ }
return TRUE;
}
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..44943d8722 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,38 @@ 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))
+ {
+ 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 +4613,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/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/lltracker.cpp b/indra/newview/lltracker.cpp
index cbd16e873d..73ceb783b5 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)
+F32 pulse_func(F32 t, F32 z, bool tracking_avatar, std::string direction)
{
if (!LLTracker::sCheesyBeacon)
{
@@ -420,8 +421,15 @@ F32 pulse_func(F32 t, F32 z)
}
t *= F_PI;
- z -= t*64.f - 256.f;
-
+ if ("DOWN" == direction)
+ {
+ 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;
@@ -474,10 +482,78 @@ 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();
+
+ 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;
+
+ an *= 2.f;
+ an += 1.0f;
+
+ 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 )
{
@@ -497,9 +573,11 @@ void LLTracker::renderBeacon(LLVector3d pos_global,
}
LLColor4 fogged_color = color_frac * color + (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));
+ fogged_color_under.mV[3] = llmax(0.2f, llmin(0.5f,(dist-FADE_DIST)/FADE_DIST));
LLVector3 pos_agent = gAgent.getPosAgentFromGlobal(pos_global);
@@ -508,64 +586,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 = 1024.0f/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;
-
- F32 a = pulse_func(t, z);
- F32 an = pulse_func(t, z_next);
-
- 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();
+ 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
@@ -511,6 +511,9 @@
name="MapTrackColor"
reference="Red" />
<color
+ name="MapTrackColorUnder"
+ reference="Blue" />
+ <color
name="MapTrackDisabledColor"
value="0.5 0 0 1" />
<color
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">
<layout_stack
animate="true"
default_tab_group="2"
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">
<item
name="Triangle Limit"
value="Triangle Limit" />
@@ -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">
<item
name="Triangle Limit"
value="Triangle Limit" />
@@ -359,7 +359,7 @@
height="20"
increment="10"
layout="topleft"
- left_pad="5"
+ left_pad="3"
name="lod_triangle_limit_medium"
width="55" />
<spinner
@@ -470,10 +470,10 @@
follows="top|left"
height="20"
layout="topleft"
- left="215"
+ left="222"
name="lod_mode_low"
top_delta="0"
- width="135">
+ width="130">
<item
name="Triangle Limit"
value="Triangle Limit" />
@@ -487,7 +487,7 @@
height="20"
increment="10"
layout="topleft"
- left_pad="5"
+ left_pad="3"
name="lod_triangle_limit_low"
width="55" />
<spinner
@@ -598,10 +598,10 @@
follows="top|left"
height="20"
layout="topleft"
- left="215"
+ left="222"
name="lod_mode_lowest"
top_delta="0"
- width="135">
+ width="130">
<item
name="Triangle Limit"
value="Triangle Limit" />
@@ -615,7 +615,7 @@
height="20"
increment="10"
layout="topleft"
- left_pad="5"
+ left_pad="3"
name="lod_triangle_limit_lowest"
width="55" />
<spinner
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" />
</menu_item_call>
+ <menu_item_call
+ label="Show on Map"
+ layout="topleft"
+ name="show_on_map">
+ <menu_item_call.on_click
+ function="Inventory.DoToSelected"
+ parameter="show_on_map" />
+ </menu_item_call>
<menu_item_separator
layout="topleft"
name="Animation Separator" />
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" />
</menu_item_call>
<menu_item_call
- label="Copy to Clipboard"
+ label="Copy SLurl"
layout="topleft"
name="CopyToClipboard">
<menu_item_call.on_click