/* Copyright 2003-2005 ROBLOX Corporation, All Rights Reserved */ #pragma once #include "V8DataModel/MouseCommand.h" #include "Util/BrickColor.h" #include "V8DataModel/PartInstance.h" //#include "V8Xml/Reference.h" //#include "V8Tree/Verb.h" //#include "util/NormalId.h" namespace RBX { class PartTool : public MouseCommand { private: typedef MouseCommand Super; shared_ptr partInstance; protected: /*override*/ void render3dAdorn(Adorn* adorn); /*override*/ void onMouseHover(const shared_ptr& inputObject); public: PartTool(Workspace* workspace); ~PartTool(); }; class FillToolColor { BrickColor color; public: rbx::signal brickColorSignal; FillToolColor(); RBX::BrickColor get() const {return color;} void set(const RBX::BrickColor& newColor) { if (color!=newColor) { color = newColor; brickColorSignal(color); } } }; // Sets the color of a Part extern const char* const sFillTool; class FillTool : public Named { public: static FillToolColor color; protected: /*override*/ virtual shared_ptr onMouseDown(const shared_ptr& inputObject); /*override*/ const std::string getCursorName() const {return "FillCursor";} public: FillTool(Workspace* workspace) : Named(workspace) {} /*override*/ shared_ptr isSticky() const {return Creatable::create(workspace);} }; extern const char* const sDropperTool; class DropperTool : public Named { protected: /*override*/ virtual shared_ptr onMouseDown(const shared_ptr& inputObject); /*override*/ const std::string getCursorName() const {return "DropperCursor";} public: DropperTool(Workspace* workspace) : Named(workspace) {} }; // Sets the color of a Part extern const char* const sMaterialTool; class MaterialTool : public Named { public: static PartMaterial material; protected: /*override*/ virtual shared_ptr onMouseDown(const shared_ptr& inputObject); /*override*/ const std::string getCursorName() const {return "MaterialCursor";} public: MaterialTool(Workspace* workspace) : Named(workspace) {} /*override*/ shared_ptr isSticky() const {return Creatable::create(workspace);} }; } // namespace RBX