Feature Request: "Focus on" button for Top Scripts
This commit is contained in:
@@ -93,6 +93,7 @@ LLFloaterTopObjects::LLFloaterTopObjects()
|
|||||||
mCommitCallbackRegistrar.add("TopObjects.CommitObjectsList",boost::bind(&LLFloaterTopObjects::onCommitObjectsList, this));
|
mCommitCallbackRegistrar.add("TopObjects.CommitObjectsList",boost::bind(&LLFloaterTopObjects::onCommitObjectsList, this));
|
||||||
|
|
||||||
mCommitCallbackRegistrar.add("TopObjects.TeleportToObject", boost::bind(&LLFloaterTopObjects::onTeleportToObject, 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.Kick", boost::bind(&LLFloaterTopObjects::onKick, this));
|
||||||
mCommitCallbackRegistrar.add("TopObjects.Profile", boost::bind(&LLFloaterTopObjects::onProfile, 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");
|
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("objects_list");
|
||||||
if (!list) return;
|
if (!list) return LLVector3d::zero;
|
||||||
|
|
||||||
LLScrollListItem* first_selected = list->getFirstSelected();
|
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();
|
std::string pos_string = first_selected->getColumn(3)->getValue().asString();
|
||||||
|
|
||||||
F32 x, y, z;
|
F32 x, y, z;
|
||||||
S32 matched = sscanf(pos_string.c_str(), "<%g,%g,%g>", &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);
|
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 );
|
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()
|
void LLFloaterTopObjects::onKick()
|
||||||
{
|
{
|
||||||
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("objects_list");
|
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("objects_list");
|
||||||
|
|||||||
@@ -74,7 +74,9 @@ private:
|
|||||||
void onDisableAll();
|
void onDisableAll();
|
||||||
void onDisableSelected();
|
void onDisableSelected();
|
||||||
|
|
||||||
|
LLVector3d getSelectedPosition() const;
|
||||||
void onTeleportToObject();
|
void onTeleportToObject();
|
||||||
|
void onCamToObject();
|
||||||
void onKick();
|
void onKick();
|
||||||
void onProfile();
|
void onProfile();
|
||||||
|
|
||||||
|
|||||||
@@ -296,4 +296,15 @@
|
|||||||
<button.commit_callback
|
<button.commit_callback
|
||||||
function="TopObjects.Kick" />
|
function="TopObjects.Kick" />
|
||||||
</button>
|
</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>
|
</floater>
|
||||||
|
|||||||
Reference in New Issue
Block a user