/* Copyright 2003-2005 ROBLOX Corporation, All Rights Reserved */ #pragma once #include "Tool/ToolsArrow.h" #include "V8DataModel/MouseCommand.h" #include "Tool/AdvLuaDragger.h" #include "Util/Math.h" #include namespace RBX { class PartInstance; extern const char* const sAdvLuaDragTool; class AdvLuaDragTool : public Named { private: typedef Named Super; boost::shared_ptr advLuaDragger; boost::weak_ptr selectIfNoDrag; std::string cursor; bool dragging; G3D::Vector2 downPoint2d; bool canDrag(const shared_ptr& inputObject) const; ///////////////////////////////////////////////////////// // MouseCommand // /*override*/ void onMouseIdle(const shared_ptr& inputObject); /*override*/ void onMouseMove(const shared_ptr& inputObject); /*override*/ shared_ptr onMouseUp(const shared_ptr& inputObject); /*override*/ const std::string getCursorName() const { return cursor; } /*override*/ shared_ptr onKeyDown(const shared_ptr& inputObject); /*override*/ void setCursor(std::string newCursor) { cursor = newCursor; } public: /*override*/ shared_ptr onMouseDown(const shared_ptr& inputObject); AdvLuaDragTool( PartInstance* mousePart, const Vector3& hitPointWorld, const std::vector >& partArray, Workspace* workspace, shared_ptr selectIfNoDrag); ~AdvLuaDragTool(); }; } // namespace RBX