Browse Source

Replaced a ton of ConsoleMethods with the DefineConsoleMethod Macro.

Vincent Gee 10 years ago
parent
commit
acb192e2a5
100 changed files with 1392 additions and 1732 deletions
  1. 39 35
      Engine/source/T3D/aiClient.cpp
  2. 2 0
      Engine/source/T3D/aiClient.h
  3. 30 30
      Engine/source/T3D/aiConnection.cpp
  4. 5 7
      Engine/source/T3D/aiPlayer.cpp
  5. 4 4
      Engine/source/T3D/camera.cpp
  6. 10 1
      Engine/source/T3D/fx/explosion.cpp
  7. 1 4
      Engine/source/T3D/fx/lightning.cpp
  8. 3 2
      Engine/source/T3D/fx/particleEmitterNode.cpp
  9. 1 1
      Engine/source/T3D/fx/precipitation.cpp
  10. 2 1
      Engine/source/T3D/gameBase/gameProcess.cpp
  11. 34 45
      Engine/source/T3D/gameFunctions.cpp
  12. 6 5
      Engine/source/T3D/lightBase.cpp
  13. 5 44
      Engine/source/T3D/missionMarker.cpp
  14. 0 12
      Engine/source/T3D/missionMarker.h
  15. 2 2
      Engine/source/T3D/pathCamera.cpp
  16. 2 1
      Engine/source/T3D/physics/physicsDebris.cpp
  17. 21 22
      Engine/source/T3D/physics/physicsPlugin.cpp
  18. 4 3
      Engine/source/T3D/staticShape.cpp
  19. 17 22
      Engine/source/app/game.cpp
  20. 50 75
      Engine/source/app/net/serverQuery.cpp
  21. 10 9
      Engine/source/app/version.cpp
  22. 6 9
      Engine/source/cinterface/cinterface.cpp
  23. 9 9
      Engine/source/component/simComponent.cpp
  24. 5 4
      Engine/source/console/SimXMLDocument.cpp
  25. 4 4
      Engine/source/console/console.cpp
  26. 62 64
      Engine/source/console/consoleFunctions.cpp
  27. 2 2
      Engine/source/console/consoleLogger.cpp
  28. 2 1
      Engine/source/console/consoleXMLExport.cpp
  29. 13 0
      Engine/source/console/engineAPI.h
  30. 10 11
      Engine/source/console/fieldBrushObject.cpp
  31. 41 41
      Engine/source/console/persistenceManager.cpp
  32. 30 42
      Engine/source/console/sim.cpp
  33. 2 1
      Engine/source/console/simPersistSet.cpp
  34. 5 4
      Engine/source/console/simSet.cpp
  35. 7 5
      Engine/source/console/telnetDebugger.cpp
  36. 3 3
      Engine/source/core/dnet.cpp
  37. 4 6
      Engine/source/core/fileObject.cpp
  38. 4 2
      Engine/source/core/resourceManager.cpp
  39. 3 2
      Engine/source/core/stringBuffer.cpp
  40. 7 3
      Engine/source/core/util/str.cpp
  41. 24 53
      Engine/source/environment/editors/guiMeshRoadEditorCtrl.cpp
  42. 23 53
      Engine/source/environment/editors/guiRiverEditorCtrl.cpp
  43. 18 32
      Engine/source/environment/editors/guiRoadEditorCtrl.cpp
  44. 2 1
      Engine/source/environment/skyBox.cpp
  45. 3 7
      Engine/source/environment/sun.cpp
  46. 3 3
      Engine/source/forest/editor/forestBrushElement.cpp
  47. 2 1
      Engine/source/forest/editor/forestBrushTool.cpp
  48. 8 7
      Engine/source/forest/editor/forestEditorCtrl.cpp
  49. 7 6
      Engine/source/forest/editor/forestSelectionTool.cpp
  50. 7 6
      Engine/source/forest/forest.cpp
  51. 1 1
      Engine/source/gfx/gfxCardProfile.cpp
  52. 6 2
      Engine/source/gfx/gfxTextureObject.cpp
  53. 4 3
      Engine/source/gfx/video/videoCapture.cpp
  54. 7 6
      Engine/source/gui/buttons/guiToolboxButtonCtrl.cpp
  55. 3 3
      Engine/source/gui/controls/guiBitmapCtrl.cpp
  56. 5 11
      Engine/source/gui/controls/guiColorPicker.cpp
  57. 1 0
      Engine/source/gui/controls/guiDecoyCtrl.cpp
  58. 6 4
      Engine/source/gui/controls/guiFileTreeCtrl.cpp
  59. 5 24
      Engine/source/gui/controls/guiGradientCtrl.cpp
  60. 3 2
      Engine/source/gui/controls/guiMaterialCtrl.cpp
  61. 38 76
      Engine/source/gui/controls/guiPopUpCtrl.cpp
  62. 23 36
      Engine/source/gui/controls/guiPopUpCtrlEx.cpp
  63. 134 129
      Engine/source/gui/controls/guiTreeViewCtrl.cpp
  64. 4 0
      Engine/source/gui/controls/guiTreeViewCtrl.h
  65. 27 49
      Engine/source/gui/core/guiCanvas.cpp
  66. 28 17
      Engine/source/gui/core/guiControl.cpp
  67. 3 2
      Engine/source/gui/core/guiTypes.cpp
  68. 17 17
      Engine/source/gui/editor/guiDebugger.cpp
  69. 43 86
      Engine/source/gui/editor/guiEditCtrl.cpp
  70. 3 3
      Engine/source/gui/editor/guiFilterCtrl.cpp
  71. 21 33
      Engine/source/gui/editor/guiInspector.cpp
  72. 1 1
      Engine/source/gui/editor/guiMenuBar.cpp
  73. 72 114
      Engine/source/gui/editor/guiParticleGraphCtrl.cpp
  74. 1 0
      Engine/source/gui/editor/guiRectHandles.cpp
  75. 3 2
      Engine/source/gui/editor/inspector/dynamicField.cpp
  76. 4 3
      Engine/source/gui/editor/inspector/dynamicGroup.cpp
  77. 10 13
      Engine/source/gui/editor/inspector/field.cpp
  78. 3 2
      Engine/source/gui/editor/inspector/variableInspector.cpp
  79. 39 0
      Engine/source/gui/game/GuiChunkedBitmapCtrl.h
  80. 1 28
      Engine/source/gui/game/guiChunkedBitmapCtrl.cpp
  81. 3 2
      Engine/source/gui/game/guiIdleCamFadeBitmapCtrl.cpp
  82. 4 5
      Engine/source/gui/shiny/guiTickCtrl.cpp
  83. 2 5
      Engine/source/gui/utility/messageVector.cpp
  84. 24 22
      Engine/source/gui/worldEditor/creator.cpp
  85. 6 7
      Engine/source/gui/worldEditor/editor.cpp
  86. 10 10
      Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.cpp
  87. 21 34
      Engine/source/gui/worldEditor/guiDecalEditorCtrl.cpp
  88. 5 4
      Engine/source/gui/worldEditor/guiMissionAreaEditor.cpp
  89. 12 17
      Engine/source/gui/worldEditor/guiTerrPreviewCtrl.cpp
  90. 4 4
      Engine/source/gui/worldEditor/terrainActions.cpp
  91. 69 86
      Engine/source/gui/worldEditor/terrainEditor.cpp
  92. 5 6
      Engine/source/gui/worldEditor/undoActions.cpp
  93. 77 103
      Engine/source/gui/worldEditor/worldEditor.cpp
  94. 10 6
      Engine/source/i18n/i18n.cpp
  95. 13 13
      Engine/source/i18n/lang.cpp
  96. 3 2
      Engine/source/lighting/advanced/advancedLightManager.cpp
  97. 2 1
      Engine/source/lighting/shadowManager.cpp
  98. 14 13
      Engine/source/materials/materialDefinition.cpp
  99. 9 8
      Engine/source/materials/materialManager.cpp
  100. 19 10
      Engine/source/math/mConsoleFunctions.cpp

+ 39 - 35
Engine/source/T3D/aiClient.cpp

@@ -28,6 +28,7 @@
 #include "T3D/player.h"
 #include "T3D/gameBase/moveManager.h"
 #include "console/consoleInternal.h"
+#include "console/engineAPI.h"
 
 
 IMPLEMENT_CONOBJECT( AIClient );
@@ -52,6 +53,8 @@ ConsoleDocClass( AIClient,
    "@ingroup Networking\n"
 );
 
+IMPLEMENT_CALLBACK(AIClient, onConnect, void, (const char* idString), (idString),"");
+
 /**
  * Constructor
  */
@@ -415,15 +418,17 @@ void AIClient::onAdd( const char *nameSpace ) {
 /**
  * Sets the move speed for an AI object
  */
-ConsoleMethod( AIClient, setMoveSpeed, void, 3, 3, "ai.setMoveSpeed( float );" ) {
+DefineConsoleMethod( AIClient, setMoveSpeed, void, (F32 speed), , "ai.setMoveSpeed( float );" ) 
+{
    AIClient *ai = static_cast<AIClient *>( object );
-   ai->setMoveSpeed( dAtof( argv[2] ) );
+   ai->setMoveSpeed( speed );
 }
 
 /**
  * Stops all AI movement, halt!
  */
-ConsoleMethod( AIClient, stop, void, 2, 2, "ai.stop();" ) {
+DefineConsoleMethod( AIClient, stop, void, (),, "ai.stop();" ) 
+{
    AIClient *ai = static_cast<AIClient *>( object );
    ai->setMoveMode( AIClient::ModeStop );
 }
@@ -431,10 +436,9 @@ ConsoleMethod( AIClient, stop, void, 2, 2, "ai.stop();" ) {
 /**
  * Tells the AI to aim at the location provided
  */
-ConsoleMethod( AIClient, setAimLocation, void, 3, 3, "ai.setAimLocation( x y z );" ) {
+DefineConsoleMethod( AIClient, setAimLocation, void, (Point3F v), , "ai.setAimLocation( x y z );" ) 
+{
    AIClient *ai = static_cast<AIClient *>( object );
-   Point3F v( 0.0f,0.0f,0.0f );
-   dSscanf( argv[2], "%f %f %f", &v.x, &v.y, &v.z );
 
    ai->setAimLocation( v );
 }
@@ -442,10 +446,9 @@ ConsoleMethod( AIClient, setAimLocation, void, 3, 3, "ai.setAimLocation( x y z )
 /**
  * Tells the AI to move to the location provided
  */
-ConsoleMethod( AIClient, setMoveDestination, void, 3, 3, "ai.setMoveDestination( x y z );" ) {
+DefineConsoleMethod( AIClient, setMoveDestination, void, (Point3F v), , "ai.setMoveDestination( x y z );" )
+{
    AIClient *ai = static_cast<AIClient *>( object );
-   Point3F v( 0.0f, 0.0f, 0.0f );
-   dSscanf( argv[2], "%f %f", &v.x, &v.y );
 
    ai->setMoveDestination( v );
 }
@@ -453,13 +456,13 @@ ConsoleMethod( AIClient, setMoveDestination, void, 3, 3, "ai.setMoveDestination(
 /**
  * Returns the point the AI is aiming at
  */
-ConsoleMethod( AIClient, getAimLocation, const char *, 2, 2, "ai.getAimLocation();" ) {
+DefineConsoleMethod( AIClient, getAimLocation, const char *, (),, "ai.getAimLocation();" ) 
+{
    AIClient *ai = static_cast<AIClient *>( object );
    Point3F aimPoint = ai->getAimLocation();
 
-   static const U32 bufSize = 256;
-   char *returnBuffer = Con::getReturnBuffer( bufSize );
-   dSprintf( returnBuffer, bufSize, "%f %f %f", aimPoint.x, aimPoint.y, aimPoint.z );
+   char *returnBuffer = Con::getReturnBuffer( 256 );
+   dSprintf( returnBuffer, 256, "%f %f %f", aimPoint.x, aimPoint.y, aimPoint.z );
 
    return returnBuffer;
 }
@@ -467,13 +470,13 @@ ConsoleMethod( AIClient, getAimLocation, const char *, 2, 2, "ai.getAimLocation(
 /**
  * Returns the point the AI is set to move to
  */
-ConsoleMethod( AIClient, getMoveDestination, const char *, 2, 2, "ai.getMoveDestination();" ) {
+DefineConsoleMethod( AIClient, getMoveDestination, const char *, (),, "ai.getMoveDestination();" ) 
+{
    AIClient *ai = static_cast<AIClient *>( object );
    Point3F movePoint = ai->getMoveDestination();
 
-   static const U32 bufSize = 256;
-   char *returnBuffer = Con::getReturnBuffer( bufSize );
-   dSprintf( returnBuffer, bufSize, "%f %f %f", movePoint.x, movePoint.y, movePoint.z );
+   char *returnBuffer = Con::getReturnBuffer( 256 );
+   dSprintf( returnBuffer, 256, "%f %f %f", movePoint.x, movePoint.y, movePoint.z );
 
    return returnBuffer;
 }
@@ -481,12 +484,13 @@ ConsoleMethod( AIClient, getMoveDestination, const char *, 2, 2, "ai.getMoveDest
 /**
  * Sets the bots target object
  */
-ConsoleMethod( AIClient, setTargetObject, void, 3, 3, "ai.setTargetObject( obj );" ) {
+DefineConsoleMethod( AIClient, setTargetObject, void, (const char * objName), , "ai.setTargetObject( obj );" ) 
+{
    AIClient *ai = static_cast<AIClient *>( object );
    
    // Find the target
    ShapeBase *targetObject;
-   if( Sim::findObject( argv[2], targetObject ) )
+   if( Sim::findObject( objName, targetObject ) )
       ai->setTargetObject( targetObject );
    else
       ai->setTargetObject( NULL );
@@ -495,7 +499,8 @@ ConsoleMethod( AIClient, setTargetObject, void, 3, 3, "ai.setTargetObject( obj )
 /**
  * Gets the object the AI is targeting
  */
-ConsoleMethod( AIClient, getTargetObject, S32, 2, 2, "ai.getTargetObject();" ) {
+DefineConsoleMethod( AIClient, getTargetObject, S32, (),, "ai.getTargetObject();" ) 
+{
    AIClient *ai = static_cast<AIClient *>( object );
 
    return ai->getTargetObject();
@@ -504,7 +509,8 @@ ConsoleMethod( AIClient, getTargetObject, S32, 2, 2, "ai.getTargetObject();" ) {
 /**
  * Tells the bot the mission is cycling
  */
-ConsoleMethod( AIClient, missionCycleCleanup, void, 2, 2, "ai.missionCycleCleanup();" ) {
+DefineConsoleMethod( AIClient, missionCycleCleanup, void, (),, "ai.missionCycleCleanup();" ) 
+{
    AIClient *ai = static_cast<AIClient*>( object );
    ai->missionCycleCleanup();
 }
@@ -512,7 +518,8 @@ ConsoleMethod( AIClient, missionCycleCleanup, void, 2, 2, "ai.missionCycleCleanu
 /**
  * Sets the AI to run mode
  */
-ConsoleMethod( AIClient, move, void, 2, 2, "ai.move();" ) {
+DefineConsoleMethod( AIClient, move, void, (),, "ai.move();" ) 
+{
    AIClient *ai = static_cast<AIClient *>( object );
    ai->setMoveMode( AIClient::ModeMove );
 }
@@ -520,13 +527,13 @@ ConsoleMethod( AIClient, move, void, 2, 2, "ai.move();" ) {
 /**
  * Gets the AI's location in the world
  */
-ConsoleMethod( AIClient, getLocation, const char *, 2, 2, "ai.getLocation();" ) {
+DefineConsoleMethod( AIClient, getLocation, const char *, (),, "ai.getLocation();" ) 
+{
    AIClient *ai = static_cast<AIClient *>( object );
    Point3F locPoint = ai->getLocation();
 
-   static const U32 bufSize = 256;
-   char *returnBuffer = Con::getReturnBuffer( bufSize );
-   dSprintf( returnBuffer, bufSize, "%f %f %f", locPoint.x, locPoint.y, locPoint.z );
+   char *returnBuffer = Con::getReturnBuffer( 256 );
+   dSprintf( returnBuffer, 256, "%f %f %f", locPoint.x, locPoint.y, locPoint.z );
 
    return returnBuffer;
 }
@@ -534,7 +541,8 @@ ConsoleMethod( AIClient, getLocation, const char *, 2, 2, "ai.getLocation();" )
 /**
  * Adds an AI Player to the game
  */
-ConsoleFunction( aiAddPlayer, S32 , 2, 3, "aiAddPlayer( 'playerName'[, 'AIClassType'] );" ) {
+DefineConsoleFunction( aiAddPlayer, S32, (const char * name, const char * ns), (""), "'playerName'[, 'AIClassType'] );")
+{
    // Create the player
    AIClient *aiPlayer = new AIClient();
    aiPlayer->registerObject();
@@ -548,18 +556,13 @@ ConsoleFunction( aiAddPlayer, S32 , 2, 3, "aiAddPlayer( 'playerName'[, 'AIClassT
    SimGroup *g = Sim::getClientGroup();
    g->addObject( aiPlayer );
 
-   char *name = new char[ dStrlen( argv[1] ) + 1];
-   char *ns = new char[ dStrlen( argv[2] ) + 1];
-
-   dStrcpy( name, argv[1] );
-   dStrcpy( ns, argv[2] );
 
    // Execute the connect console function, this is the same 
    // onConnect function invoked for normal client connections
-   Con::executef( aiPlayer, "onConnect", name );
+   aiPlayer->onConnect_callback( name );
 
    // Now execute the onAdd command and feed it the namespace
-   if( argc > 2 )
+   if( ns != "" )
       aiPlayer->onAdd( ns );
    else
       aiPlayer->onAdd( "AIClient" );
@@ -571,7 +574,8 @@ ConsoleFunction( aiAddPlayer, S32 , 2, 3, "aiAddPlayer( 'playerName'[, 'AIClassT
 /**
  * Tells the AI to move forward 100 units...TEST FXN
  */
-ConsoleMethod( AIClient, moveForward, void, 2, 2, "ai.moveForward();" ) {
+DefineConsoleMethod( AIClient, moveForward, void, (),, "ai.moveForward();" ) 
+{
    
    AIClient *ai = static_cast<AIClient *>( object );
    ShapeBase *player = dynamic_cast<ShapeBase*>(ai->getControlObject());

+ 2 - 0
Engine/source/T3D/aiClient.h

@@ -70,6 +70,8 @@ class AIClient : public AIConnection {
 		
 		DECLARE_CONOBJECT( AIClient );
 
+	   DECLARE_CALLBACK( void, onConnect, (const char* idString) );
+
 		enum {
 			ModeStop = 0,
 			ModeMove,

+ 30 - 30
Engine/source/T3D/aiConnection.cpp

@@ -21,6 +21,7 @@
 //-----------------------------------------------------------------------------
 
 #include "T3D/aiConnection.h"
+#include "console/engineAPI.h"
 
 IMPLEMENT_CONOBJECT( AIConnection );
 
@@ -159,7 +160,7 @@ ConsoleFunction(aiConnect, S32 , 2, 20, "(...)"
 
 
 //-----------------------------------------------------------------------------
-ConsoleMethod(AIConnection,setMove,void,4, 4,"(string field, float value)"
+DefineConsoleMethod(AIConnection, setMove, void, (const char * field, F32 value), ,"(string field, float value)"
               "Set a field on the current move.\n\n"
               "@param   field One of {'x','y','z','yaw','pitch','roll'}\n"
               "@param   value Value to set field to.")
@@ -167,59 +168,59 @@ ConsoleMethod(AIConnection,setMove,void,4, 4,"(string field, float value)"
    Move move = object->getMove();
 
    // Ok, a little slow for now, but this is just an example..
-   if (!dStricmp(argv[2],"x"))
-      move.x = mClampF(dAtof(argv[3]),-1,1);
+   if (!dStricmp(field,"x"))
+      move.x = mClampF(value,-1,1);
       else
-   if (!dStricmp(argv[2],"y"))
-      move.y = mClampF(dAtof(argv[3]),-1,1);
+   if (!dStricmp(field,"y"))
+      move.y = mClampF(value,-1,1);
       else
-   if (!dStricmp(argv[2],"z"))
-      move.z = mClampF(dAtof(argv[3]),-1,1);
+   if (!dStricmp(field,"z"))
+      move.z = mClampF(value,-1,1);
       else
-   if (!dStricmp(argv[2],"yaw"))
-      move.yaw = moveClamp(dAtof(argv[3]));
+   if (!dStricmp(field,"yaw"))
+      move.yaw = moveClamp(value);
       else
-   if (!dStricmp(argv[2],"pitch"))
-      move.pitch = moveClamp(dAtof(argv[3]));
+   if (!dStricmp(field,"pitch"))
+      move.pitch = moveClamp(value);
       else
-   if (!dStricmp(argv[2],"roll"))
-      move.roll = moveClamp(dAtof(argv[3]));
+   if (!dStricmp(field,"roll"))
+      move.roll = moveClamp(value);
 
    //
    object->setMove(&move);
 }
 
-ConsoleMethod(AIConnection,getMove,F32,3, 3,"(string field)"
+DefineConsoleMethod(AIConnection,getMove,F32, (const char * field), ,"(string field)"
               "Get the given field of a move.\n\n"
               "@param field One of {'x','y','z','yaw','pitch','roll'}\n"
               "@returns The requested field on the current move.")
 {
    const Move& move = object->getMove();
-   if (!dStricmp(argv[2],"x"))
+   if (!dStricmp(field,"x"))
       return move.x;
-   if (!dStricmp(argv[2],"y"))
+   if (!dStricmp(field,"y"))
       return move.y;
-   if (!dStricmp(argv[2],"z"))
+   if (!dStricmp(field,"z"))
       return move.z;
-   if (!dStricmp(argv[2],"yaw"))
+   if (!dStricmp(field,"yaw"))
       return move.yaw;
-   if (!dStricmp(argv[2],"pitch"))
+   if (!dStricmp(field,"pitch"))
       return move.pitch;
-   if (!dStricmp(argv[2],"roll"))
+   if (!dStricmp(field,"roll"))
       return move.roll;
    return 0;
 }
 
 
-ConsoleMethod(AIConnection,setFreeLook,void,3, 3,"(bool isFreeLook)"
+DefineConsoleMethod(AIConnection,setFreeLook,void,(bool isFreeLook), ,"(bool isFreeLook)"
               "Enable/disable freelook on the current move.")
 {
    Move move = object->getMove();
-   move.freeLook = dAtob(argv[2]);
+   move.freeLook = isFreeLook;
    object->setMove(&move);
 }
 
-ConsoleMethod(AIConnection,getFreeLook,bool,2, 2,"getFreeLook()"
+DefineConsoleMethod(AIConnection, getFreeLook, bool, (), ,"getFreeLook()"
               "Is freelook on for the current move?")
 {
    return object->getMove().freeLook;
@@ -228,21 +229,20 @@ ConsoleMethod(AIConnection,getFreeLook,bool,2, 2,"getFreeLook()"
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AIConnection,setTrigger,void,4, 4,"(int trigger, bool set)"
+DefineConsoleMethod(AIConnection,setTrigger,void, (S32 idx, bool set), ,"(int trigger, bool set)"
               "Set a trigger.")
 {
-   S32 idx = dAtoi(argv[2]);
-   if (idx >= 0 && idx < MaxTriggerKeys)  {
+   if (idx >= 0 && idx < MaxTriggerKeys)  
+   {
       Move move = object->getMove();
-      move.trigger[idx] = dAtob(argv[3]);
+      move.trigger[idx] = set;
       object->setMove(&move);
    }
 }
 
-ConsoleMethod(AIConnection,getTrigger,bool,4, 4,"(int trigger)"
+DefineConsoleMethod(AIConnection,getTrigger,bool, (S32 idx), ,"(int trigger)"
               "Is the given trigger set?")
 {
-   S32 idx = dAtoi(argv[2]);
    if (idx >= 0 && idx < MaxTriggerKeys)
       return object->getMove().trigger[idx];
    return false;
@@ -251,7 +251,7 @@ ConsoleMethod(AIConnection,getTrigger,bool,4, 4,"(int trigger)"
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AIConnection,getAddress,const char*,2, 2,"")
+DefineConsoleMethod(AIConnection,getAddress,const char*,(), ,"")
 {
    // Override the netConnection method to return to indicate
    // this is an ai connection.

+ 5 - 7
Engine/source/T3D/aiPlayer.cpp

@@ -575,23 +575,21 @@ ConsoleDocFragment _setAimObject(
    "AIPlayer",
    "void setAimObject(GameBase targetObject, Point3F offset);"
 );
-ConsoleMethod( AIPlayer, setAimObject, void, 3, 4, "( GameBase obj, [Point3F offset] )"
+
+DefineConsoleMethod( AIPlayer, setAimObject, void, ( const char * objName, Point3F offset ), (Point3F::Zero), "( GameBase obj, [Point3F offset] )"
               "Sets the bot's target object. Optionally set an offset from target location."
 			  "@hide")
 {
-   Point3F off( 0.0f, 0.0f, 0.0f );
 
    // Find the target
    GameBase *targetObject;
-   if( Sim::findObject( argv[2], targetObject ) )
+   if( Sim::findObject( objName, targetObject ) )
    {
-      if (argc == 4)
-         dSscanf( argv[3], "%g %g %g", &off.x, &off.y, &off.z );
 
-      object->setAimObject( targetObject, off );
+      object->setAimObject( targetObject, offset );
    }
    else
-      object->setAimObject( 0, off );
+      object->setAimObject( 0, offset );
 }
 
 DefineEngineMethod( AIPlayer, getAimObject, S32, (),,

+ 4 - 4
Engine/source/T3D/camera.cpp

@@ -1860,7 +1860,7 @@ DefineEngineMethod( Camera, setOffset, void, (Point3F offset), ,
 //-----------------------------------------------------------------------------
 
 DefineEngineMethod( Camera, setOrbitMode, void, (GameBase* orbitObject, TransformF orbitPoint, F32 minDistance, F32 maxDistance, 
-                    F32 initDistance, bool ownClientObj, Point3F offset, bool locked), (false, Point3F(0.0f, 0.0f, 0.0f), false),
+                    F32 initDistance, bool ownClientObj, Point3F offset, bool locked), (false, Point3F::Zero, false),
                     "Set the camera to orbit around the given object, or if none is given, around the given point.\n\n"
                     "@param orbitObject The object to orbit around.  If no object is given (0 or blank string is passed in) use the orbitPoint instead\n"
                     "@param orbitPoint The point to orbit around when no object is given.  In the form of \"x y z ax ay az aa\" such as returned by SceneObject::getTransform().\n"
@@ -1883,7 +1883,7 @@ DefineEngineMethod( Camera, setOrbitMode, void, (GameBase* orbitObject, Transfor
 
 DefineEngineMethod( Camera, setOrbitObject, bool, (GameBase* orbitObject, VectorF rotation, F32 minDistance, 
                     F32 maxDistance, F32 initDistance, bool ownClientObject, Point3F offset, bool locked),
-                    (false, Point3F(0.0f, 0.0f, 0.0f), false),
+                    (false, Point3F::Zero, false),
                     "Set the camera to orbit around a given object.\n\n"
                     "@param orbitObject The object to orbit around.\n"
                     "@param rotation The initial camera rotation about the object in radians in the form of \"x y z\".\n"
@@ -1911,7 +1911,7 @@ DefineEngineMethod( Camera, setOrbitObject, bool, (GameBase* orbitObject, Vector
 
 DefineEngineMethod( Camera, setOrbitPoint, void, (TransformF orbitPoint, F32 minDistance, F32 maxDistance, F32 initDistance, 
                     Point3F offset, bool locked),
-                    (Point3F(0.0f, 0.0f, 0.0f), false),
+                    (Point3F::Zero, false),
                     "Set the camera to orbit around a given point.\n\n"
                     "@param orbitPoint The point to orbit around.  In the form of \"x y z ax ay az aa\" such as returned by SceneObject::getTransform().\n"
                     "@param minDistance The minimum distance allowed to the orbit object or point.\n"
@@ -1929,7 +1929,7 @@ DefineEngineMethod( Camera, setOrbitPoint, void, (TransformF orbitPoint, F32 min
 
 //-----------------------------------------------------------------------------
 
-DefineEngineMethod( Camera, setTrackObject, bool, (GameBase* trackObject, Point3F offset), (Point3F(0.0f, 0.0f, 0.0f)),
+DefineEngineMethod( Camera, setTrackObject, bool, (GameBase* trackObject, Point3F offset), (Point3F::Zero),
                     "Set the camera to track a given object.\n\n"
                     "@param trackObject The object to track.\n"
                     "@param offset [optional] An offset added to the camera's position.  Default is no offset.\n"

+ 10 - 1
Engine/source/T3D/fx/explosion.cpp

@@ -138,8 +138,17 @@ ConsoleDocClass( Explosion,
 
 MRandomLCG sgRandom(0xdeadbeef);
 
+//WLE - Vince - The defaults are bad, the whole point of calling this function\
+//is to determine the explosion coverage on a object.  Why would you want them
+//To call this with a null for the ID?  In fact, it just returns a 1f if
+//it can't find the object.  Seems useless to me.  Cause how can I apply
+//damage to a object that doesn't exist?
 
-DefineEngineFunction(calcExplosionCoverage, F32, (Point3F pos, S32 id, U32 covMask),(Point3F(0.0f,0.0f,0.0f), NULL, NULL),
+//I could possible see a use with passing in a null covMask, but even that
+//sounds flaky because it will be 100 percent if your saying not to take
+//any thing in consideration for coverage.  So I'm removing these defaults they are just bad.
+
+DefineEngineFunction(calcExplosionCoverage, F32, (Point3F pos, S32 id, U32 covMask),,
    "@brief Calculates how much an explosion effects a specific object.\n\n"
    "Use this to determine how much damage to apply to objects based on their "
    "distance from the explosion's center point, and whether the explosion is "

+ 1 - 4
Engine/source/T3D/fx/lightning.cpp

@@ -929,13 +929,10 @@ DefineEngineMethod(Lightning, strikeRandomPoint, void, (),,
       object->strikeRandomPoint();
 }
 
-DefineEngineMethod(Lightning, strikeObject, void, (S32 id), (NULL),
+DefineEngineMethod(Lightning, strikeObject, void, (ShapeBase* pSB),,
    "Creates a LightningStrikeEvent which strikes a specific object.\n"
    "@note This method is currently unimplemented.\n" )
 {
-   ShapeBase* pSB;
-
-   if (object->isServerObject() && Sim::findObject(id, pSB))
       object->strikeObject(pSB);
 }
 

+ 3 - 2
Engine/source/T3D/fx/particleEmitterNode.cpp

@@ -393,8 +393,9 @@ void ParticleEmitterNode::setEmitterDataBlock(ParticleEmitterData* data)
 
    mEmitterDatablock = data;
 }
- 
-DefineEngineMethod(ParticleEmitterNode, setEmitterDataBlock, void, (ParticleEmitterData* emitterDatablock), (0),
+
+
+DefineEngineMethod(ParticleEmitterNode, setEmitterDataBlock, void, (ParticleEmitterData* emitterDatablock), (NULL),
    "Assigns the datablock for this emitter node.\n"
    "@param emitterDatablock ParticleEmitterData datablock to assign\n"
    "@tsexample\n"

+ 1 - 1
Engine/source/T3D/fx/precipitation.cpp

@@ -506,7 +506,7 @@ DefineEngineMethod(Precipitation, modifyStorm, void, (F32 percentage, F32 second
    object->modifyStorm(percentage, S32(seconds * 1000.0f));
 }
 
-DefineEngineMethod(Precipitation, setTurbulence, void, (F32 max, F32 speed, F32 seconds), (1.0f, 5.0f, 5.0),
+DefineEngineMethod(Precipitation, setTurbulence, void, (F32 max, F32 speed, F32 seconds), (1.0f, 5.0f, 5.0f),
    "Smoothly change the turbulence parameters over a period of time.\n"
    "@param max New #maxTurbulence value. Set to 0 to disable turbulence.\n"
    "@param speed New #turbulenceSpeed value.\n"

+ 2 - 1
Engine/source/T3D/gameBase/gameProcess.cpp

@@ -20,6 +20,7 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
+#include "console/engineAPI.h"
 #include "platform/platform.h"
 #include "T3D/gameBase/gameProcess.h"
 
@@ -33,7 +34,7 @@ ClientProcessList* ClientProcessList::smClientProcessList = NULL;
 ServerProcessList* ServerProcessList::smServerProcessList = NULL;
 static U32 gNetOrderNextId = 0;
 
-ConsoleFunction( dumpProcessList, void, 1, 1, 
+DefineConsoleFunction( dumpProcessList, void, ( bool allow ), ,
    "Dumps all ProcessObjects in ServerProcessList and ClientProcessList to the console." )
 {
    Con::printf( "client process list:" );

+ 34 - 45
Engine/source/T3D/gameFunctions.cpp

@@ -88,7 +88,7 @@ extern void ShowInit();
 
 //------------------------------------------------------------------------------
 /// Camera and FOV info
-namespace {
+namespace CameraAndFOV{
 
    const  U32 MaxZoomSpeed             = 2000;     ///< max number of ms to reach target FOV
 
@@ -112,7 +112,7 @@ static U32 sgServerQueryIndex = 0;
 //SERVER FUNCTIONS ONLY
 ConsoleFunctionGroupBegin( Containers, "Spatial query functions. <b>Server side only!</b>");
 
-ConsoleFunction(containerFindFirst, const char*, 6, 6, "(int mask, Point3F point, float x, float y, float z)"
+DefineConsoleFunction( containerFindFirst, const char*, (U32 typeMask, Point3F origin, Point3F size), , "(int mask, Point3F point, float x, float y, float z)"
    "@brief Find objects matching the bitmask type within a box centered at point, with extents x, y, z.\n\n"
    "@returns The first object found, or an empty string if nothing was found.  Thereafter, you can get more "
    "results using containerFindNext()."
@@ -120,17 +120,6 @@ ConsoleFunction(containerFindFirst, const char*, 6, 6, "(int mask, Point3F point
    "@ingroup Game")
 {
    //find out what we're looking for
-   U32 typeMask = U32(dAtoi(argv[1]));
-
-   //find the center of the container volume
-   Point3F origin(0.0f, 0.0f, 0.0f);
-   dSscanf(argv[2], "%g %g %g", &origin.x, &origin.y, &origin.z);
-
-   //find the box dimensions
-   Point3F size(0.0f, 0.0f, 0.0f);
-   size.x = mFabs(dAtof(argv[3]));
-   size.y = mFabs(dAtof(argv[4]));
-   size.z = mFabs(dAtof(argv[5]));
 
    //build the container volume
    Box3F queryBox;
@@ -155,7 +144,7 @@ ConsoleFunction(containerFindFirst, const char*, 6, 6, "(int mask, Point3F point
    return buff;
 }
 
-ConsoleFunction( containerFindNext, const char*, 1, 1, "()"
+DefineConsoleFunction( containerFindNext, const char*, (), , "()"
    "@brief Get more results from a previous call to containerFindFirst().\n\n"
    "@note You must call containerFindFirst() to begin the search.\n"
    "@returns The next object found, or an empty string if nothing else was found.\n"
@@ -191,9 +180,9 @@ DefineEngineFunction( setDefaultFov, void, ( F32 defaultFOV ),,
             "@param defaultFOV The default field of view in degrees\n"
 				"@ingroup CameraSystem")
 {
-   sDefaultFov = mClampF(defaultFOV, MinCameraFov, MaxCameraFov);
-   if(sCameraFov == sTargetFov)
-      sTargetFov = sDefaultFov;
+   CameraAndFOV::sDefaultFov = mClampF(defaultFOV, MinCameraFov, MaxCameraFov);
+   if(CameraAndFOV::sCameraFov == CameraAndFOV::sTargetFov)
+      CameraAndFOV::sTargetFov = CameraAndFOV::sDefaultFov;
 }
 
 DefineEngineFunction( setZoomSpeed, void, ( S32 speed ),,
@@ -203,7 +192,7 @@ DefineEngineFunction( setZoomSpeed, void, ( S32 speed ),,
             "@param speed The camera's zoom speed in ms per 90deg FOV change\n"
 				"@ingroup CameraSystem")
 {
-   sZoomSpeed = mClamp(speed, 0, MaxZoomSpeed);
+   CameraAndFOV::sZoomSpeed = mClamp(speed, 0, CameraAndFOV::MaxZoomSpeed);
 }
 
 DefineEngineFunction( setFov, void, ( F32 FOV ),,
@@ -211,22 +200,22 @@ DefineEngineFunction( setFov, void, ( F32 FOV ),,
             "@param FOV The camera's new FOV in degrees\n"
 				"@ingroup CameraSystem")
 {
-   sTargetFov = mClampF(FOV, MinCameraFov, MaxCameraFov);
+   CameraAndFOV::sTargetFov = mClampF(FOV, MinCameraFov, MaxCameraFov);
 }
 
 F32 GameGetCameraFov()
 {
-   return(sCameraFov);
+   return(CameraAndFOV::sCameraFov);
 }
 
 void GameSetCameraFov(F32 fov)
 {
-   sTargetFov = sCameraFov = fov;
+   CameraAndFOV::sTargetFov = CameraAndFOV::sCameraFov = fov;
 }
 
 void GameSetCameraTargetFov(F32 fov)
 {
-   sTargetFov = fov;
+   CameraAndFOV::sTargetFov = fov;
 }
 
 void GameUpdateCameraFov()
@@ -234,29 +223,29 @@ void GameUpdateCameraFov()
    F32 time = F32(Platform::getVirtualMilliseconds());
 
    // need to update fov?
-   if(sTargetFov != sCameraFov)
+   if(CameraAndFOV::sTargetFov != CameraAndFOV::sCameraFov)
    {
-      F32 delta = time - sLastCameraUpdateTime;
+      F32 delta = time - CameraAndFOV::sLastCameraUpdateTime;
 
       // snap zoom?
-      if((sZoomSpeed == 0) || (delta <= 0.f))
-         sCameraFov = sTargetFov;
+      if((CameraAndFOV::sZoomSpeed == 0) || (delta <= 0.f))
+         CameraAndFOV::sCameraFov = CameraAndFOV::sTargetFov;
       else
       {
          // gZoomSpeed is time in ms to zoom 90deg
-         F32 step = 90.f * (delta / F32(sZoomSpeed));
+         F32 step = 90.f * (delta / F32(CameraAndFOV::sZoomSpeed));
 
-         if(sCameraFov > sTargetFov)
+         if(CameraAndFOV::sCameraFov > CameraAndFOV::sTargetFov)
          {
-            sCameraFov -= step;
-            if(sCameraFov < sTargetFov)
-               sCameraFov = sTargetFov;
+            CameraAndFOV::sCameraFov -= step;
+            if(CameraAndFOV::sCameraFov < CameraAndFOV::sTargetFov)
+               CameraAndFOV::sCameraFov = CameraAndFOV::sTargetFov;
          }
          else
          {
-            sCameraFov += step;
-            if(sCameraFov > sTargetFov)
-               sCameraFov = sTargetFov;
+            CameraAndFOV::sCameraFov += step;
+            if(CameraAndFOV::sCameraFov > CameraAndFOV::sTargetFov)
+               CameraAndFOV::sCameraFov = CameraAndFOV::sTargetFov;
          }
       }
    }
@@ -266,23 +255,23 @@ void GameUpdateCameraFov()
    if(connection)
    {
       // check if fov is valid on control object
-      if(connection->isValidControlCameraFov(sCameraFov))
-         connection->setControlCameraFov(sCameraFov);
+      if(connection->isValidControlCameraFov(CameraAndFOV::sCameraFov))
+         connection->setControlCameraFov(CameraAndFOV::sCameraFov);
       else
       {
          // will set to the closest fov (fails only on invalid control object)
-         if(connection->setControlCameraFov(sCameraFov))
+         if(connection->setControlCameraFov(CameraAndFOV::sCameraFov))
          {
-            F32 setFov = sCameraFov;
+            F32 setFov = CameraAndFOV::sCameraFov;
             connection->getControlCameraFov(&setFov);
-            sTargetFov = sCameraFov = setFov;
+            CameraAndFOV::sTargetFov =CameraAndFOV::sCameraFov = setFov;
          }
       }
    }
 
    // update the console variable
-   sConsoleCameraFov = sCameraFov;
-   sLastCameraUpdateTime = time;
+   CameraAndFOV::sConsoleCameraFov = CameraAndFOV::sCameraFov;
+   CameraAndFOV::sLastCameraUpdateTime = time;
 }
 //--------------------------------------------------------------------------
 
@@ -355,8 +344,8 @@ bool GameProcessCameraQuery(CameraQuery *query)
 
       // Scale the normal visible distance by the performance 
       // tuning scale which we never let over 1.
-      sVisDistanceScale = mClampF( sVisDistanceScale, 0.01f, 1.0f );
-      query->farPlane = gClientSceneGraph->getVisibleDistance() * sVisDistanceScale;
+      CameraAndFOV::sVisDistanceScale = mClampF( CameraAndFOV::sVisDistanceScale, 0.01f, 1.0f );
+      query->farPlane = gClientSceneGraph->getVisibleDistance() * CameraAndFOV::sVisDistanceScale;
 
       // Provide some default values
       query->projectionOffset = Point2F::Zero;
@@ -432,10 +421,10 @@ static void Process3D()
 
 static void RegisterGameFunctions()
 {
-   Con::addVariable( "$pref::Camera::distanceScale", TypeF32, &sVisDistanceScale, 
+   Con::addVariable( "$pref::Camera::distanceScale", TypeF32, &CameraAndFOV::sVisDistanceScale, 
       "A scale to apply to the normal visible distance, typically used for tuning performance.\n"
 	   "@ingroup Game");
-   Con::addVariable( "$cameraFov", TypeF32, &sConsoleCameraFov, 
+   Con::addVariable( "$cameraFov", TypeF32, &CameraAndFOV::sConsoleCameraFov, 
       "The camera's Field of View.\n\n"
 	   "@ingroup Game" );
 

+ 6 - 5
Engine/source/T3D/lightBase.cpp

@@ -425,21 +425,22 @@ static ConsoleDocFragment _lbplayAnimation2(
    "LightBase",
    "void playAnimation(LightAnimData anim);"
 );
-ConsoleMethod( LightBase, playAnimation, void, 2, 3, "( [LightAnimData anim] )\t"
+
+DefineConsoleMethod( LightBase, playAnimation, void, (const char * anim), (""), "( [LightAnimData anim] )\t"
    "Plays a light animation on the light.  If no LightAnimData is passed the "
    "existing one is played."
    "@hide")
 {
-    if ( argc == 2 )
+    if ( anim == "" )
     {
         object->playAnimation();
         return;
     }
 
     LightAnimData *animData;
-    if ( !Sim::findObject( argv[2], animData ) )
+    if ( !Sim::findObject( anim, animData ) )
     {
-        Con::errorf( "LightBase::playAnimation() - Invalid LightAnimData '%s'.", (const char*)argv[2] );
+        Con::errorf( "LightBase::playAnimation() - Invalid LightAnimData '%s'.", anim );
         return;
     }
 
@@ -469,7 +470,7 @@ void LightBase::playAnimation( LightAnimData *animData )
     }
 }
 
-ConsoleMethod( LightBase, pauseAnimation, void, 2, 2, "Stops the light animation." )
+DefineConsoleMethod( LightBase, pauseAnimation, void, (), , "Stops the light animation." )
 {
     object->pauseAnimation();
 }

+ 5 - 44
Engine/source/T3D/missionMarker.cpp

@@ -223,12 +223,6 @@ ConsoleDocClass( WayPoint,
    "@ingroup enviroMisc\n"
 );
 
-WayPointTeam::WayPointTeam()
-{
-   mTeamId = 0;
-   mWayPoint = 0;
-}
-
 WayPoint::WayPoint()
 {
    mName = StringTable->insert("");
@@ -252,7 +246,6 @@ bool WayPoint::onAdd()
       Sim::getWayPointSet()->addObject(this);
    else
    {
-      mTeam.mWayPoint = this;
       setMaskBits(UpdateNameMask|UpdateTeamMask);
    }
 
@@ -272,8 +265,6 @@ U32 WayPoint::packUpdate(NetConnection * con, U32 mask, BitStream * stream)
    U32 retMask = Parent::packUpdate(con, mask, stream);
    if(stream->writeFlag(mask & UpdateNameMask))
       stream->writeString(mName);
-   if(stream->writeFlag(mask & UpdateTeamMask))
-      stream->write(mTeam.mTeamId);
    if(stream->writeFlag(mask & UpdateHiddenMask))
       stream->writeFlag(isHidden());
    return(retMask);
@@ -284,48 +275,17 @@ void WayPoint::unpackUpdate(NetConnection * con, BitStream * stream)
    Parent::unpackUpdate(con, stream);
    if(stream->readFlag())
       mName = stream->readSTString(true);
-   if(stream->readFlag())
-      stream->read(&mTeam.mTeamId);
    if(stream->readFlag())
       setHidden(stream->readFlag());
 }
 
-//-----------------------------------------------------------------------------
-// TypeWayPointTeam
-//-----------------------------------------------------------------------------
-
-IMPLEMENT_STRUCT( WayPointTeam, WayPointTeam,,
-   "" )
-END_IMPLEMENT_STRUCT;
-
-//FIXME: this should work but does not; need to check the stripping down to base types within TYPE
-//ConsoleType( WayPointTeam, TypeWayPointTeam, WayPointTeam* )
-ConsoleType( WayPointTeam, TypeWayPointTeam, WayPointTeam )
-
-ConsoleGetType( TypeWayPointTeam )
-{
-   static const U32 bufSize = 32;
-   char * buf = Con::getReturnBuffer(bufSize);
-   dSprintf(buf, bufSize, "%d", ((WayPointTeam*)dptr)->mTeamId);
-   return(buf);
-}
-
-ConsoleSetType( TypeWayPointTeam )
-{
-   WayPointTeam * pTeam = (WayPointTeam*)dptr;
-   pTeam->mTeamId = dAtoi(argv[0]);
 
-   if(pTeam->mWayPoint && pTeam->mWayPoint->isServerObject())
-      pTeam->mWayPoint->setMaskBits(WayPoint::UpdateTeamMask);
-}
 
 void WayPoint::initPersistFields()
 {
    addGroup("Misc");	
    addField("markerName", TypeCaseString, Offset(mName, WayPoint), "Unique name representing this waypoint");
-   addField("team", TypeWayPointTeam, Offset(mTeam, WayPoint), "Unique numerical ID assigned to this waypoint, or set of waypoints");
    endGroup("Misc");
-   
    Parent::initPersistFields();
 }
 
@@ -546,16 +506,17 @@ ConsoleDocFragment _SpawnSpherespawnObject1(
    "bool spawnObject(string additionalProps);"
 );
 
-ConsoleMethod(SpawnSphere, spawnObject, S32, 2, 3,
+//ConsoleMethod(SpawnSphere, spawnObject, S32, 2, 3,
+DefineConsoleMethod(SpawnSphere, spawnObject, S32, (String additionalProps), ,
    "([string additionalProps]) Spawns the object based on the SpawnSphere's "
    "class, datablock, properties, and script settings. Allows you to pass in "
    "extra properties."
    "@hide" )
 {
-   String additionalProps;
+   //String additionalProps;
 
-   if (argc == 3)
-      additionalProps = (const char*)argv[2];
+   //if (argc == 3)
+   //   additionalProps = String(argv[2]);
 
    SimObject* obj = object->spawnObject(additionalProps);
 

+ 0 - 12
Engine/source/T3D/missionMarker.h

@@ -92,17 +92,6 @@ class MissionMarker : public ShapeBase
 // Class: WayPoint
 //------------------------------------------------------------------------------
 class WayPoint;
-class WayPointTeam
-{
-   public:
-      WayPointTeam();
-
-      S32         mTeamId;
-      WayPoint *  mWayPoint;
-};
-
-DECLARE_STRUCT( WayPointTeam );
-DefineConsoleType( TypeWayPointTeam, WayPointTeam * );
 
 class WayPoint : public MissionMarker
 {
@@ -132,7 +121,6 @@ class WayPoint : public MissionMarker
 
       // field data
       StringTableEntry              mName;
-      WayPointTeam                  mTeam;
 
       static void initPersistFields();
 

+ 2 - 2
Engine/source/T3D/pathCamera.cpp

@@ -581,7 +581,7 @@ static CameraSpline::Knot::Path resolveKnotPath(const char *arg)
 }
 
 DefineEngineMethod(PathCamera, pushBack, void, (TransformF transform, F32 speed, const char* type, const char* path),
-											   (1.0, "Normal", "Linear"), 
+											   (1.0f, "Normal", "Linear"), 
 											      "@brief Adds a new knot to the back of a path camera's path.\n"
 													"@param transform Transform for the new knot.  In the form of \"x y z ax ay az aa\" such as returned by SceneObject::getTransform()\n"
 													"@param speed Speed setting for this knot.\n"
@@ -606,7 +606,7 @@ DefineEngineMethod(PathCamera, pushBack, void, (TransformF transform, F32 speed,
 }
 
 DefineEngineMethod(PathCamera, pushFront, void, (TransformF transform, F32 speed, const char* type, const char* path),
-											   (1.0, "Normal", "Linear"), 
+											   (1.0f, "Normal", "Linear"), 
 											      "@brief Adds a new knot to the front of a path camera's path.\n"
 													"@param transform Transform for the new knot. In the form of \"x y z ax ay az aa\" such as returned by SceneObject::getTransform()\n"
 													"@param speed Speed setting for this knot.\n"

+ 2 - 1
Engine/source/T3D/physics/physicsDebris.cpp

@@ -27,6 +27,7 @@
 #include "math/mathUtils.h"
 #include "console/consoleTypes.h"
 #include "console/consoleObject.h"
+#include "console/engineAPI.h"
 #include "sim/netConnection.h"
 #include "scene/sceneRenderState.h"
 #include "scene/sceneManager.h"
@@ -237,7 +238,7 @@ void PhysicsDebrisData::unpackData(BitStream* stream)
    shapeName   = stream->readSTString();
 }
 
-ConsoleMethod( PhysicsDebrisData, preload, void, 2, 2, 
+DefineConsoleMethod( PhysicsDebrisData, preload, void, (), , 
    "@brief Loads some information to have readily available at simulation time.\n\n"
    "Forces generation of shaders, materials, and other data used by the %PhysicsDebris object. "
    "This function should be used while a level is loading in order to shorten "

+ 21 - 22
Engine/source/T3D/physics/physicsPlugin.cpp

@@ -24,6 +24,7 @@
 #include "T3D/physics/physicsPlugin.h"
 
 #include "console/console.h"
+#include "console/engineAPI.h"
 #include "console/consoleTypes.h"
 #include "console/simSet.h"
 #include "core/strings/stringFunctions.h"
@@ -123,55 +124,53 @@ void PhysicsPlugin::_debugDraw( SceneManager *graph, const SceneRenderState *sta
       world->onDebugDraw( state );
 }
 
-ConsoleFunction( physicsPluginPresent, bool, 1, 1, "physicsPluginPresent()\n"
+DefineConsoleFunction( physicsPluginPresent, bool, (), , "physicsPluginPresent()"
    "@brief Returns true if a physics plugin exists and is initialized.\n\n"
    "@ingroup Physics" )
 {
    return PHYSICSMGR != NULL;
 }
 
-ConsoleFunction( physicsInit, bool, 1, 2, "physicsInit( [string library] )" )
+DefineConsoleFunction( physicsInit, bool, (const char * library), (""), "physicsInit( [string library] )")
 {
-   const char *library = "default";
-   if ( argc > 1 )
-      library = argv[1];
 
    return PhysicsPlugin::activate( library );
 }
 
-ConsoleFunction( physicsDestroy, void, 1, 1, "physicsDestroy()" )
+DefineConsoleFunction( physicsDestroy, void, (), , "physicsDestroy()")
 {
    if ( PHYSICSMGR )
       PHYSICSMGR->destroyPlugin();
 }
 
-ConsoleFunction( physicsInitWorld, bool, 2, 2, "physicsInitWorld( String worldName )" )
+DefineConsoleFunction( physicsInitWorld, bool, (const char * worldName), , "physicsInitWorld( String worldName )")
 {
-   return PHYSICSMGR && PHYSICSMGR->createWorld( (const char*)argv[1] );
+    bool res = PHYSICSMGR && PHYSICSMGR->createWorld( String( worldName ) );
+   return res;
 }
 
-ConsoleFunction( physicsDestroyWorld, void, 2, 2, "physicsDestroyWorld( String worldName )" )
+DefineConsoleFunction( physicsDestroyWorld, void, (const char * worldName), , "physicsDestroyWorld( String worldName )")
 {
    if ( PHYSICSMGR )
-      PHYSICSMGR->destroyWorld( (const char*)argv[1] );
+      { PHYSICSMGR->destroyWorld( String( worldName ) ); }
 }
 
 
 // Control/query of the stop/started state
 // of the currently running simulation.
-ConsoleFunction( physicsStartSimulation, void, 2, 2, "physicsStartSimulation( String worldName )" )
+DefineConsoleFunction( physicsStartSimulation, void, (const char * worldName), , "physicsStartSimulation( String worldName )")
 {
    if ( PHYSICSMGR )
-      PHYSICSMGR->enableSimulation( (const char*)argv[1], true );
+      PHYSICSMGR->enableSimulation( String( worldName ), true );
 }
 
-ConsoleFunction( physicsStopSimulation, void, 2, 2, "physicsStopSimulation( String worldName )" )
+DefineConsoleFunction( physicsStopSimulation, void, (const char * worldName), , "physicsStopSimulation( String worldName )")
 {
    if ( PHYSICSMGR )
-      PHYSICSMGR->enableSimulation( (const char*)argv[1], false );
+      PHYSICSMGR->enableSimulation( String( worldName ), false );
 }
 
-ConsoleFunction( physicsSimulationEnabled, bool, 1, 1, "physicsSimulationEnabled()" )
+DefineConsoleFunction( physicsSimulationEnabled, bool, (), , "physicsStopSimulation( String worldName )")
 {
    return PHYSICSMGR && PHYSICSMGR->isSimulationEnabled();
 }
@@ -179,14 +178,14 @@ ConsoleFunction( physicsSimulationEnabled, bool, 1, 1, "physicsSimulationEnabled
 // Used for slowing down time on the
 // physics simulation, and for pausing/restarting
 // the simulation.
-ConsoleFunction( physicsSetTimeScale, void, 2, 2, "physicsSetTimeScale( F32 scale )" )
+DefineConsoleFunction( physicsSetTimeScale, void, (F32 scale), , "physicsSetTimeScale( F32 scale )")
 {
    if ( PHYSICSMGR )
-      PHYSICSMGR->setTimeScale( argv[1] );
+      PHYSICSMGR->setTimeScale( scale );
 }
 
 // Get the currently set time scale.
-ConsoleFunction( physicsGetTimeScale, F32, 1, 1, "physicsGetTimeScale()" )
+DefineConsoleFunction( physicsGetTimeScale, F32, (), , "physicsGetTimeScale()")
 {
    return PHYSICSMGR && PHYSICSMGR->getTimeScale();
 }
@@ -195,7 +194,7 @@ ConsoleFunction( physicsGetTimeScale, F32, 1, 1, "physicsGetTimeScale()" )
 // physics simulation that they should store
 // their current state for later restoration,
 // such as when the editor is closed.
-ConsoleFunction( physicsStoreState, void, 1, 1, "physicsStoreState()" )
+DefineConsoleFunction( physicsStoreState, void, (), , "physicsStoreState()")
 {
    PhysicsPlugin::getPhysicsResetSignal().trigger( PhysicsResetEvent_Store );
 }
@@ -203,14 +202,14 @@ ConsoleFunction( physicsStoreState, void, 1, 1, "physicsStoreState()" )
 // Used to send a signal to objects in the
 // physics simulation that they should restore
 // their saved state, such as when the editor is opened.
-ConsoleFunction( physicsRestoreState, void, 1, 1, "physicsRestoreState()" )
+DefineConsoleFunction( physicsRestoreState, void, (), , "physicsRestoreState()")
 {
    if ( PHYSICSMGR )
       PHYSICSMGR->reset();
 }
 
-ConsoleFunction( physicsDebugDraw, void, 2, 2, "physicsDebugDraw( bool enable )" )
+DefineConsoleFunction( physicsDebugDraw, void, (bool enable), , "physicsDebugDraw( bool enable )")
 {
    if ( PHYSICSMGR )
-      PHYSICSMGR->enableDebugDraw( (S32)argv[1] );
+      PHYSICSMGR->enableDebugDraw( enable );
 }

+ 4 - 3
Engine/source/T3D/staticShape.cpp

@@ -28,6 +28,7 @@
 #include "console/simBase.h"
 #include "console/console.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "T3D/gameBase/moveManager.h"
 #include "ts/tsShapeInstance.h"
 #include "T3D/staticShape.h"
@@ -317,15 +318,15 @@ void StaticShape::unpackUpdate(NetConnection *connection, BitStream *bstream)
 // This appears to be legacy T2 stuff
 // Marked internal, as this is flagged to be deleted
 // [8/1/2010 mperry]
-ConsoleMethod( StaticShape, setPoweredState, void, 3, 3, "(bool isPowered)"
+DefineConsoleMethod( StaticShape, setPoweredState, void, (bool isPowered), , "(bool isPowered)"
 			  "@internal")
 {
    if(!object->isServerObject())
       return;
-   object->setPowered(dAtob(argv[2]));
+   object->setPowered(isPowered);
 }
 
-ConsoleMethod( StaticShape, getPoweredState, bool, 2, 2, "@internal")
+DefineConsoleMethod( StaticShape, getPoweredState, bool, (), , "@internal")
 {
    if(!object->isServerObject())
       return(false);

+ 17 - 22
Engine/source/app/game.cpp

@@ -33,6 +33,7 @@
 #include "console/simBase.h"
 #include "console/console.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "gui/controls/guiMLTextCtrl.h"
 #ifdef TORQUE_TGB_ONLY
 #include "T2D/oldModel/networking/t2dGameConnection.h"
@@ -57,22 +58,22 @@ bool gEditingMission = false;
 
 ConsoleFunctionGroupBegin( InputManagement, "Functions that let you deal with input from scripts" );
 
-ConsoleFunction( deactivateDirectInput, void, 1, 1, "()"
+DefineConsoleFunction( deactivateDirectInput, void, (), ,
+         "()"
             "@brief Disables DirectInput.\n\n"
             "Also deactivates any connected joysticks.\n\n"
 			"@ingroup Input" )
 {
-   TORQUE_UNUSED(argc); TORQUE_UNUSED(argv);
    if ( Input::isActive() )
       Input::deactivate();
 }
 
-ConsoleFunction( activateDirectInput, void, 1, 1,"()"
+DefineConsoleFunction( activateDirectInput, void, (), ,
+            "()"
             "@brief Activates DirectInput.\n\n"
             "Also activates any connected joysticks."
 			"@ingroup Input")
 {
-   TORQUE_UNUSED(argc); TORQUE_UNUSED(argv);
    if ( !Input::isActive() )
       Input::activate();
 }
@@ -81,11 +82,8 @@ ConsoleFunctionGroupEnd( InputManagement );
 //--------------------------------------------------------------------------
 
 static const U32 MaxPlayerNameLength = 16;
-ConsoleFunction( strToPlayerName, const char*, 2, 2, "strToPlayerName( string )" )
+DefineConsoleFunction( strToPlayerName, const char*, (const char* ptr ), , "strToPlayerName(string);" )
 {
-   TORQUE_UNUSED(argc);
-
-   const char* ptr = argv[1];
 
 	// Strip leading spaces and underscores:
    while ( *ptr == ' ' || *ptr == '_' )
@@ -140,16 +138,16 @@ ConsoleFunction( strToPlayerName, const char*, 2, 2, "strToPlayerName( string )"
 
 ConsoleFunctionGroupBegin( Platform , "General platform functions.");
 
-ConsoleFunction( lockMouse, void, 2, 2, "(bool isLocked)"
+DefineConsoleFunction( lockMouse, void, (bool isLocked ), , "(bool isLocked)" 
             "@brief Lock or unlock the mouse to the window.\n\n"
             "When true, prevents the mouse from leaving the bounds of the game window.\n\n"
             "@ingroup Input")
 {
-   Platform::setWindowLocked(dAtob(argv[1]));
+   Platform::setWindowLocked(isLocked);
 }
 
 
-ConsoleFunction( setNetPort, bool, 2, 3, "(int port, bool bind=true)"
+DefineConsoleFunction( setNetPort, bool, (int port, bool bind), (true), "(int port, bool bind=true)" 
    "@brief Set the network port for the game to use.\n\n"
 
    "@param port The port to use.\n"
@@ -161,37 +159,34 @@ ConsoleFunction( setNetPort, bool, 2, 3, "(int port, bool bind=true)"
    "If you don't have firewall tunneling tech you can set this to false to avoid the prompt.\n\n"
    "@ingroup Networking")
 {
-   bool bind = true;
-   if (argc == 3)
-      bind = dAtob(argv[2]);
-   return Net::openPort(dAtoi(argv[1]), bind);
+   return Net::openPort((S32)port, bind);
 }
 
-ConsoleFunction( closeNetPort, void, 1, 1, "()"
+DefineConsoleFunction( closeNetPort, void, (), , "()" 
    "@brief Closes the current network port\n\n"
    "@ingroup Networking")
 {
    Net::closePort();
 }
 
-ConsoleFunction( saveJournal, void, 2, 2, "(string filename)"
+DefineConsoleFunction( saveJournal, void, (const char * filename), , "(string filename)" 
                 "Save the journal to the specified file.\n\n"
 				"@ingroup Platform")
 {
-   Journal::Record(argv[1]);
+   Journal::Record(filename);
 }
 
-ConsoleFunction( playJournal, void, 2, 3, "(string filename)"
+DefineConsoleFunction( playJournal, void, (const char * filename), , "(string filename)" 
                 "@brief Begin playback of a journal from a specified field.\n\n"
 				"@param filename Name and path of file journal file\n"
 				"@ingroup Platform")
 {
    // CodeReview - BJG 4/24/2007 - The break flag needs to be wired back in.
    // bool jBreak = (argc > 2)? dAtob(argv[2]): false;
-   Journal::Play(argv[1]);
+   Journal::Play(filename);
 }
 
-ConsoleFunction( getSimTime, S32, 1, 1, "()"
+DefineConsoleFunction( getSimTime, S32, (), , "()" 
 				"Return the current sim time in milliseconds.\n\n"
                 "@brief Sim time is time since the game started.\n\n"
 				"@ingroup Platform")
@@ -199,7 +194,7 @@ ConsoleFunction( getSimTime, S32, 1, 1, "()"
    return Sim::getCurrentTime();
 }
 
-ConsoleFunction( getRealTime, S32, 1, 1, "()"
+DefineConsoleFunction( getRealTime, S32, (), , "()" 
 				"@brief Return the current real time in milliseconds.\n\n"
                 "Real time is platform defined; typically time since the computer booted.\n\n"
 				"@ingroup Platform")

+ 50 - 75
Engine/source/app/net/serverQuery.cpp

@@ -410,25 +410,20 @@ void queryLanServers(U32 port, U8 flags, const char* gameType, const char* missi
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction( queryAllServers, void, 12, 12, "queryAllServers(...);" )
+DefineConsoleFunction( queryAllServers
+                     , void, ( U32 lanPort
+                             , U32 flags
+                             , const char * gameType
+                             , const char * missionType
+                             , U32 minPlayers
+                             , U32 maxPlayers
+                             , U32 maxBots
+                             , U32 regionMask
+                             , U32 maxPing
+                             , U32 minCPU
+                             , U32 filterFlags )
+                     , , "queryAllServers(...);" )
 {
-   TORQUE_UNUSED(argc);
-
-   U32 lanPort = dAtoi(argv[1]);
-   U8 flags = dAtoi(argv[2]);
-
-   // It's not a good idea to hold onto args, recursive calls to
-   // console exec will trash them.
-   char* gameType = dStrdup(argv[3]);
-   char* missionType = dStrdup(argv[4]);
-
-   U8 minPlayers = dAtoi(argv[5]);
-   U8 maxPlayers = dAtoi(argv[6]);
-   U8 maxBots = dAtoi(argv[7]);
-   U32 regionMask = dAtoi(argv[8]);
-   U32 maxPing = dAtoi(argv[9]);
-   U16 minCPU = dAtoi(argv[10]);
-   U8 filterFlags = dAtoi(argv[11]);
    U32 buddyList = 0;
 
    clearServerList();
@@ -442,32 +437,27 @@ ConsoleFunction( queryAllServers, void, 12, 12, "queryAllServers(...);" )
    dFree(missionType);
 
 }
-ConsoleFunction( queryLanServers, void, 12, 12, "queryLanServers(...);" )
-{
-   TORQUE_UNUSED(argc);
-
-   U32 lanPort = dAtoi(argv[1]);
-   U8 flags = dAtoi(argv[2]);
 
-   // It's not a good idea to hold onto args, recursive calls to
-   // console exec will trash them.
-   char* gameType = dStrdup(argv[3]);
-   char* missionType = dStrdup(argv[4]);
+DefineConsoleFunction( queryLanServers
+                     , void, ( U32 lanPort
+                             , U32 flags
+                             , const char * gameType
+                             , const char * missionType
+                             , U32 minPlayers
+                             , U32 maxPlayers
+                             , U32 maxBots
+                             , U32 regionMask
+                             , U32 maxPing
+                             , U32 minCPU
+                             , U32 filterFlags )
+                     , , "queryLanServers(...);" )
 
-   U8 minPlayers = dAtoi(argv[5]);
-   U8 maxPlayers = dAtoi(argv[6]);
-   U8 maxBots = dAtoi(argv[7]);
-   U32 regionMask = dAtoi(argv[8]);
-   U32 maxPing = dAtoi(argv[9]);
-   U16 minCPU = dAtoi(argv[10]);
-   U8 filterFlags = dAtoi(argv[11]);
+{
 
    clearServerList();
    queryLanServers(lanPort, flags, gameType, missionType, minPlayers, maxPlayers, maxBots,
 	   regionMask, maxPing, minCPU, filterFlags);
 
-   dFree(gameType);
-   dFree(missionType);
 }
 
 //-----------------------------------------------------------------------------
@@ -550,24 +540,20 @@ void queryMasterServer(U8 flags, const char* gameType, const char* missionType,
       processMasterServerQuery( gPingSession );
 }
 
-ConsoleFunction( queryMasterServer, void, 11, 11, "queryMasterServer(...);" )
+DefineConsoleFunction( queryMasterServer
+                     , void, ( U32 lanPort
+                             , U32 flags
+                             , const char * gameType
+                             , const char * missionType
+                             , U32 minPlayers
+                             , U32 maxPlayers
+                             , U32 maxBots
+                             , U32 regionMask
+                             , U32 maxPing
+                             , U32 minCPU
+                             , U32 filterFlags )
+                     , , "queryMasterServer(...);" )
 {
-   TORQUE_UNUSED(argc);
-
-   U8 flags = dAtoi(argv[1]);
-
-   // It's not a good idea to hold onto args, recursive calls to
-   // console exec will trash them.
-   char* gameType = dStrdup(argv[2]);
-   char* missionType = dStrdup(argv[3]);
-
-   U8 minPlayers = dAtoi(argv[4]);
-   U8 maxPlayers = dAtoi(argv[5]);
-   U8 maxBots = dAtoi(argv[6]);
-   U32 regionMask = dAtoi(argv[7]);
-   U32 maxPing = dAtoi(argv[8]);
-   U16 minCPU = dAtoi(argv[9]);
-   U8 filterFlags = dAtoi(argv[10]);
    U32 buddyList = 0;
 
    clearServerList();
@@ -580,15 +566,12 @@ ConsoleFunction( queryMasterServer, void, 11, 11, "queryMasterServer(...);" )
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction( querySingleServer, void, 3, 3, "querySingleServer(address, flags);" )
+DefineConsoleFunction( querySingleServer
+                     , void, ( const char* addrText, U8 flags )
+                     ,(0) , "querySingleServer(...);" )
 {
-   TORQUE_UNUSED(argc);
 
    NetAddress addr;
-   char* addrText;
-
-   addrText = dStrdup(argv[1]);
-   U8 flags = dAtoi(argv[2]);
 
 
    Net::stringToAddress( addrText, &addr );
@@ -672,9 +655,8 @@ void cancelServerQuery()
    }
 }
 
-ConsoleFunction( cancelServerQuery, void, 1, 1, "cancelServerQuery()" )
+DefineConsoleFunction( cancelServerQuery, void, (), , "cancelServerQuery(...);" )
 {
-   TORQUE_UNUSED(argc); TORQUE_UNUSED(argv);
    cancelServerQuery();
 }
 
@@ -701,43 +683,36 @@ void stopServerQuery()
    }
 }
 
-ConsoleFunction( stopServerQuery, void, 1, 1, "stopServerQuery()" )
+DefineConsoleFunction( stopServerQuery, void, (), , "stopServerQuery(...);" )
 {
-   TORQUE_UNUSED(argc); TORQUE_UNUSED(argv);
    stopServerQuery();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction(startHeartbeat, void, 1, 1, "startHeartbeat()")
+DefineConsoleFunction( startHeartbeat, void, (), , "startHeartbeat(...);" )
 {
-   TORQUE_UNUSED(argc); TORQUE_UNUSED(argv);
-
    if (validateAuthenticatedServer()) {
       gHeartbeatSeq++;
       processHeartbeat(gHeartbeatSeq);  // thump-thump...
    }
 }
 
-ConsoleFunction(stopHeartbeat, void, 1, 1, "stopHeartbeat();")
+DefineConsoleFunction( stopHeartbeat, void, (), , "stopHeartbeat(...);" )
 {
-   TORQUE_UNUSED(argc); TORQUE_UNUSED(argv);
    gHeartbeatSeq++;
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction( getServerCount, int, 1, 1, "getServerCount();" )
+DefineConsoleFunction( getServerCount, int, (), , "getServerCount(...);" )
 {
-   TORQUE_UNUSED(argv); TORQUE_UNUSED(argc);
    return gServerList.size();
 }
 
-ConsoleFunction( setServerInfo, bool, 2, 2, "setServerInfo(index);" )
+DefineConsoleFunction( setServerInfo, bool, (U32 index), , "setServerInfo(...);" )
 {
-   TORQUE_UNUSED(argc);
-   U32 index = dAtoi(argv[1]);
-   if (index >= 0 && index < gServerList.size()) {
+   if (index < gServerList.size()) {
       ServerInfo& info = gServerList[index];
 
       char addrString[256];

+ 10 - 9
Engine/source/app/version.cpp

@@ -23,6 +23,7 @@
 #include "platform/platform.h"
 #include "app/version.h"
 #include "console/console.h"
+#include "console/engineAPI.h"
 
 static const U32 csgVersionNumber = TORQUE_GAME_ENGINE;
 static const U32 appVersionNumber = TORQUE_APP_VERSION;
@@ -91,44 +92,44 @@ const char* getCompileTimeString()
 
 ConsoleFunctionGroupBegin( CompileInformation, "Functions to get version information about the current executable." );
 
-ConsoleFunction( getVersionNumber, S32, 1, 1, "Get the version of the engine build, as a string.\n\n"
+DefineConsoleFunction( getVersionNumber, S32, (), , "Get the version of the engine build, as a string.\n\n" 
 				"@ingroup Debugging")
 {
    return getVersionNumber();
 }
 
-ConsoleFunction( getAppVersionNumber, S32, 1, 1, "Get the version of the application build, as a string.\n\n"
+DefineConsoleFunction( getAppVersionNumber, S32, (), , "Get the version of the application build, as a string.\n\n" 
             "@ingroup Debugging")
 {
    return getAppVersionNumber();
 }
 
 
-ConsoleFunction( getVersionString, const char*, 1, 1, "Get the version of the engine build, as a human readable string.\n\n"
+DefineConsoleFunction( getVersionString, const char*, (), , "Get the version of the engine build, as a human readable string.\n\n" 
 				"@ingroup Debugging")
 {
    return getVersionString();
 }
 
-ConsoleFunction( getAppVersionString, const char*, 1, 1, "Get the version of the aplication, as a human readable string.\n\n"
+DefineConsoleFunction( getAppVersionString, const char*, (), , "Get the version of the aplication build, as a human readable string.\n\n" 
             "@ingroup Debugging")
 {
    return getAppVersionString();
 }
 
-ConsoleFunction( getEngineName, const char*, 1, 1, "Get the name of the engine product that this is running from, as a string.\n\n"
+DefineConsoleFunction( getEngineName, const char*, (), , "Get the name of the engine product that this is running from, as a string.\n\n" 
 				"@ingroup Debugging")
 {
    return getEngineProductString();
 }
 
-ConsoleFunction( getCompileTimeString, const char*, 1, 1, "Get the time of compilation.\n\n"
+DefineConsoleFunction( getCompileTimeString, const char*, (), , "Get the time of compilation.\n\n" 
 				"@ingroup Debugging")
 {
    return getCompileTimeString();
 }
 
-ConsoleFunction( getBuildString, const char*, 1, 1, "Get the type of build, \"Debug\" or \"Release\".\n\n"
+DefineConsoleFunction( getBuildString, const char*, (), , "Get the type of build, \"Debug\" or \"Release\".\n\n"
 				"@ingroup Debugging")
 {
 #ifdef TORQUE_DEBUG
@@ -140,7 +141,7 @@ ConsoleFunction( getBuildString, const char*, 1, 1, "Get the type of build, \"De
 
 ConsoleFunctionGroupEnd( CompileInformation );
 
-ConsoleFunction(isDemo, bool, 1, 1, "")
+DefineConsoleFunction( isDemo, bool, (), , "")
 {
 #ifdef TORQUE_DEMO
    return true;
@@ -149,7 +150,7 @@ ConsoleFunction(isDemo, bool, 1, 1, "")
 #endif
 }
 
-ConsoleFunction(isWebDemo, bool, 1, 1, "")
+DefineConsoleFunction( isWebDemo, bool, (), , "")
 {
 #ifdef TORQUE_DEMO
    return Platform::getWebDeployment();

+ 6 - 9
Engine/source/cinterface/cinterface.cpp

@@ -23,6 +23,7 @@
 #include "platform/platform.h"
 #include "console/compiler.h"
 #include "console/consoleInternal.h"
+#include "console/engineAPI.h"
 #include "core/util/tDictionary.h"
 #include "core/strings/stringFunctions.h"
 #include "app/mainLoop.h"
@@ -458,20 +459,16 @@ extern "C" {
 // By default, it is marked as secure by the web plugins and then can be called from
 // Javascript on the web page to ensure that function calls across the language
 // boundry are working with arguments and return values
-ConsoleFunction(testJavaScriptBridge, const char *, 4, 4, "testBridge(arg1, arg2, arg3)")
+DefineConsoleFunction( testJavaScriptBridge, const char *, (const char* arg1, const char* arg2, const char* arg3), , "testBridge(arg1, arg2, arg3)")
 {
 	S32 failed = 0;
-	if(argc != 4)
-		failed = 1;
-	else
-	{
-		if (dStrcmp(argv[1],"one"))
+		if (dStrcmp(arg1,"one"))
 			failed = 2;
-		if (dStrcmp(argv[2],"two"))
+		if (dStrcmp(arg2,"two"))
 			failed = 2;
-		if (dStrcmp(argv[3],"three"))
+		if (dStrcmp(arg3,"three"))
 			failed = 2;
-	}
+	
 
 	//attempt to call from TorqueScript -> JavaScript
 	const char* jret = Con::evaluate("JS::bridgeCallback(\"one\",\"two\",\"three\");");

+ 9 - 9
Engine/source/component/simComponent.cpp

@@ -25,6 +25,7 @@
 #include "console/consoleTypes.h"
 #include "component/simComponent.h"
 #include "core/stream/stream.h"
+#include "console/engineAPI.h"
 
 SimComponent::SimComponent() : mOwner( NULL )
 {
@@ -404,17 +405,16 @@ ConsoleMethod( SimComponent, removeComponents, bool, 3, 64, "%obj.removeComponen
    return true;
 }
 
-ConsoleMethod( SimComponent, getComponentCount, S32, 2, 2, "() Get the current component count\n"
+DefineConsoleMethod( SimComponent, getComponentCount, S32, (), , "() Get the current component count\n"
 			  "@return The number of components in the list as an integer")
 {
    return object->getComponentCount();
 }
 
-ConsoleMethod( SimComponent, getComponent, S32, 3, 3, "(idx) Get the component corresponding to the given index.\n"
+DefineConsoleMethod( SimComponent, getComponent, S32, (S32 idx), , "(idx) Get the component corresponding to the given index.\n"
 			  "@param idx An integer index value corresponding to the desired component.\n"
 			  "@return The id of the component at the given index as an integer")
 {
-   S32 idx = dAtoi(argv[2]);
    if(idx < 0 || idx >= object->getComponentCount())
    {
       Con::errorf("SimComponent::getComponent - Invalid index %d", idx);
@@ -425,27 +425,27 @@ ConsoleMethod( SimComponent, getComponent, S32, 3, 3, "(idx) Get the component c
    return c ? c->getId() : 0;
 }
 
-ConsoleMethod(SimComponent, setEnabled, void, 3, 3, "(enabled) Sets or unsets the enabled flag\n"
+DefineConsoleMethod(SimComponent, setEnabled, void, (bool enabled), , "(enabled) Sets or unsets the enabled flag\n"
 			  "@param enabled Boolean value\n"
 			  "@return No return value")
 {
-   object->setEnabled(dAtob(argv[2]));
+   object->setEnabled(enabled);
 }
 
-ConsoleMethod(SimComponent, isEnabled, bool, 2, 2, "() Check whether SimComponent is currently enabled\n"
+DefineConsoleMethod(SimComponent, isEnabled, bool, (), , "() Check whether SimComponent is currently enabled\n"
 			  "@return true if enabled and false if not")
 {
    return object->isEnabled();
 }
 
-ConsoleMethod(SimComponent, setIsTemplate, void, 3, 3, "(template) Sets or unsets the template flag\n"
+DefineConsoleMethod(SimComponent, setIsTemplate, void, (bool templateFlag), , "(template) Sets or unsets the template flag\n"
 			  "@param template Boolean value\n"
 			  "@return No return value")
 {
-   object->setIsTemplate(dAtob(argv[2]));
+   object->setIsTemplate(templateFlag);
 }
 
-ConsoleMethod(SimComponent, getIsTemplate, bool, 2, 2, "() Check whether SimComponent is currently a template\n"
+DefineConsoleMethod(SimComponent, getIsTemplate, bool, (), , "() Check whether SimComponent is currently a template\n"
 			  "@return true if is a template and false if not")
 {
    return object->getIsTemplate();

+ 5 - 4
Engine/source/console/SimXMLDocument.cpp

@@ -571,21 +571,22 @@ DefineEngineMethod( SimXMLDocument, attribute, const char*, ( const char* attrib
 }
 
 // These two methods don't make a lot of sense the way TS works.  Leaving them in for backwards-compatibility.
-ConsoleMethod( SimXMLDocument, attributeF32, F32, 3, 3, "(string attributeName)"
+DefineConsoleMethod( SimXMLDocument, attributeF32, F32, (const char * attributeName), , "(string attributeName)"
    "@brief Get float attribute from the current Element on the stack.\n\n"
    "@param attributeName Name of attribute to retrieve.\n"
    "@return The value of the given attribute in the form of a float.\n"
    "@deprecated Use attribute().")
 {
-   return dAtof( object->attribute( argv[2] ) );
+   return dAtof( object->attribute( attributeName ) );
 }
-ConsoleMethod(SimXMLDocument, attributeS32, S32, 3, 3, "(string attributeName)"
+
+DefineConsoleMethod(SimXMLDocument, attributeS32, S32, (const char * attributeName), , "(string attributeName)"
    "@brief Get int attribute from the current Element on the stack.\n\n"
    "@param attributeName Name of attribute to retrieve.\n"
    "@return The value of the given attribute in the form of an integer.\n"
    "@deprecated Use attribute().")
 {
-   return dAtoi( object->attribute( argv[2] ) );
+   return dAtoi( object->attribute( attributeName ) );
 }
 
 // -----------------------------------------------------------------------------

+ 4 - 4
Engine/source/console/console.cpp

@@ -275,7 +275,7 @@ bool useTimestamp = false;
 
 ConsoleFunctionGroupBegin( Clipboard, "Miscellaneous functions to control the clipboard and clear the console.");
 
-ConsoleFunction( cls, void, 1, 1, "()"
+DefineConsoleFunction( cls, void, (), , "()"
 				"@brief Clears the console output.\n\n"
 				"@ingroup Console")
 {
@@ -285,18 +285,18 @@ ConsoleFunction( cls, void, 1, 1, "()"
    consoleLog.setSize(0);
 };
 
-ConsoleFunction( getClipboard, const char*, 1, 1, "()"
+DefineConsoleFunction( getClipboard, const char*, (), , "()"
 				"@brief Get text from the clipboard.\n\n"
 				"@internal")
 {
 	return Platform::getClipboard();
 };
 
-ConsoleFunction( setClipboard, bool, 2, 2, "(string text)"
+DefineConsoleFunction( setClipboard, bool, (const char* text), , "(string text)"
                "@brief Set the system clipboard.\n\n"
 			   "@internal")
 {
-	return Platform::setClipboard(argv[1]);
+	return Platform::setClipboard(text);
 };
 
 ConsoleFunctionGroupEnd( Clipboard );

+ 62 - 64
Engine/source/console/consoleFunctions.cpp

@@ -1179,7 +1179,7 @@ static bool isInSet(char c, const char *set)
    return false;
 }
 
-ConsoleFunction( nextToken, const char *, 4, 4, "( string str, string token, string delimiters ) "
+DefineConsoleFunction( nextToken, const char*, ( const char* str1, const char* token, const char* delim), , "( string str, string token, string delimiters ) "
    "Tokenize a string using a set of delimiting characters.\n"
    "This function first skips all leading charaters in @a str that are contained in @a delimiters. "
    "From that position, it then scans for the next character in @a str that is contained in @a delimiters and stores all characters "
@@ -1207,12 +1207,7 @@ ConsoleFunction( nextToken, const char *, 4, 4, "( string str, string token, str
    "@endtsexample\n\n"
    "@ingroup Strings" )
 {
-   char buffer[4096];
-   dStrncpy(buffer, argv[1], 4096);
-   char *str = buffer;
-   const char *token = argv[2];
-   const char *delim = argv[3];
-
+	char *str = (char *)str1;
    if( str )
    {
       // skip over any characters that are a member of delim
@@ -1242,9 +1237,7 @@ ConsoleFunction( nextToken, const char *, 4, 4, "( string str, string token, str
          str++;
    }
 
-   char *ret = Con::getReturnBuffer(dStrlen(str)+1);
-   dStrncpy(ret, str, dStrlen(str)+1);
-   return ret;
+   return str;
 }
 
 //=============================================================================
@@ -1289,7 +1282,7 @@ DefineEngineFunction( detag, const char*, ( const char* str ),,
       return str;
 }
 
-ConsoleFunction(getTag, const char *, 2, 2, "(string textTagString)"
+DefineConsoleFunction( getTag, const char*, ( const char* textTagString ), , "( string textTagString ) "
    "@brief Extracts the tag from a tagged string\n\n"
 
    "Should only be used within the context of a function that receives a tagged "
@@ -1303,26 +1296,24 @@ ConsoleFunction(getTag, const char *, 2, 2, "(string textTagString)"
    "@see detag()\n"
    "@ingroup Networking")
 {
-   TORQUE_UNUSED(argc);
-   if(argv[1][0] == StringTagPrefixByte)
+   if(textTagString[0] == StringTagPrefixByte)
    {
-      const char *arg  = argv[1];
-      const char * space = dStrchr(argv[1], ' ');
+      const char * space = dStrchr(textTagString, ' ');
 
-      U32 len;
+      U64 len;
       if(space)
-         len = space - arg;
+         len = space - textTagString;
       else
-         len = dStrlen(arg) + 1;
+         len = dStrlen(textTagString) + 1;
 
       char * ret = Con::getReturnBuffer(len);
-      dStrncpy(ret, arg + 1, len - 1);
+      dStrncpy(ret, textTagString + 1, len - 1);
       ret[len - 1] = 0;
 
       return(ret);
    }
    else
-      return(argv[1]);
+      return(textTagString);
 }
 
 
@@ -1512,13 +1503,12 @@ DefineConsoleFunction( quit, void, ( ),,
 
 //-----------------------------------------------------------------------------
 
-#ifdef TORQUE_DEMO_PURCHASE
-ConsoleFunction( realQuit, void, 1, 1, "" )
+
+DefineConsoleFunction( realQuit, void, (), , "")
 {
-   TORQUE_UNUSED(argc); TORQUE_UNUSED(argv);
    Platform::postQuitMessage(0);
 }
-#endif
+
 
 //-----------------------------------------------------------------------------
 
@@ -2185,87 +2175,86 @@ DefineEngineFunction( exec, bool, ( const char* fileName, bool noCalls, bool jou
    return ret;
 }
 
-ConsoleFunction(eval, const char *, 2, 2, "eval(consoleString)")
+DefineConsoleFunction( eval, const char*, ( const char* consoleString ), , "eval(consoleString)" )
 {
-   TORQUE_UNUSED(argc);
-   return Con::evaluate(argv[1], false, NULL);
+   return Con::evaluate(consoleString, false, NULL);
 }
 
-ConsoleFunction(getVariable, const char *, 2, 2, "(string varName)\n"
+DefineConsoleFunction( getVariable, const char*, ( const char* varName ), , "(string varName)\n" 
    "@brief Returns the value of the named variable or an empty string if not found.\n\n"
    "@varName Name of the variable to search for\n"
    "@return Value contained by varName, \"\" if the variable does not exist\n"
    "@ingroup Scripting")
 {
-   return Con::getVariable(argv[1]);
+   return Con::getVariable(varName);
 }
 
-ConsoleFunction(setVariable, void, 3, 3, "(string varName, string value)\n"
+DefineConsoleFunction( setVariable, void, ( const char* varName, const char* value ), , "(string varName, string value)\n" 
    "@brief Sets the value of the named variable.\n\n"
    "@param varName Name of the variable to locate\n"
    "@param value New value of the variable\n"
    "@return True if variable was successfully found and set\n"
    "@ingroup Scripting")
 {
-   return Con::setVariable(argv[1], argv[2]);
+   return Con::setVariable(varName, value);
 }
 
-ConsoleFunction(isFunction, bool, 2, 2, "(string funcName)"
+DefineConsoleFunction( isFunction, bool, ( const char* funcName ), , "(string funcName)" 
 	"@brief Determines if a function exists or not\n\n"
 	"@param funcName String containing name of the function\n"
 	"@return True if the function exists, false if not\n"
 	"@ingroup Scripting")
 {
-   return Con::isFunction(argv[1]);
+   return Con::isFunction(funcName);
 }
 
-ConsoleFunction(getFunctionPackage, const char*, 2, 2, "(string funcName)"
+DefineConsoleFunction( getFunctionPackage, const char*, ( const char* funcName ), , "(string funcName)" 
 	"@brief Provides the name of the package the function belongs to\n\n"
 	"@param funcName String containing name of the function\n"
 	"@return The name of the function's package\n"
 	"@ingroup Packages")
 {
-   Namespace::Entry* nse = Namespace::global()->lookup( StringTable->insert( argv[1] ) );
+   Namespace::Entry* nse = Namespace::global()->lookup( StringTable->insert( funcName ) );
    if( !nse )
       return "";
 
    return nse->mPackage;
 }
 
-ConsoleFunction(isMethod, bool, 3, 3, "(string namespace, string method)"
+DefineConsoleFunction( isMethod, bool, ( const char* nameSpace, const char* method ), , "(string namespace, string method)" 
 	"@brief Determines if a class/namespace method exists\n\n"
 	"@param namespace Class or namespace, such as Player\n"
 	"@param method Name of the function to search for\n"
 	"@return True if the method exists, false if not\n"
 	"@ingroup Scripting\n")
 {
-   Namespace* ns = Namespace::find( StringTable->insert( argv[1] ) );
-   Namespace::Entry* nse = ns->lookup( StringTable->insert( argv[2] ) );
+   Namespace* ns = Namespace::find( StringTable->insert( nameSpace ) );
+   Namespace::Entry* nse = ns->lookup( StringTable->insert( method ) );
    if( !nse )
       return false;
 
    return true;
 }
 
-ConsoleFunction(getMethodPackage, const char*, 3, 3, "(string namespace, string method)"
+DefineConsoleFunction( getMethodPackage, const char*, ( const char* nameSpace, const char* method ), , "(string namespace, string method)" 
 	"@brief Provides the name of the package the method belongs to\n\n"
 	"@param namespace Class or namespace, such as Player\n"
 	"@param method Name of the funciton to search for\n"
 	"@return The name of the method's package\n"
 	"@ingroup Packages")
 {
-   Namespace* ns = Namespace::find( StringTable->insert( argv[1] ) );
+   Namespace* ns = Namespace::find( StringTable->insert( nameSpace ) );
    if( !ns )
       return "";
 
-   Namespace::Entry* nse = ns->lookup( StringTable->insert( argv[2] ) );
+   Namespace::Entry* nse = ns->lookup( StringTable->insert( method ) );
    if( !nse )
       return "";
 
    return nse->mPackage;
 }
 
-ConsoleFunction(isDefined, bool, 2, 3, "(string varName)"
+DefineConsoleFunction( isDefined, bool, ( const char* varName, const char* varValue ), ("") , "(string varName)" 
 	"@brief Determines if a variable exists and contains a value\n"
 	"@param varName Name of the variable to search for\n"
 	"@return True if the variable was defined in script, false if not\n"
@@ -2274,13 +2263,13 @@ ConsoleFunction(isDefined, bool, 2, 3, "(string varName)"
    "@endtsexample\n\n"
 	"@ingroup Scripting")
 {
-   if(dStrlen(argv[1]) == 0)
+   if(dStrlen(varName) == 0)
    {
       Con::errorf("isDefined() - did you forget to put quotes around the variable name?");
       return false;
    }
 
-   StringTableEntry name = StringTable->insert(argv[1]);
+   StringTableEntry name = StringTable->insert(varName);
 
    // Deal with <var>.<value>
    if (dStrchr(name, '.'))
@@ -2331,7 +2320,7 @@ ConsoleFunction(isDefined, bool, 2, 3, "(string varName)"
 
          if (!value)
          {
-            obj->setDataField(valName, 0, argv[2]);
+            obj->setDataField(valName, 0, varValue);
 
             return false;
          }
@@ -2350,8 +2339,11 @@ ConsoleFunction(isDefined, bool, 2, 3, "(string varName)"
             {
                if (dStrlen(value) > 0)
                   return true;
-               else if (argc > 2)
-                  obj->setDataField(valName, 0, argv[2]);
+               else if (dStrcmp(varValue,"")!=0)
+               { 
+                  obj->setDataField(valName, 0, varValue); 
+               }
+                  
             }
          }
       }
@@ -2365,8 +2357,10 @@ ConsoleFunction(isDefined, bool, 2, 3, "(string varName)"
 
          if (ent)
             return true;
-         else if (argc > 2)
-            gEvalState.getCurrentFrame().setVariable(name, argv[2]);
+         else if (dStrcmp (varValue,"")!=0)
+         {
+            gEvalState.getCurrentFrame().setVariable(name, varValue);
+         }
       }
       else
          Con::errorf("%s() - no local variable frame.", __FUNCTION__);
@@ -2378,16 +2372,20 @@ ConsoleFunction(isDefined, bool, 2, 3, "(string varName)"
 
       if (ent)
          return true;
-      else if (argc > 2)
-         gEvalState.globalVars.setVariable(name, argv[2]);
+      else if (dStrcmp( varValue,"") != 0)
+      {
+         gEvalState.globalVars.setVariable(name, varValue);
+      }
    }
    else
    {
       // Is it an object?
-      if (dStrcmp(argv[1], "0") && dStrcmp(argv[1], "") && (Sim::findObject(argv[1]) != NULL))
+      if (dStrcmp(varName, "0") && dStrcmp(varName, "") && (Sim::findObject(varName) != NULL))
          return true;
-      else if (argc > 2)
-         Con::errorf("%s() - can't assign a value to a variable of the form \"%s\"", __FUNCTION__, (const char*)argv[1]);
+      else if (varValue != "")
+      {
+         Con::errorf("%s() - can't assign a value to a variable of the form \"%s\"", __FUNCTION__, varValue);
+      }
    }
 
    return false;
@@ -2395,39 +2393,39 @@ ConsoleFunction(isDefined, bool, 2, 3, "(string varName)"
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction( isCurrentScriptToolScript, bool, 1, 1,
-   "() Returns true if the calling script is a tools script.\n"
+DefineConsoleFunction( isCurrentScriptToolScript, bool, (), , "()" 
+   "Returns true if the calling script is a tools script.\n"
    "@hide")
 {
    return Con::isCurrentScriptToolScript();
 }
 
-ConsoleFunction(getModNameFromPath, const char *, 2, 2, "(string path)"
+DefineConsoleFunction( getModNameFromPath, const char *, ( const char* path ), , "(string path)" 
 				"@brief Attempts to extract a mod directory from path. Returns empty string on failure.\n\n"
 				"@param File path of mod folder\n"
 				"@note This is no longer relevant in Torque 3D (which does not use mod folders), should be deprecated\n"
 				"@internal")
 {
-   StringTableEntry modPath = Con::getModNameFromPath(argv[1]);
+   StringTableEntry modPath = Con::getModNameFromPath(path);
    return modPath ? modPath : "";
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction( pushInstantGroup, void, 1, 2, "([group])"
+DefineConsoleFunction( pushInstantGroup, void, ( String group ),("") , "([group])" 
 				"@brief Pushes the current $instantGroup on a stack "
 				"and sets it to the given value (or clears it).\n\n"
 				"@note Currently only used for editors\n"
 				"@ingroup Editors\n"
 				"@internal")
 {
-   if( argc > 1 )
-      Con::pushInstantGroup( (const char*)argv[ 1 ] );
+   if( group.size() > 0 )
+      Con::pushInstantGroup( group );
    else
       Con::pushInstantGroup();
 }
 
-ConsoleFunction( popInstantGroup, void, 1, 1, "()"
+DefineConsoleFunction( popInstantGroup, void, (), , "()" 
 				"@brief Pop and restore the last setting of $instantGroup off the stack.\n\n"
 				"@note Currently only used for editors\n\n"
 				"@ingroup Editors\n"
@@ -2438,11 +2436,11 @@ ConsoleFunction( popInstantGroup, void, 1, 1, "()"
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction(getPrefsPath, const char *, 1, 2, "([relativeFileName])"
+DefineConsoleFunction( getPrefsPath, const char *, ( const char* relativeFileName ), , "([relativeFileName])" 
 				"@note Appears to be useless in Torque 3D, should be deprecated\n"
 				"@internal")
 {
-   const char *filename = Platform::getPrefsPath(argc > 1 ? (const char*)argv[1] : NULL);
+   const char *filename = Platform::getPrefsPath(relativeFileName);
    if(filename == NULL || *filename == 0)
       return "";
      

+ 2 - 2
Engine/source/console/consoleLogger.cpp

@@ -225,7 +225,7 @@ void ConsoleLogger::log( const char *consoleLine )
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( ConsoleLogger, attach, bool, 2, 2, "() Attaches the logger to the console and begins writing to file"
+DefineConsoleMethod( ConsoleLogger, attach, bool, (), , "() Attaches the logger to the console and begins writing to file"
 			  "@tsexample\n"
 			  "// Create the logger\n"
 			  "// Will automatically start writing to testLogging.txt with normal priority\n"
@@ -247,7 +247,7 @@ ConsoleMethod( ConsoleLogger, attach, bool, 2, 2, "() Attaches the logger to the
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( ConsoleLogger, detach, bool, 2, 2, "() Detaches the logger from the console and stops writing to file"
+DefineConsoleMethod( ConsoleLogger, detach, bool, (), , "() Detaches the logger from the console and stops writing to file"
 			  "@tsexample\n"
 			  "// Create the logger\n"
 			  "// Will automatically start writing to testLogging.txt with normal priority\n"

+ 2 - 1
Engine/source/console/consoleXMLExport.cpp

@@ -21,6 +21,7 @@
 //-----------------------------------------------------------------------------
 
 #include "console/consoleInternal.h"
+#include "console/engineAPI.h"
 #include "console/consoleObject.h"
 #include "console/SimXMLDocument.h"
 
@@ -313,7 +314,7 @@ namespace Con {
 }; // namespace Con
 
 
-ConsoleFunction(consoleExportXML, const char*, 1, 1, "Exports console definition XML representation")
+DefineConsoleFunction( consoleExportXML, const char*, (), ,"Exports console definition XML representation" )
 {
    Con::XMLExport xmlExport;
    String xml;

+ 13 - 0
Engine/source/console/engineAPI.h

@@ -245,6 +245,19 @@ struct EngineUnmarshallData< F32 >
    }
 };
 template<>
+struct EngineUnmarshallData< U8 >
+{
+   U8 operator()( ConsoleValueRef &ref ) const
+   {
+      return (U8)((S32)ref);
+   }
+
+   U8 operator()( const char* str ) const
+   {
+      return dAtoui( str );
+   }
+};
+template<>
 struct EngineUnmarshallData< const char* >
 {
    const char* operator()( const char* str ) const

+ 10 - 11
Engine/source/console/fieldBrushObject.cpp

@@ -22,6 +22,7 @@
 
 #include "core/strings/stringUnit.h"
 #include "console/fieldBrushObject.h"
+#include "console/engineAPI.h"
 
 // Prefix added to dynamic-fields when they're used to store any copied static-fields when peristing.
 #define INTERNAL_FIELD_PREFIX       "_fieldBrush_"
@@ -122,12 +123,12 @@ static char* suppressSpaces(const char* in_pname)
 //-----------------------------------------------------------------------------
 // Query Groups.
 //-----------------------------------------------------------------------------
-ConsoleMethod(FieldBrushObject, queryGroups, const char*, 3, 3, "(simObject) Query available static-field groups for selected object./\n"
+DefineConsoleMethod(FieldBrushObject, queryGroups, const char*, (const char* simObjName), , "(simObject) Query available static-field groups for selected object./\n"
                                                                 "@param simObject Object to query static-field groups on.\n"
 			                                                    "@return Space-seperated static-field group list.")
 {
     // Fetch selected object.
-    SimObject* pSimObject = dynamic_cast<SimObject*>( Sim::findObject( argv[2] ) );
+    SimObject* pSimObject = dynamic_cast<SimObject*>( Sim::findObject( simObjName ) );
 
     // Valid object?
     if ( pSimObject == NULL )
@@ -190,13 +191,13 @@ ConsoleMethod(FieldBrushObject, queryGroups, const char*, 3, 3, "(simObject) Que
 //-----------------------------------------------------------------------------
 // Query Fields.
 //-----------------------------------------------------------------------------
-ConsoleMethod(FieldBrushObject, queryFields, const char*, 3, 4, "(simObject, [groupList]) Query available static-fields for selected object./\n"
+DefineConsoleMethod(FieldBrushObject, queryFields, const char*, (const char* simObjName, const char* groupList), (""), "(simObject, [groupList]) Query available static-fields for selected object./\n"
                                                                 "@param simObject Object to query static-fields on.\n"
                                                                 "@param groupList groups to filter static-fields against.\n"
 			                                                    "@return Space-seperated static-field list.")
 {
     // Fetch selected object.
-    SimObject* pSimObject = dynamic_cast<SimObject*>( Sim::findObject( argv[2] ) );
+    SimObject* pSimObject = dynamic_cast<SimObject*>( Sim::findObject( simObjName ) );
 
     // Valid object?
     if ( pSimObject == NULL )
@@ -215,7 +216,7 @@ ConsoleMethod(FieldBrushObject, queryFields, const char*, 3, 4, "(simObject, [gr
     const AbstractClassRep::FieldList& staticFields = pSimObject->getFieldList();
 
     // Did we specify a groups list?
-    if ( argc < 4 )
+    if (dStrcmp (groupList,"")==0 )
     {
         // No, so return all fields...
 
@@ -263,7 +264,6 @@ ConsoleMethod(FieldBrushObject, queryFields, const char*, 3, 4, "(simObject, [gr
     // Group List.
     Vector<StringTableEntry> groups;
     // Yes, so fetch group list.
-    const char* groupList =  argv[3];
     // Yes, so calculate group Count.
     const U32 groupCount = StringUnit::getUnitCount( groupList, " \t\n" );
 
@@ -366,13 +366,13 @@ ConsoleMethod(FieldBrushObject, queryFields, const char*, 3, 4, "(simObject, [gr
 //-----------------------------------------------------------------------------
 // Copy Fields.
 //-----------------------------------------------------------------------------
-ConsoleMethod(FieldBrushObject, copyFields, void, 3, 4, "(simObject, [fieldList]) Copy selected static-fields for selected object./\n"
+DefineConsoleMethod(FieldBrushObject, copyFields, void, (const char* simObjName, const char* pFieldList), (""), "(simObject, [fieldList]) Copy selected static-fields for selected object./\n"
                                                         "@param simObject Object to copy static-fields from.\n"
                                                         "@param fieldList fields to filter static-fields against.\n"
 			                                            "@return No return value.")
 {
     // Fetch selected object.
-    SimObject* pSimObject = dynamic_cast<SimObject*>( Sim::findObject( argv[2] ) );
+    SimObject* pSimObject = dynamic_cast<SimObject*>( Sim::findObject( simObjName ) );
 
     // Valid object?
     if ( pSimObject == NULL )
@@ -383,7 +383,6 @@ ConsoleMethod(FieldBrushObject, copyFields, void, 3, 4, "(simObject, [fieldList]
     }
 
     // Fetch field list.
-    const char* pFieldList = (argc > 3 ) ? (const char*)argv[3] : NULL;
     
     // Copy Fields.
     object->copyFields( pSimObject, pFieldList );
@@ -501,12 +500,12 @@ void FieldBrushObject::copyFields( SimObject* pSimObject, const char* fieldList
 //-----------------------------------------------------------------------------
 // Paste Fields.
 //-----------------------------------------------------------------------------
-ConsoleMethod(FieldBrushObject, pasteFields, void, 3, 3, "(simObject) Paste copied static-fields to selected object./\n"
+DefineConsoleMethod(FieldBrushObject, pasteFields, void, (const char* simObjName), , "(simObject) Paste copied static-fields to selected object./\n"
                                                         "@param simObject Object to paste static-fields to.\n"
 			                                            "@return No return value.")
 {
     // Fetch selected object.
-    SimObject* pSimObject = dynamic_cast<SimObject*>( Sim::findObject( argv[2] ) );
+    SimObject* pSimObject = dynamic_cast<SimObject*>( Sim::findObject( simObjName ) );
 
     // Valid object?
     if ( pSimObject == NULL )

+ 41 - 41
Engine/source/console/persistenceManager.cpp

@@ -23,6 +23,7 @@
 #include "persistenceManager.h"
 #include "console/simSet.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "core/stream/fileStream.h"
 #include "gui/core/guiTypes.h"
 #include "materials/customMaterialDefinition.h"
@@ -2189,22 +2190,22 @@ void PersistenceManager::deleteObjectsFromFile(const char* fileName)
    clearAll();
 }
 
-ConsoleMethod( PersistenceManager, deleteObjectsFromFile, void, 3, 3, "( fileName )"
+DefineConsoleMethod( PersistenceManager, deleteObjectsFromFile, void, ( const char * fileName ), , "( fileName )"
               "Delete all of the objects that are created from the given file." )
 {
    // Delete Objects.
-   object->deleteObjectsFromFile( argv[2] );
+   object->deleteObjectsFromFile( fileName );
 }
 
-ConsoleMethod( PersistenceManager, setDirty, void, 3, 4, "(SimObject object, [filename])"
+DefineConsoleMethod( PersistenceManager, setDirty, void,  ( const char * objName, const char * fileName ), (""), "(SimObject object, [filename])"
               "Mark an existing SimObject as dirty (will be written out when saveDirty() is called).")
 {
    SimObject *dirtyObject = NULL;
-   if (argv[2][0])
+   if (objName != "")
    {
-      if (!Sim::findObject(argv[2], dirtyObject))
+      if (!Sim::findObject(objName, dirtyObject))
       {
-         Con::printf("%s(): Invalid SimObject: %s", (const char*)argv[0], (const char*)argv[2]);
+         Con::printf("setDirty(): Invalid SimObject: %s", objName);
          return;
       }
    }
@@ -2213,28 +2214,28 @@ ConsoleMethod( PersistenceManager, setDirty, void, 3, 4, "(SimObject object, [fi
    
    if( dirtyObject == Sim::getRootGroup() )
    {
-      Con::errorf( "%s(): Cannot save RootGroup", (const char*)argv[ 0 ] );
+      Con::errorf( "%s(): Cannot save RootGroup", objName );
       return;
    }
 
    if (dirtyObject)
    {
-      if (argc == 4 && argv[3][0])
-         object->setDirty(dirtyObject, argv[3]);
+      if (dStrcmp( fileName,"")!=0)
+         object->setDirty(dirtyObject, fileName);
       else
          object->setDirty(dirtyObject);
    }
 }
 
-ConsoleMethod( PersistenceManager, removeDirty, void, 3, 3, "(SimObject object)"
+DefineConsoleMethod( PersistenceManager, removeDirty, void, ( const char * objName ), , "(SimObject object)"
               "Remove a SimObject from the dirty list.")
 {
    SimObject *dirtyObject = NULL;
-   if (argv[2][0])
+	if (dStrcmp(  objName,"")!=0)
    {
-      if (!Sim::findObject(argv[2], dirtyObject))
+      if (!Sim::findObject(objName, dirtyObject))
       {
-         Con::printf("%s(): Invalid SimObject: %s", (const char*)argv[0], (const char*)argv[2]);
+			Con::printf("%s(): Invalid SimObject: %s", object->getName(),objName);
          return;
       }
    }
@@ -2243,15 +2244,15 @@ ConsoleMethod( PersistenceManager, removeDirty, void, 3, 3, "(SimObject object)"
       object->removeDirty(dirtyObject);
 }
 
-ConsoleMethod( PersistenceManager, isDirty, bool, 3, 3, "(SimObject object)"
+DefineConsoleMethod( PersistenceManager, isDirty, bool, ( const char * objName ), , "(SimObject object)"
               "Returns true if the SimObject is on the dirty list.")
 {
    SimObject *dirtyObject = NULL;
-   if (argv[2][0])
+   if (dStrcmp ( objName,"")!=0)
    {
-      if (!Sim::findObject(argv[2], dirtyObject))
+      if (!Sim::findObject(objName, dirtyObject))
       {
-         Con::printf("%s(): Invalid SimObject: %s", (const char*)argv[0], (const char*)argv[2]);
+			Con::printf("%s(): Invalid SimObject: %s", object->getName(), objName);
          return false;
       }
    }
@@ -2262,25 +2263,24 @@ ConsoleMethod( PersistenceManager, isDirty, bool, 3, 3, "(SimObject object)"
    return false;
 }
 
-ConsoleMethod( PersistenceManager, hasDirty, bool, 2, 2, "()"
+DefineConsoleMethod( PersistenceManager, hasDirty, bool, (), , "()"
               "Returns true if the manager has dirty objects to save." )
 {
    return object->hasDirty();
 }
 
-ConsoleMethod( PersistenceManager, getDirtyObjectCount, S32, 2, 2, "()"
+DefineConsoleMethod( PersistenceManager, getDirtyObjectCount, S32, (), , "()"
               "Returns the number of dirty objects." )
 {
    return object->getDirtyList().size();
 }
 
-ConsoleMethod( PersistenceManager, getDirtyObject, S32, 3, 3, "( index )"
+DefineConsoleMethod( PersistenceManager, getDirtyObject, S32, (S32 index), , "( index )"
               "Returns the ith dirty object." )
 {
-   const S32 index = dAtoi( argv[2] );
    if ( index < 0 || index >= object->getDirtyList().size() )
    {
-      Con::warnf( "PersistenceManager::getDirtyObject() - Index (%s) out of range.", (const char*)argv[2] );
+      Con::warnf( "PersistenceManager::getDirtyObject() - Index (%s) out of range.", index );
       return 0;
    }
 
@@ -2291,7 +2291,7 @@ ConsoleMethod( PersistenceManager, getDirtyObject, S32, 3, 3, "( index )"
    return ( dirtyObject.getObject() ) ? dirtyObject.getObject()->getId() : 0;
 }
 
-ConsoleMethod( PersistenceManager, listDirty, void, 2, 2, "()"
+DefineConsoleMethod( PersistenceManager, listDirty, void, (), , "()"
               "Prints the dirty list to the console.")
 {
    const PersistenceManager::DirtyList dirtyList = object->getDirtyList();
@@ -2319,21 +2319,21 @@ ConsoleMethod( PersistenceManager, listDirty, void, 2, 2, "()"
    }
 }
 
-ConsoleMethod( PersistenceManager, saveDirty, bool, 2, 2, "()"
+DefineConsoleMethod( PersistenceManager, saveDirty, bool, (), , "()"
               "Saves all of the SimObject's on the dirty list to their respective files.")
 {
    return object->saveDirty();
 }
 
-ConsoleMethod( PersistenceManager, saveDirtyObject, bool, 3, 3, "(SimObject object)"
+DefineConsoleMethod( PersistenceManager, saveDirtyObject, bool, (const char * objName), , "(SimObject object)"
               "Save a dirty SimObject to it's file.")
 {
    SimObject *dirtyObject = NULL;
-   if (argv[2][0])
+   if (dStrcmp (  objName, "")!=0)
    {
-      if (!Sim::findObject(argv[2], dirtyObject))
+      if (!Sim::findObject(objName, dirtyObject))
       {
-         Con::printf("%s(): Invalid SimObject: %s", (const char*)argv[0], (const char*)argv[2]);
+         Con::printf("%s(): Invalid SimObject: %s", object->getName(), objName);
          return false;
       }
    }
@@ -2343,51 +2343,51 @@ ConsoleMethod( PersistenceManager, saveDirtyObject, bool, 3, 3, "(SimObject obje
    return false;
 }
 
-ConsoleMethod( PersistenceManager, clearAll, void, 2, 2, "()"
+DefineConsoleMethod( PersistenceManager, clearAll, void, (), , "()"
               "Clears all the tracked objects without saving them." )
 {
    object->clearAll();
 }
 
-ConsoleMethod( PersistenceManager, removeObjectFromFile, void, 3, 4, "(SimObject object, [filename])"
+DefineConsoleMethod( PersistenceManager, removeObjectFromFile, void, (const char * objName, const char * filename),("") , "(SimObject object, [filename])"
               "Remove an existing SimObject from a file (can optionally specify a different file than \
                the one it was created in.")
 {
    SimObject *dirtyObject = NULL;
-   if (argv[2][0])
+   if (dStrcmp ( objName , "")!=0)
    {
-      if (!Sim::findObject(argv[2], dirtyObject))
+      if (!Sim::findObject(objName, dirtyObject))
       {
-         Con::printf("%s(): Invalid SimObject: %s", (const char*)argv[0], (const char*)argv[2]);
+			Con::printf("%s(): Invalid SimObject: %s", object->getName(), objName);
          return;
       }
    }
 
    if (dirtyObject)
    {
-      if (argc == 4 && argv[3][0])
-         object->removeObjectFromFile(dirtyObject, argv[3]);
+      if (dStrcmp( filename,"")!=0)
+         object->removeObjectFromFile(dirtyObject, filename);
       else
          object->removeObjectFromFile(dirtyObject);
    }
 }
 
-ConsoleMethod( PersistenceManager, removeField, void, 4, 4, "(SimObject object, string fieldName)"
+DefineConsoleMethod( PersistenceManager, removeField, void, (const char * objName, const char * fieldName), , "(SimObject object, string fieldName)"
               "Remove a specific field from an object declaration.")
 {
    SimObject *dirtyObject = NULL;
-   if (argv[2][0])
+   if (dStrcmp(objName,"")!=0)
    {
-      if (!Sim::findObject(argv[2], dirtyObject))
+      if (!Sim::findObject(objName, dirtyObject))
       {
-         Con::printf("%s(): Invalid SimObject: %s", (const char*)argv[0], (const char*)argv[2]);
+			Con::printf("%s(): Invalid SimObject: %s", object->getName(), objName);
          return;
       }
    }
 
    if (dirtyObject)
    {
-      if (argv[3][0])
-         object->addRemoveField(dirtyObject, argv[3]);
+      if (fieldName != "")
+         object->addRemoveField(dirtyObject, fieldName);
    }
 }

+ 30 - 42
Engine/source/console/sim.cpp

@@ -21,7 +21,7 @@
 //-----------------------------------------------------------------------------
 
 #include "console/console.h"
-
+#include "console/engineAPI.h"
 #include "console/sim.h"
 #include "console/simEvents.h"
 #include "console/simObject.h"
@@ -86,23 +86,21 @@ namespace Sim
 
 ConsoleFunctionGroupBegin ( SimFunctions, "Functions relating to Sim.");
 
-ConsoleFunction(nameToID, S32, 2, 2, "nameToID(object)")
+DefineConsoleFunction( nameToID, S32, (const char * objectName), ,"nameToID(object)")
 {
-   TORQUE_UNUSED(argc);
-   SimObject *obj = Sim::findObject(argv[1]);
+   SimObject *obj = Sim::findObject(objectName);
    if(obj)
       return obj->getId();
    else
       return -1;
 }
 
-ConsoleFunction(isObject, bool, 2, 2, "isObject(object)")
+DefineConsoleFunction( isObject, bool, (const char * objectName), ,"isObject(object)")
 {
-   TORQUE_UNUSED(argc);
-   if (!dStrcmp(argv[1], "0") || !dStrcmp(argv[1], ""))
+   if (!dStrcmp(objectName, "0") || !dStrcmp(objectName, ""))
       return false;
    else
-      return (Sim::findObject(argv[1]) != NULL);
+      return (Sim::findObject(objectName) != NULL);
 }
 
 ConsoleDocFragment _spawnObject1(
@@ -135,23 +133,14 @@ ConsoleDocFragment _spawnObject1(
    "bool spawnObject(class [, dataBlock, name, properties, script]);"
 );
 
-ConsoleFunction(spawnObject, S32, 3, 6, "spawnObject(class [, dataBlock, name, properties, script])"
+DefineConsoleFunction( spawnObject, S32, (   const char * spawnClass
+                                         ,   const char * spawnDataBlock
+                                         ,   const char * spawnName
+                                         ,   const char * spawnProperties
+                                         ,   const char * spawnScript 
+                                         ),("","","","","") ,"spawnObject(class [, dataBlock, name, properties, script])"
 				"@hide")
 {
-   String spawnClass((const char*)argv[1]);
-   String spawnDataBlock;
-   String spawnName;
-   String spawnProperties;
-   String spawnScript;
-
-   if (argc >= 3)
-      spawnDataBlock = (const char*)argv[2];
-   if (argc >= 4)
-      spawnName = (const char*)argv[3];
-   if (argc >= 5)
-      spawnProperties = (const char*)argv[4];
-   if (argc >= 6)
-      spawnScript = (const char*)argv[5];
 
    SimObject* spawnObject = Sim::spawnObject(spawnClass, spawnDataBlock, spawnName, spawnProperties, spawnScript);
 
@@ -161,35 +150,35 @@ ConsoleFunction(spawnObject, S32, 3, 6, "spawnObject(class [, dataBlock, name, p
       return -1;
 }
 
-ConsoleFunction(cancel,void,2,2,"cancel(eventId)")
+DefineConsoleFunction( cancel, void, (S32 eventId), ,"cancel(eventId)")
 {
-   Sim::cancelEvent(dAtoi(argv[1]));
+   Sim::cancelEvent(eventId);
 }
 
-ConsoleFunction(cancelAll,void,2,2,"cancelAll(objectId): cancel pending events on the specified object.  Events will be automatically cancelled if object is deleted.")
+DefineConsoleFunction( cancelAll, void, (const char * objectId), ,"cancelAll(objectId): cancel pending events on the specified object.  Events will be automatically cancelled if object is deleted.")
 {
-   Sim::cancelPendingEvents(Sim::findObject(argv[1]));
+   Sim::cancelPendingEvents(Sim::findObject(objectId));
 }
 
-ConsoleFunction(isEventPending, bool, 2, 2, "isEventPending(%scheduleId);")
+DefineConsoleFunction( isEventPending, bool, (S32 scheduleId), ,"isEventPending(%scheduleId);")
 {
-   return Sim::isEventPending(dAtoi(argv[1]));
+   return Sim::isEventPending(scheduleId);
 }
 
-ConsoleFunction(getEventTimeLeft, S32, 2, 2, "getEventTimeLeft(scheduleId) Get the time left in ms until this event will trigger.")
+DefineConsoleFunction( getEventTimeLeft, S32, (S32 scheduleId), ,"getEventTimeLeft(scheduleId) Get the time left in ms until this event will trigger.")
 {
-   return Sim::getEventTimeLeft(dAtoi(argv[1]));
+   return Sim::getEventTimeLeft(scheduleId);
 }
 
-ConsoleFunction(getScheduleDuration, S32, 2, 2, "getScheduleDuration(%scheduleId);")
+DefineConsoleFunction( getScheduleDuration, S32, (S32 scheduleId), ,"getScheduleDuration(%scheduleId);" )
 {
-   TORQUE_UNUSED(argc);   S32 ret = Sim::getScheduleDuration(dAtoi(argv[1]));
+   S32 ret = Sim::getScheduleDuration(scheduleId);
    return ret;
 }
 
-ConsoleFunction(getTimeSinceStart, S32, 2, 2, "getTimeSinceStart(%scheduleId);")
+DefineConsoleFunction( getTimeSinceStart, S32, (S32 scheduleId), ,"getTimeSinceStart(%scheduleId);" )
 {
-   TORQUE_UNUSED(argc);   S32 ret = Sim::getTimeSinceStart(dAtoi(argv[1]));
+   S32 ret = Sim::getTimeSinceStart(scheduleId);
    return ret;
 }
 
@@ -214,7 +203,7 @@ ConsoleFunction(schedule, S32, 4, 0, "schedule(time, refobject|0, command, <arg1
    return ret;
 }
 
-ConsoleFunction(getUniqueName, const char*, 2, 2, 
+DefineConsoleFunction( getUniqueName, const char*, (const char * baseName), ,
 	"( String baseName )\n"
 	"@brief Returns a unique unused SimObject name based on a given base name.\n\n"
 	"@baseName Name to conver to a unique string if another instance exists\n"
@@ -222,7 +211,7 @@ ConsoleFunction(getUniqueName, const char*, 2, 2,
 	"@ingroup Editors\n"
 	"@internal")
 {
-   String outName = Sim::getUniqueName( argv[1] );
+   String outName = Sim::getUniqueName( baseName );
    
    if ( outName.isEmpty() )
       return NULL;
@@ -233,7 +222,7 @@ ConsoleFunction(getUniqueName, const char*, 2, 2,
    return buffer;
 }
 
-ConsoleFunction(getUniqueInternalName, const char*, 4, 4,
+DefineConsoleFunction( getUniqueInternalName, const char*, (const char * baseName, const char * setString, bool searchChildren), ,
    "( String baseName, SimSet set, bool searchChildren )\n"
    "@brief Returns a unique unused internal name within the SimSet/Group based on a given base name.\n\n"
    "@note Currently only used by editors\n"
@@ -241,13 +230,13 @@ ConsoleFunction(getUniqueInternalName, const char*, 4, 4,
    "@internal")
 {
    SimSet *set;
-   if ( !Sim::findObject( argv[2], set ) )
+   if ( !Sim::findObject( setString, set ) )
    {
       Con::errorf( "getUniqueInternalName() - invalid parameter for SimSet." );
       return NULL;
    }
 
-   String outName = Sim::getUniqueInternalName( argv[1], set, dAtob(argv[3]) );
+   String outName = Sim::getUniqueInternalName( baseName, set, searchChildren );
 
    if ( outName.isEmpty() )
       return NULL;
@@ -258,13 +247,12 @@ ConsoleFunction(getUniqueInternalName, const char*, 4, 4,
    return buffer;
 }
 
-ConsoleFunction( isValidObjectName, bool, 2, 2, "( string name )"
+DefineConsoleFunction( isValidObjectName, bool, (const char * name), , "( string name )"
 				"@brief Return true if the given name makes for a valid object name.\n\n"
 				"@param name Name of object\n"
 				"@return True if name is allowed, false if denied (usually because it starts with a number, _, or invalid character"
 				"@ingroup Console")
 {
-   const char* name = argv[ 1 ];
    return Sim::isValidObjectName( name );
 }
 

+ 2 - 1
Engine/source/console/simPersistSet.cpp

@@ -23,6 +23,7 @@
 #include "console/simPersistSet.h"
 #include "console/simPersistID.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 
 
 IMPLEMENT_CONOBJECT( SimPersistSet );
@@ -186,7 +187,7 @@ void SimPersistSet::addObject( SimObject* object )
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( SimPersistSet, resolvePersistentIds, void, 2, 2, "() - Try to bind unresolved persistent IDs in the set." )
+DefineConsoleMethod( SimPersistSet, resolvePersistentIds, void, (), , "() - Try to bind unresolved persistent IDs in the set." )
 {
    object->resolvePIDs();
 }

+ 5 - 4
Engine/source/console/simSet.cpp

@@ -25,6 +25,7 @@
 
 #include "core/stringTable.h"
 #include "console/console.h"
+#include "console/engineAPI.h"
 #include "core/stream/fileStream.h"
 #include "sim/actionMap.h"
 #include "core/fileObject.h"
@@ -950,7 +951,7 @@ DefineEngineMethod( SimSet, clear, void, (),,
 //-----------------------------------------------------------------------------
 
 //UNSAFE; don't want this in the new API
-ConsoleMethod( SimSet, deleteAllObjects, void, 2, 2, "() Delete all objects in the set." )
+DefineConsoleMethod( SimSet, deleteAllObjects, void, (), , "() Delete all objects in the set." )
 {
    object->deleteAllObjects();
 }
@@ -1022,7 +1023,7 @@ DEFINE_CALLIN( fnSimSet_getCountRecursive, getCountRecursive, SimSet, U32, ( Sim
    return set->sizeRecursive();
 }
 
-ConsoleMethod( SimSet, getFullCount, S32, 2, 2, "() Get the number of direct and indirect child objects contained in the set.\n"
+DefineConsoleMethod( SimSet, getFullCount, S32, (), , "() Get the number of direct and indirect child objects contained in the set.\n"
    "@return The number of objects contained in the set as well as in other sets contained directly or indirectly in the set." )
 {
    return object->sizeRecursive();
@@ -1118,10 +1119,10 @@ DefineEngineMethod( SimSet, pushToBack, void, ( SimObject* obj ),,
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( SimSet, sort, void, 3, 3, "( string callbackFunction ) Sort the objects in the set using the given comparison function.\n"
+DefineConsoleMethod( SimSet, sort, void, ( const char * callbackFunction ), , "( string callbackFunction ) Sort the objects in the set using the given comparison function.\n"
    "@param callbackFunction Name of a function that takes two object arguments A and B and returns -1 if A is less, 1 if B is less, and 0 if both are equal." )
 {
-   object->scriptSort( (const char*)argv[2] );
+   object->scriptSort( callbackFunction );
 }
 
 //-----------------------------------------------------------------------------

+ 7 - 5
Engine/source/console/telnetDebugger.cpp

@@ -25,6 +25,7 @@
 
 #include "core/frameAllocator.h"
 #include "console/console.h"
+#include "console/engineApi.h"
 #include "core/stringTable.h"
 #include "console/consoleInternal.h"
 #include "console/ast.h"
@@ -112,24 +113,25 @@ MODULE_END;
 // BRKCLR file line - sent when a breakpoint cannot be moved to a breakable line on the client.
 //
 
-
-ConsoleFunction( dbgSetParameters, void, 3, 4, "(int port, string password, bool waitForClient)"
+DefineConsoleFunction( dbgSetParameters, void, (S32 port, const char * password, bool waitForClient ), (false), "( int port, string password, bool waitForClient )"
                 "Open a debug server port on the specified port, requiring the specified password, "
 				"and optionally waiting for the debug client to connect.\n"
 				"@internal Primarily used for Torsion and other debugging tools")
 {
    if (TelDebugger)
-	   TelDebugger->setDebugParameters(dAtoi(argv[1]), argv[2], argc > 3 ? dAtob(argv[3]) : false );
+   {
+      TelDebugger->setDebugParameters(port, password, waitForClient );
+   }
 }
 
-ConsoleFunction( dbgIsConnected, bool, 1, 1, "()"
+DefineConsoleFunction( dbgIsConnected, bool, (), , "()"
                 "Returns true if a script debugging client is connected else return false.\n"
 				"@internal Primarily used for Torsion and other debugging tools")
 {
    return TelDebugger && TelDebugger->isConnected();
 }
 
-ConsoleFunction( dbgDisconnect, void, 1, 1, "()"
+DefineConsoleFunction( dbgDisconnect, void, (), , "()"
                 "Forcibly disconnects any attached script debugging client.\n"
 				"@internal Primarily used for Torsion and other debugging tools")
 {

+ 3 - 3
Engine/source/core/dnet.cpp

@@ -25,6 +25,7 @@
 #include "core/strings/stringFunctions.h"
 
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 
 
 bool gLogToConsole = false;
@@ -49,14 +50,13 @@ static const char *packetTypeNames[] =
 //-----------------------------------------------------------------
 //-----------------------------------------------------------------
 //-----------------------------------------------------------------
-ConsoleFunction(DNetSetLogging, void, 2, 2, "(bool enabled)"
+DefineConsoleFunction( DNetSetLogging, void, (bool enabled), , "(bool enabled)"
    "@brief Enables logging of the connection protocols\n\n"
    "When enabled a lot of network debugging information is sent to the console.\n"
    "@param enabled True to enable, false to disable\n"
    "@ingroup Networking")
 {
-   TORQUE_UNUSED(argc);
-   gLogToConsole = dAtob(argv[1]);
+   gLogToConsole = enabled;
 }
 
 ConnectionProtocol::ConnectionProtocol()

+ 4 - 6
Engine/source/core/fileObject.cpp

@@ -484,19 +484,17 @@ static ConsoleDocFragment _FileObjectwriteObject2(
    "FileObject",
    "void writeObject( SimObject* object, string prepend);");
 
-ConsoleMethod( FileObject, writeObject, void, 3, 4, "FileObject.writeObject(SimObject, object prepend)" 
+DefineConsoleMethod( FileObject, writeObject, void,  (const char * simName, const char * objName), (""), "FileObject.writeObject(SimObject, object prepend)" 
 			  "@hide")
 {
-   SimObject* obj = Sim::findObject( argv[2] );
+   SimObject* obj = Sim::findObject( simName );
    if( !obj )
    {
       Con::printf("FileObject::writeObject - Invalid Object!");
       return;
    }
-
-   const char *objName = NULL;
-   if( argc == 4 )
-      objName = (const char*)argv[3];
+	if (!dStrcmp(objName,""))
+       objName = NULL;
 
    object->writeObject( obj, (const U8*)objName );
 }

+ 4 - 2
Engine/source/core/resourceManager.cpp

@@ -221,16 +221,18 @@ ResourceBase ResourceManager::nextResource()
 
 ConsoleFunctionGroupBegin(ResourceManagerFunctions, "Resource management functions.");
 
-#ifdef TORQUE_DEBUG
+
 ConsoleFunction(resourceDump, void, 1, 1, "()"
 				"@brief List the currently managed resources\n\n"
 				"Currently used by editors only, internal\n"
 				"@ingroup Editors\n"
 				"@internal")
 {
+	#ifdef TORQUE_DEBUG
    ResourceManager::get().dumpToConsole();
+	#endif
 }
-#endif
+
 
 DefineEngineFunction( reloadResource, void, ( const char* path ),,
    "Force the resource at specified input path to be reloaded\n"

+ 3 - 2
Engine/source/core/stringBuffer.cpp

@@ -24,6 +24,7 @@
 #include "core/frameAllocator.h"
 #include "core/strings/unicode.h"
 #include "core/strings/stringFunctions.h"
+#include "console/engineAPI.h"
 
 
 #if defined(TORQUE_DEBUG)
@@ -47,12 +48,12 @@
          void dumpAllStrings();
    };
 
-   ConsoleFunction(sbmDumpStats, void, 1, 1, "")
+   DefineConsoleFunction( sbmDumpStats, void, (), , "()")
    {
       StringBufferManager::getManager().dumpStats();
    }
 
-   ConsoleFunction(sbmDumpStrings, void, 1, 1, "")
+   DefineConsoleFunction( sbmDumpStrings, void, (), , "()")
    {
       StringBufferManager::getManager().dumpAllStrings();
    }

+ 7 - 3
Engine/source/core/util/str.cpp

@@ -42,6 +42,7 @@ namespace KeyCmp
 #include "core/util/tVector.h"
 #include "core/dataChunker.h"
 #include "console/console.h"
+#include "console/engineAPI.h"
 
 #include "math/mMathFn.h"
 
@@ -476,15 +477,18 @@ static U32 sgStringMemBytes;
 /// Tracks the number of Strings which are currently instantiated.
 static U32 sgStringInstances;
 
-ConsoleFunction( dumpStringMemStats, void, 1, 1, "()"
+
+
+#endif
+DefineConsoleFunction( dumpStringMemStats, void, (), , "()"
 				"@brief Dumps information about String memory usage\n\n"
 				"@ingroup Debugging\n"
 				"@ingroup Strings\n")
 {
+#ifdef TORQUE_DEBUG
    Con::printf( "String Data: %i instances, %i bytes", sgStringInstances, sgStringMemBytes );
-}
-
 #endif
+}
 
 //-----------------------------------------------------------------------------
 

+ 24 - 53
Engine/source/environment/editors/guiMeshRoadEditorCtrl.cpp

@@ -24,6 +24,7 @@
 #include "environment/editors/guiMeshRoadEditorCtrl.h"
 
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "environment/meshRoad.h"
 #include "renderInstance/renderPassManager.h"
 #include "collision/collision.h"
@@ -1185,125 +1186,95 @@ void GuiMeshRoadEditorCtrl::matchTerrainToRoad()
    // with the terrain underneath it.
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, deleteNode, void, 2, 2, "deleteNode()" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, deleteNode, void, (), , "deleteNode()" )
 {
    object->deleteSelectedNode();
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, getMode, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, getMode, const char*, (), , "" )
 {
    return object->getMode();
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, setMode, void, 3, 3, "setMode( String mode )" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, setMode, void, (const char * mode), , "setMode( String mode )" )
 {
-   String newMode = ( argv[2] );
+   String newMode = ( mode );
    object->setMode( newMode );
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, getNodeWidth, F32, 2, 2, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, getNodeWidth, F32, (), , "" )
 {
    return object->getNodeWidth();
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, setNodeWidth, void, 3, 3, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, setNodeWidth, void, ( F32 width ), , "" )
 {
-   object->setNodeWidth( dAtof(argv[2]) );
+   object->setNodeWidth( width );
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, getNodeDepth, F32, 2, 2, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, getNodeDepth, F32, (), , "" )
 {
    return object->getNodeDepth();
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, setNodeDepth, void, 3, 3, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, setNodeDepth, void, ( F32 depth ), , "" )
 {
-   object->setNodeDepth( dAtof(argv[2]) );
+   object->setNodeDepth( depth );
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, getNodePosition, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, getNodePosition, Point3F, (), , "" )
 {
-	static const U32 bufSize = 256;
-	char* returnBuffer = Con::getReturnBuffer(bufSize);
 
-	dSprintf(returnBuffer, bufSize, "%f %f %f",
-      object->getNodePosition().x, object->getNodePosition().y, object->getNodePosition().z);
-
-	return returnBuffer;
+	return object->getNodePosition();
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, setNodePosition, void, 3, 3, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, setNodePosition, void, (Point3F pos), , "" )
 {
-	Point3F pos;
-
-	S32 count = dSscanf( argv[2], "%f %f %f", 
-		&pos.x, &pos.y, &pos.z);
-	
-	if ( (count != 3) )
-   {
-		Con::printf("Failed to parse node information \"px py pz\" from '%s'", (const char*)argv[3]);
-      return;
-   }
 
    object->setNodePosition( pos );
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, getNodeNormal, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, getNodeNormal, Point3F, (), , "" )
 {
-   static const U32 bufSize = 256;
-   char* returnBuffer = Con::getReturnBuffer(bufSize);
 
-	dSprintf(returnBuffer, bufSize, "%f %f %f",
-      object->getNodeNormal().x, object->getNodeNormal().y, object->getNodeNormal().z);
-
-	return returnBuffer;
+	return object->getNodeNormal();
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, setNodeNormal, void, 3, 3, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, setNodeNormal, void, (Point3F normal), , "" )
 {
-   VectorF normal;
-
-	S32 count = dSscanf( argv[2], "%f %f %f", 
-		&normal.x, &normal.y, &normal.z);
-	
-	if ( (count != 3) )
-   {
-		Con::printf("Failed to parse node information \"px py pz\" from '%s'", (const char*)argv[3]);
-      return;
-   }
 
    object->setNodeNormal( normal );
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, setSelectedRoad, void, 2, 3, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, setSelectedRoad, void, (const char * objName), (""), "" )
 {
-   if ( argc == 2 )
+	if ( dStrcmp(objName, "" )==0)
       object->setSelectedRoad(NULL);
    else
    {
       MeshRoad *road = NULL;
-      if ( Sim::findObject( argv[2], road ) )
+      if ( Sim::findObject( objName, road ) )
          object->setSelectedRoad(road);
    }
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, getSelectedRoad, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, getSelectedRoad, S32, (), , "" )
 {
    MeshRoad *road = object->getSelectedRoad();
    if ( !road )
       return NULL;
 
-   return road->getIdString();
+   return road->getId();
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, regenerate, void, 2, 2, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, regenerate, void, (), , "" )
 {
    MeshRoad *road = object->getSelectedRoad();
    if ( road )
       road->regenerate();
 }
 
-ConsoleMethod( GuiMeshRoadEditorCtrl, matchTerrainToRoad, void, 2, 2, "" )
+DefineConsoleMethod( GuiMeshRoadEditorCtrl, matchTerrainToRoad, void, (), , "" )
 {
    object->matchTerrainToRoad();
 }

+ 23 - 53
Engine/source/environment/editors/guiRiverEditorCtrl.cpp

@@ -24,6 +24,7 @@
 #include "environment/editors/guiRiverEditorCtrl.h"
 
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "environment/river.h"
 #include "renderInstance/renderPassManager.h"
 #include "collision/collision.h"
@@ -1392,118 +1393,87 @@ void GuiRiverEditorCtrl::_renderSelectedRiver( ObjectRenderInst *ri, SceneRender
    }
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, deleteNode, void, 2, 2, "deleteNode()" )
+DefineConsoleMethod( GuiRiverEditorCtrl, deleteNode, void, (), , "deleteNode()" )
 {
    object->deleteSelectedNode();
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, getMode, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, getMode, const char*, (), , "" )
 {
    return object->getMode();
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, setMode, void, 3, 3, "setMode( String mode )" )
+DefineConsoleMethod( GuiRiverEditorCtrl, setMode, void, ( const char * mode ), , "setMode( String mode )" )
 {
-   String newMode = ( argv[2] );
+   String newMode = ( mode );
    object->setMode( newMode );
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, getNodeWidth, F32, 2, 2, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, getNodeWidth, F32, (), , "" )
 {
    return object->getNodeWidth();
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, setNodeWidth, void, 3, 3, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, setNodeWidth, void, ( F32 width ), , "" )
 {
-   object->setNodeWidth( dAtof(argv[2]) );
+   object->setNodeWidth( width );
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, getNodeDepth, F32, 2, 2, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, getNodeDepth, F32, (), , "" )
 {
    return object->getNodeDepth();
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, setNodeDepth, void, 3, 3, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, setNodeDepth, void, ( F32 depth ), , "" )
 {
-   object->setNodeDepth( dAtof(argv[2]) );
+   object->setNodeDepth( depth );
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, getNodePosition, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, getNodePosition, Point3F, (), , "" )
 {
-	static const U32 bufSize = 256;
-	char* returnBuffer = Con::getReturnBuffer(bufSize);
 
-	dSprintf(returnBuffer, bufSize, "%f %f %f",
-      object->getNodePosition().x, object->getNodePosition().y, object->getNodePosition().z);
-
-	return returnBuffer;
+	return  object->getNodePosition();
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, setNodePosition, void, 3, 3, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, setNodePosition, void, (Point3F pos), , "" )
 {
-	Point3F pos;
-
-	S32 count = dSscanf( argv[2], "%f %f %f", 
-		&pos.x, &pos.y, &pos.z);
-	
-	if ( (count != 3) )
-   {
-		Con::printf("Failed to parse node information \"px py pz\" from '%s'", (const char*)argv[3]);
-      return;
-   }
-
    object->setNodePosition( pos );
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, getNodeNormal, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, getNodeNormal, Point3F, (), , "" )
 {
-   static const U32 bufSize = 256;
-   char* returnBuffer = Con::getReturnBuffer(bufSize);
 
-	dSprintf(returnBuffer, bufSize, "%f %f %f",
-      object->getNodeNormal().x, object->getNodeNormal().y, object->getNodeNormal().z);
-
-	return returnBuffer;
+	return object->getNodeNormal();
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, setNodeNormal, void, 3, 3, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, setNodeNormal, void, (Point3F normal), , "" )
 {
-   VectorF normal;
-
-	S32 count = dSscanf( argv[2], "%f %f %f", 
-		&normal.x, &normal.y, &normal.z);
-	
-	if ( (count != 3) )
-   {
-		Con::printf("Failed to parse node information \"px py pz\" from '%s'", (const char*)argv[3]);
-      return;
-   }
 
    object->setNodeNormal( normal );
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, setSelectedRiver, void, 2, 3, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, setSelectedRiver, void, (const char * objName), (""), "" )
 {
-   if ( argc == 2 )
+   if (dStrcmp( objName,"" )==0)
       object->setSelectedRiver(NULL);
    else
    {
       River *river = NULL;
-      if ( Sim::findObject( argv[2], river ) )
+      if ( Sim::findObject( objName, river ) )
          object->setSelectedRiver(river);
    }
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, getSelectedRiver, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, getSelectedRiver, S32, (), , "" )
 {
    River *river = object->getSelectedRiver();
    if ( !river )
       return NULL;
 
-   return river->getIdString();
+	return river->getId();
 }
 
-ConsoleMethod( GuiRiverEditorCtrl, regenerate, void, 2, 2, "" )
+DefineConsoleMethod( GuiRiverEditorCtrl, regenerate, void, (), , "" )
 {
    River *river = object->getSelectedRiver();
    if ( river )

+ 18 - 32
Engine/source/environment/editors/guiRoadEditorCtrl.cpp

@@ -24,6 +24,7 @@
 #include "environment/editors/guiRoadEditorCtrl.h"
 
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "scene/sceneManager.h"
 #include "collision/collision.h"
 #include "math/util/frustum.h"
@@ -1036,86 +1037,71 @@ void GuiRoadEditorCtrl::submitUndo( const UTF8 *name )
    undoMan->addAction( action );
 }
 
-ConsoleMethod( GuiRoadEditorCtrl, deleteNode, void, 2, 2, "deleteNode()" )
+DefineConsoleMethod( GuiRoadEditorCtrl, deleteNode, void, (), , "deleteNode()" )
 {
    object->deleteSelectedNode();
 }
 
-ConsoleMethod( GuiRoadEditorCtrl, getMode, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiRoadEditorCtrl, getMode, const char*, (), , "" )
 {
    return object->getMode();
 }
 
-ConsoleMethod( GuiRoadEditorCtrl, setMode, void, 3, 3, "setMode( String mode )" )
+DefineConsoleMethod( GuiRoadEditorCtrl, setMode, void, ( const char * mode ), , "setMode( String mode )" )
 {
-	String newMode = ( argv[2] );
+   String newMode = ( mode );
    object->setMode( newMode );
 }
 
-ConsoleMethod( GuiRoadEditorCtrl, getNodeWidth, F32, 2, 2, "" )
+DefineConsoleMethod( GuiRoadEditorCtrl, getNodeWidth, F32, (), , "" )
 {
    return object->getNodeWidth();
 }
 
-ConsoleMethod( GuiRoadEditorCtrl, setNodeWidth, void, 3, 3, "" )
+DefineConsoleMethod( GuiRoadEditorCtrl, setNodeWidth, void, ( F32 width ), , "" )
 {
-   object->setNodeWidth( dAtof(argv[2]) );
+   object->setNodeWidth( width );
 }
 
-ConsoleMethod( GuiRoadEditorCtrl, getNodePosition, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiRoadEditorCtrl, getNodePosition, Point3F, (), , "" )
 {
-	static const U32 bufSize = 256;
-	char* returnBuffer = Con::getReturnBuffer(bufSize);
 
-	dSprintf(returnBuffer, bufSize, "%f %f %f",
-      object->getNodePosition().x, object->getNodePosition().y, object->getNodePosition().z);
-
-	return returnBuffer;
+	return object->getNodePosition();
 }
 
-ConsoleMethod( GuiRoadEditorCtrl, setNodePosition, void, 3, 3, "" )
+DefineConsoleMethod( GuiRoadEditorCtrl, setNodePosition, void, ( Point3F pos ), , "" )
 {
-	Point3F pos;
-
-	S32 count = dSscanf( argv[2], "%f %f %f", 
-		&pos.x, &pos.y, &pos.z);
-	
-	if ( (count != 3) )
-   {
-		Con::printf("Failed to parse node information \"px py pz\" from '%s'", (const char*)argv[3]);
-      return;
-   }
 
    object->setNodePosition( pos );
 }
 
-ConsoleMethod( GuiRoadEditorCtrl, setSelectedRoad, void, 2, 3, "" )
+DefineConsoleMethod( GuiRoadEditorCtrl, setSelectedRoad, void, ( const char * pathRoad ), (""), "" )
 {
-   if ( argc == 2 )
+   if (dStrcmp( pathRoad,"")==0 )
       object->setSelectedRoad(NULL);
    else
    {
       DecalRoad *road = NULL;
-      if ( Sim::findObject( argv[2], road ) )
+      if ( Sim::findObject( pathRoad, road ) )
          object->setSelectedRoad(road);
    }
 }
 
-ConsoleMethod( GuiRoadEditorCtrl, getSelectedRoad, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiRoadEditorCtrl, getSelectedRoad, S32, (), , "" )
 {
    DecalRoad *road = object->getSelectedRoad();
    if ( road )
-      return road->getIdString();
+      return road->getId();
    
    return NULL;
 }
 
-ConsoleMethod( GuiRoadEditorCtrl, getSelectedNode, S32, 2, 2, "" )
+DefineConsoleMethod( GuiRoadEditorCtrl, getSelectedNode, S32, (), , "" )
 {
    return object->getSelectedNode();
 }
 
-ConsoleMethod( GuiRoadEditorCtrl, deleteRoad, void, 2, 2, "" )
+DefineConsoleMethod( GuiRoadEditorCtrl, deleteRoad, void, (), , "" )
 {
    object->deleteSelectedRoad();
 }

+ 2 - 1
Engine/source/environment/skyBox.cpp

@@ -24,6 +24,7 @@
 #include "environment/skyBox.h"
 
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "scene/sceneRenderState.h"
 #include "renderInstance/renderPassManager.h"
 #include "gfx/primBuilder.h"
@@ -637,7 +638,7 @@ BaseMatInstance* SkyBox::_getMaterialInstance()
    return mMatInstance;
 }
 
-ConsoleMethod( SkyBox, postApply, void, 2, 2, "")
+DefineConsoleMethod( SkyBox, postApply, void, (), , "")
 {
 	object->inspectPostApply();
 }

+ 3 - 7
Engine/source/environment/sun.cpp

@@ -27,6 +27,7 @@
 #include "math/mathIO.h"
 #include "core/stream/bitStream.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "scene/sceneManager.h"
 #include "math/mathUtils.h"
 #include "lighting/lightInfo.h"
@@ -546,18 +547,13 @@ void Sun::_onUnselected()
    Parent::_onUnselected();
 }
 
-ConsoleMethod(Sun, apply, void, 2, 2, "")
+DefineConsoleMethod(Sun, apply, void, (), , "")
 {
    object->inspectPostApply();
 }
 
-ConsoleMethod(Sun, animate, void, 7, 7, "animate( F32 duration, F32 startAzimuth, F32 endAzimuth, F32 startElevation, F32 endElevation )")
+DefineConsoleMethod(Sun, animate, void, ( F32 duration, F32 startAzimuth, F32 endAzimuth, F32 startElevation, F32 endElevation ), , "animate( F32 duration, F32 startAzimuth, F32 endAzimuth, F32 startElevation, F32 endElevation )")
 {
-   F32 duration = dAtof(argv[2]);
-   F32 startAzimuth = dAtof(argv[3]);
-   F32 endAzimuth   = dAtof(argv[4]);
-   F32 startElevation = dAtof(argv[5]);
-   F32 endElevation   = dAtof(argv[6]);
 
    object->animate(duration, startAzimuth, endAzimuth, startElevation, endElevation);
 }

+ 3 - 3
Engine/source/forest/editor/forestBrushElement.cpp

@@ -23,7 +23,7 @@
 #include "platform/platform.h"
 #include "forest/editor/forestBrushElement.h"
 
-#include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "forest/forestItem.h"
 
 
@@ -187,10 +187,10 @@ bool ForestBrush::containsItemData( const ForestItemData *inData )
    return false;
 }
 
-ConsoleMethod( ForestBrush, containsItemData, bool, 3, 3, "( ForestItemData obj )" )
+DefineConsoleMethod( ForestBrush, containsItemData, bool, ( const char * obj ), , "( ForestItemData obj )" )
 {
    ForestItemData *data = NULL;
-   if ( !Sim::findObject( argv[2], data ) )
+   if ( !Sim::findObject( obj, data ) )
    {
       Con::warnf( "ForestBrush::containsItemData - invalid object passed" );
       return false;

+ 2 - 1
Engine/source/forest/editor/forestBrushTool.cpp

@@ -30,6 +30,7 @@
 
 #include "gui/worldEditor/editTSCtrl.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "core/util/tVector.h"
 #include "gfx/gfxDrawUtil.h"
 #include "gui/core/guiCanvas.h"
@@ -681,7 +682,7 @@ bool ForestBrushTool::getGroundAt( const Point3F &worldPt, F32 *zValueOut, Vecto
    return true;
 }
 
-ConsoleMethod( ForestBrushTool, collectElements, void, 2, 2, "" )
+DefineConsoleMethod( ForestBrushTool, collectElements, void, (), , "" )
 {
    object->collectElements();
 }

+ 8 - 7
Engine/source/forest/editor/forestEditorCtrl.cpp

@@ -25,6 +25,7 @@
 
 #include "forest/editor/forestBrushTool.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "gui/core/guiCanvas.h"
 #include "windowManager/platformCursorController.h"
 #include "forest/editor/forestUndo.h"
@@ -370,33 +371,33 @@ bool ForestEditorCtrl::isDirty()
    return foundDirty;   
 }
 
-ConsoleMethod( ForestEditorCtrl, updateActiveForest, void, 2, 2, "()" )
+DefineConsoleMethod( ForestEditorCtrl, updateActiveForest, void, (), , "()" )
 {
    object->updateActiveForest( true );
 }
 
-ConsoleMethod( ForestEditorCtrl, setActiveTool, void, 3, 3, "( ForestTool tool )" )
+DefineConsoleMethod( ForestEditorCtrl, setActiveTool, void, ( const char * toolName ), , "( ForestTool tool )" )
 {
-   ForestTool *tool = dynamic_cast<ForestTool*>( Sim::findObject( argv[2] ) );
+   ForestTool *tool = dynamic_cast<ForestTool*>( Sim::findObject( toolName ) );
    object->setActiveTool( tool );
 }
 
-ConsoleMethod( ForestEditorCtrl, getActiveTool, S32, 2, 2, "()" )
+DefineConsoleMethod( ForestEditorCtrl, getActiveTool, S32, (), , "()" )
 {
    ForestTool *tool = object->getActiveTool();
    return tool ? tool->getId() : 0;
 }
 
-ConsoleMethod( ForestEditorCtrl, deleteMeshSafe, void, 3, 3, "( ForestItemData obj )" )
+DefineConsoleMethod( ForestEditorCtrl, deleteMeshSafe, void, ( const char * obj ), , "( ForestItemData obj )" )
 {
    ForestItemData *db;
-   if ( !Sim::findObject( argv[2], db ) )
+   if ( !Sim::findObject( obj, db ) )
       return;
 
    object->deleteMeshSafe( db );   
 }
 
-ConsoleMethod( ForestEditorCtrl, isDirty, bool, 2, 2, "" )
+DefineConsoleMethod( ForestEditorCtrl, isDirty, bool, (), , "" )
 {
    return object->isDirty();
 }

+ 7 - 6
Engine/source/forest/editor/forestSelectionTool.cpp

@@ -30,6 +30,7 @@
 #include "gui/worldEditor/editTSCtrl.h"
 #include "gui/worldEditor/gizmo.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "core/util/tVector.h"
 #include "core/util/safeDelete.h"
 #include "gfx/gfxDrawUtil.h"
@@ -558,32 +559,32 @@ void ForestSelectionTool::onUndoAction()
       mBounds.intersect( mSelection[i].getWorldBox() );
 }
 
-ConsoleMethod( ForestSelectionTool, getSelectionCount, S32, 2, 2, "" )
+DefineConsoleMethod( ForestSelectionTool, getSelectionCount, S32, (), , "" )
 {
    return object->getSelectionCount();
 }
 
-ConsoleMethod( ForestSelectionTool, deleteSelection, void, 2, 2, "" )
+DefineConsoleMethod( ForestSelectionTool, deleteSelection, void, (), , "" )
 {
    object->deleteSelection();
 }
 
-ConsoleMethod( ForestSelectionTool, clearSelection, void, 2, 2, "" )
+DefineConsoleMethod( ForestSelectionTool, clearSelection, void, (), , "" )
 {
    object->clearSelection();
 }
 
-ConsoleMethod( ForestSelectionTool, cutSelection, void, 2, 2, "" )
+DefineConsoleMethod( ForestSelectionTool, cutSelection, void, (), , "" )
 {
    object->cutSelection();
 }
 
-ConsoleMethod( ForestSelectionTool, copySelection, void, 2, 2, "" )
+DefineConsoleMethod( ForestSelectionTool, copySelection, void, (), , "" )
 {
    object->copySelection();
 }
 
-ConsoleMethod( ForestSelectionTool, pasteSelection, void, 2, 2, "" )
+DefineConsoleMethod( ForestSelectionTool, pasteSelection, void, (), , "" )
 {
    object->pasteSelection();
 }

+ 7 - 6
Engine/source/forest/forest.cpp

@@ -38,8 +38,10 @@
 #include "environment/sun.h"
 #include "scene/sceneManager.h"
 #include "math/mathUtils.h"
+#include "math/mTransform.h"
 #include "T3D/physics/physicsBody.h"
 #include "forest/editor/forestBrushElement.h"
+#include "console/engineAPI.h"
 
 /// For frame signal
 #include "gui/core/guiCanvas.h"
@@ -359,23 +361,22 @@ void Forest::saveDataFile( const char *path )
       mData->write( mDataFileName );
 }
 
-ConsoleMethod( Forest, saveDataFile, bool, 2, 3, "saveDataFile( [path] )" )
+DefineConsoleMethod( Forest, saveDataFile, void, (const char * path), (""), "saveDataFile( [path] )" )
 {   
-   object->saveDataFile( argc == 3 ? (const char*)argv[2] : NULL );
-   return true;
+   object->saveDataFile( path );
 }
 
-ConsoleMethod(Forest, isDirty, bool, 2, 2, "()")
+DefineConsoleMethod(Forest, isDirty, bool, (), , "()")
 {
    return object->getData() && object->getData()->isDirty();
 }
 
-ConsoleMethod(Forest, regenCells, void, 2, 2, "()")
+DefineConsoleMethod(Forest, regenCells, void, (), , "()")
 {
    object->getData()->regenCells();
 }
 
-ConsoleMethod(Forest, clear, void, 2, 2, "()" )
+DefineConsoleMethod(Forest, clear, void, (), , "()" )
 {
    object->clear();
 }

+ 1 - 1
Engine/source/gfx/gfxCardProfile.cpp

@@ -53,7 +53,7 @@ void GFXCardProfiler::loadProfileScript(const char* aScriptName)
 
    Con::printf("      - Loaded card profile %s", scriptName.c_str());
 
-   Con::executef("eval", script);
+	Con::evaluate(script, false, NULL);
    delete[] script;
 }
 

+ 6 - 2
Engine/source/gfx/gfxTextureObject.cpp

@@ -58,16 +58,20 @@ U32 GFXTextureObject::dumpActiveTOs()
    return smActiveTOCount;
 }
 
+
+
+#endif // TORQUE_DEBUG
+
 DefineEngineFunction( dumpTextureObjects, void, (),,
    "Dumps a list of all active texture objects to the console.\n"
    "@note This function is only available in debug builds.\n"
    "@ingroup GFX\n" )
 {
+#ifdef TORQUE_DEBUG
    GFXTextureObject::dumpActiveTOs();
+#endif
 }
 
-#endif // TORQUE_DEBUG
-
 //-----------------------------------------------------------------------------
 // GFXTextureObject
 //-----------------------------------------------------------------------------

+ 4 - 3
Engine/source/gfx/video/videoCapture.cpp

@@ -305,10 +305,11 @@ void VideoFrameGrabber::_onTextureEvent(GFXTexCallbackCode code)
 ///----------------------------------------------------------------------
 
 ///----------------------------------------------------------------------
-
+//WLE - Vince
+//Changing the resolution to Point2I::Zero instead of the Point2I(0,0) better to use constants.
 DefineEngineFunction( startVideoCapture, void, 
    ( GuiCanvas *canvas, const char *filename, const char *encoder, F32 framerate, Point2I resolution ),
-   ( "THEORA", 30.0f, Point2I( 0, 0 ) ),
+   ( "THEORA", 30.0f, Point2I::Zero ),
    "Begins a video capture session.\n"
    "@see stopVideoCapture\n"
    "@ingroup Rendering\n" )
@@ -339,7 +340,7 @@ DefineEngineFunction( stopVideoCapture, void, (),,
 
 DefineEngineFunction( playJournalToVideo, void, 
    ( const char *journalFile, const char *videoFile, const char *encoder, F32 framerate, Point2I resolution ),
-   ( NULL, "THEORA", 30.0f, Point2I( 0, 0 ) ),
+	( NULL, "THEORA", 30.0f, Point2I::Zero ),
    "Load a journal file and capture it video.\n"
    "@ingroup Rendering\n" )
 {

+ 7 - 6
Engine/source/gui/buttons/guiToolboxButtonCtrl.cpp

@@ -24,6 +24,7 @@
 #include "gui/buttons/guiToolboxButtonCtrl.h"
 
 #include "console/console.h"
+#include "console/engineAPI.h"
 #include "gfx/gfxDevice.h"
 #include "gfx/gfxDrawUtil.h"
 #include "console/consoleTypes.h"
@@ -91,19 +92,19 @@ void GuiToolboxButtonCtrl::onSleep()
 
 //-------------------------------------
 
-ConsoleMethod( GuiToolboxButtonCtrl, setNormalBitmap, void, 3, 3, "( filepath name ) sets the bitmap that shows when the button is active")
+DefineConsoleMethod( GuiToolboxButtonCtrl, setNormalBitmap, void, ( const char * name ), , "( filepath name ) sets the bitmap that shows when the button is active")
 {
-   object->setNormalBitmap(argv[2]);
+   object->setNormalBitmap(name);
 }
 
-ConsoleMethod( GuiToolboxButtonCtrl, setLoweredBitmap, void, 3, 3, "( filepath name ) sets the bitmap that shows when the button is disabled")
+DefineConsoleMethod( GuiToolboxButtonCtrl, setLoweredBitmap, void, ( const char * name ), , "( filepath name ) sets the bitmap that shows when the button is disabled")
 {
-   object->setLoweredBitmap(argv[2]);
+   object->setLoweredBitmap(name);
 }
 
-ConsoleMethod( GuiToolboxButtonCtrl, setHoverBitmap, void, 3, 3, "( filepath name ) sets the bitmap that shows when the button is disabled")
+DefineConsoleMethod( GuiToolboxButtonCtrl, setHoverBitmap, void, ( const char * name ), , "( filepath name ) sets the bitmap that shows when the button is disabled")
 {
-   object->setHoverBitmap(argv[2]);
+   object->setHoverBitmap(name);
 }
 
 //-------------------------------------

+ 3 - 3
Engine/source/gui/controls/guiBitmapCtrl.cpp

@@ -256,11 +256,11 @@ static ConsoleDocFragment _sGuiBitmapCtrlSetBitmap2(
 
 
 //"Set the bitmap displayed in the control. Note that it is limited in size, to 256x256."
-ConsoleMethod( GuiBitmapCtrl, setBitmap, void, 3, 4,
+DefineConsoleMethod( GuiBitmapCtrl, setBitmap, void, ( const char * fileRoot, bool resize), ( false),
    "( String filename | String filename, bool resize ) Assign an image to the control.\n\n"
    "@hide" )
 {
    char filename[1024];
-   Con::expandScriptFilename(filename, sizeof(filename), argv[2]);
-   object->setBitmap(filename, argc > 3 ? dAtob( argv[3] ) : false );
+   Con::expandScriptFilename(filename, sizeof(filename), fileRoot);
+   object->setBitmap(filename, resize );
 }

+ 5 - 11
Engine/source/gui/controls/guiColorPicker.cpp

@@ -22,6 +22,7 @@
 #include "console/console.h"
 #include "gfx/gfxDevice.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "gui/core/guiCanvas.h"
 #include "gui/buttons/guiButtonCtrl.h"
 #include "gui/core/guiDefaultControlRender.h"
@@ -526,24 +527,17 @@ void GuiColorPickerCtrl::setScriptValue(const char *value)
    setValue(newValue);
 }
 
-ConsoleMethod(GuiColorPickerCtrl, getSelectorPos, const char*, 2, 2, "Gets the current position of the selector")
+DefineConsoleMethod(GuiColorPickerCtrl, getSelectorPos, Point2I, (), , "Gets the current position of the selector")
 {
-   static const U32 bufSize = 256;
-   char *temp = Con::getReturnBuffer(bufSize);
-   Point2I pos;
-   pos = object->getSelectorPos();
-   dSprintf(temp,bufSize,"%d %d",pos.x, pos.y); 
-   return temp;
+   return object->getSelectorPos();
 }
 
-ConsoleMethod(GuiColorPickerCtrl, setSelectorPos, void, 3, 3, "Sets the current position of the selector")
+DefineConsoleMethod(GuiColorPickerCtrl, setSelectorPos, void, (Point2I newPos), , "Sets the current position of the selector")
 {
-   Point2I newPos;
-   dSscanf(argv[2], "%d %d", &newPos.x, &newPos.y);
    object->setSelectorPos(newPos);
 }
 
-ConsoleMethod(GuiColorPickerCtrl, updateColor, void, 2, 2, "Forces update of pick color")
+DefineConsoleMethod(GuiColorPickerCtrl, updateColor, void, (), , "Forces update of pick color")
 {
 	object->updateColor();
 }

+ 1 - 0
Engine/source/gui/controls/guiDecoyCtrl.cpp

@@ -25,6 +25,7 @@
 #include "gui/buttons/guiButtonBaseCtrl.h"
 
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "gfx/primBuilder.h"
 
 //-----------------------------------------------------------------------------

+ 6 - 4
Engine/source/gui/controls/guiFileTreeCtrl.cpp

@@ -25,6 +25,7 @@
 #include "core/frameAllocator.h"
 #include "core/strings/stringUnit.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 
 
 IMPLEMENT_CONOBJECT(GuiFileTreeCtrl);
@@ -378,18 +379,19 @@ void GuiFileTreeCtrl::recurseInsert( Item* parent, StringTableEntry path )
 
 }
 
-ConsoleMethod( GuiFileTreeCtrl, getSelectedPath, const char*, 2, 2, "getSelectedPath() - returns the currently selected path in the tree")
+//ConsoleMethod( GuiFileTreeCtrl, getSelectedPath, const char*, 2, 2, "getSelectedPath() - returns the currently selected path in the tree")
+DefineConsoleMethod( GuiFileTreeCtrl, getSelectedPath, const char*, (), , "getSelectedPath() - returns the currently selected path in the tree")
 {
    const String& path = object->getSelectedPath();
    return Con::getStringArg( path );
 }
 
-ConsoleMethod( GuiFileTreeCtrl, setSelectedPath, bool, 3, 3, "setSelectedPath(path) - expands the tree to the specified path")
+DefineConsoleMethod( GuiFileTreeCtrl, setSelectedPath, bool, (const char * path), , "setSelectedPath(path) - expands the tree to the specified path")
 {
-   return object->setSelectedPath( argv[ 2 ] );
+   return object->setSelectedPath( path );
 }
 
-ConsoleMethod( GuiFileTreeCtrl, reload, void, 2, 2, "() - Reread the directory tree hierarchy." )
+DefineConsoleMethod( GuiFileTreeCtrl, reload, void, (), , "() - Reread the directory tree hierarchy." )
 {
    object->updateTree();
 }

+ 5 - 24
Engine/source/gui/controls/guiGradientCtrl.cpp

@@ -599,7 +599,7 @@ void GuiGradientCtrl::sortColorRange()
 		dQsort( mAlphaRange.address(), mAlphaRange.size(), sizeof(ColorRange), _numIncreasing);
 }
 
-ConsoleMethod(GuiGradientCtrl, getColorCount, S32, 2, 2, "Get color count")
+DefineConsoleMethod(GuiGradientCtrl, getColorCount, S32, (), , "Get color count")
 {
 	if( object->getDisplayMode() == GuiGradientCtrl::pHorizColorRange )
 		return object->mColorRange.size();
@@ -609,44 +609,25 @@ ConsoleMethod(GuiGradientCtrl, getColorCount, S32, 2, 2, "Get color count")
 	return 0;
 }
 
-ConsoleMethod(GuiGradientCtrl, getColor, const char*, 3, 3, "Get color value")
+DefineConsoleMethod(GuiGradientCtrl, getColor, ColorF, (S32 idx), , "Get color value")
 {
-	S32 idx = dAtoi(argv[2]);
 
 	if( object->getDisplayMode() == GuiGradientCtrl::pHorizColorRange )
 	{
 		if ( idx >= 0 && idx < object->mColorRange.size() )
 		{
-			static const U32 bufSize = 256;
-			char* rColor = Con::getReturnBuffer(bufSize);
-			rColor[0] = 0;
 
-			dSprintf(rColor, bufSize, "%f %f %f %f",
-				object->mColorRange[idx].swatch->getColor().red,
-				object->mColorRange[idx].swatch->getColor().green,
-				object->mColorRange[idx].swatch->getColor().blue,
-				object->mColorRange[idx].swatch->getColor().alpha);
-
-			return rColor;
+			return object->mColorRange[idx].swatch->getColor();
 		}
 	}
 	else if( object->getDisplayMode() == GuiGradientCtrl::pHorizColorRange )
 	{
 		if ( idx >= 0 && idx < object->mAlphaRange.size() )
 		{
-			static const U32 bufSize = 256;
-			char* rColor = Con::getReturnBuffer(bufSize);
-			rColor[0] = 0;
-
-			dSprintf(rColor, bufSize, "%f %f %f %f",
-				object->mAlphaRange[idx].swatch->getColor().red,
-				object->mAlphaRange[idx].swatch->getColor().green,
-				object->mAlphaRange[idx].swatch->getColor().blue,
-				object->mAlphaRange[idx].swatch->getColor().alpha);
 
-			return rColor;
+			return object->mAlphaRange[idx].swatch->getColor();
 		}
 	}
 
-	return "1 1 1 1";
+	return ColorF::ONE;
 }

+ 3 - 2
Engine/source/gui/controls/guiMaterialCtrl.cpp

@@ -29,6 +29,7 @@
 #include "core/util/safeDelete.h"
 #include "console/console.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "gfx/gfxDevice.h"
 #include "math/util/matrixSet.h"
 #include "scene/sceneRenderState.h"
@@ -166,8 +167,8 @@ void GuiMaterialCtrl::onRender( Point2I offset, const RectI &updateRect )
    GFX->setTexture( 0, NULL );
 }
 
-ConsoleMethod( GuiMaterialCtrl, setMaterial, bool, 3, 3, "( string materialName )"
+DefineConsoleMethod( GuiMaterialCtrl, setMaterial, bool, ( const char * materialName ), , "( string materialName )"
                "Set the material to be displayed in the control." )
 {
-   return object->setMaterial( (const char*)argv[2] );
+   return object->setMaterial( materialName );
 }

+ 38 - 76
Engine/source/gui/controls/guiPopUpCtrl.cpp

@@ -23,6 +23,7 @@
 #include "gui/core/guiCanvas.h"
 #include "gui/controls/guiPopUpCtrl.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "gui/core/guiDefaultControlRender.h"
 #include "gfx/primBuilder.h"
 #include "gfx/gfxDrawUtil.h"
@@ -299,121 +300,82 @@ void GuiPopUpMenuCtrl::initPersistFields(void)
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod( GuiPopUpMenuCtrl, add, void, 3, 5, "(string name, int idNum, int scheme=0)")
+DefineConsoleMethod( GuiPopUpMenuCtrl, add, void, (const char * name, S32 idNum, U32 scheme), ("", -1, 0), "(string name, int idNum, int scheme=0)")
 {
-	if ( argc == 4 )
-		object->addEntry(argv[2],dAtoi(argv[3]));
-   if ( argc == 5 )
-      object->addEntry(argv[2],dAtoi(argv[3]),dAtoi(argv[4]));
-   else
-      object->addEntry(argv[2]);
+  	object->addEntry(name, idNum, scheme);
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, addScheme, void, 6, 6, "(int id, ColorI fontColor, ColorI fontColorHL, ColorI fontColorSEL)")
-{
-   ColorI fontColor, fontColorHL, fontColorSEL;
-   U32 r, g, b;
-   char buf[64];
-
-   dStrcpy( buf, argv[3] );
-   char* temp = dStrtok( buf, " \0" );
-   r = temp ? dAtoi( temp ) : 0;
-   temp = dStrtok( NULL, " \0" );
-   g = temp ? dAtoi( temp ) : 0;
-   temp = dStrtok( NULL, " \0" );
-   b = temp ? dAtoi( temp ) : 0;
-   fontColor.set( r, g, b );
-
-   dStrcpy( buf, argv[4] );
-   temp = dStrtok( buf, " \0" );
-   r = temp ? dAtoi( temp ) : 0;
-   temp = dStrtok( NULL, " \0" );
-   g = temp ? dAtoi( temp ) : 0;
-   temp = dStrtok( NULL, " \0" );
-   b = temp ? dAtoi( temp ) : 0;
-   fontColorHL.set( r, g, b );
-
-   dStrcpy( buf, argv[5] );
-   temp = dStrtok( buf, " \0" );
-   r = temp ? dAtoi( temp ) : 0;
-   temp = dStrtok( NULL, " \0" );
-   g = temp ? dAtoi( temp ) : 0;
-   temp = dStrtok( NULL, " \0" );
-   b = temp ? dAtoi( temp ) : 0;
-   fontColorSEL.set( r, g, b );
-
-   object->addScheme( dAtoi( argv[2] ), fontColor, fontColorHL, fontColorSEL );
+DefineConsoleMethod( GuiPopUpMenuCtrl, addScheme, void, (U32 id, ColorI fontColor, ColorI fontColorHL, ColorI fontColorSEL), , 
+	"(int id, ColorI fontColor, ColorI fontColorHL, ColorI fontColorSEL)")
+{
+
+   object->addScheme( id, fontColor, fontColorHL, fontColorSEL );
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, getText, const char*, 2, 2, "")
+DefineConsoleMethod( GuiPopUpMenuCtrl, getText, const char*, (), , "")
 {
    return object->getText();
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, clear, void, 2, 2, "Clear the popup list.")
+DefineConsoleMethod( GuiPopUpMenuCtrl, clear, void, (), , "Clear the popup list.")
 {
    object->clear();
 }
 
 //FIXME: clashes with SimSet.sort
-ConsoleMethod(GuiPopUpMenuCtrl, sort, void, 2, 2, "Sort the list alphabetically.")
+DefineConsoleMethod(GuiPopUpMenuCtrl, sort, void, (), , "Sort the list alphabetically.")
 {
    object->sort();
 }
 
 //  Added to sort the entries by ID
-ConsoleMethod(GuiPopUpMenuCtrl, sortID, void, 2, 2, "Sort the list by ID.")
+DefineConsoleMethod(GuiPopUpMenuCtrl, sortID, void, (), , "Sort the list by ID.")
 {
    object->sortID();
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, forceOnAction, void, 2, 2, "")
+DefineConsoleMethod( GuiPopUpMenuCtrl, forceOnAction, void, (), , "")
 {
    object->onAction();
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, forceClose, void, 2, 2, "")
+DefineConsoleMethod( GuiPopUpMenuCtrl, forceClose, void, (), , "")
 {
    object->closePopUp();
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, getSelected, S32, 2, 2, "")
+DefineConsoleMethod( GuiPopUpMenuCtrl, getSelected, S32, (), , "")
 {
    return object->getSelected();
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, setSelected, void, 3, 4, "(int id, [scriptCallback=true])")
+DefineConsoleMethod( GuiPopUpMenuCtrl, setSelected, void, (S32 id,  bool scriptCallback), (true), "(int id, [scriptCallback=true])")
 {
-   if( argc > 3 )
-      object->setSelected( dAtoi( argv[2] ), dAtob( argv[3] ) );
-   else
-      object->setSelected( dAtoi( argv[2] ) );
+   object->setSelected( id, scriptCallback );
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, setFirstSelected, void, 2, 3, "([scriptCallback=true])")
+DefineConsoleMethod( GuiPopUpMenuCtrl, setFirstSelected, void, (bool scriptCallback), (true), "([scriptCallback=true])")
 {
-	if( argc > 2 )
-      object->setFirstSelected( dAtob( argv[2] ) );
-   else
-      object->setFirstSelected();
+   object->setFirstSelected( scriptCallback );
+
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, setNoneSelected, void, 2, 2, "")
+DefineConsoleMethod( GuiPopUpMenuCtrl, setNoneSelected, void, (), , "")
 {
    object->setNoneSelected();
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, getTextById, const char*, 3, 3,  "(int id)")
+DefineConsoleMethod( GuiPopUpMenuCtrl, getTextById, const char*, (S32 id), ,  "(int id)")
 {
-   return(object->getTextById(dAtoi(argv[2])));
+   return(object->getTextById(id));
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, changeTextById, void, 4, 4, "( int id, string text )" )
+DefineConsoleMethod( GuiPopUpMenuCtrl, changeTextById, void, ( S32 id, const char * text ), , "( int id, string text )" )
 {
-   object->setEntryText( dAtoi( argv[ 2 ] ), argv[ 3 ] );
+   object->setEntryText( id, text );
 }
 
-ConsoleMethod( GuiPopUpMenuCtrl, setEnumContent, void, 4, 4, "(string class, string enum)"
+DefineConsoleMethod( GuiPopUpMenuCtrl, setEnumContent, void, (const char * className, const char * enumName), , "(string class, string enum)"
               "This fills the popup with a classrep's field enumeration type info.\n\n"
               "More of a helper function than anything.   If console access to the field list is added, "
               "at least for the enumerated types, then this should go away..")
@@ -423,7 +385,7 @@ ConsoleMethod( GuiPopUpMenuCtrl, setEnumContent, void, 4, 4, "(string class, str
    // walk the class list to get our class
    while(classRep)
    {
-      if(!dStricmp(classRep->getClassName(), argv[2]))
+      if(!dStricmp(classRep->getClassName(), className))
          break;
       classRep = classRep->getNextClass();
    }
@@ -431,20 +393,20 @@ ConsoleMethod( GuiPopUpMenuCtrl, setEnumContent, void, 4, 4, "(string class, str
    // get it?
    if(!classRep)
    {
-      Con::warnf(ConsoleLogEntry::General, "failed to locate class rep for '%s'", (const char*)argv[2]);
+      Con::warnf(ConsoleLogEntry::General, "failed to locate class rep for '%s'", className);
       return;
    }
 
    // walk the fields to check for this one (findField checks StringTableEntry ptrs...)
    U32 i;
    for(i = 0; i < classRep->mFieldList.size(); i++)
-      if(!dStricmp(classRep->mFieldList[i].pFieldname, argv[3]))
+      if(!dStricmp(classRep->mFieldList[i].pFieldname, enumName))
          break;
 
    // found it?   
    if(i == classRep->mFieldList.size())
    {   
-      Con::warnf(ConsoleLogEntry::General, "failed to locate field '%s' for class '%s'", (const char*)argv[3], (const char*)argv[2]);
+      Con::warnf(ConsoleLogEntry::General, "failed to locate field '%s' for class '%s'", enumName, className);
       return;
    }
 
@@ -454,7 +416,7 @@ ConsoleMethod( GuiPopUpMenuCtrl, setEnumContent, void, 4, 4, "(string class, str
    // check the type
    if( !conType->getEnumTable() )
    {
-      Con::warnf(ConsoleLogEntry::General, "field '%s' is not an enumeration for class '%s'", (const char*)argv[3], (const char*)argv[2]);
+      Con::warnf(ConsoleLogEntry::General, "field '%s' is not an enumeration for class '%s'", enumName, className);
       return;
    }
 
@@ -467,22 +429,22 @@ ConsoleMethod( GuiPopUpMenuCtrl, setEnumContent, void, 4, 4, "(string class, str
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod( GuiPopUpMenuCtrl, findText, S32, 3, 3, "(string text)"
+DefineConsoleMethod( GuiPopUpMenuCtrl, findText, S32, (const char * text), , "(string text)"
               "Returns the position of the first entry containing the specified text.")
 {
-   return( object->findText( argv[2] ) );   
+   return( object->findText( text ) );   
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod( GuiPopUpMenuCtrl, size, S32, 2, 2, "Get the size of the menu - the number of entries in it.")
+DefineConsoleMethod( GuiPopUpMenuCtrl, size, S32, (), , "Get the size of the menu - the number of entries in it.")
 {
    return( object->getNumEntries() ); 
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod( GuiPopUpMenuCtrl, replaceText, void, 3, 3, "(bool doReplaceText)")
+DefineConsoleMethod( GuiPopUpMenuCtrl, replaceText, void, (bool doReplaceText), , "(bool doReplaceText)")
 {
-   object->replaceText(dAtoi(argv[2]));  
+   object->replaceText(S32(doReplaceText));  
 }
 
 //------------------------------------------------------------------------------
@@ -570,9 +532,9 @@ void GuiPopUpMenuCtrl::clearEntry( S32 entry )
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod( GuiPopUpMenuCtrl, clearEntry, void, 3, 3, "(S32 entry)")
+DefineConsoleMethod( GuiPopUpMenuCtrl, clearEntry, void, (S32 entry), , "(S32 entry)")
 {
-   object->clearEntry(dAtoi(argv[2]));  
+   object->clearEntry(entry);
 }
 
 //------------------------------------------------------------------------------

+ 23 - 36
Engine/source/gui/controls/guiPopUpCtrlEx.cpp

@@ -23,6 +23,7 @@
 #include "gui/core/guiCanvas.h"
 #include "gui/controls/guiPopUpCtrlEx.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "gui/core/guiDefaultControlRender.h"
 #include "gfx/primBuilder.h"
 #include "gfx/gfxDrawUtil.h"
@@ -363,14 +364,9 @@ ConsoleDocFragment _GuiPopUpMenuCtrlExAdd(
 	"void add(string name, S32 idNum, S32 scheme=0);"
 );
 
-ConsoleMethod( GuiPopUpMenuCtrlEx, add, void, 3, 5, "(string name, int idNum, int scheme=0)")
+DefineConsoleMethod( GuiPopUpMenuCtrlEx, add, void, (const char * name, S32 idNum, U32 scheme), ("", -1, 0), "(string name, int idNum, int scheme=0)")
 {
-	if ( argc == 4 )
-		object->addEntry(argv[2],dAtoi(argv[3]));
-   if ( argc == 5 )
-      object->addEntry(argv[2],dAtoi(argv[3]),dAtoi(argv[4]));
-   else
-      object->addEntry(argv[2]);
+   object->addEntry(name, idNum, scheme);
 }
 
 DefineEngineMethod( GuiPopUpMenuCtrlEx, addCategory, void, (const char* text),,
@@ -529,13 +525,10 @@ ConsoleDocFragment _GuiPopUpMenuCtrlExsetSelected(
 	"setSelected(int id, bool scriptCallback=true);"
 );
 
-ConsoleMethod( GuiPopUpMenuCtrlEx, setSelected, void, 3, 4, "(int id, [scriptCallback=true])"
+DefineConsoleMethod( GuiPopUpMenuCtrlEx, setSelected, void, (S32 id, bool scriptCallback), (true), "(int id, [scriptCallback=true])"
 			  "@hide")
 {
-   if( argc > 3 )
-      object->setSelected( dAtoi( argv[2] ), dAtob( argv[3] ) );
-   else
-      object->setSelected( dAtoi( argv[2] ) );
+   object->setSelected( id, scriptCallback );
 }
 
 ConsoleDocFragment _GuiPopUpMenuCtrlExsetFirstSelected(
@@ -546,13 +539,10 @@ ConsoleDocFragment _GuiPopUpMenuCtrlExsetFirstSelected(
 );
 
 
-ConsoleMethod( GuiPopUpMenuCtrlEx, setFirstSelected, void, 2, 3, "([scriptCallback=true])"
+DefineConsoleMethod( GuiPopUpMenuCtrlEx, setFirstSelected, void, (bool scriptCallback), (true), "([scriptCallback=true])"
 			  "@hide")
 {
-   if( argc > 2 )
-      object->setFirstSelected( dAtob( argv[2] ) );
-   else
-      object->setFirstSelected();
+   object->setFirstSelected( scriptCallback );
 }
 
 DefineEngineMethod( GuiPopUpMenuCtrlEx, setNoneSelected, void, ( S32 param),,
@@ -571,21 +561,18 @@ DefineEngineMethod( GuiPopUpMenuCtrlEx, getTextById, const char*, (S32 id),,
 }
 
 
-ConsoleMethod( GuiPopUpMenuCtrlEx, getColorById, const char*, 3, 3,  
+DefineConsoleMethod( GuiPopUpMenuCtrlEx, getColorById,  ColorI, (S32 id), ,  
 			  "@brief Get color of an entry's box\n\n"
 			  "@param id ID number of entry to query\n\n"
 			  "@return ColorI in the format of \"Red Green Blue Alpha\", each of with is a value between 0 - 255")
 {
    ColorI color;
-   object->getColoredBox(color, dAtoi(argv[2]));
+   object->getColoredBox(color, id);
+	return color;
 
-   static const U32 bufSize = 512;
-   char *strBuffer = Con::getReturnBuffer(bufSize);
-   dSprintf(strBuffer, bufSize, "%d %d %d %d", color.red, color.green, color.blue, color.alpha);
-   return strBuffer;
 }
 
-ConsoleMethod( GuiPopUpMenuCtrlEx, setEnumContent, void, 4, 4,
+DefineConsoleMethod( GuiPopUpMenuCtrlEx, setEnumContent, void, ( const char * className, const char * enumName ), ,
 			  "@brief This fills the popup with a classrep's field enumeration type info.\n\n"
               "More of a helper function than anything.   If console access to the field list is added, "
               "at least for the enumerated types, then this should go away.\n\n"
@@ -597,7 +584,7 @@ ConsoleMethod( GuiPopUpMenuCtrlEx, setEnumContent, void, 4, 4,
    // walk the class list to get our class
    while(classRep)
    {
-      if(!dStricmp(classRep->getClassName(), argv[2]))
+      if(!dStricmp(classRep->getClassName(), className))
          break;
       classRep = classRep->getNextClass();
    }
@@ -605,20 +592,20 @@ ConsoleMethod( GuiPopUpMenuCtrlEx, setEnumContent, void, 4, 4,
    // get it?
    if(!classRep)
    {
-      Con::warnf(ConsoleLogEntry::General, "failed to locate class rep for '%s'", (const char*)argv[2]);
+      Con::warnf(ConsoleLogEntry::General, "failed to locate class rep for '%s'", className);
       return;
    }
 
    // walk the fields to check for this one (findField checks StringTableEntry ptrs...)
    U32 i;
    for(i = 0; i < classRep->mFieldList.size(); i++)
-      if(!dStricmp(classRep->mFieldList[i].pFieldname, argv[3]))
+      if(!dStricmp(classRep->mFieldList[i].pFieldname, enumName))
          break;
 
    // found it?   
    if(i == classRep->mFieldList.size())
    {   
-      Con::warnf(ConsoleLogEntry::General, "failed to locate field '%s' for class '%s'", (const char*)argv[3], (const char*)argv[2]);
+      Con::warnf(ConsoleLogEntry::General, "failed to locate field '%s' for class '%s'", enumName, className);
       return;
    }
 
@@ -628,7 +615,7 @@ ConsoleMethod( GuiPopUpMenuCtrlEx, setEnumContent, void, 4, 4,
    // check the type
    if( !conType->getEnumTable() )
    {
-      Con::warnf(ConsoleLogEntry::General, "field '%s' is not an enumeration for class '%s'", (const char*)argv[3], (const char*)argv[2]);
+      Con::warnf(ConsoleLogEntry::General, "field '%s' is not an enumeration for class '%s'", enumName, className);
       return;
    }
 
@@ -641,16 +628,16 @@ ConsoleMethod( GuiPopUpMenuCtrlEx, setEnumContent, void, 4, 4,
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod( GuiPopUpMenuCtrlEx, findText, S32, 3, 3, "(string text)"
+DefineConsoleMethod( GuiPopUpMenuCtrlEx, findText, S32, (const char * text), , "(string text)"
               "Returns the id of the first entry containing the specified text or -1 if not found."
 			  "@param text String value used for the query\n\n"
 			  "@return Numerical ID of entry containing the text.")
 {
-   return( object->findText( argv[2] ) );   
+   return( object->findText( text ) );
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod( GuiPopUpMenuCtrlEx, size, S32, 2, 2, 
+DefineConsoleMethod( GuiPopUpMenuCtrlEx, size, S32, (), , 
 			  "@brief Get the size of the menu\n\n"
 			  "@return Number of entries in the menu\n")
 {
@@ -658,11 +645,11 @@ ConsoleMethod( GuiPopUpMenuCtrlEx, size, S32, 2, 2,
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod( GuiPopUpMenuCtrlEx, replaceText, void, 3, 3, 
+DefineConsoleMethod( GuiPopUpMenuCtrlEx, replaceText, void, (S32 boolVal), , 
 			  "@brief Flag that causes each new text addition to replace the current entry\n\n"
 			  "@param True to turn on replacing, false to disable it")
 {
-   object->replaceText(dAtoi(argv[2]));  
+   object->replaceText(boolVal);
 }
 
 //------------------------------------------------------------------------------
@@ -750,9 +737,9 @@ void GuiPopUpMenuCtrlEx::clearEntry( S32 entry )
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod( GuiPopUpMenuCtrlEx, clearEntry, void, 3, 3, "(S32 entry)")
+DefineConsoleMethod( GuiPopUpMenuCtrlEx, clearEntry, void, (S32 entry), , "(S32 entry)")
 {
-   object->clearEntry(dAtoi(argv[2]));  
+   object->clearEntry(entry);
 }
 
 //------------------------------------------------------------------------------

+ 134 - 129
Engine/source/gui/controls/guiTreeViewCtrl.cpp

@@ -4605,11 +4605,28 @@ void GuiTreeViewCtrl::inspectObject( SimObject* obj, bool okToEdit )
 
 //-----------------------------------------------------------------------------
 
+S32 GuiTreeViewCtrl::insertObject( S32 parent, SimObject* obj, bool okToEdit )
+{
+   mFlags.set( IsEditable, okToEdit );
+   mFlags.set( IsInspector );
+
+   //onDefineIcons_callback();
+
+   GuiTreeViewCtrl::Item *item = addInspectorDataItem( getItem(parent), obj );
+   return item->getID();
+}
+
+//-----------------------------------------------------------------------------
+
 S32 GuiTreeViewCtrl::findItemByName(const char *name)
 {
    for (S32 i = 0; i < mItems.size(); i++) 
+   {
+	   if( mItems[i]->mState.test( Item::InspectorData ) )
+		   continue;
       if (mItems[i] && dStrcmp(mItems[i]->getText(),name) == 0) 
          return mItems[i]->mId;
+   }
 
    return 0;
 }
@@ -4619,8 +4636,12 @@ S32 GuiTreeViewCtrl::findItemByName(const char *name)
 S32 GuiTreeViewCtrl::findItemByValue(const char *name)
 {
    for (S32 i = 0; i < mItems.size(); i++) 
-      if (mItems[i] && dStrcmp(mItems[i]->getValue(),name) == 0) 
-         return mItems[i]->mId;
+   {
+	   if( mItems[i]->mState.test( Item::InspectorData ) )
+		   continue;
+	   if (mItems[i] && dStrcmp(mItems[i]->getValue(),name) == 0) 
+		   return mItems[i]->mId;
+   }
 
    return 0;
 }
@@ -4767,6 +4788,10 @@ DefineEngineMethod( GuiTreeViewCtrl, insertItem, S32, ( S32 parentId, const char
    return object->insertItem( parentId, text, value, icon, normalImage, expandedImage );
 }
 
+DefineEngineMethod( GuiTreeViewCtrl, insertObject, S32, ( S32 parentId, SimObject* obj, bool OKToEdit ), (false), "Inserts object as a child to the given parent." )
+{
+	return object->insertObject(parentId, obj, OKToEdit);
+}
 //-----------------------------------------------------------------------------
 
 DefineEngineMethod( GuiTreeViewCtrl, lockSelection, void, ( bool lock ), ( true ),
@@ -4831,27 +4856,24 @@ DefineEngineMethod( GuiTreeViewCtrl, addSelection, void, ( S32 id, bool isLastSe
    object->addSelection( id, isLastSelection, isLastSelection );
 }
 
-ConsoleMethod(GuiTreeViewCtrl, addChildSelectionByValue, void, 4, 4, "addChildSelectionByValue(TreeItemId parent, value)")
+DefineConsoleMethod(GuiTreeViewCtrl, addChildSelectionByValue, void, (S32 id, const char * tableEntry), , "addChildSelectionByValue(TreeItemId parent, value)")
 {
-   S32 id = dAtoi(argv[2]);
    GuiTreeViewCtrl::Item* parentItem = object->getItem(id);
-   GuiTreeViewCtrl::Item* child = parentItem->findChildByValue(argv[3]);
+   GuiTreeViewCtrl::Item* child = parentItem->findChildByValue(tableEntry);
    object->addSelection(child->getID());
 }
 
-ConsoleMethod(GuiTreeViewCtrl, removeSelection, void, 3, 3, "(deselects an item)")
+DefineConsoleMethod(GuiTreeViewCtrl, removeSelection, void, (S32 id), , "(deselects an item)")
 {
-   S32 id = dAtoi(argv[2]);
    object->removeSelection(id);
 }
 
-ConsoleMethod(GuiTreeViewCtrl, removeChildSelectionByValue, void, 4, 4, "removeChildSelectionByValue(TreeItemId parent, value)")
+DefineConsoleMethod(GuiTreeViewCtrl, removeChildSelectionByValue, void, (S32 id, const char * tableEntry), , "removeChildSelectionByValue(TreeItemId parent, value)")
 {
-   S32 id = dAtoi(argv[2]);
    GuiTreeViewCtrl::Item* parentItem = object->getItem(id);
    if(parentItem)
    {
-      GuiTreeViewCtrl::Item* child = parentItem->findChildByValue(argv[3]);
+      GuiTreeViewCtrl::Item* child = parentItem->findChildByValue(tableEntry);
 	  if(child)
 	  {
          object->removeSelection(child->getID());
@@ -4859,55 +4881,38 @@ ConsoleMethod(GuiTreeViewCtrl, removeChildSelectionByValue, void, 4, 4, "removeC
    }
 }
 
-ConsoleMethod(GuiTreeViewCtrl, selectItem, bool, 3, 4, "(TreeItemId item, bool select=true)")
+DefineConsoleMethod(GuiTreeViewCtrl, selectItem, bool, (S32 id, bool select), (true), "(TreeItemId item, bool select=true)")
 {
-   S32 id = dAtoi(argv[2]);
-   bool select = true;
-   if(argc == 4)
-      select = dAtob(argv[3]);
 
-   return(object->setItemSelected(id, select));
+   return object->setItemSelected(id, select);
 }
 
-ConsoleMethod(GuiTreeViewCtrl, expandItem, bool, 3, 4, "(TreeItemId item, bool expand=true)")
+DefineConsoleMethod(GuiTreeViewCtrl, expandItem, bool, (S32 id, bool expand), (true), "(TreeItemId item, bool expand=true)")
 {
-   S32 id = dAtoi(argv[2]);
-   bool expand = true;
-   if(argc == 4)
-      expand = dAtob(argv[3]);
    return(object->setItemExpanded(id, expand));
 }
 
-ConsoleMethod(GuiTreeViewCtrl, markItem, bool, 3, 4, "(TreeItemId item, bool mark=true)")
+DefineConsoleMethod(GuiTreeViewCtrl, markItem, bool, (S32 id, bool mark), (true), "(TreeItemId item, bool mark=true)")
 {
-   S32 id = dAtoi(argv[2]);
-   bool mark = true;
-   if(argc == 4)
-      mark = dAtob(argv[3]);
    return object->markItem(id, mark);
 }
 
 // Make the given item visible.
-ConsoleMethod(GuiTreeViewCtrl, scrollVisible, void, 3, 3, "(TreeItemId item)")
+DefineConsoleMethod(GuiTreeViewCtrl, scrollVisible, void, (S32 itemId), , "(TreeItemId item)")
 {
-   object->scrollVisible(dAtoi(argv[2]));
+   object->scrollVisible(itemId);
 }
 
-ConsoleMethod(GuiTreeViewCtrl, buildIconTable, bool, 3,3, "(builds an icon table)")
+DefineConsoleMethod(GuiTreeViewCtrl, buildIconTable, bool, (const char * icons), , "(builds an icon table)")
 {   
-   const char * icons = argv[2];
    return object->buildIconTable(icons);
 }
 
-ConsoleMethod( GuiTreeViewCtrl, open, void, 3, 4, "(SimSet obj, bool okToEdit=true) Set the root of the tree view to the specified object, or to the root set.")
+DefineConsoleMethod( GuiTreeViewCtrl, open, void, (const char * objName, bool okToEdit), (true), "(SimSet obj, bool okToEdit=true) Set the root of the tree view to the specified object, or to the root set.")
 {
    SimSet *treeRoot = NULL;
-   SimObject* target = Sim::findObject(argv[2]);
+   SimObject* target = Sim::findObject(objName);
 
-   bool okToEdit = true;
-
-   if (argc == 4)
-      okToEdit = dAtob(argv[3]);
 
    if (target)
       treeRoot = dynamic_cast<SimSet*>(target);
@@ -4918,9 +4923,8 @@ ConsoleMethod( GuiTreeViewCtrl, open, void, 3, 4, "(SimSet obj, bool okToEdit=tr
    object->inspectObject(treeRoot,okToEdit);
 }
 
-ConsoleMethod( GuiTreeViewCtrl, setItemTooltip, void, 4, 4, "( int id, string text ) - Set the tooltip to show for the given item." )
+DefineConsoleMethod( GuiTreeViewCtrl, setItemTooltip, void, ( S32 id, const char * text ), , "( int id, string text ) - Set the tooltip to show for the given item." )
 {
-   S32 id = dAtoi( argv[ 2 ] );
    
    GuiTreeViewCtrl::Item* item = object->getItem( id );
    if( !item )
@@ -4929,12 +4933,11 @@ ConsoleMethod( GuiTreeViewCtrl, setItemTooltip, void, 4, 4, "( int id, string te
       return;
    }
    
-   item->mTooltip = (const char*)argv[ 3 ];
+   item->mTooltip = text;
 }
 
-ConsoleMethod( GuiTreeViewCtrl, setItemImages, void, 5, 5, "( int id, int normalImage, int expandedImage ) - Sets the normal and expanded images to show for the given item." )
+DefineConsoleMethod( GuiTreeViewCtrl, setItemImages, void, ( S32 id, S8 normalImage, S8 expandedImage ), , "( int id, int normalImage, int expandedImage ) - Sets the normal and expanded images to show for the given item." )
 {
-   S32 id = dAtoi( argv[ 2 ] );
 
    GuiTreeViewCtrl::Item* item = object->getItem( id );
    if( !item )
@@ -4943,13 +4946,12 @@ ConsoleMethod( GuiTreeViewCtrl, setItemImages, void, 5, 5, "( int id, int normal
       return;
    }
 
-   item->setNormalImage((S8)dAtoi(argv[3]));
-   item->setExpandedImage((S8)dAtoi(argv[4]));
+   item->setNormalImage(normalImage);
+   item->setExpandedImage(expandedImage);
 }
 
-ConsoleMethod( GuiTreeViewCtrl, isParentItem, bool, 3, 3, "( int id ) - Returns true if the given item contains child items." )
+DefineConsoleMethod( GuiTreeViewCtrl, isParentItem, bool, ( S32 id ), , "( int id ) - Returns true if the given item contains child items." )
 {
-   S32 id = dAtoi( argv[ 2 ] );
    if( !id && object->getItemCount() )
       return true;
    
@@ -4963,90 +4965,81 @@ ConsoleMethod( GuiTreeViewCtrl, isParentItem, bool, 3, 3, "( int id ) - Returns
    return item->isParent();
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getItemText, const char *, 3, 3, "(TreeItemId item)")
+DefineConsoleMethod(GuiTreeViewCtrl, getItemText, const char *, (S32 index), , "(TreeItemId item)")
 {
-   return(object->getItemText(dAtoi(argv[2])));
+   return object->getItemText(index);
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getItemValue, const char *, 3, 3, "(TreeItemId item)")
+DefineConsoleMethod(GuiTreeViewCtrl, getItemValue, const char *, (S32 itemId), , "(TreeItemId item)")
 {
-   return(object->getItemValue(dAtoi(argv[2])));
+   return object->getItemValue(itemId);
 }
 
-ConsoleMethod(GuiTreeViewCtrl, editItem, bool, 5, 5, "(TreeItemId item, string newText, string newValue)")
+DefineConsoleMethod(GuiTreeViewCtrl, editItem, bool, (S32 item, const char * newText, const char * newValue), , "(TreeItemId item, string newText, string newValue)")
 {
-   return(object->editItem(dAtoi(argv[2]), argv[3], argv[4]));
+   return(object->editItem(item, newText, newValue));
 }
 
-ConsoleMethod(GuiTreeViewCtrl, removeItem, bool, 3, 3, "(TreeItemId item)")
+DefineConsoleMethod(GuiTreeViewCtrl, removeItem, bool, (S32 itemId), , "(TreeItemId item)")
 {
-   return(object->removeItem(dAtoi(argv[2])));
+   return(object->removeItem(itemId));
 }
 
-ConsoleMethod(GuiTreeViewCtrl, removeAllChildren, void, 3, 3, "removeAllChildren(TreeItemId parent)")
+DefineConsoleMethod(GuiTreeViewCtrl, removeAllChildren, void, (S32 itemId), , "removeAllChildren(TreeItemId parent)")
 {
-   object->removeAllChildren(dAtoi(argv[2]));
+   object->removeAllChildren(itemId);
 }
-ConsoleMethod(GuiTreeViewCtrl, clear, void, 2, 2, "() - empty tree")
+
+DefineConsoleMethod(GuiTreeViewCtrl, clear, void, (), , "() - empty tree")
 {
    object->removeItem(0);
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getFirstRootItem, S32, 2, 2, "Get id for root item.")
+DefineConsoleMethod(GuiTreeViewCtrl, getFirstRootItem, S32, (), , "Get id for root item.")
 {
    return(object->getFirstRootItem());
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getChild, S32, 3, 3, "(TreeItemId item)")
+DefineConsoleMethod(GuiTreeViewCtrl, getChild, S32, (S32 itemId), , "(TreeItemId item)")
 {
-   return(object->getChildItem(dAtoi(argv[2])));
+   return(object->getChildItem(itemId));
 }
 
-ConsoleMethod(GuiTreeViewCtrl, buildVisibleTree, void, 2, 3, "Build the visible tree")
+DefineConsoleMethod(GuiTreeViewCtrl, buildVisibleTree, void, (bool forceFullUpdate), (false), "Build the visible tree")
 {
-   bool forceFullUpdate = false;
-   if( argc > 2 )
-      forceFullUpdate = dAtob( argv[ 2 ] );
       
    object->buildVisibleTree( forceFullUpdate );
 }
 
 //FIXME: [rene 11/09/09 - This clashes with GuiControl.getParent(); bad thing; should be getParentItem]
-ConsoleMethod(GuiTreeViewCtrl, getParent, S32, 3, 3, "(TreeItemId item)")
+DefineConsoleMethod(GuiTreeViewCtrl, getParentItem, S32, (S32 itemId), , "(TreeItemId item)")
 {
-   return(object->getParentItem(dAtoi(argv[2])));
+   return(object->getParentItem(itemId));
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getNextSibling, S32, 3, 3, "(TreeItemId item)")
+DefineConsoleMethod(GuiTreeViewCtrl, getNextSibling, S32, (S32 itemId), , "(TreeItemId item)")
 {
-   return(object->getNextSiblingItem(dAtoi(argv[2])));
+   return(object->getNextSiblingItem(itemId));
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getPrevSibling, S32, 3, 3, "(TreeItemId item)")
+DefineConsoleMethod(GuiTreeViewCtrl, getPrevSibling, S32, (S32 itemId), , "(TreeItemId item)")
 {
-   return(object->getPrevSiblingItem(dAtoi(argv[2])));
+   return(object->getPrevSiblingItem(itemId));
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getItemCount, S32, 2, 2, "")
+DefineConsoleMethod(GuiTreeViewCtrl, getItemCount, S32, (), , "")
 {
    return(object->getItemCount());
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getSelectedItem, S32, 2, 3, "( int index=0 ) - Return the selected item at the given index.")
+DefineConsoleMethod(GuiTreeViewCtrl, getSelectedItem, S32, ( S32 index ), (0), "( int index=0 ) - Return the selected item at the given index.")
 {
-   S32 index = 0;
-   if( argc > 2 )
-      index = dAtoi( argv[ 2 ] );
       
    return ( object->getSelectedItem( index ) );
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getSelectedObject, S32, 2, 3, "( int index=0 ) - Return the currently selected SimObject at the given index in inspector mode or -1")
+DefineConsoleMethod(GuiTreeViewCtrl, getSelectedObject, S32, ( S32 index ), (0), "( int index=0 ) - Return the currently selected SimObject at the given index in inspector mode or -1")
 {
-   S32 index = 0;
-   if( argc > 2 )
-      index = dAtoi( argv[ 2 ] );
-
    GuiTreeViewCtrl::Item *item = object->getItem( object->getSelectedItem( index ) );
    if( item != NULL && item->isInspectorData() )
    {
@@ -5058,15 +5051,47 @@ ConsoleMethod(GuiTreeViewCtrl, getSelectedObject, S32, 2, 3, "( int index=0 ) -
    return -1;
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getSelectedObjectList, const char*, 2, 2, 
+const char* GuiTreeViewCtrl::getSelectedObjectList()
+{
+ char* buff = Con::getReturnBuffer(1024);
+   dSprintf(buff,1024,"");
+
+   const Vector< GuiTreeViewCtrl::Item* > selectedItems = this->getSelectedItems();
+   for(int i = 0; i < selectedItems.size(); i++)
+   {
+      GuiTreeViewCtrl::Item *item = selectedItems[i];
+
+      if ( item->isInspectorData() && item->getObject() )
+      {      
+         S32 id  = item->getObject()->getId();
+         //get the current length of the buffer
+         U32	len = dStrlen(buff);
+         //the start of the buffer where we want to write
+         char* buffPart = buff+len;
+         //the size of the remaining buffer (-1 cause dStrlen doesn't count the \0)
+         S32 size	=	1024-len-1;
+         //write it:
+         if(size < 1)
+         {
+            Con::errorf("GuiTreeViewCtrl::getSelectedItemList - Not enough room to return our object list");
+            return buff;
+         }
+
+         dSprintf(buffPart,size,"%d ", id);
+      }
+   }
+
+   return buff;
+}
+
+DefineConsoleMethod(GuiTreeViewCtrl, getSelectedObjectList, const char*, (), , 
               "Returns a space sperated list of all selected object ids.")
 {
-   static const U32 bufSize = 1024;
-   char* buff = Con::getReturnBuffer(bufSize);
-   dSprintf(buff,bufSize,"");
+   char* buff = Con::getReturnBuffer(1024);
+   dSprintf(buff,1024,"");
 
    const Vector< GuiTreeViewCtrl::Item* > selectedItems = object->getSelectedItems();
-   for(S32 i = 0; i < selectedItems.size(); i++)
+   for(int i = 0; i < selectedItems.size(); i++)
    {
       GuiTreeViewCtrl::Item *item = selectedItems[i];
 
@@ -5078,7 +5103,7 @@ ConsoleMethod(GuiTreeViewCtrl, getSelectedObjectList, const char*, 2, 2,
          //the start of the buffer where we want to write
          char* buffPart = buff+len;
          //the size of the remaining buffer (-1 cause dStrlen doesn't count the \0)
-         S32 size = bufSize-len-1;
+         S32 size	=	1024-len-1;
          //write it:
          if(size < 1)
          {
@@ -5093,46 +5118,43 @@ ConsoleMethod(GuiTreeViewCtrl, getSelectedObjectList, const char*, 2, 2,
    return buff;
 }
 
-ConsoleMethod(GuiTreeViewCtrl, moveItemUp, void, 3, 3, "(TreeItemId item)")
+DefineConsoleMethod(GuiTreeViewCtrl, moveItemUp, void, (S32 index), , "(TreeItemId item)")
 {
-   object->moveItemUp( dAtoi( argv[2] ) );
+   object->moveItemUp( index );
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getSelectedItemsCount, S32, 2, 2, "")
+DefineConsoleMethod(GuiTreeViewCtrl, getSelectedItemsCount, S32, (), , "")
 {
    return ( object->getSelectedItemsCount() );
 }
 
 
 
-ConsoleMethod(GuiTreeViewCtrl, moveItemDown, void, 3, 3, "(TreeItemId item)")
+DefineConsoleMethod(GuiTreeViewCtrl, moveItemDown, void, (S32 index), , "(TreeItemId item)")
 {
-   object->moveItemDown( dAtoi( argv[2] ) );
+   object->moveItemDown( index );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(GuiTreeViewCtrl, getTextToRoot, const char*,4,4,"(TreeItemId item,Delimiter=none) gets the text from the current node to the root, concatenating at each branch upward, with a specified delimiter optionally")
+DefineConsoleMethod(GuiTreeViewCtrl, getTextToRoot, const char*, (S32 itemId, const char * delimiter), ,
+   "(TreeItemId item,Delimiter=none) gets the text from the current node to the root, concatenating at each branch upward, with a specified delimiter optionally")
 {
-   if ( argc < 4 )
+   if ( delimiter == "" )
    {
       Con::warnf("GuiTreeViewCtrl::getTextToRoot - Invalid number of arguments!");
       return ("");
    }
-   S32 itemId = dAtoi( argv[2] );
-   StringTableEntry delimiter = argv[3];
-
    return object->getTextToRoot( itemId, delimiter );
 }
 
-ConsoleMethod(GuiTreeViewCtrl, getSelectedItemList,const char*, 2,2,"returns a space seperated list of mulitple item ids")
+DefineConsoleMethod(GuiTreeViewCtrl, getSelectedItemList,const char*, (), ,"returns a space seperated list of mulitple item ids")
 {
-	static const U32 bufSize = 1024;
-	char* buff = Con::getReturnBuffer(bufSize);
-	dSprintf(buff,bufSize,"");
+	char* buff = Con::getReturnBuffer(1024);
+	dSprintf(buff,1024,"");
 
    const Vector< S32 >& selected = object->getSelected();
-	for(S32 i = 0; i < selected.size(); i++)
+	for(int i = 0; i < selected.size(); i++)
 	{
 		S32 id  = selected[i];
 		//get the current length of the buffer
@@ -5140,7 +5162,7 @@ ConsoleMethod(GuiTreeViewCtrl, getSelectedItemList,const char*, 2,2,"returns a s
 		//the start of the buffer where we want to write
 		char* buffPart = buff+len;
 		//the size of the remaining buffer (-1 cause dStrlen doesn't count the \0)
-		S32 size	=	bufSize-len-1;
+		S32 size	=	1024-len-1;
 		//write it:
 		if(size < 1)
 		{
@@ -5167,13 +5189,13 @@ S32 GuiTreeViewCtrl::findItemByObjectId(S32 iObjId)
 		   return mItems[i]->mId;
    }
 
-   return -1;
+   return 0;
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod(GuiTreeViewCtrl, findItemByObjectId, S32, 3, 3, "(find item by object id and returns the mId)")
+DefineConsoleMethod(GuiTreeViewCtrl, findItemByObjectId, S32, ( S32 itemId ), , "(find item by object id and returns the mId)")
 {
-   return(object->findItemByObjectId(dAtoi(argv[2])));
+   return(object->findItemByObjectId(itemId));
 }
 
 //------------------------------------------------------------------------------
@@ -5216,30 +5238,17 @@ bool GuiTreeViewCtrl::scrollVisibleByObjectId(S32 objID)
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod(GuiTreeViewCtrl, scrollVisibleByObjectId, S32, 3, 3, "(show item by object id. returns true if sucessful.)")
+DefineConsoleMethod(GuiTreeViewCtrl, scrollVisibleByObjectId, S32, ( S32 itemId ), , "(show item by object id. returns true if sucessful.)")
 {
-   return(object->scrollVisibleByObjectId(dAtoi(argv[2])));
+   return(object->scrollVisibleByObjectId(itemId));
 }
 
 //------------------------------------------------------------------------------
 
 //FIXME: this clashes with SimSet.sort()
-ConsoleMethod( GuiTreeViewCtrl, sort, void, 2, 6, "( int parent, bool traverseHierarchy=false, bool parentsFirst=false, bool caseSensitive=true ) - Sorts all items of the given parent (or root).  With 'hierarchy', traverses hierarchy." )
+DefineConsoleMethod( GuiTreeViewCtrl, sort, void, ( S32 parent, bool traverseHierarchy, bool parentsFirst, bool caseSensitive ), ( 0, false, false, true ), 
+   "( int parent, bool traverseHierarchy=false, bool parentsFirst=false, bool caseSensitive=true ) - Sorts all items of the given parent (or root).  With 'hierarchy', traverses hierarchy." )
 {
-   S32 parent = 0;
-   if( argc >= 3 )
-      parent = dAtoi( argv[ 2 ] );
-
-   bool traverseHierarchy = false;
-   bool parentsFirst = false;
-   bool caseSensitive = true;
-   
-   if( argc >= 4 )
-      traverseHierarchy = dAtob( argv[ 3 ] );
-   if( argc >= 5 )
-      parentsFirst = dAtob( argv[ 4 ] );
-   if( argc >= 6 )
-      caseSensitive = dAtob( argv[ 5 ] );
       
    if( !parent )
       object->sortTree( caseSensitive, traverseHierarchy, parentsFirst );
@@ -5326,19 +5335,18 @@ void GuiTreeViewCtrl::showItemRenameCtrl( Item* item )
    }
 }
 
-ConsoleMethod( GuiTreeViewCtrl, cancelRename, void, 2, 2, "For internal use." )
+DefineConsoleMethod( GuiTreeViewCtrl, cancelRename, void, (), , "For internal use." )
 {
    object->cancelRename();
 }
 
-ConsoleMethod( GuiTreeViewCtrl, onRenameValidate, void, 2, 2, "For internal use." )
+DefineConsoleMethod( GuiTreeViewCtrl, onRenameValidate, void, (), , "For internal use." )
 {
    object->onRenameValidate();
 }
 
-ConsoleMethod( GuiTreeViewCtrl, showItemRenameCtrl, void, 3, 3, "( TreeItemId id ) - Show the rename text field for the given item (only one at a time)." )
+DefineConsoleMethod( GuiTreeViewCtrl, showItemRenameCtrl, void, ( S32 id ), , "( TreeItemId id ) - Show the rename text field for the given item (only one at a time)." )
 {
-   S32 id = dAtoi( argv[ 2 ] );
    GuiTreeViewCtrl::Item* item = object->getItem( id );
    if( !item )
    {
@@ -5349,11 +5357,8 @@ ConsoleMethod( GuiTreeViewCtrl, showItemRenameCtrl, void, 3, 3, "( TreeItemId id
    object->showItemRenameCtrl( item );
 }
 
-ConsoleMethod( GuiTreeViewCtrl, setDebug, void, 2, 3, "( bool value=true ) - Enable/disable debug output." )
+DefineConsoleMethod( GuiTreeViewCtrl, setDebug, void, ( bool value ), (true), "( bool value=true ) - Enable/disable debug output." )
 {
-   bool value = true;
-   if( argc > 2 )
-      value = dAtob( argv[ 2 ] );
       
    object->setDebug( value );
 }

+ 4 - 0
Engine/source/gui/controls/guiTreeViewCtrl.h

@@ -454,6 +454,9 @@ class GuiTreeViewCtrl : public GuiArrayCtrl
       GuiTreeViewCtrl();
       virtual ~GuiTreeViewCtrl();
 
+		//WLE Vince, Moving this into a function so I don't have to bounce off the console.  12/05/2013
+		const char* getSelectedObjectList();
+
       /// Used for syncing the mSelected and mSelectedItems lists.
       void syncSelection();
 
@@ -592,6 +595,7 @@ class GuiTreeViewCtrl : public GuiArrayCtrl
       static void initPersistFields();
 
       void inspectObject(SimObject * obj, bool okToEdit);
+	  S32 insertObject(S32 parentId, SimObject * obj, bool okToEdit);
       void buildVisibleTree(bool bForceFullUpdate = false);
 
       void cancelRename();

+ 27 - 49
Engine/source/gui/core/guiCanvas.cpp

@@ -2015,25 +2015,18 @@ ConsoleDocFragment _pushDialog(
    "void pushDialog( GuiControl ctrl, int layer=0, bool center=false);"
 );
 
-ConsoleMethod( GuiCanvas, pushDialog, void, 3, 5, "(GuiControl ctrl, int layer=0, bool center=false)"
+DefineConsoleMethod( GuiCanvas, pushDialog, void, (const char * ctrlName, S32 layer, bool center), ( 0, false), "(GuiControl ctrl, int layer=0, bool center=false)"
 			  "@hide")
 {
    GuiControl *gui;
 
-   if (!	Sim::findObject(argv[2], gui))
+   if (!	Sim::findObject(ctrlName, gui))
    {
-      Con::printf("%s(): Invalid control: %s", (const char*)argv[0], (const char*)argv[2]);
+      Con::printf("pushDialog(): Invalid control: %s", ctrlName);
       return;
    }
 
    //find the layer
-   S32 layer = 0;
-   if( argc > 3 )
-      layer = dAtoi( argv[ 3 ] );
-      
-   bool center = false;
-   if( argc > 4 )
-      center = dAtob( argv[ 4 ] );
 
    //set the new content control
    object->pushDialogControl(gui, layer, center);
@@ -2059,18 +2052,9 @@ ConsoleDocFragment _popDialog2(
    "void popDialog();"
 );
 
-ConsoleMethod( GuiCanvas, popDialog, void, 2, 3, "(GuiControl ctrl=NULL)"
+DefineConsoleMethod( GuiCanvas, popDialog, void, (GuiControl * gui), , "(GuiControl ctrl=NULL)"
 			  "@hide")
 {
-   GuiControl *gui = NULL;
-   if (argc == 3)
-   {
-      if (!Sim::findObject(argv[2], gui))
-      {
-         Con::printf("%s(): Invalid control: %s", (const char*)argv[0], (const char*)argv[2]);
-         return;
-      }
-   }
 
    if (gui)
       object->popDialogControl(gui);
@@ -2097,12 +2081,9 @@ ConsoleDocFragment _popLayer2(
 	"void popLayer(S32 layer);"
 );
 
-ConsoleMethod( GuiCanvas, popLayer, void, 2, 3, "(int layer)" 
+DefineConsoleMethod( GuiCanvas, popLayer, void, (S32 layer), (0), "(int layer)" 
 			  "@hide")
 {
-   S32 layer = 0;
-   if (argc == 3)
-      layer = dAtoi(argv[2]);
 
    object->popDialogControl(layer);
 }
@@ -2255,15 +2236,9 @@ ConsoleDocFragment _setCursorPos2(
    "bool setCursorPos( F32 posX, F32 posY);"
 );
 
-ConsoleMethod( GuiCanvas, setCursorPos, void, 3, 4, "(Point2I pos)"
+DefineConsoleMethod( GuiCanvas, setCursorPos, void, (Point2I pos), , "(Point2I pos)"
 			  "@hide")
 {
-   Point2I pos(0,0);
-
-   if(argc == 4)
-      pos.set(dAtoi(argv[2]), dAtoi(argv[3]));
-   else
-      dSscanf(argv[2], "%d %d", &pos.x, &pos.y);
 
    object->setCursorPos(pos);
 }
@@ -2546,7 +2521,7 @@ DefineEngineMethod( GuiCanvas, setWindowPosition, void, ( Point2I position ),,
    object->getPlatformWindow()->setPosition( position );
 }
 
-ConsoleMethod( GuiCanvas, isFullscreen, bool, 2, 2, "() - Is this canvas currently fullscreen?" )
+DefineConsoleMethod( GuiCanvas, isFullscreen, bool, (), , "() - Is this canvas currently fullscreen?" )
 {
    if (Platform::getWebDeployment())
       return false;
@@ -2557,14 +2532,14 @@ ConsoleMethod( GuiCanvas, isFullscreen, bool, 2, 2, "() - Is this canvas current
    return object->getPlatformWindow()->getVideoMode().fullScreen;
 }
 
-ConsoleMethod( GuiCanvas, minimizeWindow, void, 2, 2, "() - minimize this canvas' window." )
+DefineConsoleMethod( GuiCanvas, minimizeWindow, void, (), , "() - minimize this canvas' window." )
 {
    PlatformWindow* window = object->getPlatformWindow();
    if ( window )
       window->minimize();
 }
 
-ConsoleMethod( GuiCanvas, isMinimized, bool, 2, 2, "()" )
+DefineConsoleMethod( GuiCanvas, isMinimized, bool, (), , "()" )
 {
    PlatformWindow* window = object->getPlatformWindow();
    if ( window )
@@ -2573,7 +2548,7 @@ ConsoleMethod( GuiCanvas, isMinimized, bool, 2, 2, "()" )
    return false;
 }
 
-ConsoleMethod( GuiCanvas, isMaximized, bool, 2, 2, "()" )
+DefineConsoleMethod( GuiCanvas, isMaximized, bool, (), , "()" )
 {
    PlatformWindow* window = object->getPlatformWindow();
    if ( window )
@@ -2582,28 +2557,30 @@ ConsoleMethod( GuiCanvas, isMaximized, bool, 2, 2, "()" )
    return false;
 }
 
-ConsoleMethod( GuiCanvas, maximizeWindow, void, 2, 2, "() - maximize this canvas' window." )
+DefineConsoleMethod( GuiCanvas, maximizeWindow, void, (), , "() - maximize this canvas' window." )
 {
    PlatformWindow* window = object->getPlatformWindow();
    if ( window )
       window->maximize();
 }
 
-ConsoleMethod( GuiCanvas, restoreWindow, void, 2, 2, "() - restore this canvas' window." )
+DefineConsoleMethod( GuiCanvas, restoreWindow, void, (), , "() - restore this canvas' window." )
 {
    PlatformWindow* window = object->getPlatformWindow();
    if( window )
       window->restore();
 }
 
-ConsoleMethod( GuiCanvas, setFocus, void, 2,2, "() - Claim OS input focus for this canvas' window.")
+DefineConsoleMethod( GuiCanvas, setFocus, void, (), , "() - Claim OS input focus for this canvas' window.")
 {
    PlatformWindow* window = object->getPlatformWindow();
    if( window )
       window->setFocus();
 }
 
-ConsoleMethod( GuiCanvas, setVideoMode, void, 5, 8,
+DefineConsoleMethod( GuiCanvas, setVideoMode, void, 
+               (U32 width, U32 height, bool fullscreen, U32 bitDepth, U32 refreshRate, U32 antialiasLevel), 
+               ( false, 0, 0, 0),
                "(int width, int height, bool fullscreen, [int bitDepth], [int refreshRate], [int antialiasLevel] )\n"
                "Change the video mode of this canvas. This method has the side effect of setting the $pref::Video::mode to the new values.\n\n"
                "\\param width The screen width to set.\n"
@@ -2622,8 +2599,6 @@ ConsoleMethod( GuiCanvas, setVideoMode, void, 5, 8,
    // Update the video mode and tell the window to reset.
    GFXVideoMode vm = object->getPlatformWindow()->getVideoMode();
 
-   U32 width = dAtoi(argv[2]);
-   U32 height = dAtoi(argv[3]);
 
    bool changed = false;
    if (width == 0 && height > 0)
@@ -2670,28 +2645,31 @@ ConsoleMethod( GuiCanvas, setVideoMode, void, 5, 8,
    }
 
    if (changed)
-      Con::errorf("GuiCanvas::setVideoMode(): Error - Invalid resolution of (%d, %d) - attempting (%d, %d)", dAtoi(argv[2]), dAtoi(argv[3]), width, height);
+   {
+      Con::errorf("GuiCanvas::setVideoMode(): Error - Invalid resolution of (%d, %d) - attempting (%d, %d)", width, height, width, height);
+   }
 
    vm.resolution  = Point2I(width, height);
-   vm.fullScreen  = dAtob(argv[4]);
+   vm.fullScreen  = fullscreen;
 
    if (Platform::getWebDeployment())
       vm.fullScreen  = false;
 
    // These optional params are set to default at construction of vm. If they
    // aren't specified, just leave them at whatever they were set to.
-   if ((argc > 5) && (dStrlen(argv[5]) > 0))
+   if (bitDepth > 0)
    {
-      vm.bitDepth = dAtoi(argv[5]);
+      vm.bitDepth = refreshRate;
    }
-   if ((argc > 6) && (dStrlen(argv[6]) > 0))
+
+   if (refreshRate > 0)
    {
-      vm.refreshRate = dAtoi(argv[6]);
+      vm.refreshRate = refreshRate;
    }
 
-   if ((argc > 7) && (dStrlen(argv[7]) > 0))
+   if (antialiasLevel > 0)
    {
-      vm.antialiasLevel = dAtoi(argv[7]);
+      vm.antialiasLevel = antialiasLevel;
    }
 
    object->getPlatformWindow()->setVideoMode(vm);

+ 28 - 17
Engine/source/gui/core/guiControl.cpp

@@ -2612,17 +2612,21 @@ DefineEngineMethod( GuiControl, setValue, void, ( const char* value ),,
    object->setScriptValue( value );
 }
 
-ConsoleMethod( GuiControl, getValue, const char*, 2, 2, "")
+//ConsoleMethod( GuiControl, getValue, const char*, 2, 2, "")
+DefineConsoleMethod( GuiControl, getValue, const char*, (), , "")
 {
    return object->getScriptValue();
 }
 
-ConsoleMethod( GuiControl, makeFirstResponder, void, 3, 3, "(bool isFirst)")
+//ConsoleMethod( GuiControl, makeFirstResponder, void, 3, 3, "(bool isFirst)")
+DefineConsoleMethod( GuiControl, makeFirstResponder, void, (bool isFirst), , "(bool isFirst)")
 {
-   object->makeFirstResponder(dAtob(argv[2]));
+   //object->makeFirstResponder(dAtob(argv[2]));
+   object->makeFirstResponder(isFirst);
 }
 
-ConsoleMethod( GuiControl, isActive, bool, 2, 2, "")
+//ConsoleMethod( GuiControl, isActive, bool, 2, 2, "")
+DefineConsoleMethod( GuiControl, isActive, bool, (), , "")
 {
    return object->isActive();
 }
@@ -2805,22 +2809,29 @@ static ConsoleDocFragment _sGuiControlSetExtent2(
    "GuiControl", // The class to place the method in; use NULL for functions.
    "void setExtent( Point2I p );" ); // The definition string.
 
-ConsoleMethod( GuiControl, setExtent, void, 3, 4,
-   "( Point2I p | int x, int y ) Set the width and height of the control.\n\n"
+//ConsoleMethod( GuiControl, setExtent, void, 3, 4,
+DefineConsoleMethod( GuiControl, setExtent, void, ( Point2F ext ), ,
+   " Set the width and height of the control.\n\n"
    "@hide" )
 {
-   if ( argc == 3 )
-   {
-      // We scan for floats because its possible that math 
-      // done on the extent can result in fractional values.
-      Point2F ext;
-      if ( dSscanf( argv[2], "%g %g", &ext.x, &ext.y ) == 2 )
+   //if ( argc == 3 )
+   //if ( pOrX != "" && y == ""  )
+   //{
+   //   // We scan for floats because its possible that math 
+   //   // done on the extent can result in fractional values.
+   //   Point2F ext;
+   //   //if ( dSscanf( argv[2], "%g %g", &ext.x, &ext.y ) == 2 )
+   //   if ( dSscanf( pOrX, "%g %g", &ext.x, &ext.y ) == 2 )
          object->setExtent( (S32)ext.x, (S32)ext.y );
-      else
-         Con::errorf( "GuiControl::setExtent, not enough parameters!" );
-   }
-   else if ( argc == 4 )
-      object->setExtent( dAtoi(argv[2]), dAtoi(argv[3]) );
+   //   else
+   //      Con::errorf( "GuiControl::setExtent, not enough parameters!" );
+   //}
+   ////else if ( argc == 4 )
+   //else if ( pOrX != "" && y != "" )
+   //{
+   //   //object->setExtent( dAtoi(argv[2]), dAtoi(argv[3]) );
+   //   object->setExtent( dAtoi(pOrX), dAtoi(y) );
+   //}
 }
 
 //-----------------------------------------------------------------------------

+ 3 - 2
Engine/source/gui/core/guiTypes.cpp

@@ -24,6 +24,7 @@
 #include "platform/types.h"
 #include "console/consoleTypes.h"
 #include "console/console.h"
+#include "console/engineAPI.h"
 #include "gui/core/guiTypes.h"
 #include "gui/core/guiControl.h"
 #include "gfx/gFont.h"
@@ -694,9 +695,9 @@ bool GuiControlProfile::loadFont()
    return true;
 }
 
-ConsoleMethod( GuiControlProfile, getStringWidth, S32, 3, 3, "( pString )" )
+DefineConsoleMethod( GuiControlProfile, getStringWidth, S32, ( const char * pString ), , "( pString )" )
 {
-    return object->mFont->getStrNWidth( argv[2], dStrlen( argv[2] ) );
+    return object->mFont->getStrNWidth( pString, dStrlen( pString ) );
 }
 
 //-----------------------------------------------------------------------------

+ 17 - 17
Engine/source/gui/editor/guiDebugger.cpp

@@ -24,6 +24,7 @@
 #include "gui/editor/guiDebugger.h"
 
 #include "gui/core/guiCanvas.h"
+#include "console/engineAPI.h"
 #include "gfx/gfxDrawUtil.h"
 #include "core/volume.h"
 
@@ -65,61 +66,60 @@ DbgFileView::DbgFileView()
    mSize.set(1, 0);
 }
 
-ConsoleMethod(DbgFileView, setCurrentLine, void, 4, 4, "(int line, bool selected)"
+DefineConsoleMethod(DbgFileView, setCurrentLine, void, (S32 line, bool selected), , "(int line, bool selected)"
               "Set the current highlighted line.")
 {
-   object->setCurrentLine(dAtoi(argv[2]), dAtob(argv[3]));
+   object->setCurrentLine(line, selected);
 }
 
-ConsoleMethod(DbgFileView, getCurrentLine, const char *, 2, 2, "()"
+DefineConsoleMethod(DbgFileView, getCurrentLine, const char *, (), , "()"
               "Get the currently executing file and line, if any.\n\n"
               "@returns A string containing the file, a tab, and then the line number."
               " Use getField() with this.")
 {
 	S32 lineNum;
    const char *file = object->getCurrentLine(lineNum);
-   static const U32 bufSize = 256;
-   char* ret = Con::getReturnBuffer(bufSize);
-	dSprintf(ret, bufSize, "%s\t%d", file, lineNum);
+   char* ret = Con::getReturnBuffer(256);
+	dSprintf(ret, sizeof(ret), "%s\t%d", file, lineNum);
 	return ret;
 }
 
-ConsoleMethod(DbgFileView, open, bool, 3, 3, "(string filename)"
+DefineConsoleMethod(DbgFileView, open, bool, (const char * filename), , "(string filename)"
               "Open a file for viewing.\n\n"
               "@note This loads the file from the local system.")
 {
-   return object->openFile(argv[2]);
+   return object->openFile(filename);
 }
 
-ConsoleMethod(DbgFileView, clearBreakPositions, void, 2, 2, "()"
+DefineConsoleMethod(DbgFileView, clearBreakPositions, void, (), , "()"
               "Clear all break points in the current file.")
 {
    object->clearBreakPositions();
 }
 
-ConsoleMethod(DbgFileView, setBreakPosition, void, 3, 3, "(int line)"
+DefineConsoleMethod(DbgFileView, setBreakPosition, void, (U32 line), , "(int line)"
               "Set a breakpoint at the specified line.")
 {
-   object->setBreakPosition(dAtoi(argv[2]));
+   object->setBreakPosition(line);
 }
 
-ConsoleMethod(DbgFileView, setBreak, void, 3, 3, "(int line)"
+DefineConsoleMethod(DbgFileView, setBreak, void, (U32 line), , "(int line)"
               "Set a breakpoint at the specified line.")
 {
-   object->setBreakPointStatus(dAtoi(argv[2]), true);
+   object->setBreakPointStatus(line, true);
 }
 
-ConsoleMethod(DbgFileView, removeBreak, void, 3, 3, "(int line)"
+DefineConsoleMethod(DbgFileView, removeBreak, void, (U32 line), , "(int line)"
               "Remove a breakpoint from the specified line.")
 {
-   object->setBreakPointStatus(dAtoi(argv[2]), false);
+   object->setBreakPointStatus(line, false);
 }
 
-ConsoleMethod(DbgFileView, findString, bool, 3, 3, "(string findThis)"
+DefineConsoleMethod(DbgFileView, findString, bool, (const char * findThis), , "(string findThis)"
               "Find the specified string in the currently viewed file and "
               "scroll it into view.")
 {
-   return object->findString(argv[2]);
+   return object->findString(findThis);
 }
 
 //this value is the offset used in the ::onRender() method...

+ 43 - 86
Engine/source/gui/editor/guiEditCtrl.cpp

@@ -2468,7 +2468,7 @@ void GuiEditCtrl::startMouseGuideDrag( guideAxis axis, U32 guideIndex, bool lock
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, getContentControl, S32, 2, 2, "() - Return the toplevel control edited inside the GUI editor." )
+DefineConsoleMethod( GuiEditCtrl, getContentControl, S32, (), , "() - Return the toplevel control edited inside the GUI editor." )
 {
    GuiControl* ctrl = object->getContentControl();
    if( ctrl )
@@ -2479,76 +2479,60 @@ ConsoleMethod( GuiEditCtrl, getContentControl, S32, 2, 2, "() - Return the tople
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, setContentControl, void, 3, 3, "( GuiControl ctrl ) - Set the toplevel control to edit in the GUI editor." )
+DefineConsoleMethod( GuiEditCtrl, setContentControl, void, (GuiControl *ctrl ), , "( GuiControl ctrl ) - Set the toplevel control to edit in the GUI editor." )
 {
-   GuiControl *ctrl;
-   if(!Sim::findObject(argv[2], ctrl))
-      return;
-   object->setContentControl(ctrl);
+	if (ctrl)
+		object->setContentControl(ctrl);
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, addNewCtrl, void, 3, 3, "(GuiControl ctrl)")
+DefineConsoleMethod( GuiEditCtrl, addNewCtrl, void, (GuiControl *ctrl), , "(GuiControl ctrl)")
 {
-   GuiControl *ctrl;
-   if(!Sim::findObject(argv[2], ctrl))
-      return;
-   object->addNewControl(ctrl);
+	if (ctrl)
+		object->addNewControl(ctrl);
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, addSelection, void, 3, 3, "selects a control.")
+DefineConsoleMethod( GuiEditCtrl, addSelection, void, (S32 id), , "selects a control.")
 {
-   S32 id = dAtoi(argv[2]);
    object->addSelection(id);
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, removeSelection, void, 3, 3, "deselects a control.")
+DefineConsoleMethod( GuiEditCtrl, removeSelection, void, (S32 id), , "deselects a control.")
 {
-   S32 id = dAtoi(argv[2]);
    object->removeSelection(id);
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, clearSelection, void, 2, 2, "Clear selected controls list.")
+DefineConsoleMethod( GuiEditCtrl, clearSelection, void, (), , "Clear selected controls list.")
 {
    object->clearSelection();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, select, void, 3, 3, "(GuiControl ctrl)")
+DefineConsoleMethod( GuiEditCtrl, select, void, (GuiControl *ctrl), , "(GuiControl ctrl)")
 {
-   GuiControl *ctrl;
-
-   if(!Sim::findObject(argv[2], ctrl))
-      return;
-
+	if (ctrl)
    object->setSelection(ctrl, false);
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, setCurrentAddSet, void, 3, 3, "(GuiControl ctrl)")
+DefineConsoleMethod( GuiEditCtrl, setCurrentAddSet, void, (GuiControl *addSet), , "(GuiControl ctrl)")
 {
-   GuiControl *addSet;
-
-   if (!Sim::findObject(argv[2], addSet))
-   {
-      Con::printf("%s(): Invalid control: %s", (const char*)argv[0], (const char*)argv[2]);
-      return;
-   }
+	if (addSet)
    object->setCurrentAddSet(addSet);
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, getCurrentAddSet, S32, 2, 2, "Returns the set to which new controls will be added")
+DefineConsoleMethod( GuiEditCtrl, getCurrentAddSet, S32, (), , "Returns the set to which new controls will be added")
 {
    const GuiControl* add = object->getCurrentAddSet();
    return add ? add->getId() : 0;
@@ -2556,71 +2540,65 @@ ConsoleMethod( GuiEditCtrl, getCurrentAddSet, S32, 2, 2, "Returns the set to whi
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, toggle, void, 2, 2, "Toggle activation.")
+DefineConsoleMethod( GuiEditCtrl, toggle, void, (), , "Toggle activation.")
 {
    object->setEditMode( !object->isActive() );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, justify, void, 3, 3, "(int mode)" )
+DefineConsoleMethod( GuiEditCtrl, justify, void, (U32 mode), , "(int mode)" )
 {
-   object->justifySelection((GuiEditCtrl::Justification)dAtoi(argv[2]));
+   object->justifySelection( (GuiEditCtrl::Justification)mode );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, bringToFront, void, 2, 2, "")
+DefineConsoleMethod( GuiEditCtrl, bringToFront, void, (), , "")
 {
    object->bringToFront();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, pushToBack, void, 2, 2, "")
+DefineConsoleMethod( GuiEditCtrl, pushToBack, void, (), , "")
 {
    object->pushToBack();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, deleteSelection, void, 2, 2, "() - Delete the selected controls.")
+DefineConsoleMethod( GuiEditCtrl, deleteSelection, void, (), , "() - Delete the selected controls.")
 {
    object->deleteSelection();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, moveSelection, void, 4, 4, "(int dx, int dy) - Move all controls in the selection by (dx,dy) pixels.")
+DefineConsoleMethod( GuiEditCtrl, moveSelection, void, (Point2I pos), , "Move all controls in the selection by (dx,dy) pixels.")
 {
-   object->moveAndSnapSelection(Point2I(dAtoi(argv[2]), dAtoi(argv[3])));
+   object->moveAndSnapSelection(Point2I(pos));
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, saveSelection, void, 2, 3, "( string fileName=null ) - Save selection to file or clipboard.")
+DefineConsoleMethod( GuiEditCtrl, saveSelection, void, (const char * filename), (NULL), "( string fileName=null ) - Save selection to file or clipboard.")
 {
-   const char* filename = NULL;
-   if( argc > 2 )
-      filename = argv[ 2 ];
       
    object->saveSelection( filename );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, loadSelection, void, 2, 3, "( string fileName=null ) - Load selection from file or clipboard.")
+DefineConsoleMethod( GuiEditCtrl, loadSelection, void, (const char * filename), (NULL), "( string fileName=null ) - Load selection from file or clipboard.")
 {
-   const char* filename = NULL;
-   if( argc > 2 )
-      filename = argv[ 2 ];
 
    object->loadSelection( filename );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, selectAll, void, 2, 2, "()")
+DefineConsoleMethod( GuiEditCtrl, selectAll, void, (), , "()")
 {
    object->selectAll();
 }
@@ -2635,14 +2613,14 @@ DefineEngineMethod( GuiEditCtrl, getSelection, SimSet*, (),,
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, getNumSelected, S32, 2, 2, "() - Return the number of controls currently selected." )
+DefineConsoleMethod( GuiEditCtrl, getNumSelected, S32, (), , "() - Return the number of controls currently selected." )
 {
    return object->getNumSelected();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, getSelectionGlobalBounds, const char*, 2, 2, "() - Returns global bounds of current selection as vector 'x y width height'." )
+DefineConsoleMethod( GuiEditCtrl, getSelectionGlobalBounds, const char*, (), , "() - Returns global bounds of current selection as vector 'x y width height'." )
 {
    RectI bounds = object->getSelectionGlobalBounds();
    String str = String::ToString( "%i %i %i %i", bounds.point.x, bounds.point.y, bounds.extent.x, bounds.extent.y );
@@ -2655,22 +2633,16 @@ ConsoleMethod( GuiEditCtrl, getSelectionGlobalBounds, const char*, 2, 2, "() - R
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, selectParents, void, 2, 3, "( bool addToSelection=false ) - Select parents of currently selected controls." )
+DefineConsoleMethod( GuiEditCtrl, selectParents, void, ( bool addToSelection ), (false), "( bool addToSelection=false ) - Select parents of currently selected controls." )
 {
-   bool addToSelection = false;
-   if( argc > 2 )
-      addToSelection = dAtob( argv[ 2 ] );
       
    object->selectParents( addToSelection );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, selectChildren, void, 2, 3, "( bool addToSelection=false ) - Select children of currently selected controls." )
+DefineConsoleMethod( GuiEditCtrl, selectChildren, void, ( bool addToSelection ), (false), "( bool addToSelection=false ) - Select children of currently selected controls." )
 {
-   bool addToSelection = false;
-   if( argc > 2 )
-      addToSelection = dAtob( argv[ 2 ] );
       
    object->selectChildren( addToSelection );
 }
@@ -2685,33 +2657,29 @@ DefineEngineMethod( GuiEditCtrl, getTrash, SimGroup*, (),,
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(GuiEditCtrl, setSnapToGrid, void, 3, 3, "GuiEditCtrl.setSnapToGrid(gridsize)")
+DefineConsoleMethod(GuiEditCtrl, setSnapToGrid, void, (U32 gridsize), , "GuiEditCtrl.setSnapToGrid(gridsize)")
 {
-   U32 gridsize = dAtoi(argv[2]);
    object->setSnapToGrid(gridsize);
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, readGuides, void, 3, 4, "( GuiControl ctrl [, int axis ] ) - Read the guides from the given control." )
+DefineConsoleMethod( GuiEditCtrl, readGuides, void, ( GuiControl* ctrl, S32 axis ), (-1), "( GuiControl ctrl [, int axis ] ) - Read the guides from the given control." )
 {
    // Find the control.
    
-   GuiControl* ctrl;
-   if( !Sim::findObject( argv[ 2 ], ctrl ) )
+   if( !ctrl  )
    {
-      Con::errorf( "GuiEditCtrl::readGuides - no control '%s'", (const char*)argv[ 2 ] );
       return;
    }
    
    // Read the guides.
    
-   if( argc > 3 )
+   if( axis != -1 )
    {
-      S32 axis = dAtoi( argv[ 3 ] );
       if( axis < 0 || axis > 1 )
       {
-         Con::errorf( "GuiEditCtrl::readGuides - invalid axis '%s'", (const char*)argv[ 3 ] );
+         Con::errorf( "GuiEditCtrl::readGuides - invalid axis '%s'", axis );
          return;
       }
       
@@ -2726,25 +2694,22 @@ ConsoleMethod( GuiEditCtrl, readGuides, void, 3, 4, "( GuiControl ctrl [, int ax
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, writeGuides, void, 3, 4, "( GuiControl ctrl [, int axis ] ) - Write the guides to the given control." )
+DefineConsoleMethod( GuiEditCtrl, writeGuides, void, ( GuiControl* ctrl, S32 axis ), ( -1), "( GuiControl ctrl [, int axis ] ) - Write the guides to the given control." )
 {
    // Find the control.
    
-   GuiControl* ctrl;
-   if( !Sim::findObject( argv[ 2 ], ctrl ) )
+   if( ! ctrl ) 
    {
-      Con::errorf( "GuiEditCtrl::writeGuides - no control '%i'", (const char*)argv[ 2 ] );
       return;
    }
    
    // Write the guides.
    
-   if( argc > 3 )
+   if( axis != -1 )
    {
-      S32 axis = dAtoi( argv[ 3 ] );
       if( axis < 0 || axis > 1 )
       {
-         Con::errorf( "GuiEditCtrl::writeGuides - invalid axis '%s'", (const char*)argv[ 3 ] );
+         Con::errorf( "GuiEditCtrl::writeGuides - invalid axis '%s'", axis );
          return;
       }
       
@@ -2759,11 +2724,10 @@ ConsoleMethod( GuiEditCtrl, writeGuides, void, 3, 4, "( GuiControl ctrl [, int a
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, clearGuides, void, 2, 3, "( [ int axis ] ) - Clear all currently set guide lines." )
+DefineConsoleMethod( GuiEditCtrl, clearGuides, void, ( S32 axis ), (-1), "( [ int axis ] ) - Clear all currently set guide lines." )
 {
-   if( argc > 2 )
+   if( axis != -1 )
    {
-      S32 axis = dAtoi( argv[ 2 ] );
       if( axis < 0 || axis > 1 )
       {
          Con::errorf( "GuiEditCtrl::clearGuides - invalid axis '%i'", axis );
@@ -2781,22 +2745,15 @@ ConsoleMethod( GuiEditCtrl, clearGuides, void, 2, 3, "( [ int axis ] ) - Clear a
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, fitIntoParents, void, 2, 4, "( bool width=true, bool height=true ) - Fit selected controls into their parents." )
+DefineConsoleMethod( GuiEditCtrl, fitIntoParents, void, (bool width, bool height), (true, true), "( bool width=true, bool height=true ) - Fit selected controls into their parents." )
 {
-   bool width = true;
-   bool height = true;
-   
-   if( argc > 2 )
-      width = dAtob( argv[ 2 ] );
-   if( argc > 3 )
-      height = dAtob( argv[ 3 ] );
       
    object->fitIntoParents( width, height );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiEditCtrl, getMouseMode, const char*, 2, 2, "() - Return the current mouse mode." )
+DefineConsoleMethod( GuiEditCtrl, getMouseMode, const char*, (), , "() - Return the current mouse mode." )
 {
    switch( object->getMouseMode() )
    {

+ 3 - 3
Engine/source/gui/editor/guiFilterCtrl.cpp

@@ -23,6 +23,7 @@
 #include "platform/platform.h"
 #include "gui/editor/guiFilterCtrl.h"
 
+#include "console/engineAPI.h"
 #include "console/console.h"
 #include "console/consoleTypes.h"
 #include "guiFilterCtrl.h"
@@ -59,10 +60,9 @@ void GuiFilterCtrl::initPersistFields()
    Parent::initPersistFields();
 }
 
-ConsoleMethod( GuiFilterCtrl, getValue, const char*, 2, 2, "Return a tuple containing all the values in the filter."
+DefineConsoleMethod( GuiFilterCtrl, getValue, const char*, (), , "Return a tuple containing all the values in the filter."
 			  "@internal")
 {
-   TORQUE_UNUSED(argv);
    static char buffer[512];
    const Filter *filter = object->get();
    *buffer = 0;
@@ -89,7 +89,7 @@ ConsoleMethod( GuiFilterCtrl, setValue, void, 3, 20, "(f1, f2, ...)"
 	object->set(filter);
 }
 
-ConsoleMethod( GuiFilterCtrl, identity, void, 2, 2, "Reset the filtering."
+DefineConsoleMethod( GuiFilterCtrl, identity, void, (), , "Reset the filtering."
 			  "@internal")
 {
    object->identity();

+ 21 - 33
Engine/source/gui/editor/guiInspector.cpp

@@ -20,6 +20,7 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
+#include "console/engineAPI.h"
 #include "gui/editor/guiInspector.h"
 #include "gui/editor/inspector/field.h"
 #include "gui/editor/inspector/group.h"
@@ -771,14 +772,13 @@ void GuiInspector::sendInspectPostApply()
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspector, inspect, void, 3, 3, "Inspect(Object)")
+DefineConsoleMethod( GuiInspector, inspect, void, (const char * className), , "Inspect(Object)")
 {
-   SimObject * target = Sim::findObject(argv[2]);
+   SimObject * target = Sim::findObject(className);
    if(!target)
    {
-      if(dAtoi(argv[2]) > 0)
-         Con::warnf("%s::inspect(): invalid object: %s", (const char*)argv[0], (const char*)argv[2]);
-
+      if(dAtoi(className) > 0)
+         Con::warnf("GuiInspector::inspect(): invalid object: %s", className);
       object->clearInspectObjects();
       return;
    }
@@ -788,38 +788,29 @@ ConsoleMethod( GuiInspector, inspect, void, 3, 3, "Inspect(Object)")
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspector, addInspect, void, 3, 4, "( id object, (bool autoSync = true) ) - Add the object to the list of objects being inspected." )
+DefineConsoleMethod( GuiInspector, addInspect, void, (const char * className, bool autoSync), (true), "( id object, (bool autoSync = true) ) - Add the object to the list of objects being inspected." )
 {
    SimObject* obj;
-   if( !Sim::findObject( argv[ 2 ], obj ) )
+   if( !Sim::findObject( className, obj ) )
    {
-      Con::errorf( "%s::addInspect(): invalid object: %s", (const char*)argv[ 0 ], (const char*)argv[ 2 ] );
+      Con::errorf( "GuiInspector::addInspect(): invalid object: %s", className );
       return;
    }
 
-   if( argc > 3 )
-		object->addInspectObject( obj, false );
-	else
-		object->addInspectObject( obj );
+	object->addInspectObject( obj, autoSync );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspector, removeInspect, void, 3, 3, "( id object ) - Remove the object from the list of objects being inspected." )
+DefineConsoleMethod( GuiInspector, removeInspect, void, (SimObject* obj), , "( id object ) - Remove the object from the list of objects being inspected." )
 {
-   SimObject* obj;
-   if( !Sim::findObject( argv[ 2 ], obj ) )
-   {
-      Con::errorf( "%s::removeInspect(): invalid object: %s", (const char*)argv[ 0 ], (const char*)argv[ 2 ] );
-      return;
-   }
-   
+	if (object)
    object->removeInspectObject( obj );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspector, refresh, void, 2, 2, "Reinspect the currently selected object." )
+DefineConsoleMethod( GuiInspector, refresh, void, (), , "Reinspect the currently selected object." )
 {
    if ( object->getNumInspectObjects() == 0 )
       return;
@@ -831,11 +822,8 @@ ConsoleMethod( GuiInspector, refresh, void, 2, 2, "Reinspect the currently selec
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspector, getInspectObject, const char*, 2, 3, "getInspectObject( int index=0 ) - Returns currently inspected object" )
+DefineConsoleMethod( GuiInspector, getInspectObject, const char*, (U32 index), (0), "getInspectObject( int index=0 ) - Returns currently inspected object" )
 {
-   U32 index = 0;
-   if( argc > 2 )
-      index = dAtoi( argv[ 2 ] );
       
    if( index >= object->getNumInspectObjects() )
    {
@@ -848,40 +836,40 @@ ConsoleMethod( GuiInspector, getInspectObject, const char*, 2, 3, "getInspectObj
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspector, getNumInspectObjects, S32, 2, 2, "() - Return the number of objects currently being inspected." )
+DefineConsoleMethod( GuiInspector, getNumInspectObjects, S32, (), , "() - Return the number of objects currently being inspected." )
 {
    return object->getNumInspectObjects();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspector, setName, void, 3, 3, "setName(NewObjectName)")
+DefineConsoleMethod( GuiInspector, setName, void, (const char * newObjectName), , "setName(NewObjectName)")
 {
-   object->setName(argv[2]);
+   object->setName(newObjectName);
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspector, apply, void, 2, 2, "apply() - Force application of inspected object's attributes" )
+DefineConsoleMethod( GuiInspector, apply, void, (), , "apply() - Force application of inspected object's attributes" )
 {
    object->sendInspectPostApply();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspector, setObjectField, void, 4, 4, 
+DefineConsoleMethod( GuiInspector, setObjectField, void, (const char * fieldname, const char * data ), , 
    "setObjectField( fieldname, data ) - Set a named fields value on the inspected object if it exists. This triggers all the usual callbacks that would occur if the field had been changed through the gui." )
 {
-   object->setObjectField( argv[2], argv[3] );
+   object->setObjectField( fieldname, data );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleStaticMethod( GuiInspector, findByObject, S32, 2, 2, 
+DefineConsoleStaticMethod( GuiInspector, findByObject, S32, (const char * className ), , 
    "findByObject( SimObject ) - returns the id of an awake inspector that is inspecting the passed object if one exists." )
 {
    SimObject *obj;
-   if ( !Sim::findObject( argv[1], obj ) )   
+   if ( !Sim::findObject( className, obj ) )   
       return NULL;
    
    obj = GuiInspector::findByObject( obj );

+ 1 - 1
Engine/source/gui/editor/guiMenuBar.cpp

@@ -216,7 +216,7 @@ DefineEngineMethod(GuiMenuBar, addMenu, void, (const char* menuText, S32 menuId)
 }
 
 DefineEngineMethod(GuiMenuBar, addMenuItem, void, (const char* targetMenu, const char* menuItemText, S32 menuItemId, const char* accelerator, int checkGroup),
-												 ("","",0,NULL,-1),
+												 ("","",0,"",-1),
    "@brief Adds a menu item to the specified menu.  The menu argument can be either the text of a menu or its id.\n\n"
    "@param menu Menu name or menu Id to add the new item to.\n"
    "@param menuItemText Text for the new menu item.\n"

+ 72 - 114
Engine/source/gui/editor/guiParticleGraphCtrl.cpp

@@ -25,6 +25,7 @@
 #include "gfx/gfxDrawUtil.h"
 #include "console/console.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "gui/core/guiCanvas.h"
 
 #include "gui/editor/guiParticleGraphCtrl.h"
@@ -1008,11 +1009,10 @@ bool GuiParticleGraphCtrl::renderGraphTooltip(Point2I cursorPos, StringTableEntr
    return true;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setSelectedPoint, void, 3, 3, "(int point)"
+DefineConsoleMethod(GuiParticleGraphCtrl, setSelectedPoint, void, (S32 point), , "(int point)"
               "Set the selected point on the graph.\n"
 			  "@return No return value")
 {
-   S32 point = dAtoi(argv[2]);
    if(point >= object->mPlots[object->mSelectedPlot].mGraphData.size() || point < 0)
    {
 	   Con::errorf("Invalid point to select.");
@@ -1021,11 +1021,10 @@ ConsoleMethod(GuiParticleGraphCtrl, setSelectedPoint, void, 3, 3, "(int point)"
    object->setSelectedPoint( point );
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setSelectedPlot, void, 3, 3, "(int plotID)"
+DefineConsoleMethod(GuiParticleGraphCtrl, setSelectedPlot, void, (S32 plotID), , "(int plotID)"
               "Set the selected plot (a.k.a. graph)."
 			  "@return No return value" )
 {
-   S32 plotID = dAtoi(argv[2]);
    if(plotID > object->MaxPlots)
    {
 	   Con::errorf("Invalid plotID.");
@@ -1034,11 +1033,10 @@ ConsoleMethod(GuiParticleGraphCtrl, setSelectedPlot, void, 3, 3, "(int plotID)"
    object->setSelectedPlot( plotID );
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, clearGraph, void, 3, 3, "(int plotID)"
+DefineConsoleMethod(GuiParticleGraphCtrl, clearGraph, void, (S32 plotID), , "(int plotID)"
               "Clear the graph of the given plot."
 			  "@return No return value")
 {
-   S32 plotID = dAtoi(argv[2]);
    if(plotID > object->MaxPlots)
    {
 	   Con::errorf("Invalid plotID.");
@@ -1047,111 +1045,95 @@ ConsoleMethod(GuiParticleGraphCtrl, clearGraph, void, 3, 3, "(int plotID)"
    object->clearGraph( plotID );
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, clearAllGraphs, void, 2, 2, "()"
+DefineConsoleMethod(GuiParticleGraphCtrl, clearAllGraphs, void, (), , "()"
               "Clear all of the graphs."
 			  "@return No return value")
 {
    object->clearAllGraphs();
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, addPlotPoint, const char*, 5, 6, "(int plotID, float x, float y, bool setAdded = true;)"
+DefineConsoleMethod(GuiParticleGraphCtrl, addPlotPoint, const char*, (S32 plotID, F32 x, F32 y, bool setAdded), (true), "(int plotID, float x, float y, bool setAdded = true;)"
               "Add a data point to the given plot."
 			  "@return")
 {
-   S32 plotID = dAtoi(argv[2]);
    S32 pointAdded = 0;
-   static const U32 bufSize = 32;
-   char *retBuffer = Con::getReturnBuffer(bufSize);
+   char *retBuffer = Con::getReturnBuffer(32);
 
    if(plotID > object->MaxPlots)
    {
 	   Con::errorf("Invalid plotID.");
-	   dSprintf(retBuffer, bufSize, "%d", -2);
+	   dSprintf(retBuffer, 32, "%d", -2);
       return retBuffer;
    }
 
-   if(argc == 5)
-   {
-      pointAdded = object->addPlotPoint( plotID, Point2F(dAtof(argv[3]), dAtof(argv[4])));
-   } else if(argc == 6)
-   {
-      pointAdded = object->addPlotPoint( plotID, Point2F(dAtof(argv[3]), dAtof(argv[4])), dAtob(argv[5]));
-   }
-
+   pointAdded = object->addPlotPoint( plotID, Point2F(x, y), setAdded);
    
-   dSprintf(retBuffer, bufSize, "%d", pointAdded);
+   dSprintf(retBuffer, 32, "%d", pointAdded);
 
    return retBuffer;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, insertPlotPoint, void, 6, 6, "(int plotID, int i, float x, float y)\n"
+DefineConsoleMethod(GuiParticleGraphCtrl, insertPlotPoint, void, (S32 plotID, S32 i, F32 x, F32 y), , "(int plotID, int i, float x, float y)\n"
               "Insert a data point to the given plot and plot position.\n"
 			  "@param plotID The plot you want to access\n"
 			  "@param i The data point.\n"
 			  "@param x,y The plot position.\n"
 			  "@return No return value.")
 {
-   S32 plotID = dAtoi(argv[2]);
    if(plotID > object->MaxPlots)
    {
 	   Con::errorf("Invalid plotID.");
 	   return;
    }
-   object->insertPlotPoint( plotID, dAtoi(argv[3]), Point2F(dAtof(argv[4]), dAtof(argv[5])));
+   object->insertPlotPoint( plotID, i, Point2F(x, y));
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, changePlotPoint, const char*, 6, 6, "(int plotID, int i, float x, float y)"
+DefineConsoleMethod(GuiParticleGraphCtrl, changePlotPoint, const char*, (S32 plotID, S32 i, F32 x, F32 y), , "(int plotID, int i, float x, float y)"
               "Change a data point to the given plot and plot position.\n"
 			  "@param plotID The plot you want to access\n"
 			  "@param i The data point.\n"
 			  "@param x,y The plot position.\n"
 			  "@return No return value.")
 {
-   S32 plotID = dAtoi(argv[2]);
-   static const U32 bufSize = 64;
    if(plotID > object->MaxPlots)
    {
 	   Con::errorf("Invalid plotID.");
 
-      char *retBuffer = Con::getReturnBuffer(bufSize);
+      char *retBuffer = Con::getReturnBuffer(64);
       const S32 index = -1;
-      dSprintf(retBuffer, bufSize, "%d", index);
+      dSprintf(retBuffer, 64, "%d", index);
       return retBuffer;
    }
 
-   char *retBuffer = Con::getReturnBuffer(bufSize);
-   const S32 index = object->changePlotPoint( plotID, dAtoi(argv[3]), Point2F(dAtof(argv[4]), dAtof(argv[5])));
-   dSprintf(retBuffer, bufSize, "%d", index);
+   char *retBuffer = Con::getReturnBuffer(64);
+   const S32 index = object->changePlotPoint( plotID, i, Point2F(x, y));
+   dSprintf(retBuffer, 64, "%d", index);
    return retBuffer;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, getSelectedPlot, const char*, 2, 2, "() "
+DefineConsoleMethod(GuiParticleGraphCtrl, getSelectedPlot, const char*, (), , "() "
               "Gets the selected Plot (a.k.a. graph).\n"
 			  "@return The plot's ID.")
 {
-   static const U32 bufSize = 32;
-   char *retBuffer = Con::getReturnBuffer(bufSize);
+   char *retBuffer = Con::getReturnBuffer(32);
    const S32 plot = object->getSelectedPlot();
-   dSprintf(retBuffer, bufSize, "%d", plot);
+   dSprintf(retBuffer, 32, "%d", plot);
    return retBuffer;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, getSelectedPoint, const char*, 2, 2, "()"
+DefineConsoleMethod(GuiParticleGraphCtrl, getSelectedPoint, const char*, (), , "()"
               "Gets the selected Point on the Plot (a.k.a. graph)."
 			  "@return The last selected point ID")
 {
-   static const U32 bufSize = 32;
-   char *retBuffer = Con::getReturnBuffer(bufSize);
+   char *retBuffer = Con::getReturnBuffer(32);
    const S32 point = object->getSelectedPoint();
-   dSprintf(retBuffer, bufSize, "%d", point);
+   dSprintf(retBuffer, 32, "%d", point);
    return retBuffer;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, isExistingPoint, const char*, 4, 4, "(int plotID, int samples)"
+DefineConsoleMethod(GuiParticleGraphCtrl, isExistingPoint, const char*, (S32 plotID, S32 samples), , "(int plotID, int samples)"
               "@return Returns true or false whether or not the point in the plot passed is an existing point.")
 {
-   S32 plotID = dAtoi(argv[2]);
-   S32 samples = dAtoi(argv[3]);
 
    if(plotID > object->MaxPlots)
    {
@@ -1162,19 +1144,16 @@ ConsoleMethod(GuiParticleGraphCtrl, isExistingPoint, const char*, 4, 4, "(int pl
 	   Con::errorf("Invalid sample.");
    }
 
-   static const U32 bufSize = 32;
-   char *retBuffer = Con::getReturnBuffer(bufSize);
+   char *retBuffer = Con::getReturnBuffer(32);
    const bool isPoint = object->isExistingPoint(plotID, samples);
-   dSprintf(retBuffer, bufSize, "%d", isPoint);
+   dSprintf(retBuffer, 32, "%d", isPoint);
    return retBuffer;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, getPlotPoint, const char*, 4, 4, "(int plotID, int samples)"
+DefineConsoleMethod(GuiParticleGraphCtrl, getPlotPoint, const char*, (S32 plotID, S32 samples), , "(int plotID, int samples)"
               "Get a data point from the plot specified, samples from the start of the graph."
 			  "@return The data point ID")
 {
-   S32 plotID = dAtoi(argv[2]);
-   S32 samples = dAtoi(argv[3]);
 
    if(plotID > object->MaxPlots)
    {
@@ -1185,114 +1164,100 @@ ConsoleMethod(GuiParticleGraphCtrl, getPlotPoint, const char*, 4, 4, "(int plotI
 	   Con::errorf("Invalid sample.");
    }
 
-   static const U32 bufSize = 64;
-   char *retBuffer = Con::getReturnBuffer(bufSize);
+   char *retBuffer = Con::getReturnBuffer(64);
    const Point2F &pos = object->getPlotPoint(plotID, samples);
-   dSprintf(retBuffer, bufSize, "%f %f", pos.x, pos.y);
+   dSprintf(retBuffer, 64, "%f %f", pos.x, pos.y);
    return retBuffer;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, getPlotIndex, const char*, 5, 5, "(int plotID, float x, float y)\n"
+DefineConsoleMethod(GuiParticleGraphCtrl, getPlotIndex, const char*, (S32 plotID, F32 x, F32 y), , "(int plotID, float x, float y)\n"
               "Gets the index of the point passed on the plotID passed (graph ID).\n"
 			  "@param plotID The plot you wish to check.\n"
 			  "@param x,y The coordinates of the point to get.\n"
 			  "@return Returns the index of the point.\n")
 {
-   S32 plotID = dAtoi(argv[2]);
-   F32 x = dAtof(argv[3]);
-   F32 y = dAtof(argv[4]);
 
    if(plotID > object->MaxPlots)
    {
 	   Con::errorf("Invalid plotID.");
    }
 
-   static const U32 bufSize = 32;
-   char *retBuffer = Con::getReturnBuffer(bufSize);
+   char *retBuffer = Con::getReturnBuffer(32);
    const S32 &index = object->getPlotIndex(plotID, x, y);
-   dSprintf(retBuffer, bufSize, "%d", index);
+   dSprintf(retBuffer, 32, "%d", index);
    return retBuffer;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, getGraphColor, const char*, 3, 3, "(int plotID)"
+DefineConsoleMethod(GuiParticleGraphCtrl, getGraphColor, const char*, (S32 plotID), , "(int plotID)"
               "Get the color of the graph passed."
 			  "@return Returns the color of the graph as a string of RGB values formatted as \"R G B\"")
 {
-   S32 plotID = dAtoi(argv[2]);
 
    if(plotID > object->MaxPlots)
    {
 	   Con::errorf("Invalid plotID.");
    }
 
-   static const U32 bufSize = 64;
-   char *retBuffer = Con::getReturnBuffer(bufSize);
+   char *retBuffer = Con::getReturnBuffer(64);
    const ColorF &color = object->getGraphColor(plotID);
-   dSprintf(retBuffer, bufSize, "%f %f %f", color.red, color.green, color.blue);
+   dSprintf(retBuffer, 64, "%f %f %f", color.red, color.green, color.blue);
    return retBuffer;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, getGraphMin, const char*, 3, 3, "(int plotID) "
+DefineConsoleMethod(GuiParticleGraphCtrl, getGraphMin, const char*, (S32 plotID), , "(int plotID) "
               "Get the minimum values of the graph ranges.\n"
 			  "@return Returns the minimum of the range formatted as \"x-min y-min\"")
 {
-   S32 plotID = dAtoi(argv[2]);
 
    if(plotID > object->MaxPlots)
    {
 	   Con::errorf("Invalid plotID.");
    }
 
-   static const U32 bufSize = 64;
-   char *retBuffer = Con::getReturnBuffer(bufSize);
+   char *retBuffer = Con::getReturnBuffer(64);
    const Point2F graphMin = object->getGraphMin(plotID);
-   dSprintf(retBuffer, bufSize, "%f %f", graphMin.x, graphMin.y);
+   dSprintf(retBuffer, 64, "%f %f", graphMin.x, graphMin.y);
    return retBuffer;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, getGraphMax, const char*, 3, 3, "(int plotID) "
+DefineConsoleMethod(GuiParticleGraphCtrl, getGraphMax, const char*, (S32 plotID), , "(int plotID) "
 			  "Get the maximum values of the graph ranges.\n"
 			  "@return Returns the maximum of the range formatted as \"x-max y-max\"")
 {
-   S32 plotID = dAtoi(argv[2]);
 
    if(plotID > object->MaxPlots)
    {
 	   Con::errorf("Invalid plotID.");
    }
 
-   static const U32 bufSize = 64;
-   char *retBuffer = Con::getReturnBuffer(bufSize);
+   char *retBuffer = Con::getReturnBuffer(64);
    const Point2F graphMax = object->getGraphMax(plotID);
-   dSprintf(retBuffer, bufSize, "%f %f", graphMax.x, graphMax.y);
+   dSprintf(retBuffer, 64, "%f %f", graphMax.x, graphMax.y);
    return retBuffer;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, getGraphName, const char*, 3, 3, "(int plotID) "
+DefineConsoleMethod(GuiParticleGraphCtrl, getGraphName, const char*, (S32 plotID), , "(int plotID) "
               "Get the name of the graph passed.\n"
 			  "@return Returns the name of the plot")
 {
-   S32 plotID = dAtoi(argv[2]);
 
    if(plotID > object->MaxPlots)
    {
 	   Con::errorf("Invalid plotID.");
    }
 
-   static const U32 bufSize = 64;
-   char *retBuffer = Con::getReturnBuffer(bufSize);
+   char *retBuffer = Con::getReturnBuffer(64);
    const StringTableEntry graphName = object->getGraphName(plotID);
-   dSprintf(retBuffer, bufSize, "%s", graphName);
+   dSprintf(retBuffer, 64, "%s", graphName);
    return retBuffer;
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setGraphMin, void, 5, 5, "(int plotID, float minX, float minY) "
+DefineConsoleMethod(GuiParticleGraphCtrl, setGraphMin, void, (S32 plotID, F32 minX, F32 minY), , "(int plotID, float minX, float minY) "
 			  "Set the min values of the graph of plotID.\n"
 			  "@param plotID The plot to modify\n"
 			  "@param minX,minY The minimum bound of the value range.\n"
 			  "@return No return value.")
 {
-	S32 plotID = dAtoi(argv[2]);
 
 	if(plotID > object->MaxPlots)
 	{
@@ -1300,16 +1265,15 @@ ConsoleMethod(GuiParticleGraphCtrl, setGraphMin, void, 5, 5, "(int plotID, float
 		return;
 	}
 
-	object->setGraphMin(dAtoi(argv[2]), Point2F(dAtof(argv[3]), dAtof(argv[4])));
+	object->setGraphMin(plotID, Point2F(minX, minY));
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setGraphMinX, void, 4, 4, "(int plotID, float minX) "
+DefineConsoleMethod(GuiParticleGraphCtrl, setGraphMinX, void, (S32 plotID, F32 minX), , "(int plotID, float minX) "
 			  "Set the min X value of the graph of plotID.\n"
 			  "@param plotID The plot to modify.\n"
 			  "@param minX The minimum x value.\n"
 			  "@return No return Value.")
 {
-	S32 plotID = dAtoi(argv[2]);
 
 	if(plotID > object->MaxPlots)
 	{
@@ -1317,16 +1281,15 @@ ConsoleMethod(GuiParticleGraphCtrl, setGraphMinX, void, 4, 4, "(int plotID, floa
 		return;
 	}
 
-	object->setGraphMinX(dAtoi(argv[2]), dAtof(argv[3]));
+	object->setGraphMinX(plotID, minX);
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setGraphMinY, void, 4, 4, "(int plotID, float minY) "
+DefineConsoleMethod(GuiParticleGraphCtrl, setGraphMinY, void, (S32 plotID, F32 minX), , "(int plotID, float minY) "
 			  "Set the min Y value of the graph of plotID."
 			  "@param plotID The plot to modify.\n"
 			  "@param minY The minimum y value.\n"
 			  "@return No return Value.")
 {
-	S32 plotID = dAtoi(argv[2]);
 
 	if(plotID > object->MaxPlots)
 	{
@@ -1334,16 +1297,15 @@ ConsoleMethod(GuiParticleGraphCtrl, setGraphMinY, void, 4, 4, "(int plotID, floa
 		return;
 	}
 
-	object->setGraphMinY(dAtoi(argv[2]), dAtof(argv[3]));
+	object->setGraphMinY(plotID, minX);
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setGraphMax, void, 5, 5, "(int plotID, float maxX, float maxY) "
+DefineConsoleMethod(GuiParticleGraphCtrl, setGraphMax, void, (S32 plotID, F32 maxX, F32 maxY), , "(int plotID, float maxX, float maxY) "
 			  "Set the max values of the graph of plotID."
 			  "@param plotID The plot to modify\n"
 			  "@param maxX,maxY The maximum bound of the value range.\n"
 			  "@return No return value.")
 {
-	S32 plotID = dAtoi(argv[2]);
 
 	if(plotID > object->MaxPlots)
 	{
@@ -1351,16 +1313,15 @@ ConsoleMethod(GuiParticleGraphCtrl, setGraphMax, void, 5, 5, "(int plotID, float
 		return;
 	}
 
-	object->setGraphMax(dAtoi(argv[2]), Point2F(dAtof(argv[3]), dAtof(argv[4])));
+	object->setGraphMax(plotID, Point2F(maxX, maxY));
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setGraphMaxX, void, 4, 4, "(int plotID, float maxX)"
+DefineConsoleMethod(GuiParticleGraphCtrl, setGraphMaxX, void, (S32 plotID, F32 maxX), , "(int plotID, float maxX)"
 			  "Set the max X value of the graph of plotID."
 			  "@param plotID The plot to modify.\n"
 			  "@param maxX The maximum x value.\n"
 			  "@return No return Value.")
 {
-	S32 plotID = dAtoi(argv[2]);
 
 	if(plotID > object->MaxPlots)
 	{
@@ -1368,16 +1329,15 @@ ConsoleMethod(GuiParticleGraphCtrl, setGraphMaxX, void, 4, 4, "(int plotID, floa
 		return;
 	}
 
-	object->setGraphMaxX(dAtoi(argv[2]), dAtof(argv[3]));
+	object->setGraphMaxX(plotID, maxX);
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setGraphMaxY, void, 4, 4, "(int plotID, float maxY)"
+DefineConsoleMethod(GuiParticleGraphCtrl, setGraphMaxY, void, (S32 plotID, F32 maxX), , "(int plotID, float maxY)"
 			  "Set the max Y value of the graph of plotID."
 			  "@param plotID The plot to modify.\n"
 			  "@param maxY The maximum y value.\n"
 			  "@return No return Value.")
 {
-	S32 plotID = dAtoi(argv[2]);
 
 	if(plotID > object->MaxPlots)
 	{
@@ -1385,14 +1345,13 @@ ConsoleMethod(GuiParticleGraphCtrl, setGraphMaxY, void, 4, 4, "(int plotID, floa
 		return;
 	}
 
-	object->setGraphMaxY(dAtoi(argv[2]), dAtof(argv[3]));
+	object->setGraphMaxY(plotID, maxX);
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setGraphHidden, void, 4, 4, "(int plotID, bool isHidden)"
+DefineConsoleMethod(GuiParticleGraphCtrl, setGraphHidden, void, (S32 plotID, bool isHidden), , "(int plotID, bool isHidden)"
 			  "Set whether the graph number passed is hidden or not."
 			  "@return No return value.")
 {
-	S32 plotID = dAtoi(argv[2]);
 
 	if(plotID > object->MaxPlots)
 	{
@@ -1400,52 +1359,51 @@ ConsoleMethod(GuiParticleGraphCtrl, setGraphHidden, void, 4, 4, "(int plotID, bo
 		return;
 	}
 
-	object->setGraphHidden(dAtoi(argv[2]), dAtob(argv[3]));
+	object->setGraphHidden(plotID, isHidden);
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setAutoGraphMax, void, 3, 3, "(bool autoMax) "
+DefineConsoleMethod(GuiParticleGraphCtrl, setAutoGraphMax, void, (bool autoMax), , "(bool autoMax) "
 			  "Set whether the max will automatically be set when adding points "
 			  "(ie if you add a value over the current max, the max is increased to that value).\n"
 			  "@return No return value.")
 {
-	object->setAutoGraphMax(dAtob(argv[2]));
+	object->setAutoGraphMax(autoMax);
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setAutoRemove, void, 3, 3, "(bool autoRemove) "
+DefineConsoleMethod(GuiParticleGraphCtrl, setAutoRemove, void, (bool autoRemove), , "(bool autoRemove) "
 			  "Set whether or not a point should be deleted when you drag another one over it."
 			  "@return No return value.")
 {
-	object->setAutoRemove(dAtob(argv[2]));
+	object->setAutoRemove(autoRemove);
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setRenderAll, void, 3, 3, "(bool renderAll)"
+DefineConsoleMethod(GuiParticleGraphCtrl, setRenderAll, void, (bool autoRemove), , "(bool renderAll)"
 			  "Set whether or not a position should be rendered on every point or just the last selected."
 			  "@return No return value.")
 {
-	object->setRenderAll(dAtob(argv[2]));
+	object->setRenderAll(autoRemove);
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setPointXMovementClamped, void, 3, 3, "(bool clamped)"
+DefineConsoleMethod(GuiParticleGraphCtrl, setPointXMovementClamped, void, (bool autoRemove), , "(bool clamped)"
 			  "Set whether the x position of the selected graph point should be clamped"
 			  "@return No return value.")
 {
-	object->setPointXMovementClamped(dAtob(argv[2]));
+	object->setPointXMovementClamped(autoRemove);
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setRenderGraphTooltip, void, 3, 3, "(bool renderGraphTooltip)"
+DefineConsoleMethod(GuiParticleGraphCtrl, setRenderGraphTooltip, void, (bool autoRemove), , "(bool renderGraphTooltip)"
 			  "Set whether or not to render the graph tooltip."
 			  "@return No return value.")
 {
-	object->setRenderGraphTooltip(dAtob(argv[2]));
+	object->setRenderGraphTooltip(autoRemove);
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, setGraphName, void, 4, 4, "(int plotID, string graphName) "
+DefineConsoleMethod(GuiParticleGraphCtrl, setGraphName, void, (S32 plotID, const char * graphName), , "(int plotID, string graphName) "
 			  "Set the name of the given plot.\n"
 			  "@param plotID The plot to modify.\n"
 			  "@param graphName The name to set on the plot.\n"
 			  "@return No return value.")
 {
-	S32 plotID = dAtoi(argv[2]);
 
 	if(plotID > object->MaxPlots)
 	{
@@ -1453,10 +1411,10 @@ ConsoleMethod(GuiParticleGraphCtrl, setGraphName, void, 4, 4, "(int plotID, stri
 		return;
 	}
 
-	object->setGraphName(dAtoi(argv[2]), argv[3]);
+	object->setGraphName(plotID, graphName);
 }
 
-ConsoleMethod(GuiParticleGraphCtrl, resetSelectedPoint, void, 2, 2, "()"
+DefineConsoleMethod(GuiParticleGraphCtrl, resetSelectedPoint, void, (), , "()"
 			  "This will reset the currently selected point to nothing."
 			  "@return No return value.")
 {

+ 1 - 0
Engine/source/gui/editor/guiRectHandles.cpp

@@ -22,6 +22,7 @@
 
 #include "console/console.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "gfx/gfxDevice.h"
 #include "gfx/gfxDrawUtil.h"
 

+ 3 - 2
Engine/source/gui/editor/inspector/dynamicField.cpp

@@ -24,6 +24,7 @@
 #include "gui/editor/inspector/dynamicGroup.h"
 #include "gui/editor/guiInspector.h"
 #include "gui/buttons/guiIconButtonCtrl.h"
+#include "console/engineAPI.h"
 
 //-----------------------------------------------------------------------------
 // GuiInspectorDynamicField - Child class of GuiInspectorField 
@@ -315,7 +316,7 @@ void GuiInspectorDynamicField::_executeSelectedCallback()
       Con::executef( mInspector, "onFieldSelected", mDynField->slotName, "TypeDynamicField" );
 }
 
-ConsoleMethod( GuiInspectorDynamicField, renameField, void, 3,3, "field.renameField(newDynamicFieldName);" )
+DefineConsoleMethod( GuiInspectorDynamicField, renameField, void, (const char* newDynamicFieldName),, "field.renameField(newDynamicFieldName);" )
 {
-   object->renameField( argv[ 2 ] );
+   object->renameField( newDynamicFieldName );
 }

+ 4 - 3
Engine/source/gui/editor/inspector/dynamicGroup.cpp

@@ -24,6 +24,7 @@
 #include "gui/editor/guiInspector.h"
 #include "gui/editor/inspector/dynamicGroup.h"
 #include "gui/editor/inspector/dynamicField.h"
+#include "console/engineAPI.h"
 
 IMPLEMENT_CONOBJECT(GuiInspectorDynamicGroup);
 
@@ -176,7 +177,7 @@ void GuiInspectorDynamicGroup::updateAllFields()
    inspectGroup();
 }
 
-ConsoleMethod(GuiInspectorDynamicGroup, inspectGroup, bool, 2, 2, "Refreshes the dynamic fields in the inspector.")
+DefineConsoleMethod(GuiInspectorDynamicGroup, inspectGroup, bool, (), , "Refreshes the dynamic fields in the inspector.")
 {
    return object->inspectGroup();
 }
@@ -251,11 +252,11 @@ void GuiInspectorDynamicGroup::addDynamicField()
    instantExpand();
 }
 
-ConsoleMethod( GuiInspectorDynamicGroup, addDynamicField, void, 2, 2, "obj.addDynamicField();" )
+DefineConsoleMethod( GuiInspectorDynamicGroup, addDynamicField, void, (), , "obj.addDynamicField();" )
 {
    object->addDynamicField();
 }
 
-ConsoleMethod( GuiInspectorDynamicGroup, removeDynamicField, void, 3, 3, "" )
+DefineConsoleMethod( GuiInspectorDynamicGroup, removeDynamicField, void, (), , "" )
 {
 }

+ 10 - 13
Engine/source/gui/editor/inspector/field.cpp

@@ -20,6 +20,7 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
+#include "console/engineAPI.h"
 #include "platform/platform.h"
 #include "gui/editor/inspector/field.h"
 #include "gui/buttons/guiIconButtonCtrl.h"
@@ -615,53 +616,49 @@ void GuiInspectorField::_setFieldDocs( StringTableEntry docs )
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspectorField, getInspector, S32, 2, 2, "() - Return the GuiInspector to which this field belongs." )
+DefineConsoleMethod( GuiInspectorField, getInspector, S32, (), , "() - Return the GuiInspector to which this field belongs." )
 {
    return object->getInspector()->getId();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspectorField, getInspectedFieldName, const char*, 2, 2, "() - Return the name of the field edited by this inspector field." )
+DefineConsoleMethod( GuiInspectorField, getInspectedFieldName, const char*, (), , "() - Return the name of the field edited by this inspector field." )
 {
    return object->getFieldName();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspectorField, getInspectedFieldType, const char*, 2, 2, "() - Return the type of the field edited by this inspector field." )
+DefineConsoleMethod( GuiInspectorField, getInspectedFieldType, const char*, (), , "() - Return the type of the field edited by this inspector field." )
 {
    return object->getFieldType();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspectorField, apply, void, 3, 4, "( string newValue, bool callbacks=true ) - Set the field's value. Suppress callbacks for undo if callbacks=false." )
+DefineConsoleMethod( GuiInspectorField, apply, void, ( const char * newValue, bool callbacks ), ("", true), "( string newValue, bool callbacks=true ) - Set the field's value. Suppress callbacks for undo if callbacks=false." )
 {
-   bool callbacks = true;
-   if( argc > 3 )
-      callbacks = dAtob( argv[ 3 ] );
-      
-   object->setData( argv[ 2 ], callbacks );
+   object->setData( newValue, callbacks );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspectorField, applyWithoutUndo, void, 3, 3, "() - Set field value without recording undo (same as 'apply( value, false )')." )
+DefineConsoleMethod( GuiInspectorField, applyWithoutUndo, void, (const char * data), , "() - Set field value without recording undo (same as 'apply( value, false )')." )
 {
-   object->setData( argv[ 2 ], false );
+   object->setData( data, false );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspectorField, getData, const char*, 2, 2, "() - Return the value currently displayed on the field." )
+DefineConsoleMethod( GuiInspectorField, getData, const char*, (), , "() - Return the value currently displayed on the field." )
 {
    return object->getData();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiInspectorField, reset, void, 2, 2, "() - Reset to default value." )
+DefineConsoleMethod( GuiInspectorField, reset, void, (), , "() - Reset to default value." )
 {
    object->resetData();
 }

+ 3 - 2
Engine/source/gui/editor/inspector/variableInspector.cpp

@@ -22,6 +22,7 @@
 
 #include "gui/editor/inspector/variableInspector.h"
 #include "gui/editor/inspector/variableGroup.h"
+#include "console/engineAPI.h"
 
 GuiVariableInspector::GuiVariableInspector()
 {
@@ -61,7 +62,7 @@ void GuiVariableInspector::loadVars( String searchStr )
    //group->inspectGroup();
 }
 
-ConsoleMethod( GuiVariableInspector, loadVars, void, 3, 3, "loadVars( searchString )" )
+DefineConsoleMethod( GuiVariableInspector, loadVars, void, ( const char * searchString ), , "loadVars( searchString )" )
 {
-   object->loadVars( argv[2] );
+   object->loadVars( searchString );
 }

+ 39 - 0
Engine/source/gui/game/GuiChunkedBitmapCtrl.h

@@ -0,0 +1,39 @@
+#include "platform/platform.h"
+
+#include "console/console.h"
+#include "console/consoleTypes.h"
+#include "gfx/bitmap/gBitmap.h"
+#include "gui/core/guiControl.h"
+#include "gfx/gfxDevice.h"
+#include "gfx/gfxTextureHandle.h"
+#include "gfx/gfxDrawUtil.h"
+#include "console/engineAPI.h"
+
+class GuiChunkedBitmapCtrl : public GuiControl
+{
+private:
+   typedef GuiControl Parent;
+   void renderRegion(const Point2I &offset, const Point2I &extent);
+
+protected:
+   StringTableEntry mBitmapName;
+   GFXTexHandle mTexHandle;
+   bool  mUseVariable;
+   bool  mTile;
+
+public:
+   //creation methods
+   DECLARE_CONOBJECT(GuiChunkedBitmapCtrl);
+   DECLARE_CATEGORY( "Gui Images" );
+   
+   GuiChunkedBitmapCtrl();
+   static void initPersistFields();
+
+   //Parental methods
+   bool onWake();
+   void onSleep();
+
+   void setBitmap(const char *name);
+
+   void onRender(Point2I offset, const RectI &updateRect);
+};

+ 1 - 28
Engine/source/gui/game/guiChunkedBitmapCtrl.cpp

@@ -31,35 +31,8 @@
 #include "gfx/gfxDrawUtil.h"
 #include "console/engineAPI.h"
 
+#include "GuiChunkedBitmapCtrl.h"
 
-class GuiChunkedBitmapCtrl : public GuiControl
-{
-private:
-   typedef GuiControl Parent;
-   void renderRegion(const Point2I &offset, const Point2I &extent);
-
-protected:
-   StringTableEntry mBitmapName;
-   GFXTexHandle mTexHandle;
-   bool  mUseVariable;
-   bool  mTile;
-
-public:
-   //creation methods
-   DECLARE_CONOBJECT(GuiChunkedBitmapCtrl);
-   DECLARE_CATEGORY( "Gui Images" );
-   
-   GuiChunkedBitmapCtrl();
-   static void initPersistFields();
-
-   //Parental methods
-   bool onWake();
-   void onSleep();
-
-   void setBitmap(const char *name);
-
-   void onRender(Point2I offset, const RectI &updateRect);
-};
 
 IMPLEMENT_CONOBJECT(GuiChunkedBitmapCtrl);
 

+ 3 - 2
Engine/source/gui/game/guiIdleCamFadeBitmapCtrl.cpp

@@ -25,6 +25,7 @@
 
 #include "console/console.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "gfx/gfxDrawUtil.h"
 
 
@@ -176,13 +177,13 @@ ConsoleDocClass( GuiIdleCamFadeBitmapCtrl,
 				"This is going to be deprecated, and any useful code ported to FadeinBitmap\n\n"
 				"@internal");
 
-ConsoleMethod(GuiIdleCamFadeBitmapCtrl, fadeIn, void, 2, 2, "()"
+DefineConsoleMethod(GuiIdleCamFadeBitmapCtrl, fadeIn, void, (), , "()"
 			  "@internal")
 {
    object->fadeIn();
 }
 
-ConsoleMethod(GuiIdleCamFadeBitmapCtrl, fadeOut, void, 2, 2, "()"
+DefineConsoleMethod(GuiIdleCamFadeBitmapCtrl, fadeOut, void, (), , "()"
 			  "@internal")
 {
    object->fadeOut();

+ 4 - 5
Engine/source/gui/shiny/guiTickCtrl.cpp

@@ -20,6 +20,7 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 #include "gui/shiny/guiTickCtrl.h"
+#include "console/engineAPI.h"
 
 IMPLEMENT_CONOBJECT( GuiTickCtrl );
 
@@ -57,10 +58,8 @@ static ConsoleDocFragment _setProcessTicks(
    "GuiTickCtrl",
    "void setProcessTicks( bool tick )"
 );
-ConsoleMethod( GuiTickCtrl, setProcessTicks, void, 2, 3, "( [tick = true] ) - This will set this object to either be processing ticks or not" )
+
+DefineConsoleMethod( GuiTickCtrl, setProcessTicks, void, (bool tick), (true), "( [tick = true] ) - This will set this object to either be processing ticks or not" )
 {
-   if( argc == 3 )
-      object->setProcessTicks( dAtob( argv[2] ) );
-   else
-      object->setProcessTicks();
+   object->setProcessTicks(tick);
 }

+ 2 - 5
Engine/source/gui/utility/messageVector.cpp

@@ -258,15 +258,12 @@ static ConsoleDocFragment _MessageVectordump2(
    "MessageVector",
    "void dump( string filename, string header);");
 
-ConsoleMethod( MessageVector, dump, void, 3, 4, "(string filename, string header=NULL)"
+DefineConsoleMethod( MessageVector, dump, void, (const char * filename, const char * header), (""), "(string filename, string header=NULL)"
               "Dump the message vector to a file, optionally prefixing a header."
 			  "@hide")
 {
 
-   if ( argc == 4 )
-      object->dump( argv[2], argv[3] );
-   else
-      object->dump( argv[2] );
+   object->dump( filename, header );
 }
 
 DefineEngineMethod( MessageVector, getNumLines, S32, (),,

+ 24 - 22
Engine/source/gui/worldEditor/creator.cpp

@@ -21,6 +21,7 @@
 //-----------------------------------------------------------------------------
 
 #include "platform/platform.h"
+#include "console/engineAPI.h"
 #include "gui/worldEditor/creator.h"
 
 #include "gfx/gfxDrawUtil.h"
@@ -218,37 +219,38 @@ void CreatorTree::sort()
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod( CreatorTree, addGroup, S32, 4, 4, "(string group, string name, string value)")
+DefineConsoleMethod( CreatorTree, addGroup, S32, (S32 group, const char * name, const char * value), , "(string group, string name, string value)")
 {
-   CreatorTree::Node * grp = object->findNode(dAtoi(argv[2]));
+   CreatorTree::Node * grp = object->findNode(group);
 
    if(!grp || !grp->isGroup())
       return(-1);
 
    // return same named group if found...
    for(U32 i = 0; i < grp->mChildren.size(); i++)
-      if(!dStricmp(argv[3], grp->mChildren[i]->mName))
+      if(!dStricmp(name, grp->mChildren[i]->mName))
          return(grp->mChildren[i]->mId);
 
-   CreatorTree::Node * node = object->createNode(argv[3], 0, true, grp);
+   CreatorTree::Node * node = object->createNode(name, 0, true, grp);
    object->build();
    return(node ? node->getId() : -1);
 }
 
-ConsoleMethod( CreatorTree, addItem, S32, 5, 5, "(Node group, string name, string value)")
+DefineConsoleMethod( CreatorTree, addItem, S32, (S32 group, const char * name, const char * value), , "(Node group, string name, string value)")
 {
-   CreatorTree::Node * grp = object->findNode(dAtoi(argv[2]));
+   CreatorTree::Node * grp = object->findNode(group);
 
    if(!grp || !grp->isGroup())
       return -1;
 
-   CreatorTree::Node * node = object->createNode(argv[3], argv[4], false, grp);
+   CreatorTree::Node * node = object->createNode(name, value, false, grp);
    object->build();
    return(node ? node->getId() : -1);
 }
 
 //------------------------------------------------------------------------------
-ConsoleMethod( CreatorTree, fileNameMatch, bool, 5, 5, "(string world, string type, string filename)"){
+DefineConsoleMethod( CreatorTree, fileNameMatch, bool, (const char * world, const char * type, const char * filename), , "(string world, string type, string filename)")
+{
    // argv[2] - world short
    // argv[3] - type short
    // argv[4] - filename
@@ -256,50 +258,50 @@ ConsoleMethod( CreatorTree, fileNameMatch, bool, 5, 5, "(string world, string ty
    // interior filenames
    // 0     - world short ('b', 'x', ...)
    // 1->   - type short ('towr', 'bunk', ...)
-   U32 typeLen = dStrlen(argv[3]);
-   if(dStrlen(argv[4]) < (typeLen + 1))
+   U32 typeLen = dStrlen(type);
+   if(dStrlen(filename) < (typeLen + 1))
       return(false);
 
    // world
-   if(dToupper(argv[4][0]) != dToupper(argv[2][0]))
+   if(dToupper(filename[0]) != dToupper(world[0]))
       return(false);
 
-   return(!dStrnicmp(((const char*)argv[4])+1, argv[3], typeLen));
+   return(!dStrnicmp(filename+1, type, typeLen));
 }
 
-ConsoleMethod( CreatorTree, getSelected, S32, 2, 2, "Return a handle to the currently selected item.")
+DefineConsoleMethod( CreatorTree, getSelected, S32, (), , "Return a handle to the currently selected item.")
 {
    return(object->getSelected());
 }
 
-ConsoleMethod( CreatorTree, isGroup, bool, 3, 3, "(Group g)")
+DefineConsoleMethod( CreatorTree, isGroup, bool, (const char * group), , "(Group g)")
 {
-   CreatorTree::Node * node = object->findNode(dAtoi(argv[2]));
+   CreatorTree::Node * node = object->findNode(dAtoi(group));
    if(node && node->isGroup())
       return(true);
    return(false);
 }
 
-ConsoleMethod( CreatorTree, getName, const char*, 3, 3, "(Node item)")
+DefineConsoleMethod( CreatorTree, getName, const char*, (const char * item), , "(Node item)")
 {
-   CreatorTree::Node * node = object->findNode(dAtoi(argv[2]));
+   CreatorTree::Node * node = object->findNode(dAtoi(item));
    return(node ? node->mName : 0);
 }
 
-ConsoleMethod( CreatorTree, getValue, const char*, 3, 3, "(Node n)")
+DefineConsoleMethod( CreatorTree, getValue, const char*, (S32 nodeValue), , "(Node n)")
 {
-   CreatorTree::Node * node = object->findNode(dAtoi(argv[2]));
+   CreatorTree::Node * node = object->findNode(nodeValue);
    return(node ? node->mValue : 0);
 }
 
-ConsoleMethod( CreatorTree, clear, void, 2, 2, "Clear the tree.")
+DefineConsoleMethod( CreatorTree, clear, void, (), , "Clear the tree.")
 {
    object->clear();
 }
 
-ConsoleMethod( CreatorTree, getParent, S32, 3, 3, "(Node n)")
+DefineConsoleMethod( CreatorTree, getParent, S32, (S32 nodeValue), , "(Node n)")
 {
-   CreatorTree::Node * node = object->findNode(dAtoi(argv[2]));
+   CreatorTree::Node * node = object->findNode(nodeValue);
    if(node && node->mParent)
       return(node->mParent->getId());
 

+ 6 - 7
Engine/source/gui/worldEditor/editor.cpp

@@ -23,6 +23,7 @@
 #include "gui/worldEditor/editor.h"
 #include "console/console.h"
 #include "console/consoleInternal.h"
+#include "console/engineAPI.h"
 #include "gui/controls/guiTextListCtrl.h"
 #include "T3D/shapeBase.h"
 #include "T3D/gameBase/gameConnection.h"
@@ -127,9 +128,8 @@ static GameBase * getControlObj()
    return(control);
 }
 
-ConsoleMethod( EditManager, setBookmark, void, 3, 3, "(int slot)")
+DefineConsoleMethod( EditManager, setBookmark, void, (S32 val), , "(int slot)")
 {
-   S32 val = dAtoi(argv[2]);
    if(val < 0 || val > 9)
       return;
 
@@ -138,9 +138,8 @@ ConsoleMethod( EditManager, setBookmark, void, 3, 3, "(int slot)")
       object->mBookmarks[val] = control->getTransform();
 }
 
-ConsoleMethod( EditManager, gotoBookmark, void, 3, 3, "(int slot)")
+DefineConsoleMethod( EditManager, gotoBookmark, void, (S32 val), , "(int slot)")
 {
-   S32 val = dAtoi(argv[2]);
    if(val < 0 || val > 9)
       return;
 
@@ -149,17 +148,17 @@ ConsoleMethod( EditManager, gotoBookmark, void, 3, 3, "(int slot)")
       control->setTransform(object->mBookmarks[val]);
 }
 
-ConsoleMethod( EditManager, editorEnabled, void, 2, 2, "Perform the onEditorEnabled callback on all SimObjects and set gEditingMission true" )
+DefineConsoleMethod( EditManager, editorEnabled, void, (), , "Perform the onEditorEnabled callback on all SimObjects and set gEditingMission true" )
 {
    object->editorEnabled();
 }
 
-ConsoleMethod( EditManager, editorDisabled, void, 2, 2, "Perform the onEditorDisabled callback on all SimObjects and set gEditingMission false" )
+DefineConsoleMethod( EditManager, editorDisabled, void, (), , "Perform the onEditorDisabled callback on all SimObjects and set gEditingMission false" )
 {
    object->editorDisabled();
 }
 
-ConsoleMethod( EditManager, isEditorEnabled, bool, 2, 2, "Return the value of gEditingMission." )
+DefineConsoleMethod( EditManager, isEditorEnabled, bool, (), , "Return the value of gEditingMission." )
 {
    return gEditingMission;
 }

+ 10 - 10
Engine/source/gui/worldEditor/guiConvexShapeEditorCtrl.cpp

@@ -24,6 +24,7 @@
 #include "gui/worldEditor/guiConvexShapeEditorCtrl.h"
 
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "T3D/convexShape.h"
 #include "renderInstance/renderPassManager.h"
 #include "collision/collision.h"
@@ -2178,44 +2179,43 @@ void GuiConvexEditorCtrl::splitSelectedFace()
    updateGizmoPos();
 }
 
-ConsoleMethod( GuiConvexEditorCtrl, hollowSelection, void, 2, 2, "" )
+DefineConsoleMethod( GuiConvexEditorCtrl, hollowSelection, void, (), , "" )
 {
    object->hollowSelection();
 }
 
-ConsoleMethod( GuiConvexEditorCtrl, recenterSelection, void, 2, 2, "" )
+DefineConsoleMethod( GuiConvexEditorCtrl, recenterSelection, void, (), , "" )
 {
    object->recenterSelection();
 }
 
-ConsoleMethod( GuiConvexEditorCtrl, hasSelection, S32, 2, 2, "" )
+DefineConsoleMethod( GuiConvexEditorCtrl, hasSelection, S32, (), , "" )
 {
    return object->hasSelection();
 }
 
-ConsoleMethod( GuiConvexEditorCtrl, handleDelete, void, 2, 2, "" )
+DefineConsoleMethod( GuiConvexEditorCtrl, handleDelete, void, (), , "" )
 {
    object->handleDelete();
 }
 
-ConsoleMethod( GuiConvexEditorCtrl, handleDeselect, void, 2, 2, "" )
+DefineConsoleMethod( GuiConvexEditorCtrl, handleDeselect, void, (), , "" )
 {
    object->handleDeselect();
 }
 
-ConsoleMethod( GuiConvexEditorCtrl, dropSelectionAtScreenCenter, void, 2, 2, "" )
+DefineConsoleMethod( GuiConvexEditorCtrl, dropSelectionAtScreenCenter, void, (), , "" )
 {
    object->dropSelectionAtScreenCenter();
 }
 
-ConsoleMethod( GuiConvexEditorCtrl, selectConvex, void, 3, 3, "( ConvexShape )" )
+DefineConsoleMethod( GuiConvexEditorCtrl, selectConvex, void, (ConvexShape *convex), , "( ConvexShape )" )
 {
-   ConvexShape *convex;
-   if ( Sim::findObject( argv[2], convex ) )   
+if (convex)
       object->setSelection( convex, -1 );
 }
 
-ConsoleMethod( GuiConvexEditorCtrl, splitSelectedFace, void, 2, 2, "" )
+DefineConsoleMethod( GuiConvexEditorCtrl, splitSelectedFace, void, (), , "" )
 {
    object->splitSelectedFace();
 }

+ 21 - 34
Engine/source/gui/worldEditor/guiDecalEditorCtrl.cpp

@@ -26,6 +26,7 @@
 #include "platform/platform.h"
 
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "scene/sceneManager.h"
 #include "collision/collision.h"
 #include "math/util/frustum.h"
@@ -785,49 +786,47 @@ void GuiDecalEditorCtrl::setMode( String mode, bool sourceShortcut = false )
 		Con::executef( this, "paletteSync", mMode );
 }
 
-ConsoleMethod( GuiDecalEditorCtrl, deleteSelectedDecal, void, 2, 2, "deleteSelectedDecal()" )
+DefineConsoleMethod( GuiDecalEditorCtrl, deleteSelectedDecal, void, (), , "deleteSelectedDecal()" )
 {
    object->deleteSelectedDecal();
 }
 
-ConsoleMethod( GuiDecalEditorCtrl, deleteDecalDatablock, void, 3, 3, "deleteSelectedDecalDatablock( String datablock )" )
+DefineConsoleMethod( GuiDecalEditorCtrl, deleteDecalDatablock, void, ( const char * datablock ), , "deleteSelectedDecalDatablock( String datablock )" )
 {
-	String lookupName( (const char*)argv[2] );
+	String lookupName( datablock );
 	if( lookupName == String::EmptyString )
 		return;
 	
 	object->deleteDecalDatablock( lookupName );
 }
 
-ConsoleMethod( GuiDecalEditorCtrl, setMode, void, 3, 3, "setMode( String mode )()" )
+DefineConsoleMethod( GuiDecalEditorCtrl, setMode, void, ( String newMode ), , "setMode( String mode )()" )
 {
-	String newMode = ( (const char*)argv[2] );
 	object->setMode( newMode );
 }
 
-ConsoleMethod( GuiDecalEditorCtrl, getMode, const char*, 2, 2, "getMode()" )
+DefineConsoleMethod( GuiDecalEditorCtrl, getMode, const char*, (), , "getMode()" )
 {
 	return object->mMode;
 }
 
-ConsoleMethod( GuiDecalEditorCtrl, getDecalCount, S32, 2, 2, "getDecalCount()" )
+DefineConsoleMethod( GuiDecalEditorCtrl, getDecalCount, S32, (), , "getDecalCount()" )
 {
 	return gDecalManager->mDecalInstanceVec.size();
 }
 
-ConsoleMethod( GuiDecalEditorCtrl, getDecalTransform, const char*, 3, 3, "getDecalTransform()" )
+DefineConsoleMethod( GuiDecalEditorCtrl, getDecalTransform, const char*, ( U32 id ), , "getDecalTransform()" )
 {
-	DecalInstance *decalInstance = gDecalManager->mDecalInstanceVec[dAtoi(argv[2])];
+	DecalInstance *decalInstance = gDecalManager->mDecalInstanceVec[id];
 	if( decalInstance == NULL )
 		return "";
 
-   static const U32 bufSize = 256;
-   char* returnBuffer = Con::getReturnBuffer(bufSize);
+	char* returnBuffer = Con::getReturnBuffer(256);
    returnBuffer[0] = 0;
 
    if ( decalInstance )
    {
-	   dSprintf(returnBuffer, bufSize, "%f %f %f %f %f %f %f",
+	   dSprintf(returnBuffer, 256, "%f %f %f %f %f %f %f",
          decalInstance->mPosition.x, decalInstance->mPosition.y, decalInstance->mPosition.z, 
 		   decalInstance->mTangent.x, decalInstance->mTangent.y, decalInstance->mTangent.z,
 		   decalInstance->mSize);
@@ -836,42 +835,30 @@ ConsoleMethod( GuiDecalEditorCtrl, getDecalTransform, const char*, 3, 3, "getDec
 	return returnBuffer;
 }
 
-ConsoleMethod( GuiDecalEditorCtrl, getDecalLookupName, const char*, 3, 3, "getDecalLookupName( S32 )()" )
+DefineConsoleMethod( GuiDecalEditorCtrl, getDecalLookupName, const char*, ( U32 id ), , "getDecalLookupName( S32 )()" )
 {
-	DecalInstance *decalInstance = gDecalManager->mDecalInstanceVec[dAtoi(argv[2])];
+	DecalInstance *decalInstance = gDecalManager->mDecalInstanceVec[id];
 	if( decalInstance == NULL )
 		return "invalid";
 
 	return decalInstance->mDataBlock->lookupName;
 }
 
-ConsoleMethod( GuiDecalEditorCtrl, selectDecal, void, 3, 3, "selectDecal( S32 )()" )
+DefineConsoleMethod( GuiDecalEditorCtrl, selectDecal, void, ( U32 id ), , "selectDecal( S32 )()" )
 {
-	DecalInstance *decalInstance = gDecalManager->mDecalInstanceVec[dAtoi(argv[2])];
+	DecalInstance *decalInstance = gDecalManager->mDecalInstanceVec[id];
 	if( decalInstance == NULL )
 		return;
 
 	object->selectDecal( decalInstance );
 }
 
-ConsoleMethod( GuiDecalEditorCtrl, editDecalDetails, void, 4, 4, "editDecalDetails( S32 )()" )
+DefineConsoleMethod( GuiDecalEditorCtrl, editDecalDetails, void, ( U32 id, Point3F pos, Point3F tan,F32 size ), , "editDecalDetails( S32 )()" )
 {
-	DecalInstance *decalInstance = gDecalManager->mDecalInstanceVec[ dAtoi(argv[2]) ];
+	DecalInstance *decalInstance = gDecalManager->mDecalInstanceVec[id];
 	if( decalInstance == NULL )
 		return;
 
-	Point3F pos;
-	Point3F tan;
-	F32 size;
-
-	S32 count = dSscanf( argv[3], "%f %f %f %f %f %f %f", 
-		&pos.x, &pos.y, &pos.z, &tan.x, &tan.y, &tan.z, &size);
-	
-	if ( (count != 7) )
-   {
-		Con::printf("Failed to parse decal information \"px py pz tx ty tz s\" from '%s'", (const char*)argv[3]);
-      return;
-   }
 
    decalInstance->mPosition = pos;
 	decalInstance->mTangent = tan;
@@ -885,17 +872,17 @@ ConsoleMethod( GuiDecalEditorCtrl, editDecalDetails, void, 4, 4, "editDecalDetai
 	gDecalManager->notifyDecalModified( decalInstance );
 }
 
-ConsoleMethod( GuiDecalEditorCtrl, getSelectionCount, S32, 2, 2, "" )
+DefineConsoleMethod( GuiDecalEditorCtrl, getSelectionCount, S32, (), , "" )
 {
    if ( object->mSELDecal != NULL )
       return 1;
    return 0;
 }
 
-ConsoleMethod( GuiDecalEditorCtrl, retargetDecalDatablock, void, 4, 4, "" )
+DefineConsoleMethod( GuiDecalEditorCtrl, retargetDecalDatablock, void, ( const char * dbFrom, const char * dbTo ), , "" )
 {
-   if( dStrcmp( argv[2], "" ) != 0 && dStrcmp( argv[3], "" ) != 0 )
-		object->retargetDecalDatablock( argv[2], argv[3] );
+   if( dStrcmp( dbFrom, "" ) != 0 && dStrcmp( dbTo, "" ) != 0 )
+		object->retargetDecalDatablock( dbFrom, dbTo );
 }
 
 void GuiDecalEditorCtrl::setGizmoFocus( DecalInstance * decalInstance )

+ 5 - 4
Engine/source/gui/worldEditor/guiMissionAreaEditor.cpp

@@ -22,6 +22,7 @@
 
 #include "gui/worldEditor/guiMissionAreaEditor.h"
 #include "gui/core/guiCanvas.h"
+#include "console/engineAPI.h"
 
 IMPLEMENT_CONOBJECT(GuiMissionAreaEditorCtrl);
 
@@ -94,19 +95,19 @@ void GuiMissionAreaEditorCtrl::setSelectedMissionArea( MissionArea *missionArea
       Con::executef( this, "onMissionAreaSelected" );
 }
 
-ConsoleMethod( GuiMissionAreaEditorCtrl, setSelectedMissionArea, void, 2, 3, "" )
+DefineConsoleMethod( GuiMissionAreaEditorCtrl, setSelectedMissionArea, void, (const char * missionAreaName), (""), "" )
 {
-   if ( argc == 2 )
+   if ( missionAreaName == "" )
       object->setSelectedMissionArea(NULL);
    else
    {
       MissionArea *missionArea = NULL;
-      if ( Sim::findObject( argv[2], missionArea ) )
+      if ( Sim::findObject( missionAreaName, missionArea ) )
          object->setSelectedMissionArea(missionArea);
    }
 }
 
-ConsoleMethod( GuiMissionAreaEditorCtrl, getSelectedMissionArea, const char*, 2, 2, "" )
+DefineConsoleMethod( GuiMissionAreaEditorCtrl, getSelectedMissionArea, const char*, (), , "" )
 {
    MissionArea *missionArea = object->getSelectedMissionArea();
    if ( !missionArea )

+ 12 - 17
Engine/source/gui/worldEditor/guiTerrPreviewCtrl.cpp

@@ -21,6 +21,7 @@
 //-----------------------------------------------------------------------------
 
 #include "console/console.h"
+#include "console/engineAPI.h"
 #include "console/consoleTypes.h"
 #include "terrain/terrData.h"
 #include "gui/worldEditor/guiTerrPreviewCtrl.h"
@@ -87,41 +88,35 @@ void GuiTerrPreviewCtrl::initPersistFields()
 }
 
 
-ConsoleMethod( GuiTerrPreviewCtrl, reset, void, 2, 2, "Reset the view of the terrain.")
+DefineConsoleMethod( GuiTerrPreviewCtrl, reset, void, (), , "Reset the view of the terrain.")
 {
    object->reset();
 }
 
-ConsoleMethod( GuiTerrPreviewCtrl, setRoot, void, 2, 2, "Add the origin to the root and reset the origin.")
+DefineConsoleMethod( GuiTerrPreviewCtrl, setRoot, void, (), , "Add the origin to the root and reset the origin.")
 {
    object->setRoot();
 }
 
-ConsoleMethod( GuiTerrPreviewCtrl, getRoot, const char *, 2, 2, "Return a Point2F representing the position of the root.")
+DefineConsoleMethod( GuiTerrPreviewCtrl, getRoot, Point2F, (), , "Return a Point2F representing the position of the root.")
 {
-   Point2F p = object->getRoot();
+   return object->getRoot();
 
-   static char rootbuf[32];
-   dSprintf(rootbuf,sizeof(rootbuf),"%g %g", p.x, -p.y);
-   return rootbuf;
 }
 
-ConsoleMethod( GuiTerrPreviewCtrl, setOrigin, void, 4, 4, "(float x, float y)"
+DefineConsoleMethod( GuiTerrPreviewCtrl, setOrigin, void, (Point2F pos), , "(float x, float y)"
               "Set the origin of the view.")
 {
-   object->setOrigin( Point2F( dAtof(argv[2]), -dAtof(argv[3]) ) );
+   object->setOrigin( pos );
 }
 
-ConsoleMethod( GuiTerrPreviewCtrl, getOrigin, const char*, 2, 2, "Return a Point2F containing the position of the origin.")
+DefineConsoleMethod( GuiTerrPreviewCtrl, getOrigin, Point2F, (), , "Return a Point2F containing the position of the origin.")
 {
-   Point2F p = object->getOrigin();
+   return object->getOrigin();
 
-   static char originbuf[32];
-   dSprintf(originbuf,sizeof(originbuf),"%g %g", p.x, -p.y);
-   return originbuf;
 }
 
-ConsoleMethod( GuiTerrPreviewCtrl, getValue, const char*, 2, 2, "Returns a 4-tuple containing: root_x root_y origin_x origin_y")
+DefineConsoleMethod( GuiTerrPreviewCtrl, getValue, const char*, (), , "Returns a 4-tuple containing: root_x root_y origin_x origin_y")
 {
    Point2F r = object->getRoot();
    Point2F o = object->getOrigin();
@@ -131,11 +126,11 @@ ConsoleMethod( GuiTerrPreviewCtrl, getValue, const char*, 2, 2, "Returns a 4-tup
    return valuebuf;
 }
 
-ConsoleMethod( GuiTerrPreviewCtrl, setValue, void, 3, 3, "Accepts a 4-tuple in the same form as getValue returns.\n\n"
+DefineConsoleMethod( GuiTerrPreviewCtrl, setValue, void, (const char * tuple), , "Accepts a 4-tuple in the same form as getValue returns.\n\n"
               "@see GuiTerrPreviewCtrl::getValue()")
 {
    Point2F r,o;
-   dSscanf(argv[2],"%g %g %g %g", &r.x, &r.y, &o.x, &o.y);
+   dSscanf(tuple, "%g %g %g %g", &r.x, &r.y, &o.x, &o.y);
    r.y = -r.y;
    o.y = -o.y;
    object->reset();

+ 4 - 4
Engine/source/gui/worldEditor/terrainActions.cpp

@@ -20,6 +20,7 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
+#include "console/engineAPI.h"
 #include "platform/platform.h"
 #include "gui/worldEditor/terrainActions.h"
 
@@ -796,11 +797,10 @@ void TerrainSmoothAction::smooth( TerrainBlock *terrain, F32 factor, U32 steps )
    redo();
 }
 
-ConsoleMethod( TerrainSmoothAction, smooth, void, 5, 5, "( TerrainBlock obj, F32 factor, U32 steps )")
+DefineConsoleMethod( TerrainSmoothAction, smooth, void, ( TerrainBlock *terrain, F32 factor, U32 steps ), , "( TerrainBlock obj, F32 factor, U32 steps )")
 {
-   TerrainBlock *terrain = NULL;
-   if ( Sim::findObject( argv[2], terrain ) && terrain )
-   	object->smooth( terrain, dAtof( argv[3] ), mClamp( dAtoi( argv[4] ), 1, 13 ) );
+	if (terrain)
+   	object->smooth( terrain, factor, mClamp( steps, 1, 13 ) );
 }
 
 void TerrainSmoothAction::undo()

+ 69 - 86
Engine/source/gui/worldEditor/terrainEditor.cpp

@@ -27,6 +27,7 @@
 #include "core/strings/stringUnit.h"
 #include "console/consoleTypes.h"
 #include "console/simEvents.h"
+#include "console/engineAPI.h"
 #include "sim/netConnection.h"
 #include "math/mathUtils.h"
 #include "gfx/primBuilder.h"
@@ -2401,7 +2402,7 @@ void TerrainEditor::reorderMaterial( S32 index, S32 orderPos )
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod( TerrainEditor, attachTerrain, void, 2, 3, "(TerrainBlock terrain)")
+DefineConsoleMethod( TerrainEditor, attachTerrain, void, (const char * terrain), (""), "(TerrainBlock terrain)")
 {
    SimSet * missionGroup = dynamic_cast<SimSet*>(Sim::findObject("MissionGroup"));
    if (!missionGroup)
@@ -2413,7 +2414,7 @@ ConsoleMethod( TerrainEditor, attachTerrain, void, 2, 3, "(TerrainBlock terrain)
    VectorPtr<TerrainBlock*> terrains;
 
    // attach to first found terrainBlock
-   if (argc == 2)
+   if (dStrcmp (terrain,"")==0)
    {
       for(SimSetIterator itr(missionGroup); *itr; ++itr)
       {
@@ -2428,13 +2429,13 @@ ConsoleMethod( TerrainEditor, attachTerrain, void, 2, 3, "(TerrainBlock terrain)
    }
    else  // attach to named object
    {
-      TerrainBlock* terrBlock = dynamic_cast<TerrainBlock*>(Sim::findObject(argv[2]));
+      TerrainBlock* terrBlock = dynamic_cast<TerrainBlock*>(Sim::findObject(terrain));
 
       if (terrBlock)
          terrains.push_back(terrBlock);
 
       if(terrains.size() == 0)
-         Con::errorf(ConsoleLogEntry::Script, "TerrainEditor::attach: failed to attach to object '%s'", (const char*)argv[2]);
+         Con::errorf(ConsoleLogEntry::Script, "TerrainEditor::attach: failed to attach to object '%s'", terrain);
    }
 
    if (terrains.size() > 0)
@@ -2457,21 +2458,21 @@ ConsoleMethod( TerrainEditor, attachTerrain, void, 2, 3, "(TerrainBlock terrain)
    }
 }
 
-ConsoleMethod( TerrainEditor, getTerrainBlockCount, S32, 2, 2, "()")
+DefineConsoleMethod( TerrainEditor, getTerrainBlockCount, S32, (), , "()")
 {
    return object->getTerrainBlockCount();
 }
 
-ConsoleMethod( TerrainEditor, getTerrainBlock, S32, 3, 3, "(S32 index)")
+DefineConsoleMethod( TerrainEditor, getTerrainBlock, S32, (S32 index), , "(S32 index)")
 {
-   TerrainBlock* tb = object->getTerrainBlock(dAtoi(argv[2]));
+   TerrainBlock* tb = object->getTerrainBlock(index);
    if(!tb)
       return 0;
    else
       return tb->getId();
 }
 
-ConsoleMethod(TerrainEditor, getTerrainBlocksMaterialList, const char *, 2, 2, "() gets the list of current terrain materials for all terrain blocks.")
+DefineConsoleMethod(TerrainEditor, getTerrainBlocksMaterialList, const char *, (), , "() gets the list of current terrain materials for all terrain blocks.")
 {
    Vector<StringTableEntry> list;
    object->getTerrainBlocksMaterialList(list);
@@ -2500,112 +2501,99 @@ ConsoleMethod(TerrainEditor, getTerrainBlocksMaterialList, const char *, 2, 2, "
    return ret;
 }
 
-ConsoleMethod( TerrainEditor, setBrushType, void, 3, 3, "(string type)"
+DefineConsoleMethod( TerrainEditor, setBrushType, void, (String type), , "(string type)"
               "One of box, ellipse, selection.")
 {
-	object->setBrushType(argv[2]);
+	object->setBrushType(type);
 }
 
-ConsoleMethod( TerrainEditor, getBrushType, const char*, 2, 2, "()")
+DefineConsoleMethod( TerrainEditor, getBrushType, const char*, (), , "()")
 {
    return object->getBrushType();
 }
 
-ConsoleMethod( TerrainEditor, setBrushSize, void, 3, 4, "(int w [, int h])")
+DefineConsoleMethod( TerrainEditor, setBrushSize, void, ( S32 w, S32 h), (0), "(int w [, int h])")
 {
-   S32 w = dAtoi(argv[2]);
-   S32 h = argc > 3 ? dAtoi(argv[3]) : w;
-	object->setBrushSize( w, h );
+	object->setBrushSize( w, h==0?w:h );
 }
 
-ConsoleMethod( TerrainEditor, getBrushSize, const char*, 2, 2, "()")
+DefineConsoleMethod( TerrainEditor, getBrushSize, const char*, (), , "()")
 {
    Point2I size = object->getBrushSize();
 
-   static const U32 bufSize = 32;
-   char * ret = Con::getReturnBuffer(bufSize);
-   dSprintf(ret, bufSize, "%d %d", size.x, size.y);
+   char * ret = Con::getReturnBuffer(32);
+   dSprintf(ret, 32, "%d %d", size.x, size.y);
    return ret;
 }
 
-ConsoleMethod( TerrainEditor, setBrushPressure, void, 3, 3, "(float pressure)")
+DefineConsoleMethod( TerrainEditor, setBrushPressure, void, (F32 pressure), , "(float pressure)")
 {
-   object->setBrushPressure( dAtof( argv[2] ) );
+   object->setBrushPressure( pressure );
 }
 
-ConsoleMethod( TerrainEditor, getBrushPressure, F32, 2, 2, "()")
+DefineConsoleMethod( TerrainEditor, getBrushPressure, F32, (), , "()")
 {
    return object->getBrushPressure();
 }
 
-ConsoleMethod( TerrainEditor, setBrushSoftness, void, 3, 3, "(float softness)")
+DefineConsoleMethod( TerrainEditor, setBrushSoftness, void, (F32 softness), , "(float softness)")
 {
-   object->setBrushSoftness( dAtof( argv[2] ) );
+   object->setBrushSoftness( softness );
 }
 
-ConsoleMethod( TerrainEditor, getBrushSoftness, F32, 2, 2, "()")
+DefineConsoleMethod( TerrainEditor, getBrushSoftness, F32, (), , "()")
 {
+	
    return object->getBrushSoftness();
 }
 
-ConsoleMethod( TerrainEditor, getBrushPos, const char*, 2, 2, "Returns a Point2I.")
+DefineConsoleMethod( TerrainEditor, getBrushPos, const char*, (), , "Returns a Point2I.")
 {
 	return object->getBrushPos();
 }
 
-ConsoleMethod( TerrainEditor, setBrushPos, void, 3, 4, "(int x, int y)")
+DefineConsoleMethod( TerrainEditor, setBrushPos, void, (Point2I pos), , "Location")
 {
-   //
-   Point2I pos;
-   if(argc == 3)
-      dSscanf(argv[2], "%d %d", &pos.x, &pos.y);
-   else
-   {
-      pos.x = dAtoi(argv[2]);
-      pos.y = dAtoi(argv[3]);
-   }
 
    object->setBrushPos(pos);
 }
 
-ConsoleMethod( TerrainEditor, setAction, void, 3, 3, "(string action_name)")
+DefineConsoleMethod( TerrainEditor, setAction, void, (const char * action_name), , "(string action_name)")
 {
-	object->setAction(argv[2]);
+	object->setAction(action_name);
 }
 
-ConsoleMethod( TerrainEditor, getActionName, const char*, 3, 3, "(int num)")
+DefineConsoleMethod( TerrainEditor, getActionName, const char*, (U32 index), , "(int num)")
 {
-	return (object->getActionName(dAtoi(argv[2])));
+	return (object->getActionName(index));
 }
 
-ConsoleMethod( TerrainEditor, getNumActions, S32, 2, 2, "")
+DefineConsoleMethod( TerrainEditor, getNumActions, S32, (), , "")
 {
 	return(object->getNumActions());
 }
 
-ConsoleMethod( TerrainEditor, getCurrentAction, const char*, 2, 2, "")
+DefineConsoleMethod( TerrainEditor, getCurrentAction, const char*, (), , "")
 {
 	return object->getCurrentAction();
 }
 
-ConsoleMethod( TerrainEditor, resetSelWeights, void, 3, 3, "(bool clear)")
+DefineConsoleMethod( TerrainEditor, resetSelWeights, void, (bool clear), , "(bool clear)")
 {
-	object->resetSelWeights(dAtob(argv[2]));
+	object->resetSelWeights(clear);
 }
 
-ConsoleMethod( TerrainEditor, clearSelection, void, 2, 2, "")
+DefineConsoleMethod( TerrainEditor, clearSelection, void, (), , "")
 {
    object->clearSelection();
 }
 
-ConsoleMethod( TerrainEditor, processAction, void, 2, 3, "(string action=NULL)")
+DefineConsoleMethod( TerrainEditor, processAction, void, (String action), (""), "(string action=NULL)")
 {
-	if(argc == 3)
-		object->processAction(argv[2]);
-	else object->processAction("");
+	object->processAction(action);
 }
 
-ConsoleMethod( TerrainEditor, getActiveTerrain, S32, 2, 2, "")
+DefineConsoleMethod( TerrainEditor, getActiveTerrain, S32, (), , "")
 {
    S32 ret = 0;
 
@@ -2617,27 +2605,27 @@ ConsoleMethod( TerrainEditor, getActiveTerrain, S32, 2, 2, "")
 	return ret;
 }
 
-ConsoleMethod( TerrainEditor, getNumTextures, S32, 2, 2, "")
+DefineConsoleMethod( TerrainEditor, getNumTextures, S32, (), , "")
 {
 	return object->getNumTextures();
 }
 
-ConsoleMethod( TerrainEditor, markEmptySquares, void, 2, 2, "")
+DefineConsoleMethod( TerrainEditor, markEmptySquares, void, (), , "")
 {
 	object->markEmptySquares();
 }
 
-ConsoleMethod( TerrainEditor, mirrorTerrain, void, 3, 3, "")
+DefineConsoleMethod( TerrainEditor, mirrorTerrain, void, (S32 mirrorIndex), , "")
 {
-	object->mirrorTerrain(dAtoi(argv[2]));
+	object->mirrorTerrain(mirrorIndex);
 }
 
-ConsoleMethod(TerrainEditor, setTerraformOverlay, void, 3, 3, "(bool overlayEnable) - sets the terraformer current heightmap to draw as an overlay over the current terrain.")
+DefineConsoleMethod(TerrainEditor, setTerraformOverlay, void, (bool overlayEnable), , "(bool overlayEnable) - sets the terraformer current heightmap to draw as an overlay over the current terrain.")
 {
    // XA: This one needs to be implemented :)
 }
 
-ConsoleMethod(TerrainEditor, updateMaterial, bool, 4, 4, 
+DefineConsoleMethod(TerrainEditor, updateMaterial, bool, ( U32 index, String matName ), , 
    "( int index, string matName )\n"
    "Changes the material name at the index." )
 {
@@ -2645,18 +2633,17 @@ ConsoleMethod(TerrainEditor, updateMaterial, bool, 4, 4,
    if ( !terr )
       return false;
    
-   U32 index = dAtoi( argv[2] );
    if ( index >= terr->getMaterialCount() )
       return false;
 
-   terr->updateMaterial( index, argv[3] );
+   terr->updateMaterial( index, matName );
 
    object->setDirty();
 
    return true;
 }
 
-ConsoleMethod(TerrainEditor, addMaterial, S32, 3, 3, 
+DefineConsoleMethod(TerrainEditor, addMaterial, S32, ( String matName ), , 
    "( string matName )\n"
    "Adds a new material." )
 {
@@ -2664,20 +2651,19 @@ ConsoleMethod(TerrainEditor, addMaterial, S32, 3, 3,
    if ( !terr )
       return false;
    
-   terr->addMaterial( argv[2] );
+   terr->addMaterial( matName );
 
    object->setDirty();
 
    return true;
 }
 
-ConsoleMethod( TerrainEditor, removeMaterial, void, 3, 3, "( int index ) - Remove the material at the given index." )
+DefineConsoleMethod( TerrainEditor, removeMaterial, void, ( S32 index ), , "( int index ) - Remove the material at the given index." )
 {
    TerrainBlock *terr = object->getClientTerrain();
    if ( !terr )
       return;
       
-   S32 index = dAtoi( argv[ 2 ] );
    if ( index < 0 || index >= terr->getMaterialCount() )
    {
       Con::errorf( "TerrainEditor::removeMaterial - index out of range!" );
@@ -2701,7 +2687,7 @@ ConsoleMethod( TerrainEditor, removeMaterial, void, 3, 3, "( int index ) - Remov
    object->setGridUpdateMinMax();
 }
 
-ConsoleMethod(TerrainEditor, getMaterialCount, S32, 2, 2, 
+DefineConsoleMethod(TerrainEditor, getMaterialCount, S32, (), , 
    "Returns the current material count." )
 {
    TerrainBlock *terr = object->getClientTerrain();
@@ -2711,7 +2697,7 @@ ConsoleMethod(TerrainEditor, getMaterialCount, S32, 2, 2,
    return 0;
 }
 
-ConsoleMethod(TerrainEditor, getMaterials, const char *, 2, 2, "() gets the list of current terrain materials.")
+DefineConsoleMethod(TerrainEditor, getMaterials, const char *, (), , "() gets the list of current terrain materials.")
 {
    TerrainBlock *terr = object->getClientTerrain();
    if ( !terr )
@@ -2728,13 +2714,12 @@ ConsoleMethod(TerrainEditor, getMaterials, const char *, 2, 2, "() gets the list
    return ret;
 }
 
-ConsoleMethod( TerrainEditor, getMaterialName, const char*, 3, 3, "( int index ) - Returns the name of the material at the given index." )
+DefineConsoleMethod( TerrainEditor, getMaterialName, const char*, (S32 index), , "( int index ) - Returns the name of the material at the given index." )
 {
    TerrainBlock *terr = object->getClientTerrain();
    if ( !terr )
       return "";
       
-   S32 index = dAtoi( argv[ 2 ] );
    if( index < 0 || index >= terr->getMaterialCount() )
    {
       Con::errorf( "TerrainEditor::getMaterialName - index out of range!" );
@@ -2745,13 +2730,12 @@ ConsoleMethod( TerrainEditor, getMaterialName, const char*, 3, 3, "( int index )
    return Con::getReturnBuffer( name );
 }
 
-ConsoleMethod( TerrainEditor, getMaterialIndex, S32, 3, 3, "( string name ) - Returns the index of the material with the given name or -1." )
+DefineConsoleMethod( TerrainEditor, getMaterialIndex, S32, ( String name ), , "( string name ) - Returns the index of the material with the given name or -1." )
 {
    TerrainBlock *terr = object->getClientTerrain();
    if ( !terr )
       return -1;
       
-   const char* name = argv[ 2 ];
    const U32 count = terr->getMaterialCount();
    
    for( U32 i = 0; i < count; ++ i )
@@ -2761,13 +2745,14 @@ ConsoleMethod( TerrainEditor, getMaterialIndex, S32, 3, 3, "( string name ) - Re
    return -1;
 }
 
-ConsoleMethod( TerrainEditor, reorderMaterial, void, 4, 4, "( int index, int order ) "
+DefineConsoleMethod( TerrainEditor, reorderMaterial, void, ( S32 index, S32 orderPos ), , "( int index, int order ) "
   "- Reorder material at the given index to the new position, changing the order in which it is rendered / blended." )
 {
-   object->reorderMaterial( dAtoi( argv[2] ), dAtoi( argv[3] ) );
+   object->reorderMaterial( index, orderPos );
 }
 
-ConsoleMethod(TerrainEditor, getTerrainUnderWorldPoint, S32, 3, 5, "(x/y/z) Gets the terrain block that is located under the given world point.\n"
+DefineConsoleMethod(TerrainEditor, getTerrainUnderWorldPoint, S32, (const char * ptOrX, const char * Y, const char * Z), ("", "", ""), 
+                                                                           "(x/y/z) Gets the terrain block that is located under the given world point.\n"
                                                                            "@param x/y/z The world coordinates (floating point values) you wish to query at. " 
                                                                            "These can be formatted as either a string (\"x y z\") or separately as (x, y, z)\n"
                                                                            "@return Returns the ID of the requested terrain block (0 if not found).\n\n")
@@ -2776,13 +2761,13 @@ ConsoleMethod(TerrainEditor, getTerrainUnderWorldPoint, S32, 3, 5, "(x/y/z) Gets
    if(tEditor == NULL)
       return 0;
    Point3F pos;
-   if(argc == 3)
-      dSscanf(argv[2], "%f %f %f", &pos.x, &pos.y, &pos.z);
-   else if(argc == 5)
+   if(ptOrX != "" && Y == "" && Z == "")
+      dSscanf(ptOrX, "%f %f %f", &pos.x, &pos.y, &pos.z);
+   else if(ptOrX != "" && Y != "" && Z != "")
    {
-      pos.x = dAtof(argv[2]);
-      pos.y = dAtof(argv[3]);
-      pos.z = dAtof(argv[4]);
+      pos.x = dAtof(ptOrX);
+      pos.y = dAtof(Y);
+      pos.z = dAtof(Z);
    }
 
    else
@@ -2835,14 +2820,13 @@ void TerrainEditor::initPersistFields()
    Parent::initPersistFields();
 }
 
-ConsoleMethod( TerrainEditor, getSlopeLimitMinAngle, F32, 2, 2, 0)
+DefineConsoleMethod( TerrainEditor, getSlopeLimitMinAngle, F32, (), , "")
 {
    return object->mSlopeMinAngle;
 }
 
-ConsoleMethod( TerrainEditor, setSlopeLimitMinAngle, F32, 3, 3, 0)
+DefineConsoleMethod( TerrainEditor, setSlopeLimitMinAngle, F32, (F32 angle), , "")
 {
-	F32 angle = dAtof( argv[2] );	
 	if ( angle < 0.0f )
 		angle = 0.0f;
    if ( angle > object->mSlopeMaxAngle )
@@ -2852,14 +2836,13 @@ ConsoleMethod( TerrainEditor, setSlopeLimitMinAngle, F32, 3, 3, 0)
 	return angle;
 }
 
-ConsoleMethod( TerrainEditor, getSlopeLimitMaxAngle, F32, 2, 2, 0)
+DefineConsoleMethod( TerrainEditor, getSlopeLimitMaxAngle, F32, (), , "")
 {
    return object->mSlopeMaxAngle;
 }
 
-ConsoleMethod( TerrainEditor, setSlopeLimitMaxAngle, F32, 3, 3, 0)
+DefineConsoleMethod( TerrainEditor, setSlopeLimitMaxAngle, F32, (F32 angle), , "")
 {
-	F32 angle = dAtof( argv[2] );	
 	if ( angle > 90.0f )
 		angle = 90.0f;
    if ( angle < object->mSlopeMinAngle )
@@ -2938,7 +2921,7 @@ void TerrainEditor::autoMaterialLayer( F32 mMinHeight, F32 mMaxHeight, F32 mMinS
    scheduleMaterialUpdate();     
 }  
   
-ConsoleMethod( TerrainEditor, autoMaterialLayer, void, 7, 7, "(float minHeight, float maxHeight, float minSlope, float maxSlope, float coverage)")   
+DefineConsoleMethod( TerrainEditor, autoMaterialLayer, void, (F32 minHeight, F32 maxHeight, F32 minSlope, F32 maxSlope, F32 coverage), , "(F32 minHeight, F32 maxHeight, F32 minSlope, F32 maxSlope , F32 coverage)")  
 {  
-   object->autoMaterialLayer( dAtof(argv[2]), dAtof(argv[3]), dAtof(argv[4]), dAtof(argv[5]), dAtof(argv[6]));  
-}  
+   object->autoMaterialLayer( minHeight,maxHeight, minSlope, maxSlope, coverage );  
+}

+ 5 - 6
Engine/source/gui/worldEditor/undoActions.cpp

@@ -26,6 +26,7 @@
 #include "gui/editor/inspector/field.h"
 #include "gui/editor/guiInspector.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 
 
 IMPLEMENT_CONOBJECT( MECreateUndoAction );
@@ -57,10 +58,9 @@ void MECreateUndoAction::addObject( SimObject *object )
    mObjects.last().id = object->getId();
 }
 
-ConsoleMethod( MECreateUndoAction, addObject, void, 3, 3, "( SimObject obj )")
+DefineConsoleMethod( MECreateUndoAction, addObject, void, (SimObject *obj), , "( SimObject obj )")
 {
-   SimObject *obj = NULL;
-   if ( Sim::findObject( argv[2], obj ) && obj )
+	if (obj)
    	object->addObject( obj );
 }
 
@@ -163,10 +163,9 @@ void MEDeleteUndoAction::deleteObject( const Vector<SimObject*> &objectList )
       deleteObject( objectList[i] );
 }
 
-ConsoleMethod( MEDeleteUndoAction, deleteObject, void, 3, 3, "( SimObject obj )")
+DefineConsoleMethod( MEDeleteUndoAction, deleteObject, void, (SimObject *obj ), , "( SimObject obj )")
 {
-   SimObject *obj = NULL;
-   if ( Sim::findObject( argv[2], obj ) && obj )
+	if (obj)
    	object->deleteObject( obj );
 }
 

+ 77 - 103
Engine/source/gui/worldEditor/worldEditor.cpp

@@ -3187,17 +3187,17 @@ ConsoleMethod( WorldEditor, ignoreObjClass, void, 3, 0, "(string class_name, ...
 	object->ignoreObjClass(argc, argv);
 }
 
-ConsoleMethod( WorldEditor, clearIgnoreList, void, 2, 2, "")
+DefineConsoleMethod( WorldEditor, clearIgnoreList, void, (), , "")
 {
 	object->clearIgnoreList();
 }
 
-ConsoleMethod( WorldEditor, clearSelection, void, 2, 2, "")
+DefineConsoleMethod( WorldEditor, clearSelection, void, (), , "")
 {
 	object->clearSelection();
 }
 
-ConsoleMethod( WorldEditor, getActiveSelection, S32, 2, 2, "() - Return the currently active WorldEditorSelection object." )
+DefineConsoleMethod( WorldEditor, getActiveSelection, S32, (), , "() - Return the currently active WorldEditorSelection object." )
 {
    if( !object->getActiveSelectionSet() )
       return 0;
@@ -3205,43 +3205,36 @@ ConsoleMethod( WorldEditor, getActiveSelection, S32, 2, 2, "() - Return the curr
    return object->getActiveSelectionSet()->getId();
 }
 
-ConsoleMethod( WorldEditor, setActiveSelection, void, 3, 3, "( id set ) - Set the currently active WorldEditorSelection object." )
+DefineConsoleMethod( WorldEditor, setActiveSelection, void, ( WorldEditorSelection* selection), , "( id set ) - Set the currently active WorldEditorSelection object." )
 {
-   WorldEditorSelection* selection;
-   if( !Sim::findObject( argv[ 2 ], selection ) )
-   {
-      Con::errorf( "WorldEditor::setActiveSelectionSet - no selection set '%s'", (const char*)argv[ 2 ] );
-      return;
-   }
-   
+	if (selection)
    object->makeActiveSelectionSet( selection );
 }
 
-ConsoleMethod( WorldEditor, selectObject, void, 3, 3, "(SimObject obj)")
+DefineConsoleMethod( WorldEditor, selectObject, void, (const char * objName), , "(SimObject obj)")
 {
-	object->selectObject(argv[2]);
+	object->selectObject(objName);
 }
 
-ConsoleMethod( WorldEditor, unselectObject, void, 3, 3, "(SimObject obj)")
+DefineConsoleMethod( WorldEditor, unselectObject, void, (const char * objName), , "(SimObject obj)")
 {
-	object->unselectObject(argv[2]);
+	object->unselectObject(objName);
 }
 
-ConsoleMethod( WorldEditor, invalidateSelectionCentroid, void, 2, 2, "")
+DefineConsoleMethod( WorldEditor, invalidateSelectionCentroid, void, (), , "")
 {
    WorldEditor::Selection* sel = object->getActiveSelectionSet();
    if(sel)
 	   sel->invalidateCentroid();
 }
 
-ConsoleMethod( WorldEditor, getSelectionSize, S32, 2, 2, "() - Return the number of objects currently selected in the editor.")
+DefineConsoleMethod( WorldEditor, getSelectionSize, S32, (), , "() - Return the number of objects currently selected in the editor.")
 {
 	return object->getSelectionSize();
 }
 
-ConsoleMethod( WorldEditor, getSelectedObject, S32, 3, 3, "(int index)")
+DefineConsoleMethod( WorldEditor, getSelectedObject, S32, (S32 index), , "(int index)")
 {
-   S32 index = dAtoi(argv[2]);
    if(index < 0 || index >= object->getSelectionSize())
    {
       Con::errorf(ConsoleLogEntry::General, "WorldEditor::getSelectedObject: invalid object index");
@@ -3251,30 +3244,23 @@ ConsoleMethod( WorldEditor, getSelectedObject, S32, 3, 3, "(int index)")
    return(object->getSelectObject(index));
 }
 
-ConsoleMethod( WorldEditor, getSelectionRadius, F32, 2, 2, "")
+DefineConsoleMethod( WorldEditor, getSelectionRadius, F32, (), , "")
 {
 	return object->getSelectionRadius();
 }
 
-ConsoleMethod( WorldEditor, getSelectionCentroid, const char *, 2, 2, "")
+DefineConsoleMethod( WorldEditor, getSelectionCentroid, const char *, (), , "")
 {
 	return object->getSelectionCentroidText();
 }
 
-ConsoleMethod( WorldEditor, getSelectionExtent, const char *, 2, 2, "")
+DefineConsoleMethod( WorldEditor, getSelectionExtent, Point3F, (), , "")
 {
-   Point3F bounds = object->getSelectionExtent();
-   static const U32 bufSize = 100;
-   char * ret = Con::getReturnBuffer(bufSize);
-   dSprintf(ret, bufSize, "%g %g %g", bounds.x, bounds.y, bounds.z);
-   return ret;	
+   return object->getSelectionExtent();
 }
 
-ConsoleMethod( WorldEditor, dropSelection, void, 2, 3, "( bool skipUndo = false )")
+DefineConsoleMethod( WorldEditor, dropSelection, void, ( bool skipUndo ), (false), "( bool skipUndo = false )")
 {
-   bool skipUndo = false;
-   if ( argc > 2 )
-      skipUndo = dAtob( argv[2] );
 
 	object->dropCurrentSelection( skipUndo );
 }
@@ -3289,17 +3275,17 @@ void WorldEditor::copyCurrentSelection()
 	copySelection(mSelected);	
 }
 
-ConsoleMethod( WorldEditor, cutSelection, void, 2, 2, "")
+DefineConsoleMethod( WorldEditor, cutSelection, void, (),, "")
 {
    object->cutCurrentSelection();
 }
 
-ConsoleMethod( WorldEditor, copySelection, void, 2, 2, "")
+DefineConsoleMethod( WorldEditor, copySelection, void, (),, "")
 {
    object->copyCurrentSelection();
 }
 
-ConsoleMethod( WorldEditor, pasteSelection, void, 2, 2, "")
+DefineConsoleMethod( WorldEditor, pasteSelection, void, (),, "")
 {
    object->pasteSelection();
 }
@@ -3309,88 +3295,86 @@ bool WorldEditor::canPasteSelection()
 	return mCopyBuffer.empty() != true;
 }
 
-ConsoleMethod( WorldEditor, canPasteSelection, bool, 2, 2, "")
+DefineConsoleMethod( WorldEditor, canPasteSelection, bool, (),, "")
 {
 	return object->canPasteSelection();
 }
 
-ConsoleMethod( WorldEditor, hideObject, void, 4, 4, "(Object obj, bool hide)")
+DefineConsoleMethod( WorldEditor, hideObject, void, (SceneObject *obj, bool hide), , "(Object obj, bool hide)")
 {
-   SceneObject *obj;
-   if ( !Sim::findObject( argv[2], obj ) )
-      return;
 
-   object->hideObject(obj, dAtob(argv[3]));
+	if (obj)
+   object->hideObject(obj, hide);
 }
 
-ConsoleMethod( WorldEditor, hideSelection, void, 3, 3, "(bool hide)")
+DefineConsoleMethod( WorldEditor, hideSelection, void, (bool hide), , "(bool hide)")
 {
-   object->hideSelection(dAtob(argv[2]));
+   object->hideSelection(hide);
 }
 
-ConsoleMethod( WorldEditor, lockSelection, void, 3, 3, "(bool lock)")
+DefineConsoleMethod( WorldEditor, lockSelection, void, (bool lock), , "(bool lock)")
 {
-   object->lockSelection(dAtob(argv[2]));
+   object->lockSelection(lock);
 }
 
-ConsoleMethod( WorldEditor, alignByBounds, void, 3, 3, "(int boundsAxis)"
+DefineConsoleMethod( WorldEditor, alignByBounds, void, (S32 boundsAxis), , "(int boundsAxis)"
               "Align all selected objects against the given bounds axis.")
 {
-	if(!object->alignByBounds(dAtoi(argv[2])))
-		Con::warnf(ConsoleLogEntry::General, avar("worldEditor.alignByBounds: invalid bounds axis '%s'", (const char*)argv[2]));
+	if(!object->alignByBounds(boundsAxis))
+		Con::warnf(ConsoleLogEntry::General, avar("worldEditor.alignByBounds: invalid bounds axis '%s'", boundsAxis));
 }
 
-ConsoleMethod( WorldEditor, alignByAxis, void, 3, 3, "(int axis)"
+DefineConsoleMethod( WorldEditor, alignByAxis, void, (S32 boundsAxis), , "(int axis)"
               "Align all selected objects along the given axis.")
 {
-	if(!object->alignByAxis(dAtoi(argv[2])))
-		Con::warnf(ConsoleLogEntry::General, avar("worldEditor.alignByAxis: invalid axis '%s'", (const char*)argv[2]));
+	if(!object->alignByAxis(boundsAxis))
+		Con::warnf(ConsoleLogEntry::General, avar("worldEditor.alignByAxis: invalid axis '%s'", boundsAxis));
 }
 
-ConsoleMethod( WorldEditor, resetSelectedRotation, void, 2, 2, "")
+DefineConsoleMethod( WorldEditor, resetSelectedRotation, void, (),, "")
 {
 	object->resetSelectedRotation();
 }
 
-ConsoleMethod( WorldEditor, resetSelectedScale, void, 2, 2, "")
+DefineConsoleMethod( WorldEditor, resetSelectedScale, void, (),, "")
 {
 	object->resetSelectedScale();
 }
 
-ConsoleMethod( WorldEditor, redirectConsole, void, 3, 3, "( int objID )")
+DefineConsoleMethod( WorldEditor, redirectConsole, void, (S32 objID), , "( int objID )")
 {
-   object->redirectConsole(dAtoi(argv[2]));
+   object->redirectConsole(objID);
 }
 
-ConsoleMethod( WorldEditor, addUndoState, void, 2, 2, "")
+DefineConsoleMethod( WorldEditor, addUndoState, void, (),, "")
 {
 	object->addUndoState();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( WorldEditor, getSoftSnap, bool, 2, 2, "getSoftSnap()\n"
+DefineConsoleMethod( WorldEditor, getSoftSnap, bool, (),, "getSoftSnap()\n"
               "Is soft snapping always on?")
 {
 	return object->mSoftSnap;
 }
 
-ConsoleMethod( WorldEditor, setSoftSnap, void, 3, 3, "setSoftSnap(bool)\n"
+DefineConsoleMethod( WorldEditor, setSoftSnap, void, (bool enable), , "setSoftSnap(bool)\n"
               "Allow soft snapping all of the time.")
 {
-	object->mSoftSnap = dAtob(argv[2]);
+	object->mSoftSnap = enable;
 }
 
-ConsoleMethod( WorldEditor, getSoftSnapSize, F32, 2, 2, "getSoftSnapSize()\n"
+DefineConsoleMethod( WorldEditor, getSoftSnapSize, F32, (),, "getSoftSnapSize()\n"
               "Get the absolute size to trigger a soft snap.")
 {
 	return object->mSoftSnapSize;
 }
 
-ConsoleMethod( WorldEditor, setSoftSnapSize, void, 3, 3, "setSoftSnapSize(F32)\n"
+DefineConsoleMethod( WorldEditor, setSoftSnapSize, void, (F32 size), , "setSoftSnapSize(F32)\n"
               "Set the absolute size to trigger a soft snap.")
 {
-	object->mSoftSnapSize = dAtof(argv[2]);
+	object->mSoftSnapSize = size;
 }
 
 DefineEngineMethod( WorldEditor, getSoftSnapAlignment, WorldEditor::AlignmentType, (),,
@@ -3405,40 +3389,40 @@ DefineEngineMethod( WorldEditor, setSoftSnapAlignment, void, ( WorldEditor::Alig
    object->mSoftSnapAlignment = type;
 }
 
-ConsoleMethod( WorldEditor, softSnapSizeByBounds, void, 3, 3, "softSnapSizeByBounds(bool)\n"
+DefineConsoleMethod( WorldEditor, softSnapSizeByBounds, void, (bool enable), , "softSnapSizeByBounds(bool)\n"
               "Use selection bounds size as soft snap bounds.")
 {
-	object->mSoftSnapSizeByBounds = dAtob(argv[2]);
+	object->mSoftSnapSizeByBounds = enable;
 }
 
-ConsoleMethod( WorldEditor, getSoftSnapBackfaceTolerance, F32, 2, 2, "getSoftSnapBackfaceTolerance()\n"
+DefineConsoleMethod( WorldEditor, getSoftSnapBackfaceTolerance, F32, (), , "getSoftSnapBackfaceTolerance()\n"
               "The fraction of the soft snap radius that backfaces may be included.")
 {
 	return object->mSoftSnapBackfaceTolerance;
 }
 
-ConsoleMethod( WorldEditor, setSoftSnapBackfaceTolerance, void, 3, 3, "setSoftSnapBackfaceTolerance(F32 with range of 0..1)\n"
+DefineConsoleMethod( WorldEditor, setSoftSnapBackfaceTolerance, void, (F32 range), , "setSoftSnapBackfaceTolerance(F32 with range of 0..1)\n"
               "The fraction of the soft snap radius that backfaces may be included.")
 {
-	object->mSoftSnapBackfaceTolerance = dAtof(argv[2]);
+	object->mSoftSnapBackfaceTolerance = range;
 }
 
-ConsoleMethod( WorldEditor, softSnapRender, void, 3, 3, "softSnapRender(bool)\n"
+DefineConsoleMethod( WorldEditor, softSnapRender, void, (bool enable), , "softSnapRender(bool)\n"
               "Render the soft snapping bounds.")
 {
-	object->mSoftSnapRender = dAtob(argv[2]);
+	object->mSoftSnapRender = enable;
 }
 
-ConsoleMethod( WorldEditor, softSnapRenderTriangle, void, 3, 3, "softSnapRenderTriangle(bool)\n"
+DefineConsoleMethod( WorldEditor, softSnapRenderTriangle, void, (bool enable), , "softSnapRenderTriangle(bool)\n"
               "Render the soft snapped triangle.")
 {
-	object->mSoftSnapRenderTriangle = dAtob(argv[2]);
+	object->mSoftSnapRenderTriangle = enable;
 }
 
-ConsoleMethod( WorldEditor, softSnapDebugRender, void, 3, 3, "softSnapDebugRender(bool)\n"
+DefineConsoleMethod( WorldEditor, softSnapDebugRender, void, (bool enable), , "softSnapDebugRender(bool)\n"
               "Toggle soft snapping debug rendering.")
 {
-	object->mSoftSnapDebugRender = dAtob(argv[2]);
+	object->mSoftSnapDebugRender = enable;
 }
 
 DefineEngineMethod( WorldEditor, getTerrainSnapAlignment, WorldEditor::AlignmentType, (),,
@@ -3453,27 +3437,22 @@ DefineEngineMethod( WorldEditor, setTerrainSnapAlignment, void, ( WorldEditor::A
    object->mTerrainSnapAlignment = alignment;
 }
 
-ConsoleMethod( WorldEditor, transformSelection, void, 13, 13, "transformSelection(...)\n"
+DefineConsoleMethod( WorldEditor, transformSelection, void, 
+                   ( bool position,
+                     Point3F point,
+                     bool relativePos,
+                     bool rotate,
+                     Point3F rotation,
+                     bool relativeRot,
+                     bool rotLocal,
+                     S32 scaleType,
+                     Point3F scale,
+                     bool sRelative,
+                     bool sLocal ), , "transformSelection(...)\n"
               "Transform selection by given parameters.")
 {
-   bool position = dAtob(argv[2]);
-   Point3F p(0.0f, 0.0f, 0.0f);
-   dSscanf(argv[3], "%g %g %g", &p.x, &p.y, &p.z);
-   bool relativePos = dAtob(argv[4]);
-
-   bool rotate = dAtob(argv[5]);
-   EulerF r(0.0f, 0.0f, 0.0f);
-   dSscanf(argv[6], "%g %g %g", &r.x, &r.y, &r.z);
-   bool relativeRot = dAtob(argv[7]);
-   bool rotLocal = dAtob(argv[8]);
-
-   S32 scaleType = dAtoi(argv[9]);
-   Point3F s(1.0f, 1.0f, 1.0f);
-   dSscanf(argv[10], "%g %g %g", &s.x, &s.y, &s.z);
-   bool sRelative = dAtob(argv[11]);
-   bool sLocal = dAtob(argv[12]);
 
-   object->transformSelection(position, p, relativePos, rotate, r, relativeRot, rotLocal, scaleType, s, sRelative, sLocal);
+   object->transformSelection(position, point, relativePos, rotate, rotation, relativeRot, rotLocal, scaleType, scale, sRelative, sLocal);
 }
 
 #include "core/strings/stringUnit.h"
@@ -3546,10 +3525,10 @@ void WorldEditor::colladaExportSelection( const String &path )
 #endif
 }
 
-ConsoleMethod( WorldEditor, colladaExportSelection, void, 3, 3, 
+DefineConsoleMethod( WorldEditor, colladaExportSelection, void, (const char * path), , 
               "( String path ) - Export the combined geometry of all selected objects to the specified path in collada format." )
 {  
-   object->colladaExportSelection( (const char*)argv[2] );
+   object->colladaExportSelection( path );
 }
 
 void WorldEditor::makeSelectionPrefab( const char *filename )
@@ -3700,25 +3679,20 @@ void WorldEditor::explodeSelectedPrefab()
    setDirty();
 }
 
-ConsoleMethod( WorldEditor, makeSelectionPrefab, void, 3, 3, "( string filename ) - Save selected objects to a .prefab file and replace them in the level with a Prefab object." )
+DefineConsoleMethod( WorldEditor, makeSelectionPrefab, void, ( const char * filename ), , "( string filename ) - Save selected objects to a .prefab file and replace them in the level with a Prefab object." )
 {
-   object->makeSelectionPrefab( argv[2] );
+   object->makeSelectionPrefab( filename );
 }
 
-ConsoleMethod( WorldEditor, explodeSelectedPrefab, void, 2, 2, "() - Replace selected Prefab objects with a SimGroup containing all children objects defined in the .prefab." )
+DefineConsoleMethod( WorldEditor, explodeSelectedPrefab, void, (),, "() - Replace selected Prefab objects with a SimGroup containing all children objects defined in the .prefab." )
 {
    object->explodeSelectedPrefab();
 }
 
-ConsoleMethod( WorldEditor, mountRelative, void, 4, 4, "( Object A, Object B )" )
+DefineConsoleMethod( WorldEditor, mountRelative, void, ( SceneObject *objA, SceneObject *objB ), , "( Object A, Object B )" )
 {
-   SceneObject *objA;
-   if ( !Sim::findObject( argv[2], objA ) )
-      return;
-
-   SceneObject *objB;
-   if ( !Sim::findObject( argv[3], objB ) )
-      return;
+	if (!objA || !objB)
+		return;
 
    MatrixF xfm = objB->getTransform();   
    MatrixF mat = objA->getWorldTransform();

+ 10 - 6
Engine/source/i18n/i18n.cpp

@@ -24,6 +24,7 @@
 #include "core/stream/stream.h"
 #include "core/stream/fileStream.h"
 #include "console/console.h"
+#include "console/engineAPI.h"
 
 #include "i18n/i18n.h"
 #include "i18n/lang.h"
@@ -57,7 +58,7 @@ const UTF8 *getCoreString(S32 id)
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction(getCoreLangTable, S32, 1, 1, "()"
+DefineConsoleFunction( getCoreLangTable, S32, (), , "()"
 				"@brief Gets the primary LangTable used by the game\n\n"
 				"@return ID of the core LangTable\n"
 				"@ingroup Localization")
@@ -68,17 +69,20 @@ ConsoleFunction(getCoreLangTable, S32, 1, 1, "()"
       return 0;
 }
 
-ConsoleFunction(setCoreLangTable, void, 2, 2, "(string LangTable)"
+DefineConsoleFunction( setCoreLangTable, void, (const char * lgTable), , "(string LangTable)"
 				"@brief Sets the primary LangTable used by the game\n\n"
 				"@param LangTable ID of the core LangTable\n"
 				"@ingroup Localization")
 {
-	LangTable *lt;
+	LangTable * lt;
    
-   if(Sim::findObject(argv[1], lt))
-		gCoreLangTable = lt;
+   if(Sim::findObject(lgTable, lt))
+   { gCoreLangTable = lt; }
    else
-      Con::errorf("setCoreLangTable - Unable to find LanTable '%s'", (const char*)argv[1]);
+   {       
+      Con::errorf("setCoreLangTable - Unable to find LanTable '%s'", lgTable); 
+   }
+
 }
 
 //-----------------------------------------------------------------------------

+ 13 - 13
Engine/source/i18n/lang.cpp

@@ -325,7 +325,7 @@ void LangTable::setCurrentLanguage(S32 langid)
 
 
 
-ConsoleMethod(LangTable, addLanguage, S32, 3, 4, 
+DefineConsoleMethod(LangTable, addLanguage, S32, (String filename, String languageName), ("", ""), 
 			  "(string filename, [string languageName])"
 			  "@brief Adds a language to the table\n\n"
 			  "@param filename Name and path to the language file\n"
@@ -335,11 +335,11 @@ ConsoleMethod(LangTable, addLanguage, S32, 3, 4,
 {
 	UTF8 scriptFilenameBuffer[1024];
 	
-	Con::expandScriptFilename((char*)scriptFilenameBuffer, sizeof(scriptFilenameBuffer), argv[2]);
-	return object->addLanguage(scriptFilenameBuffer, argc == 4 ? (const UTF8*)argv[3] : NULL);
+	Con::expandScriptFilename((char*)scriptFilenameBuffer, sizeof(scriptFilenameBuffer), filename);
+	return object->addLanguage(scriptFilenameBuffer, (const UTF8*)languageName);
 }
 
-ConsoleMethod(LangTable, getString, const char *, 3, 3, 
+DefineConsoleMethod(LangTable, getString, const char *, (U32 id), , 
 			  "(string filename)"
 			  "@brief Grabs a string from the specified table\n\n"
 			  "If an invalid is passed, the function will attempt to "
@@ -347,7 +347,7 @@ ConsoleMethod(LangTable, getString, const char *, 3, 3,
 			  "@param filename Name of the language table to access\n\n"
 			  "@return Text from the specified language table, \"\" if ID was invalid and default table is not set")
 {
-	const char * str =	(const char*)object->getString(dAtoi(argv[2]));
+	const char * str =	(const char*)object->getString(id);
 	if(str != NULL)
 	{
 		char * ret = Con::getReturnBuffer(dStrlen(str) + 1);
@@ -358,34 +358,34 @@ ConsoleMethod(LangTable, getString, const char *, 3, 3,
 	return "";
 }
 
-ConsoleMethod(LangTable, setDefaultLanguage, void, 3, 3, "(int language)"
+DefineConsoleMethod(LangTable, setDefaultLanguage, void, (S32 langId), , "(int language)"
 			  "@brief Sets the default language table\n\n"
 			  "@param language ID of the table\n")
 {
-	object->setDefaultLanguage(dAtoi(argv[2]));
+	object->setDefaultLanguage(langId);
 }
 
-ConsoleMethod(LangTable, setCurrentLanguage, void, 3, 3, 
+DefineConsoleMethod(LangTable, setCurrentLanguage, void, (S32 langId), , 
 			  "(int language)"
 			  "@brief Sets the current language table for grabbing text\n\n"
 			  "@param language ID of the table\n")
 {
-	object->setCurrentLanguage(dAtoi(argv[2]));
+	object->setCurrentLanguage(langId);
 }
 
-ConsoleMethod(LangTable, getCurrentLanguage, S32, 2, 2, "()"
+DefineConsoleMethod(LangTable, getCurrentLanguage, S32, (), , "()"
 			  "@brief Get the ID of the current language table\n\n"
 			  "@return Numerical ID of the current language table")
 {
 	return object->getCurrentLanguage();
 }
 
-ConsoleMethod(LangTable, getLangName, const char *, 3, 3, "(int language)"
+DefineConsoleMethod(LangTable, getLangName, const char *, (S32 langId), , "(int language)"
 			  "@brief Return the readable name of the language table\n\n"
 			  "@param language Numerical ID of the language table to access\n\n"
 			  "@return String containing the name of the table, NULL if ID was invalid or name was never specified")
 {
-	const char * str = (const char*)object->getLangName(dAtoi(argv[2]));
+	const char * str = (const char*)object->getLangName(langId);
 	if(str != NULL)
 	{
 		char * ret = Con::getReturnBuffer(dStrlen(str) + 1);
@@ -396,7 +396,7 @@ ConsoleMethod(LangTable, getLangName, const char *, 3, 3, "(int language)"
 	return "";
 }
 
-ConsoleMethod(LangTable, getNumLang, S32, 2, 2, "()"
+DefineConsoleMethod(LangTable, getNumLang, S32, (), , "()"
 			  "@brief Used to find out how many languages are in the table\n\n"
 			  "@return Size of the vector containing the languages, numerical")
 {

+ 3 - 2
Engine/source/lighting/advanced/advancedLightManager.cpp

@@ -34,6 +34,7 @@
 #include "materials/materialManager.h"
 #include "math/util/sphereMesh.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "scene/sceneRenderState.h"
 
 
@@ -640,7 +641,7 @@ LightShadowMap* AdvancedLightManager::findShadowMapForObject( SimObject *object
    return sceneLight->getLight()->getExtended<ShadowMapParams>()->getShadowMap();
 }
 
-ConsoleFunction( setShadowVizLight, const char*, 2, 2, "" )
+DefineConsoleFunction( setShadowVizLight, const char*, (const char* name), (""), "")
 {
    static const String DebugTargetName( "AL_ShadowVizTexture" );
 
@@ -653,7 +654,7 @@ ConsoleFunction( setShadowVizLight, const char*, 2, 2, "" )
       return 0;
 
    SimObject *object;
-   Sim::findObject( argv[1], object );
+   Sim::findObject( name, object );
    LightShadowMap *lightShadowMap = lm->findShadowMapForObject( object );
    if ( !lightShadowMap || !lightShadowMap->getTexture() )
       return 0;

+ 2 - 1
Engine/source/lighting/shadowManager.cpp

@@ -25,6 +25,7 @@
 
 #include "scene/sceneManager.h"
 #include "materials/materialManager.h"
+#include "console/engineAPI.h"
 
 const String ShadowManager::ManagerTypeName("ShadowManager");
 
@@ -53,7 +54,7 @@ SceneManager* ShadowManager::getSceneManager()
 //------------------------------------------------------------------------------
 
 // Runtime switching of shadow systems.  Requires correct world to be pushed at console.
-ConsoleFunction( setShadowManager, bool, 1, 3, "string sShadowSystemName" )
+DefineConsoleFunction( setShadowManager, bool, (const char* sShadowSystemName), (""), "string sShadowSystemName")
 {
    /*
    // Make sure this new one exists

+ 14 - 13
Engine/source/materials/materialDefinition.cpp

@@ -24,6 +24,7 @@
 #include "materials/materialDefinition.h"
 
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 #include "math/mathTypes.h"
 #include "materials/materialManager.h"
 #include "sceneData.h"
@@ -594,55 +595,55 @@ void Material::StageData::getFeatureSet( FeatureSet *outFeatures ) const
    }
 }
 
-ConsoleMethod( Material, flush, void, 2, 2, 
+DefineConsoleMethod( Material, flush, void, (),, 
    "Flushes all material instances that use this material." )
 {
    object->flush();
 }
 
-ConsoleMethod( Material, reload, void, 2, 2, 
+DefineConsoleMethod( Material, reload, void, (),, 
    "Reloads all material instances that use this material." )
 {
    object->reload();
 }
 
-ConsoleMethod( Material, dumpInstances, void, 2, 2, 
+DefineConsoleMethod( Material, dumpInstances, void, (),, 
    "Dumps a formatted list of the currently allocated material instances for this material to the console." )
 {
    MATMGR->dumpMaterialInstances( object );
 }
 
-ConsoleMethod( Material, getAnimFlags, const char*, 3, 3, "" )
+DefineConsoleMethod( Material, getAnimFlags, const char*, (U32 id), , "" )
 {
    char * animFlags = Con::getReturnBuffer(512);
 
-   if(object->mAnimFlags[ dAtoi(argv[2]) ] & Material::Scroll)
+   if(object->mAnimFlags[ id ] & Material::Scroll)
    {
 	   if(dStrcmp( animFlags, "" ) == 0)
 	      dStrcpy( animFlags, "$Scroll" );
    }
-   if(object->mAnimFlags[ dAtoi(argv[2]) ] & Material::Rotate)
+   if(object->mAnimFlags[ id ] & Material::Rotate)
    {
 	   if(dStrcmp( animFlags, "" ) == 0)
 	      dStrcpy( animFlags, "$Rotate" );
 	   else
 			dStrcat( animFlags, " | $Rotate");
    }
-   if(object->mAnimFlags[ dAtoi(argv[2]) ] & Material::Wave)
+   if(object->mAnimFlags[ id ] & Material::Wave)
    {
 	   if(dStrcmp( animFlags, "" ) == 0)
 	      dStrcpy( animFlags, "$Wave" );
 	   else
 			dStrcat( animFlags, " | $Wave");
    }
-   if(object->mAnimFlags[ dAtoi(argv[2]) ] & Material::Scale)
+   if(object->mAnimFlags[ id ] & Material::Scale)
    {
 	   if(dStrcmp( animFlags, "" ) == 0)
 	      dStrcpy( animFlags, "$Scale" );
 	   else
 			dStrcat( animFlags, " | $Scale");
    }
-   if(object->mAnimFlags[ dAtoi(argv[2]) ] & Material::Sequence)
+   if(object->mAnimFlags[ id ] & Material::Sequence)
    {
 	   if(dStrcmp( animFlags, "" ) == 0)
 	      dStrcpy( animFlags, "$Sequence" );
@@ -653,20 +654,20 @@ ConsoleMethod( Material, getAnimFlags, const char*, 3, 3, "" )
 	return animFlags;
 }
 
-ConsoleMethod(Material, getFilename, const char*, 2, 2, "Get filename of material")
+DefineConsoleMethod(Material, getFilename, const char*, (),, "Get filename of material")
 {
 	SimObject *material = static_cast<SimObject *>(object);
    return material->getFilename();
 }
 
-ConsoleMethod( Material, isAutoGenerated, bool, 2, 2, 
+DefineConsoleMethod( Material, isAutoGenerated, bool, (),, 
               "Returns true if this Material was automatically generated by MaterialList::mapMaterials()" )
 {
    return object->isAutoGenerated();
 }
 
-ConsoleMethod( Material, setAutoGenerated, void, 3, 3, 
+DefineConsoleMethod( Material, setAutoGenerated, void, (bool isAutoGenerated), , 
               "setAutoGenerated(bool isAutoGenerated): Set whether or not the Material is autogenerated." )
 {
-   object->setAutoGenerated(dAtob(argv[2]));
+   object->setAutoGenerated(isAutoGenerated);
 }

+ 9 - 8
Engine/source/materials/materialManager.cpp

@@ -30,6 +30,7 @@
 #include "shaderGen/shaderGen.h"
 #include "core/module.h"
 #include "console/consoleTypes.h"
+#include "console/engineAPI.h"
 
 
 MODULE_BEGIN( MaterialManager )
@@ -450,14 +451,14 @@ bool MaterialManager::_handleGFXEvent( GFXDevice::GFXDeviceEventType event_ )
    return true;
 }
 
-ConsoleFunction( reInitMaterials, void, 1, 1, 
+DefineConsoleFunction( reInitMaterials, void, (),,
    "@brief Flushes all procedural shaders and re-initializes all active material instances.\n\n" 
    "@ingroup Materials")
 {
    MATMGR->flushAndReInitInstances();
 }
 
-ConsoleFunction( addMaterialMapping, void, 3, 3, "(string texName, string matName)\n"
+DefineConsoleFunction( addMaterialMapping, void, (const char * texName, const char * matName), , "(string texName, string matName)\n"
    "@brief Maps the given texture to the given material.\n\n"
    "Generates a console warning before overwriting.\n\n"
    "Material maps are used by terrain and interiors for triggering "
@@ -465,27 +466,27 @@ ConsoleFunction( addMaterialMapping, void, 3, 3, "(string texName, string matNam
    "block or interior surface using the associated texture.\n\n"
    "@ingroup Materials")
 {
-   MATMGR->mapMaterial(argv[1], argv[2]);
+   MATMGR->mapMaterial(texName, matName);
 }
 
-ConsoleFunction( getMaterialMapping, const char*, 2, 2, "(string texName)\n"
+DefineConsoleFunction( getMaterialMapping, const char*, (const char * texName), , "(string texName)\n"
    "@brief Returns the name of the material mapped to this texture.\n\n"
    "If no materials are found, an empty string is returned.\n\n"
    "@param texName Name of the texture\n\n"
    "@ingroup Materials")
 {
-   return MATMGR->getMapEntry(argv[1]).c_str();
+   return MATMGR->getMapEntry(texName).c_str();
 }
 
-ConsoleFunction( dumpMaterialInstances, void, 1, 1, 
+DefineConsoleFunction( dumpMaterialInstances, void, (), ,
    "@brief Dumps a formatted list of currently allocated material instances to the console.\n\n"
    "@ingroup Materials")
 {
    MATMGR->dumpMaterialInstances();
 }
 
-ConsoleFunction( getMapEntry, const char *, 2, 2, 
+DefineConsoleFunction( getMapEntry, const char*, (const char * texName), ,
    "@hide")
 {
-	return MATMGR->getMapEntry( argv[1] );
+	return MATMGR->getMapEntry( String(texName) );
 }

+ 19 - 10
Engine/source/math/mConsoleFunctions.cpp

@@ -94,14 +94,22 @@ DefineConsoleFunction( mFloor, S32, ( F32 v ),,
    return (S32)mFloor( v );
 }
 
-DefineConsoleFunction( mRound, S32, ( F32 v ),,
-    "Round v to the nearest integer.\n"
-    "@param v Number to convert to integer."
-    "@returns Number converted to integer."
-    "@ingroup Math" )
-{
-   return (S32)mFloor( v + 0.5f );
-}
+DefineConsoleFunction( mRound, F32, ( F32 v, S32 n ), (0),  
+    "Round v to the nth decimal place or the nearest whole number by default."  
+    "@param v Value to roundn"  
+    "@param n Number of decimal places to round to, 0 by defaultn"  
+    "@return The rounded value as a S32."  
+    "@ingroup Math" )  
+{  
+    if(n <= 0)
+	{
+        return mRound(v);  
+	}
+    else  
+	{
+        return mRound(v, n);  
+	}
+}  
 
 DefineConsoleFunction( mCeil, S32, ( F32 v ),,
     "Round v up to the nearest integer.\n"
@@ -119,8 +127,9 @@ DefineConsoleFunction( mFloatLength, const char*, ( F32 v, U32 precision ),,
     "@returns Number formatted to the specified number of decimal places."
     "@ingroup Math" )
 {
-   char fmtString[8] = "%.0f";
-   if (precision > 9)
+   char fmtString[8] = "%.9f";
+
+   if (precision >= 9)
       precision = 9;
    fmtString[2] = '0' + precision;
 

Some files were not shown because too many files changed in this diff