Feature Request: "Focus on" button for Top Scripts

This commit is contained in:
Lirusaito
2019-02-28 13:53:15 -05:00
parent 56d23a03cf
commit e3fe8d046a
3 changed files with 32 additions and 5 deletions

View File

@@ -93,6 +93,7 @@ LLFloaterTopObjects::LLFloaterTopObjects()
mCommitCallbackRegistrar.add("TopObjects.CommitObjectsList",boost::bind(&LLFloaterTopObjects::onCommitObjectsList, this));
mCommitCallbackRegistrar.add("TopObjects.TeleportToObject", boost::bind(&LLFloaterTopObjects::onTeleportToObject, this));
mCommitCallbackRegistrar.add("TopObjects.CamToObject", boost::bind(&LLFloaterTopObjects::onCamToObject, this));
mCommitCallbackRegistrar.add("TopObjects.Kick", boost::bind(&LLFloaterTopObjects::onKick, this));
mCommitCallbackRegistrar.add("TopObjects.Profile", boost::bind(&LLFloaterTopObjects::onProfile, this));
@@ -522,26 +523,39 @@ void LLFloaterTopObjects::showBeacon()
}
}
void LLFloaterTopObjects::onTeleportToObject()
LLVector3d LLFloaterTopObjects::getSelectedPosition() const
{
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("objects_list");
if (!list) return;
if (!list) return LLVector3d::zero;
LLScrollListItem* first_selected = list->getFirstSelected();
if (!first_selected) return;
if (!first_selected) return LLVector3d::zero;
std::string pos_string = first_selected->getColumn(3)->getValue().asString();
F32 x, y, z;
S32 matched = sscanf(pos_string.c_str(), "<%g,%g,%g>", &x, &y, &z);
if (matched != 3) return;
if (matched != 3) return LLVector3d::zero;
LLVector3 pos_agent(x, y, z);
LLVector3d pos_global = gAgent.getPosGlobalFromAgent(pos_agent);
return gAgent.getPosGlobalFromAgent(pos_agent);
}
void LLFloaterTopObjects::onTeleportToObject()
{
LLVector3d pos_global = getSelectedPosition();
if (pos_global.isExactlyZero()) return;
gAgent.teleportViaLocation( pos_global );
}
void LLFloaterTopObjects::onCamToObject()
{
LLVector3d pos_global = getSelectedPosition();
if (pos_global.isExactlyZero()) return;
const LLUUID& id = getChild<LLScrollListCtrl>("objects_list")->getFirstSelected()->getUUID();
gAgentCamera.setFocusGlobal(pos_global, id);
}
void LLFloaterTopObjects::onKick()
{
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("objects_list");

View File

@@ -74,7 +74,9 @@ private:
void onDisableAll();
void onDisableSelected();
LLVector3d getSelectedPosition() const;
void onTeleportToObject();
void onCamToObject();
void onKick();
void onProfile();

View File

@@ -296,4 +296,15 @@
<button.commit_callback
function="TopObjects.Kick" />
</button>
<button
follows="bottom|left"
height="20"
label="Focus on"
left_delta="110"
name="focus_on_btn"
bottom_delta="0"
width="110">
<button.commit_callback
function="TopObjects.CamToObject" />
</button>
</floater>