Add Pathfinding UI from v3
Added libpathing to LLPHYSICSEXTENSIONS_INCLUDE_DIRS llviewermenu updated a bit to be closer to v-d/rlva. Best viewed without space changes. Updated llresmgr.cpp from v-d to "handle special case of input value being zero" pipeline update: hideObject, restoreHiddenObject, hideDrawable, and unhideDrawable added. Thanks to Henri Beauchamp for some UI code touchups, thanks to Zi Ree for Rebake notification. Thanks to Mobius Ryba and Ansariel Hiller for the V1-style pathfinding icons. Note: When opening from pie menu object selection is lost, unless the floater is already open.. This provides a more reliable reproduction of the bug we've been having with inspect.
This commit is contained in:
179
indra/newview/llfloaterpathfindingobjects.h
Normal file
179
indra/newview/llfloaterpathfindingobjects.h
Normal file
@@ -0,0 +1,179 @@
|
||||
/**
|
||||
* @file llfloaterpathfindingobjects.h
|
||||
* @brief Base class for both the pathfinding linksets and characters floater.
|
||||
* @author Stinson@lindenlab.com
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012, 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_LLFLOATERPATHFINDINGOBJECTS_H
|
||||
#define LL_LLFLOATERPATHFINDINGOBJECTS_H
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
#include <boost/signals2.hpp>
|
||||
|
||||
#include "llagent.h"
|
||||
#include "llfloater.h"
|
||||
#include "llpathfindingmanager.h"
|
||||
#include "llpathfindingobject.h"
|
||||
#include "llpathfindingobjectlist.h"
|
||||
#include "llselectmgr.h"
|
||||
#include "lluuid.h"
|
||||
#include "v4color.h"
|
||||
|
||||
class LLAvatarName;
|
||||
class LLButton;
|
||||
class LLCheckBoxCtrl;
|
||||
class LLScrollListCtrl;
|
||||
class LLScrollListItem;
|
||||
class LLSD;
|
||||
class LLTextBox;
|
||||
|
||||
class LLFloaterPathfindingObjects : public LLFloater
|
||||
{
|
||||
public:
|
||||
virtual void onOpen(/*const LLSD &pKey*/);
|
||||
virtual void onClose(bool pIsAppQuitting);
|
||||
virtual void draw();
|
||||
|
||||
protected:
|
||||
// friend class LLFloaterReg;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
kMessagingUnknown,
|
||||
kMessagingGetRequestSent,
|
||||
kMessagingGetError,
|
||||
kMessagingSetRequestSent,
|
||||
kMessagingSetError,
|
||||
kMessagingComplete,
|
||||
kMessagingNotEnabled
|
||||
} EMessagingState;
|
||||
|
||||
LLFloaterPathfindingObjects(/*const LLSD &pSeed*/);
|
||||
virtual ~LLFloaterPathfindingObjects();
|
||||
|
||||
virtual BOOL postBuild();
|
||||
|
||||
virtual void requestGetObjects();
|
||||
LLPathfindingManager::request_id_t getNewRequestId();
|
||||
void handleNewObjectList(LLPathfindingManager::request_id_t pRequestId, LLPathfindingManager::ERequestStatus pRequestStatus, LLPathfindingObjectListPtr pObjectList);
|
||||
void handleUpdateObjectList(LLPathfindingManager::request_id_t pRequestId, LLPathfindingManager::ERequestStatus pRequestStatus, LLPathfindingObjectListPtr pObjectList);
|
||||
|
||||
void rebuildObjectsScrollList();
|
||||
virtual void buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr);
|
||||
void addObjectToScrollList(const LLPathfindingObjectPtr pObjectPr, const LLSD &pScrollListItemData);
|
||||
|
||||
virtual void updateControlsOnScrollListChange();
|
||||
virtual void updateControlsOnInWorldSelectionChange();
|
||||
|
||||
virtual S32 getNameColumnIndex() const;
|
||||
virtual S32 getOwnerNameColumnIndex() const;
|
||||
virtual std::string getOwnerName(const LLPathfindingObject *pObject) const;
|
||||
virtual const LLColor4 &getBeaconColor() const;
|
||||
virtual const LLColor4 &getBeaconTextColor() const;
|
||||
virtual S32 getBeaconWidth() const;
|
||||
|
||||
void showFloaterWithSelectionObjects();
|
||||
|
||||
BOOL isShowBeacons() const;
|
||||
void clearAllObjects();
|
||||
void selectAllObjects();
|
||||
void selectNoneObjects();
|
||||
void teleportToSelectedObject();
|
||||
|
||||
virtual LLPathfindingObjectListPtr getEmptyObjectList() const;
|
||||
int getNumSelectedObjects() const;
|
||||
LLPathfindingObjectListPtr getSelectedObjects() const;
|
||||
LLPathfindingObjectPtr getFirstSelectedObject() const;
|
||||
|
||||
EMessagingState getMessagingState() const;
|
||||
|
||||
private:
|
||||
LLFloaterPathfindingObjects(const LLFloaterPathfindingObjects &pOther);
|
||||
|
||||
void setMessagingState(EMessagingState pMessagingState);
|
||||
|
||||
void onRefreshObjectsClicked();
|
||||
void onSelectAllObjectsClicked();
|
||||
void onSelectNoneObjectsClicked();
|
||||
void onTakeClicked();
|
||||
void onTakeCopyClicked();
|
||||
void onReturnClicked();
|
||||
void onDeleteClicked();
|
||||
void onTeleportClicked();
|
||||
|
||||
void onScrollListSelectionChanged();
|
||||
void onInWorldSelectionListChanged();
|
||||
void onRegionBoundaryCrossed();
|
||||
void onGodLevelChange(U8 pGodLevel);
|
||||
|
||||
void handleObjectNameResponse(const LLPathfindingObject *pObject);
|
||||
|
||||
void updateMessagingStatus();
|
||||
void updateStateOnListControls();
|
||||
void updateStateOnActionControls();
|
||||
void selectScrollListItemsInWorld();
|
||||
|
||||
void handleReturnItemsResponse(const LLSD &pNotification, const LLSD &pResponse);
|
||||
void handleDeleteItemsResponse(const LLSD &pNotification, const LLSD &pResponse);
|
||||
|
||||
LLPathfindingObjectPtr findObject(const LLScrollListItem *pListItem) const;
|
||||
|
||||
LLScrollListCtrl *mObjectsScrollList;
|
||||
LLTextBox *mMessagingStatus;
|
||||
LLButton *mRefreshListButton;
|
||||
LLButton *mSelectAllButton;
|
||||
LLButton *mSelectNoneButton;
|
||||
LLCheckBoxCtrl *mShowBeaconCheckBox;
|
||||
|
||||
LLButton *mTakeButton;
|
||||
LLButton *mTakeCopyButton;
|
||||
LLButton *mReturnButton;
|
||||
LLButton *mDeleteButton;
|
||||
LLButton *mTeleportButton;
|
||||
|
||||
LLColor4 mDefaultBeaconColor;
|
||||
LLColor4 mDefaultBeaconTextColor;
|
||||
LLColor4 mErrorTextColor;
|
||||
LLColor4 mWarningTextColor;
|
||||
|
||||
EMessagingState mMessagingState;
|
||||
LLPathfindingManager::request_id_t mMessagingRequestId;
|
||||
|
||||
typedef std::map<std::string, LLScrollListItem *> scroll_list_item_map;
|
||||
scroll_list_item_map mMissingNameObjectsScrollListItems;
|
||||
|
||||
LLPathfindingObjectListPtr mObjectList;
|
||||
|
||||
LLObjectSelectionHandle mObjectsSelection;
|
||||
|
||||
bool mHasObjectsToBeSelected;
|
||||
uuid_vec_t mObjectsToBeSelected;
|
||||
|
||||
boost::signals2::connection mSelectionUpdateSlot;
|
||||
boost::signals2::connection mRegionBoundaryCrossingSlot;
|
||||
LLAgent::god_level_change_slot_t mGodLevelChangeSlot;
|
||||
};
|
||||
|
||||
#endif // LL_LLFLOATERPATHFINDINGOBJECTS_H
|
||||
Reference in New Issue
Block a user