/* Copyright 2003-2007 ROBLOX Corporation, All Rights Reserved */ #pragma once #include "V8DataModel/ScriptMouseCommand.h" namespace RBX { // A generic mouse command associated with a Tool - fires events to Tool for activation, etc. class Tool; class Mouse; extern const char* const sToolMouseCommand; class ToolMouseCommand : public Named { private: typedef Named Super; shared_ptr tool; rbx::signals::scoped_connection toolUnequipped; bool mouseIsDown; void onEvent_ToolUnequipped(); void updateTargetPoint(const shared_ptr& inputObject, bool replicate); bool tryClickable(const shared_ptr& inputObject, shared_ptr part); public: ToolMouseCommand(Workspace* workspace, Tool* tool); ~ToolMouseCommand() { } /*override*/ shared_ptr onMouseDown(const shared_ptr& inputObject); /*override*/ shared_ptr onRightMouseDown(const shared_ptr& inputObject); /*override*/ void onMouseHover(const shared_ptr& inputObject); /*override*/ void onMouseIdle(const shared_ptr& inputObject); /*override*/ shared_ptr onMouseUp(const shared_ptr& inputObject); /*override*/ shared_ptr onRightMouseUp(const shared_ptr& inputObject); }; } // namespace