summaryrefslogtreecommitdiff
path: root/indra/newview/lltoolgrab.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/lltoolgrab.h')
-rw-r--r--indra/newview/lltoolgrab.h318
1 files changed, 159 insertions, 159 deletions
diff --git a/indra/newview/lltoolgrab.h b/indra/newview/lltoolgrab.h
index 36a8a0a3c5..7806cbc24f 100644
--- a/indra/newview/lltoolgrab.h
+++ b/indra/newview/lltoolgrab.h
@@ -1,159 +1,159 @@
-/**
- * @file lltoolgrab.h
- * @brief LLToolGrab class header file
- *
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, 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_TOOLGRAB_H
-#define LL_TOOLGRAB_H
-
-#include "lltool.h"
-#include "v3math.h"
-#include "llquaternion.h"
-#include "llsingleton.h"
-#include "lluuid.h"
-#include "llviewerwindow.h" // for LLPickInfo
-
-class LLView;
-class LLTextBox;
-class LLViewerObject;
-class LLPickInfo;
-
-
-// Message utilities
-void send_ObjectGrab_message(LLViewerObject* object, const LLPickInfo & pick, const LLVector3 &grab_offset);
-void send_ObjectDeGrab_message(LLViewerObject* object, const LLPickInfo & pick);
-
-const MASK DEFAULT_GRAB_MASK = MASK_CONTROL;
-
-/**
- * LLToolGrabBase contains most of the semantics of LLToolGrab. It's just that
- * LLToolGrab is an LLSingleton, but we also explicitly instantiate
- * LLToolGrabBase as part of LLToolCompGun. You can't just make an extra
- * instance of an LLSingleton!
- */
-class LLToolGrabBase : public LLTool
-{
-public:
- LLToolGrabBase(LLToolComposite* composite=NULL);
- ~LLToolGrabBase();
-
- /*virtual*/ bool handleHover(S32 x, S32 y, MASK mask);
- /*virtual*/ bool handleMouseDown(S32 x, S32 y, MASK mask);
- /*virtual*/ bool handleMouseUp(S32 x, S32 y, MASK mask);
- /*virtual*/ bool handleDoubleClick(S32 x, S32 y, MASK mask);
- /*virtual*/ void render(); // 3D elements
- /*virtual*/ void draw(); // 2D elements
-
- virtual void handleSelect();
- virtual void handleDeselect();
-
- virtual LLViewerObject* getEditingObject();
- virtual LLVector3d getEditingPointGlobal();
- virtual bool isEditing();
- virtual void stopEditing();
-
- virtual void onMouseCaptureLost();
-
- bool hasGrabOffset() { return true; } // HACK
- LLVector3 getGrabOffset(S32 x, S32 y); // HACK
-
- // Capture the mouse and start grabbing.
- bool handleObjectHit(const LLPickInfo& info);
-
- // Certain grabs should not highlight the "Build" toolbar button
- bool getHideBuildHighlight() { return mHideBuildHighlight; }
-
- void setClickedInMouselook(bool is_clickedInMouselook) {mClickedInMouselook = is_clickedInMouselook;}
-
- static void pickCallback(const LLPickInfo& pick_info);
-private:
- LLVector3d getGrabPointGlobal();
- void startGrab();
- void stopGrab();
-
- void startSpin();
- void stopSpin();
-
- void handleHoverSpin(S32 x, S32 y, MASK mask);
- void handleHoverActive(S32 x, S32 y, MASK mask);
- void handleHoverNonPhysical(S32 x, S32 y, MASK mask);
- void handleHoverInactive(S32 x, S32 y, MASK mask);
- void handleHoverFailed(S32 x, S32 y, MASK mask);
-
-private:
- enum EGrabMode { GRAB_INACTIVE, GRAB_ACTIVE_CENTER, GRAB_NONPHYSICAL, GRAB_LOCKED, GRAB_NOOBJECT };
-
- EGrabMode mMode;
-
- bool mVerticalDragging;
-
- bool mHitLand;
-
- LLTimer mGrabTimer; // send simulator time between hover movements
-
- LLVector3 mGrabOffsetFromCenterInitial; // meters from CG of object
- LLVector3d mGrabHiddenOffsetFromCamera; // in cursor hidden drag, how far is grab offset from camera
-
- LLVector3d mDragStartPointGlobal; // projected into world
- LLVector3d mDragStartFromCamera; // drag start relative to camera
-
- LLPickInfo mGrabPick;
-
- S32 mLastMouseX;
- S32 mLastMouseY;
- S32 mAccumDeltaX; // since cursor hidden, how far have you moved?
- S32 mAccumDeltaY;
- bool mHasMoved; // has mouse moved off center at all?
- bool mOutsideSlop; // has mouse moved outside center 5 pixels?
- bool mDeselectedThisClick;
- bool mValidSelection;
-
- S32 mLastFace;
- LLVector2 mLastUVCoords;
- LLVector2 mLastSTCoords;
- LLVector3 mLastIntersection;
- LLVector3 mLastNormal;
- LLVector3 mLastBinormal;
- LLVector3 mLastGrabPos;
-
-
- bool mSpinGrabbing;
- LLQuaternion mSpinRotation;
-
- bool mHideBuildHighlight;
-
- bool mClickedInMouselook;
-};
-
-/// This is the LLSingleton instance of LLToolGrab.
-class LLToolGrab : public LLToolGrabBase, public LLSingleton<LLToolGrab>
-{
- LLSINGLETON_EMPTY_CTOR(LLToolGrab);
-};
-
-extern bool gGrabBtnVertical;
-extern bool gGrabBtnSpin;
-extern LLTool* gGrabTransientTool;
-
-#endif // LL_TOOLGRAB_H
+/**
+ * @file lltoolgrab.h
+ * @brief LLToolGrab class header file
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, 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_TOOLGRAB_H
+#define LL_TOOLGRAB_H
+
+#include "lltool.h"
+#include "v3math.h"
+#include "llquaternion.h"
+#include "llsingleton.h"
+#include "lluuid.h"
+#include "llviewerwindow.h" // for LLPickInfo
+
+class LLView;
+class LLTextBox;
+class LLViewerObject;
+class LLPickInfo;
+
+
+// Message utilities
+void send_ObjectGrab_message(LLViewerObject* object, const LLPickInfo & pick, const LLVector3 &grab_offset);
+void send_ObjectDeGrab_message(LLViewerObject* object, const LLPickInfo & pick);
+
+const MASK DEFAULT_GRAB_MASK = MASK_CONTROL;
+
+/**
+ * LLToolGrabBase contains most of the semantics of LLToolGrab. It's just that
+ * LLToolGrab is an LLSingleton, but we also explicitly instantiate
+ * LLToolGrabBase as part of LLToolCompGun. You can't just make an extra
+ * instance of an LLSingleton!
+ */
+class LLToolGrabBase : public LLTool
+{
+public:
+ LLToolGrabBase(LLToolComposite* composite=NULL);
+ ~LLToolGrabBase();
+
+ /*virtual*/ bool handleHover(S32 x, S32 y, MASK mask);
+ /*virtual*/ bool handleMouseDown(S32 x, S32 y, MASK mask);
+ /*virtual*/ bool handleMouseUp(S32 x, S32 y, MASK mask);
+ /*virtual*/ bool handleDoubleClick(S32 x, S32 y, MASK mask);
+ /*virtual*/ void render(); // 3D elements
+ /*virtual*/ void draw(); // 2D elements
+
+ virtual void handleSelect();
+ virtual void handleDeselect();
+
+ virtual LLViewerObject* getEditingObject();
+ virtual LLVector3d getEditingPointGlobal();
+ virtual bool isEditing();
+ virtual void stopEditing();
+
+ virtual void onMouseCaptureLost();
+
+ bool hasGrabOffset() { return true; } // HACK
+ LLVector3 getGrabOffset(S32 x, S32 y); // HACK
+
+ // Capture the mouse and start grabbing.
+ bool handleObjectHit(const LLPickInfo& info);
+
+ // Certain grabs should not highlight the "Build" toolbar button
+ bool getHideBuildHighlight() { return mHideBuildHighlight; }
+
+ void setClickedInMouselook(bool is_clickedInMouselook) {mClickedInMouselook = is_clickedInMouselook;}
+
+ static void pickCallback(const LLPickInfo& pick_info);
+private:
+ LLVector3d getGrabPointGlobal();
+ void startGrab();
+ void stopGrab();
+
+ void startSpin();
+ void stopSpin();
+
+ void handleHoverSpin(S32 x, S32 y, MASK mask);
+ void handleHoverActive(S32 x, S32 y, MASK mask);
+ void handleHoverNonPhysical(S32 x, S32 y, MASK mask);
+ void handleHoverInactive(S32 x, S32 y, MASK mask);
+ void handleHoverFailed(S32 x, S32 y, MASK mask);
+
+private:
+ enum EGrabMode { GRAB_INACTIVE, GRAB_ACTIVE_CENTER, GRAB_NONPHYSICAL, GRAB_LOCKED, GRAB_NOOBJECT };
+
+ EGrabMode mMode;
+
+ bool mVerticalDragging;
+
+ bool mHitLand;
+
+ LLTimer mGrabTimer; // send simulator time between hover movements
+
+ LLVector3 mGrabOffsetFromCenterInitial; // meters from CG of object
+ LLVector3d mGrabHiddenOffsetFromCamera; // in cursor hidden drag, how far is grab offset from camera
+
+ LLVector3d mDragStartPointGlobal; // projected into world
+ LLVector3d mDragStartFromCamera; // drag start relative to camera
+
+ LLPickInfo mGrabPick;
+
+ S32 mLastMouseX;
+ S32 mLastMouseY;
+ S32 mAccumDeltaX; // since cursor hidden, how far have you moved?
+ S32 mAccumDeltaY;
+ bool mHasMoved; // has mouse moved off center at all?
+ bool mOutsideSlop; // has mouse moved outside center 5 pixels?
+ bool mDeselectedThisClick;
+ bool mValidSelection;
+
+ S32 mLastFace;
+ LLVector2 mLastUVCoords;
+ LLVector2 mLastSTCoords;
+ LLVector3 mLastIntersection;
+ LLVector3 mLastNormal;
+ LLVector3 mLastBinormal;
+ LLVector3 mLastGrabPos;
+
+
+ bool mSpinGrabbing;
+ LLQuaternion mSpinRotation;
+
+ bool mHideBuildHighlight;
+
+ bool mClickedInMouselook;
+};
+
+/// This is the LLSingleton instance of LLToolGrab.
+class LLToolGrab : public LLToolGrabBase, public LLSingleton<LLToolGrab>
+{
+ LLSINGLETON_EMPTY_CTOR(LLToolGrab);
+};
+
+extern bool gGrabBtnVertical;
+extern bool gGrabBtnSpin;
+extern LLTool* gGrabTransientTool;
+
+#endif // LL_TOOLGRAB_H