#pragma once #include using namespace Atomic; namespace ToolCore { EVENT(E_COMMANDERROR, CommandError) { PARAM(P_MESSAGE, Message); // string } EVENT(E_COMMANDFINISHED, CommandFinished) { } class Command : public Object { OBJECT(Command); public: Command(Context* context); virtual ~Command(); bool Parse(const String& command); virtual bool Parse(const Vector& arguments, unsigned startIndex, String& errorMsg) = 0; virtual void Run() = 0; virtual void Finished(); virtual void Error(const String& errorMsg); virtual void Cancel() {} virtual bool RequiresProjectLoad() { return true; } virtual bool RequiresLicenseValidation() { return false; } private: float timeOut_; }; }