summaryrefslogtreecommitdiff
path: root/indra/newview/lltoolbrush.h
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/lltoolbrush.h
Print done when done.
Diffstat (limited to 'indra/newview/lltoolbrush.h')
-rw-r--r--indra/newview/lltoolbrush.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/indra/newview/lltoolbrush.h b/indra/newview/lltoolbrush.h
new file mode 100644
index 0000000000..3cae7559a3
--- /dev/null
+++ b/indra/newview/lltoolbrush.h
@@ -0,0 +1,88 @@
+/**
+ * @file lltoolbrush.h
+ * @brief toolbrush class header file
+ *
+ * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+#ifndef LL_LLTOOLBRUSH_H
+#define LL_LLTOOLBRUSH_H
+
+#include "lltool.h"
+#include "v3math.h"
+#include "lleditmenuhandler.h"
+
+class LLSurface;
+class LLVector3d;
+class LLViewerRegion;
+
+template<class DATA_TYPE> class LLLinkedList;
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLToolBrushLand
+//
+// A toolbrush that modifies the land.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+class LLToolBrushLand : public LLTool, public LLEditMenuHandler
+{
+public:
+ LLToolBrushLand();
+
+ // x,y in window coords, 0,0 = left,bot
+ virtual BOOL handleMouseDown( S32 x, S32 y, MASK mask );
+ virtual BOOL handleMouseUp( S32 x, S32 y, MASK mask );
+ virtual BOOL handleHover( S32 x, S32 y, MASK mask );
+ virtual void handleSelect();
+ virtual void handleDeselect();
+
+ // isAlwaysRendered() - return true if this is a tool that should
+ // always be rendered regardless of selection.
+ virtual BOOL isAlwaysRendered() { return TRUE; }
+
+ // Draw the area that will be affected.
+ virtual void render();
+
+ // on Idle is where the land modification actually occurs
+ static void onIdle(void* brush_tool);
+
+ void onMouseCaptureLost();
+
+ void modifyLandInSelectionGlobal();
+ virtual void undo();
+ virtual BOOL canUndo() { return TRUE; }
+
+ virtual void redo();
+ virtual BOOL canRedo() { return FALSE; }
+
+
+protected:
+ void brush( void );
+ void modifyLandAtPointGlobal( const LLVector3d &spot, MASK mask );
+
+ void determineAffectedRegions(LLLinkedList<LLViewerRegion>& regions,
+ const LLVector3d& spot) const;
+ void renderOverlay(LLSurface& land, const LLVector3& pos_region,
+ const LLVector3& pos_world);
+
+ // Does region allow terraform, or are we a god?
+ bool canTerraform(LLViewerRegion* regionp) const;
+
+ // Modal dialog that you can't terraform the region
+ void alertNoTerraform(LLViewerRegion* regionp);
+
+protected:
+ F32 mStartingZ;
+ S32 mMouseX;
+ S32 mMouseY;
+ S32 mBrushIndex;
+ BOOL mGotHover;
+ BOOL mLastShowParcelOwners;
+ BOOL mBrushSelected;
+ LLLinkedList<LLViewerRegion> mLastAffectedRegions;
+};
+
+extern LLToolBrushLand *gToolLand;
+
+#endif // LL_LLTOOLBRUSH_H