LLAgentCamera update. Culled a bunch of dead code from llappviewer. Moved build-mode toggle off into lltoolmgr.

This commit is contained in:
Shyotl
2012-04-22 19:42:37 -05:00
parent 71a29e347e
commit 3cc37fb12b
11 changed files with 354 additions and 304 deletions

View File

@@ -51,10 +51,18 @@
#include "lltoolselectland.h"
#include "lltoolobjpicker.h"
#include "lltoolpipette.h"
#include "llviewerparcelmgr.h"
#include "llagent.h"
#include "llagentcamera.h"
#include "llviewercontrol.h"
#include "llmemberlistener.h"
#include "llevent.h"
#include "llviewerjoystick.h"
#include "llviewermenu.h"
#include "llviewerparcelmgr.h"
#include "llfirstuse.h"
#include "llfloatertools.h"
#include "rlvhandler.h"
// Used when app not active to avoid processing hover.
@@ -69,6 +77,24 @@ LLToolset* gFaceEditToolset = NULL;
/////////////////////////////////////////////////////
// LLToolMgr
class LLViewBuildMode : public LLMemberListener<LLView>
{
bool handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
{
LLToolMgr::getInstance()->toggleBuildMode();
return true;
}
};
class LLViewCheckBuildMode : public LLMemberListener<LLView>
{
bool handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
{
bool new_value = LLToolMgr::getInstance()->inEdit();
gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value);
return true;
}
};
LLToolMgr::LLToolMgr()
:
mBaseTool(NULL),
@@ -88,6 +114,14 @@ LLToolMgr::LLToolMgr()
gFaceEditToolset = new LLToolset("FaceEdit");
}
void LLToolMgr::initMenu(std::vector<LLPointer<LLMemberListener<LLView> > >& menu_list)
{
menu_list.push_back(new LLViewBuildMode());
menu_list.back()->registerListener(gMenuHolder, "View.BuildMode");
menu_list.push_back(new LLViewCheckBuildMode());
menu_list.back()->registerListener(gMenuHolder, "View.CheckBuildMode");
}
void LLToolMgr::initTools()
{
static BOOL initialized = FALSE;
@@ -236,7 +270,7 @@ void LLToolMgr::updateToolStatus()
getCurrentTool();
}
BOOL LLToolMgr::inEdit()
bool LLToolMgr::inEdit()
{
return mBaseTool != LLToolPie::getInstance() && mBaseTool != gToolNull;
}
@@ -245,6 +279,77 @@ bool LLToolMgr::canEdit()
{
return LLViewerParcelMgr::getInstance()->allowAgentBuild();
}
void LLToolMgr::toggleBuildMode()
{
if (!inBuildMode())
{
ECameraMode camMode = gAgentCamera.getCameraMode();
if (CAMERA_MODE_MOUSELOOK == camMode || CAMERA_MODE_CUSTOMIZE_AVATAR == camMode)
{
// pull the user out of mouselook or appearance mode when entering build mode
handle_reset_view();
}
if (gSavedSettings.getBOOL("EditCameraMovement"))
{
// camera should be set
if (LLViewerJoystick::getInstance()->getOverrideCamera())
{
handle_toggle_flycam();
}
if (gAgentCamera.getFocusOnAvatar())
{
// zoom in if we're looking at the avatar
gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE);
gAgentCamera.setFocusGlobal(gAgent.getPositionGlobal() + 2.0 * LLVector3d(gAgent.getAtAxis()));
gAgentCamera.cameraZoomIn(0.666f);
gAgentCamera.cameraOrbitOver( 30.f * DEG_TO_RAD );
}
}
// [RLVa:KB] - Checked: 2009-07-05 (RLVa-1.0.0b)
bool fRlvCanEdit = (!gRlvHandler.hasBehaviour(RLV_BHVR_EDIT)) && (!gRlvHandler.hasBehaviour(RLV_BHVR_EDITOBJ));
if (!fRlvCanEdit)
{
LLObjectSelectionHandle hSel = LLSelectMgr::getInstance()->getSelection();
RlvSelectIsEditable f;
if ((hSel.notNull()) && ((hSel->getFirstRootNode(&f, TRUE)) != NULL))
LLSelectMgr::getInstance()->deselectAll();
}
// [/RLVa:KB]
setCurrentToolset(gBasicToolset);
getCurrentToolset()->selectTool( LLToolCompCreate::getInstance() );
// Could be first use
LLFirstUse::useBuild();
gAgentCamera.resetView(false);
// avoid spurious avatar movements
LLViewerJoystick::getInstance()->setNeedsReset();
}
else
{
if (gSavedSettings.getBOOL("EditCameraMovement"))
{
// just reset the view, will pull us out of edit mode
handle_reset_view();
}
else
{
// manually disable edit mode, but do not affect the camera
gAgentCamera.resetView(false);
gFloaterTools->close();
gViewerWindow->showCursor();
}
// avoid spurious avatar movements pulling out of edit mode
LLViewerJoystick::getInstance()->setNeedsReset();
}
}
bool LLToolMgr::inBuildMode()
{
// when entering mouselook inEdit() immediately returns true before
@@ -408,9 +513,3 @@ void LLToolset::selectPrevTool()
selectToolByIndex((S32)mToolList.size()-1);
}
}
void select_tool( void *tool_pointer )
{
LLTool *tool = (LLTool *)tool_pointer;
LLToolMgr::getInstance()->getCurrentToolset()->selectTool( tool );
}