= ConsoleCommand = [[TracNav(TracNav/TOC_Development)]] == Description == A !ConsoleCommand is a function which can be called by the [wiki:Shell]. !ConsoleCommand inherits from [wiki:Executor] and adds some additional features used to [wiki:KeyBinder bind commands to keys] and to allow easy use in the Shell ([wiki:ArgumentCompleter like argument completion]). At the moment, a !ConsoleCommand must call a '''static''' function. The command is of static nature too and exists for the whole time. But this will change in the future. A !ConsoleCommand can also be called directly from the code by using [wiki:CommandExecutor]. If you want to execute the same command over and over, see [wiki:CommandEvaluation] for more performance. == Usage == === Creation === Creating a !ConsoleCommand is usually really easy. Just write the following lines: *.cc file: {{{ #include "core/ConsoleCommand.h" SetConsoleCommand(ClassName, functionname, true); }}} Note: The last argument (true) means: create a shortcut for this command. *.h file: {{{ class ClassName { public: static returntype functionname(param1, param2, ...); }; }}} === Call === Now you can call the function by typing the ''functionname'' into the [wiki:Shell]: {{{ > functionname arg1 arg2 ... or > ClassName functionname arg1 arg2 ... }}} Note: The first variant works only if you enable the shortcut (''true'' in SetConsoleCommand). It's also possible to call the command directly from the code by using [wiki:CommandExecutor]: {{{ CommandExecutor::execute("functionname arg1 arg2 ..."); or CommandExecutor::execute("ClassName functionname arg1 arg2 ..."); }}} === Attributes === There are several attributes you can set, some of them are inherited from [wiki:Executor], some are new. '''Inherited''': * '''description('''''description''''')''': Sets the description of the Executor (what the function does) * '''descriptionParam('''''param number (0-4)''''', '''''description''''')''': Sets the description of an argument (what the argument does) * '''descriptionReturnvalue('''''description''''')''': Sets the description of the return value (what the return value does) * '''defaultValues('''''value1''''', '''...''')''': Sets default values * '''defaultValue('''''param number (0-4)''''', '''''value''''')''': Sets the default value for a given parameter '''New''': * '''accessLevel('''''level''''')''': Sets the access level (see [wiki:ConsoleCommand#AccessLevels the chapter below]) * '''argumentCompleter('''''param number (0-4)''''', '''''completer''''')''': Sets the [wiki:ArgumentCompleter] for a given parameter (see [wiki:ConsoleCommand#ArgumentCompletion the chapter below]) * '''keybindMode('''''mode''''')''': * '''axisParamIndex('''''index''''')''': * '''isAxisRelative('''''bool''''')''': === Chained attributes === You can specify all attributes from above in one single chained call, for example: {{{ SetConsoleCommand(ClassName, functionname, true).description("Does something nice").defaultVal ues(10, "test", true, 1.234).argumentCompleter(0, autocompletion::completerfunction()).isA xisRelative(true); }}} Note: The attributes can be specified in any order. == Access Levels == == Argument Completion ==