Browse Source

Revert "Hand merging rnd branch, which is just Leap Motion support and input improvements. This will temporarily break the other platforms, which I will fix immediately."

This reverts commit 3067b33f4861f9824b0f6bc81a6f916db95275ae.
MichPerry-GG 11 years ago
parent
commit
21b86e342d
100 changed files with 5009 additions and 10922 deletions
  1. BIN
      Leap.dll
  2. BIN
      Leapd.dll
  3. 80 7
      engine/compilers/VisualStudio 2010/Torque 2D.vcxproj
  4. 240 21
      engine/compilers/VisualStudio 2010/Torque 2D.vcxproj.filters
  5. 89 22
      engine/compilers/VisualStudio 2012/Torque 2D.vcxproj
  6. 233 35
      engine/compilers/VisualStudio 2012/Torque 2D.vcxproj.filters
  7. 186 41
      engine/compilers/Xcode/Torque2D.xcodeproj/project.pbxproj
  8. 150 20
      engine/compilers/Xcode_iOS/Torque2D.xcodeproj/project.pbxproj
  9. 0 4566
      engine/lib/LeapSDK/include/Leap.h
  10. 0 1036
      engine/lib/LeapSDK/include/LeapMath.h
  11. BIN
      engine/lib/LeapSDK/lib/libLeap.dylib
  12. BIN
      engine/lib/LeapSDK/lib/libc++/libLeap.dylib
  13. BIN
      engine/lib/LeapSDK/lib/x64/Leap.dll
  14. BIN
      engine/lib/LeapSDK/lib/x64/Leapd.dll
  15. BIN
      engine/lib/LeapSDK/lib/x64/msvcp100.dll
  16. BIN
      engine/lib/LeapSDK/lib/x64/msvcp100d.dll
  17. BIN
      engine/lib/LeapSDK/lib/x64/msvcr100.dll
  18. BIN
      engine/lib/LeapSDK/lib/x64/msvcr100d.dll
  19. BIN
      engine/lib/LeapSDK/lib/x86/Leap.dll
  20. BIN
      engine/lib/LeapSDK/lib/x86/Leapd.dll
  21. BIN
      engine/lib/LeapSDK/lib/x86/msvcp100.dll
  22. BIN
      engine/lib/LeapSDK/lib/x86/msvcp100d.dll
  23. BIN
      engine/lib/LeapSDK/lib/x86/msvcr100.dll
  24. BIN
      engine/lib/LeapSDK/lib/x86/msvcr100d.dll
  25. 47 25
      engine/source/2d/assets/AnimationAsset_ScriptBinding.h
  26. 27 0
      engine/source/2d/assets/ImageAsset.cc
  27. 2 0
      engine/source/2d/assets/ImageAsset.h
  28. 186 94
      engine/source/2d/assets/ImageAsset_ScriptBinding.h
  29. 2 2
      engine/source/2d/assets/ParticleAssetEmitter.h
  30. 338 178
      engine/source/2d/assets/ParticleAssetEmitter_ScriptBinding.h
  31. 2 2
      engine/source/2d/assets/ParticleAssetField.cc
  32. 1 1
      engine/source/2d/assets/ParticleAssetField.h
  33. 158 88
      engine/source/2d/assets/ParticleAsset_ScriptBinding.h
  34. 14 7
      engine/source/2d/controllers/AmbientForceController_ScriptBinding.h
  35. 3 1
      engine/source/2d/controllers/BuoyancyController_ScriptBinding.h
  36. 67 36
      engine/source/2d/controllers/PointForceController_ScriptBinding.h
  37. 24 12
      engine/source/2d/controllers/core/PickingSceneController_ScriptBinding.h
  38. 70 37
      engine/source/2d/core/RenderProxy_ScriptBinding.h
  39. 71 37
      engine/source/2d/core/SpriteBase_ScriptBinding.h
  40. 2 58
      engine/source/2d/core/Utility.cc
  41. 2 2
      engine/source/2d/core/Vector2.h
  42. 106 54
      engine/source/2d/core/Vector2_ScriptBinding.h
  43. 24 21
      engine/source/2d/experimental/composites/WaveComposite_ScriptBinding.h
  44. 2 29
      engine/source/2d/gui/SceneWindow.cc
  45. 0 2
      engine/source/2d/gui/SceneWindow.h
  46. 317 176
      engine/source/2d/gui/SceneWindow_ScriptBinding.h
  47. 25 11
      engine/source/2d/gui/guiImageButtonCtrl_ScriptBindings.h
  48. 1 1
      engine/source/2d/gui/guiSceneObjectCtrl.cc
  49. 37 19
      engine/source/2d/gui/guiSpriteCtrl_ScriptBindings.h
  50. 355 229
      engine/source/2d/scene/Scene_ScriptBinding.h
  51. 326 188
      engine/source/2d/sceneobject/CompositeSprite_ScriptBinding.h
  52. 4 4
      engine/source/2d/sceneobject/ImageFont.cc
  53. 5 5
      engine/source/2d/sceneobject/ImageFont.h
  54. 48 24
      engine/source/2d/sceneobject/ImageFont_ScriptBinding.h
  55. 8 8
      engine/source/2d/sceneobject/ParticlePlayer.cc
  56. 114 62
      engine/source/2d/sceneobject/ParticlePlayer_ScriptBinding.h
  57. 1 1
      engine/source/2d/sceneobject/SceneObject.cc
  58. 63 34
      engine/source/2d/sceneobject/SceneObjectSet_ScriptBinding.h
  59. 338 192
      engine/source/2d/sceneobject/SceneObject_ScriptBinding.h
  60. 24 8
      engine/source/2d/sceneobject/Scroller.cc
  61. 68 33
      engine/source/2d/sceneobject/Scroller_ScriptBinding.h
  62. 1 1
      engine/source/2d/sceneobject/ShapeVector.cc
  63. 1 1
      engine/source/2d/sceneobject/ShapeVector.h
  64. 121 67
      engine/source/2d/sceneobject/ShapeVector_ScriptBinding.h
  65. 33 18
      engine/source/2d/sceneobject/Sprite_ScriptBinding.h
  66. 34 12
      engine/source/2d/sceneobject/Trigger_ScriptBinding.h
  67. 14 6
      engine/source/assets/assetBase_ScriptBinding.h
  68. 268 166
      engine/source/assets/assetManager_ScriptBinding.h
  69. 23 11
      engine/source/assets/assetQuery_ScriptBinding.h
  70. 65 39
      engine/source/assets/assetTagsManifest_ScriptBinding.h
  71. 95 30
      engine/source/audio/audio.cc
  72. 2 0
      engine/source/audio/audio.h
  73. 31 8
      engine/source/audio/audioBuffer.cc
  74. 5 5
      engine/source/audio/audioDataBlock.cc
  75. 0 745
      engine/source/audio/audioFunctions.cc
  76. 63 38
      engine/source/collection/nameTags_ScriptBinding.h
  77. 7 88
      engine/source/collection/undo.cc
  78. 78 49
      engine/source/component/behaviors/behaviorComponent_ScriptBinding.h
  79. 9 3
      engine/source/component/behaviors/behaviorInstance_ScriptBinding.h
  80. 81 50
      engine/source/component/behaviors/behaviorTemplate_ScriptBinding.h
  81. 2 19
      engine/source/component/dynamicConsoleMethodComponent.cpp
  82. 2 72
      engine/source/component/simComponent.cpp
  83. 25 124
      engine/source/console/console.cc
  84. 58 7
      engine/source/console/console.h
  85. 2 37
      engine/source/console/consoleDoc.cc
  86. 2 28
      engine/source/console/consoleExprEvalState.cc
  87. 3 1569
      engine/source/console/consoleFunctions.cc
  88. 2 16
      engine/source/console/consoleLogger.cc
  89. 3 34
      engine/source/console/consoleNamespace.cc
  90. 1 38
      engine/source/console/consoleObject.cc
  91. 2 40
      engine/source/debug/profiler.cc
  92. 11 5
      engine/source/debug/remote/RemoteDebugger1_ScriptBinding.h
  93. 6 1
      engine/source/debug/remote/RemoteDebuggerBase_ScriptBinding.h
  94. 8 6
      engine/source/debug/remote/RemoteDebuggerBridge_ScriptBinding.h
  95. 1 26
      engine/source/debug/telnetDebugger.cc
  96. 51 2
      engine/source/game/defaultGame.cc
  97. 2 64
      engine/source/game/gameConnection.cc
  98. 18 12
      engine/source/game/gameInterface_ScriptBinding.h
  99. 13 56
      engine/source/game/version.cc
  100. 6 0
      engine/source/game/version.h

BIN
Leap.dll


BIN
Leapd.dll


+ 80 - 7
engine/compilers/VisualStudio 2010/Torque 2D.vcxproj

@@ -286,6 +286,7 @@
     <ClCompile Include="..\..\source\assets\declaredAssets.cc" />
     <ClCompile Include="..\..\source\assets\referencedAssets.cc" />
     <ClCompile Include="..\..\source\audio\AudioAsset.cc" />
+    <ClCompile Include="..\..\source\audio\audio_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\box2d\Collision\b2BroadPhase.cpp" />
     <ClCompile Include="..\..\source\box2d\Collision\b2CollideCircle.cpp" />
     <ClCompile Include="..\..\source\box2d\Collision\b2CollideEdge.cpp" />
@@ -342,6 +343,8 @@
     <ClCompile Include="..\..\source\console\consoleExprEvalState.cc" />
     <ClCompile Include="..\..\source\console\consoleNamespace.cc" />
     <ClCompile Include="..\..\source\console\ConsoleTypeValidators.cc" />
+    <ClCompile Include="..\..\source\console\metaScripting_ScriptBinding.cc" />
+    <ClCompile Include="..\..\source\console\Package.cc" />
     <ClCompile Include="..\..\source\debug\profiler.cc" />
     <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc" />
     <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc" />
@@ -406,7 +409,7 @@
     <ClCompile Include="..\..\source\io\fileObject.cc" />
     <ClCompile Include="..\..\source\io\fileStream.cc" />
     <ClCompile Include="..\..\source\io\fileStreamObject.cc" />
-    <ClCompile Include="..\..\source\io\fileSystemFunctions.cpp" />
+    <ClCompile Include="..\..\source\io\fileSystem_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\io\filterStream.cc" />
     <ClCompile Include="..\..\source\io\memStream.cc" />
     <ClCompile Include="..\..\source\io\nStream.cc" />
@@ -425,9 +428,10 @@
     <ClCompile Include="..\..\source\io\zip\zipObject.cc" />
     <ClCompile Include="..\..\source\io\zip\zipSubStream.cc" />
     <ClCompile Include="..\..\source\io\zip\zipTempStream.cc" />
+    <ClCompile Include="..\..\source\math\math_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\math\rectClipper.cpp" />
     <ClCompile Include="..\..\source\memory\dataChunker.cc" />
-    <ClCompile Include="..\..\source\memory\frameAllocator.cc" />
+    <ClCompile Include="..\..\source\memory\frameAllocator_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\messaging\dispatcher.cc" />
     <ClCompile Include="..\..\source\messaging\eventManager.cc" />
     <ClCompile Include="..\..\source\messaging\message.cc" />
@@ -470,7 +474,6 @@
     <ClCompile Include="..\..\source\audio\audio.cc" />
     <ClCompile Include="..\..\source\audio\audioBuffer.cc" />
     <ClCompile Include="..\..\source\audio\audioDataBlock.cc" />
-    <ClCompile Include="..\..\source\audio\audioFunctions.cc" />
     <ClCompile Include="..\..\source\audio\audioStreamSourceFactory.cc" />
     <ClCompile Include="..\..\source\audio\wavStreamSource.cc" />
     <ClCompile Include="..\..\source\component\dynamicConsoleMethodComponent.cpp" />
@@ -497,7 +500,6 @@
     <ClCompile Include="..\..\source\math\mathTypes.cc" />
     <ClCompile Include="..\..\source\math\mathUtils.cc" />
     <ClCompile Include="..\..\source\math\mBox.cc" />
-    <ClCompile Include="..\..\source\math\mConsoleFunctions.cc" />
     <ClCompile Include="..\..\source\math\mMath_C.cc" />
     <ClCompile Include="..\..\source\math\mMathAltivec.cc" />
     <ClCompile Include="..\..\source\math\mMathAMD.cc" />
@@ -520,7 +522,7 @@
     <ClCompile Include="..\..\source\platform\platformFileIO.cc" />
     <ClCompile Include="..\..\source\platform\platformFont.cc" />
     <ClCompile Include="..\..\source\platform\platformMemory.cc" />
-    <ClCompile Include="..\..\source\platform\platformNetwork.cc" />
+    <ClCompile Include="..\..\source\platform\platformNetwork_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\platform\platformString.cc" />
     <ClCompile Include="..\..\source\platform\platformVideo.cc" />
     <ClCompile Include="..\..\source\platform\menus\popupMenu.cc" />
@@ -648,6 +650,7 @@
     <ClInclude Include="..\..\source\2d\core\SpriteBatchQuery.h" />
     <ClInclude Include="..\..\source\2d\core\SpriteBatchQueryResult.h" />
     <ClInclude Include="..\..\source\2d\core\Utility.h" />
+    <ClInclude Include="..\..\source\2d\core\Utility_ScriptBinding.h" />
     <ClInclude Include="..\..\source\2d\core\Vector2.h" />
     <ClInclude Include="..\..\source\2d\core\Vector2_ScriptBinding.h" />
     <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite.h" />
@@ -671,7 +674,6 @@
     <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectRotateToEvent.h" />
     <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectSet.h" />
     <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectSet_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectTimerEvent.h" />
     <ClInclude Include="..\..\source\2d\sceneobject\SceneObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\2d\sceneobject\Scroller.h" />
     <ClInclude Include="..\..\source\2d\sceneobject\Scroller_ScriptBinding.h" />
@@ -777,6 +779,7 @@
     <ClInclude Include="..\..\source\collection\simpleHashTable.h" />
     <ClInclude Include="..\..\source\collection\sparseArray.h" />
     <ClInclude Include="..\..\source\collection\undo.h" />
+    <ClInclude Include="..\..\source\collection\undo_ScriptBinding.h" />
     <ClInclude Include="..\..\source\collection\vector.h" />
     <ClInclude Include="..\..\source\collection\vector2d.h" />
     <ClInclude Include="..\..\source\collection\vectorHeap.h" />
@@ -785,13 +788,25 @@
     <ClInclude Include="..\..\source\component\behaviors\behaviorComponent_ScriptBinding.h" />
     <ClInclude Include="..\..\source\component\behaviors\behaviorInstance_ScriptBinding.h" />
     <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\component\simComponent_ScriptBinding.h" />
     <ClInclude Include="..\..\source\console\consoleBaseType.h" />
     <ClInclude Include="..\..\source\console\consoleDictionary.h" />
+    <ClInclude Include="..\..\source\console\consoleDoc_ScriptBinding.h" />
     <ClInclude Include="..\..\source\console\consoleExprEvalState.h" />
+    <ClInclude Include="..\..\source\console\consoleExprEvalState_ScriptBinding.h" />
     <ClInclude Include="..\..\source\console\consoleInternal.h" />
+    <ClInclude Include="..\..\source\console\consoleLogger_ScriptBinding.h" />
     <ClInclude Include="..\..\source\console\consoleNamespace.h" />
+    <ClInclude Include="..\..\source\console\consoleNamespace_ScriptBinding.h" />
     <ClInclude Include="..\..\source\console\ConsoleTypeValidators.h" />
+    <ClInclude Include="..\..\source\console\expando_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\console\inputManagement_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\console\output_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\console\Package.h" />
+    <ClInclude Include="..\..\source\console\taggedStrings_ScriptBinding.h" />
     <ClInclude Include="..\..\source\debug\profiler.h" />
+    <ClInclude Include="..\..\source\debug\profiler_ScriptBinding.h" />
     <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1.h" />
     <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1_ScriptBinding.h" />
     <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase.h" />
@@ -799,23 +814,32 @@
     <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge.h" />
     <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge_ScriptBinding.h" />
     <ClInclude Include="..\..\source\debug\telnetDebugger.h" />
+    <ClInclude Include="..\..\source\debug\telnetDebugger_ScriptBinding.h" />
     <ClInclude Include="..\..\source\delegates\delegate.h" />
     <ClInclude Include="..\..\source\delegates\delegateSignal.h" />
     <ClInclude Include="..\..\source\delegates\FastDelegate.h" />
     <ClInclude Include="..\..\source\game\defaultGame.h" />
+    <ClInclude Include="..\..\source\game\gameConnection_ScriptBinding.h" />
     <ClInclude Include="..\..\source\game\gameInterface.h" />
     <ClInclude Include="..\..\source\game\gameInterface_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\game\version_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\color.h" />
+    <ClInclude Include="..\..\source\graphics\color_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\dgl.h" />
+    <ClInclude Include="..\..\source\graphics\dglMac_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\graphics\dgl_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\DynamicTexture.h" />
     <ClInclude Include="..\..\source\graphics\gBitmap.h" />
     <ClInclude Include="..\..\source\graphics\gFont.h" />
+    <ClInclude Include="..\..\source\graphics\gFont_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\gPalette.h" />
     <ClInclude Include="..\..\source\graphics\PNGImage.h" />
+    <ClInclude Include="..\..\source\graphics\PNGImage_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\splineUtil.h" />
     <ClInclude Include="..\..\source\graphics\TextureDictionary.h" />
     <ClInclude Include="..\..\source\graphics\TextureHandle.h" />
     <ClInclude Include="..\..\source\graphics\TextureManager.h" />
+    <ClInclude Include="..\..\source\graphics\TextureManager_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\TextureObject.h" />
     <ClInclude Include="..\..\source\gui\containers\guiGridCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiArrayCtrl.h" />
@@ -823,11 +847,13 @@
     <ClInclude Include="..\..\source\gui\guiBitmapCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiBubbleTextCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiCanvas.h" />
+    <ClInclude Include="..\..\source\gui\guiCanvas_ScriptBinding.h" />
     <ClInclude Include="..\..\source\gui\guiColorPicker.h" />
     <ClInclude Include="..\..\source\gui\guiConsole.h" />
     <ClInclude Include="..\..\source\gui\guiConsoleEditCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiConsoleTextCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiControl.h" />
+    <ClInclude Include="..\..\source\gui\guiControl_ScriptBinding.h" />
     <ClInclude Include="..\..\source\gui\guiDefaultControlRender.h" />
     <ClInclude Include="..\..\source\gui\guiInputCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiListBoxCtrl.h" />
@@ -851,18 +877,22 @@
     <ClInclude Include="..\..\source\gui\language\lang.h" />
     <ClInclude Include="..\..\source\gui\messageVector.h" />
     <ClInclude Include="..\..\source\input\actionMap.h" />
+    <ClInclude Include="..\..\source\input\actionMap_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\bitStream.h" />
     <ClInclude Include="..\..\source\io\bufferStream.h" />
-    <ClInclude Include="..\..\source\io\fileio.h" />
     <ClInclude Include="..\..\source\io\fileObject.h" />
+    <ClInclude Include="..\..\source\io\fileObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\fileStream.h" />
     <ClInclude Include="..\..\source\io\fileStreamObject.h" />
+    <ClInclude Include="..\..\source\io\fileStreamObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\filterStream.h" />
     <ClInclude Include="..\..\source\io\memstream.h" />
     <ClInclude Include="..\..\source\io\resizeStream.h" />
     <ClInclude Include="..\..\source\io\resource\resourceManager.h" />
+    <ClInclude Include="..\..\source\io\resource\resourceManager_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\stream.h" />
     <ClInclude Include="..\..\source\io\streamObject.h" />
+    <ClInclude Include="..\..\source\io\streamObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\zip\centralDir.h" />
     <ClInclude Include="..\..\source\io\zip\compressor.h" />
     <ClInclude Include="..\..\source\io\zip\extraField.h" />
@@ -870,18 +900,26 @@
     <ClInclude Include="..\..\source\io\zip\zipArchive.h" />
     <ClInclude Include="..\..\source\io\zip\zipCryptStream.h" />
     <ClInclude Include="..\..\source\io\zip\zipObject.h" />
+    <ClInclude Include="..\..\source\io\zip\zipObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\zip\zipStatFilter.h" />
     <ClInclude Include="..\..\source\io\zip\zipSubStream.h" />
     <ClInclude Include="..\..\source\io\zip\zipTempStream.h" />
+    <ClInclude Include="..\..\source\math\box_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\math\matrix_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\math\random_ScriptBinding.h" />
     <ClInclude Include="..\..\source\math\rectClipper.h" />
+    <ClInclude Include="..\..\source\math\vector_ScriptBinding.h" />
     <ClInclude Include="..\..\source\memory\dataChunker.h" />
     <ClInclude Include="..\..\source\memory\factoryCache.h" />
     <ClInclude Include="..\..\source\memory\frameAllocator.h" />
     <ClInclude Include="..\..\source\memory\safeDelete.h" />
     <ClInclude Include="..\..\source\messaging\dispatcher.h" />
+    <ClInclude Include="..\..\source\messaging\dispatcher_ScriptBinding.h" />
     <ClInclude Include="..\..\source\messaging\eventManager.h" />
+    <ClInclude Include="..\..\source\messaging\eventManager_ScriptBinding.h" />
     <ClInclude Include="..\..\source\messaging\message.h" />
     <ClInclude Include="..\..\source\messaging\messageForwarder.h" />
+    <ClInclude Include="..\..\source\messaging\message_ScriptBinding.h" />
     <ClInclude Include="..\..\source\messaging\scriptMsgListener.h" />
     <ClInclude Include="..\..\source\module\moduleCallbacks.h" />
     <ClInclude Include="..\..\source\module\moduleDefinition.h" />
@@ -891,16 +929,27 @@
     <ClInclude Include="..\..\source\module\moduleMergeDefinition.h" />
     <ClInclude Include="..\..\source\module\tamlModuleIdUpdateVisitor.h" />
     <ClInclude Include="..\..\source\network\connectionProtocol.h" />
+    <ClInclude Include="..\..\source\network\connectionProtocol_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\connectionStringTable.h" />
     <ClInclude Include="..\..\source\network\httpObject.h" />
+    <ClInclude Include="..\..\source\network\httpObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\netConnection.h" />
+    <ClInclude Include="..\..\source\network\netConnection_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\netInterface.h" />
+    <ClInclude Include="..\..\source\network\netInterface_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\netObject.h" />
+    <ClInclude Include="..\..\source\network\netObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\netStringTable.h" />
+    <ClInclude Include="..\..\source\network\netStringTable_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\networkProcessList.h" />
+    <ClInclude Include="..\..\source\network\RemoteCommandEvent.h" />
+    <ClInclude Include="..\..\source\network\RemoteCommandEvent_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\serverQuery.h" />
+    <ClInclude Include="..\..\source\network\serverQuery_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\tcpObject.h" />
+    <ClInclude Include="..\..\source\network\tcpObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\telnetConsole.h" />
+    <ClInclude Include="..\..\source\network\telnetConsole_ScriptBinding.h" />
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\allocators.h" />
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\document.h" />
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\encodedstream.h" />
@@ -916,6 +965,7 @@
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\reader.h" />
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\stringbuffer.h" />
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\writer.h" />
+    <ClInclude Include="..\..\source\persistence\SimXMLDocument_ScriptBinding.h" />
     <ClInclude Include="..\..\source\persistence\taml\binary\tamlBinaryReader.h" />
     <ClInclude Include="..\..\source\persistence\taml\binary\tamlBinaryWriter.h" />
     <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONParser.h" />
@@ -977,18 +1027,31 @@
     <ClInclude Include="..\..\source\math\mSphere.h" />
     <ClInclude Include="..\..\source\math\mSplinePatch.h" />
     <ClInclude Include="..\..\source\persistence\SimXMLDocument.h" />
+    <ClInclude Include="..\..\source\platformWin32\cardProfile_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winConsole_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winExec_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winGLSpecial_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winInput_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winMath_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winOGLVideo_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platformWin32\winWindow.h" />
+    <ClInclude Include="..\..\source\platform\CursorManager_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\event.h" />
     <ClInclude Include="..\..\source\platform\GLCoreFunc.h" />
     <ClInclude Include="..\..\source\platform\GLExtFunc.h" />
     <ClInclude Include="..\..\source\platform\GLUFunc.h" />
+    <ClInclude Include="..\..\source\platform\menus\popupMenu_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\platform.h" />
     <ClInclude Include="..\..\source\platform\platformAL.h" />
     <ClInclude Include="..\..\source\platform\platformAssert.h" />
+    <ClInclude Include="..\..\source\platform\platformAssert_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\platformAudio.h" />
     <ClInclude Include="..\..\source\platform\platformCPU.h" />
     <ClInclude Include="..\..\source\platform\platformEndian.h" />
     <ClInclude Include="..\..\source\platform\platformFileIO.h" />
+    <ClInclude Include="..\..\source\platform\platformFileIO_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\platformFont.h" />
     <ClInclude Include="..\..\source\platform\platformGL.h" />
     <ClInclude Include="..\..\source\platform\platformInput.h" />
@@ -998,10 +1061,12 @@
     <ClInclude Include="..\..\source\platform\platformNetwork.h" />
     <ClInclude Include="..\..\source\platform\platformSemaphore.h" />
     <ClInclude Include="..\..\source\platform\platformString.h" />
+    <ClInclude Include="..\..\source\platform\platformString_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\platformTimeManager.h" />
     <ClInclude Include="..\..\source\platform\platformTLS.h" />
     <ClInclude Include="..\..\source\platform\platformVFS.h" />
     <ClInclude Include="..\..\source\platform\platformVideo.h" />
+    <ClInclude Include="..\..\source\platform\platformVideo_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\platform_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\Tickable.h" />
     <ClInclude Include="..\..\source\platform\types.codewarrior.h" />
@@ -1041,10 +1106,12 @@
     <ClInclude Include="..\..\source\sim\scriptGroup.h" />
     <ClInclude Include="..\..\source\sim\scriptObject.h" />
     <ClInclude Include="..\..\source\sim\simBase.h" />
+    <ClInclude Include="..\..\source\sim\simBase_ScriptBinding.h" />
     <ClInclude Include="..\..\source\sim\simConsoleEvent.h" />
     <ClInclude Include="..\..\source\sim\simConsoleThreadExecEvent.h" />
     <ClInclude Include="..\..\source\sim\simDatablock.h" />
     <ClInclude Include="..\..\source\sim\simDatablockGroup.h" />
+    <ClInclude Include="..\..\source\sim\simDatablock_ScriptBinding.h" />
     <ClInclude Include="..\..\source\sim\simDictionary.h" />
     <ClInclude Include="..\..\source\sim\simEvent.h" />
     <ClInclude Include="..\..\source\sim\simFieldDictionary.h" />
@@ -1052,12 +1119,17 @@
     <ClInclude Include="..\..\source\sim\SimObjectList.h" />
     <ClInclude Include="..\..\source\sim\simObjectPtr.h" />
     <ClInclude Include="..\..\source\sim\simObjectTimerEvent.h" />
+    <ClInclude Include="..\..\source\sim\simObject_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\sim\simSerialize_ScriptBinding.h" />
     <ClInclude Include="..\..\source\sim\simSet.h" />
+    <ClInclude Include="..\..\source\sim\simSet_ScriptBinding.h" />
     <ClInclude Include="..\..\source\string\findMatch.h" />
     <ClInclude Include="..\..\source\string\stringBuffer.h" />
+    <ClInclude Include="..\..\source\string\stringBuffer_ScriptBinding.h" />
     <ClInclude Include="..\..\source\string\stringStack.h" />
     <ClInclude Include="..\..\source\string\stringTable.h" />
     <ClInclude Include="..\..\source\string\stringUnit.h" />
+    <ClInclude Include="..\..\source\string\stringUnit_ScriptBinding.h" />
     <ClInclude Include="..\..\source\string\unicode.h" />
     <ClInclude Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.h" />
     <ClInclude Include="..\..\source\gui\buttons\guiButtonBaseCtrl.h" />
@@ -1088,6 +1160,7 @@
     <ClInclude Include="..\..\source\gui\editor\guiMenuBar.h" />
     <ClInclude Include="..\..\source\gui\editor\guiSeparatorCtrl.h" />
     <ClInclude Include="..\..\source\testing\unitTesting.h" />
+    <ClInclude Include="..\..\source\testing\unitTesting_ScriptBinding.h" />
     <ClInclude Include="..\..\source\torqueConfig.h" />
   </ItemGroup>
   <ItemGroup>

+ 240 - 21
engine/compilers/VisualStudio 2010/Torque 2D.vcxproj.filters

@@ -204,9 +204,6 @@
     <ClCompile Include="..\..\source\audio\audioDataBlock.cc">
       <Filter>audio</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\audio\audioFunctions.cc">
-      <Filter>audio</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\source\audio\audioStreamSourceFactory.cc">
       <Filter>audio</Filter>
     </ClCompile>
@@ -285,9 +282,6 @@
     <ClCompile Include="..\..\source\math\mBox.cc">
       <Filter>math</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\math\mConsoleFunctions.cc">
-      <Filter>math</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\source\math\mMath_C.cc">
       <Filter>math</Filter>
     </ClCompile>
@@ -951,9 +945,6 @@
     <ClCompile Include="..\..\source\memory\dataChunker.cc">
       <Filter>memory</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\memory\frameAllocator.cc">
-      <Filter>memory</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\source\algorithm\crc.cc">
       <Filter>algorithm</Filter>
     </ClCompile>
@@ -1014,9 +1005,6 @@
     <ClCompile Include="..\..\source\network\tcpObject.cc">
       <Filter>network</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\io\fileSystemFunctions.cpp">
-      <Filter>io</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\source\string\stringBuffer.cc">
       <Filter>string</Filter>
     </ClCompile>
@@ -1215,9 +1203,6 @@
     <ClCompile Include="..\..\source\platform\platformFont.cc">
       <Filter>platform</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformNetwork.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\source\network\networkProcessList.cc">
       <Filter>network</Filter>
     </ClCompile>
@@ -1332,6 +1317,27 @@
     <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONParser.cc">
       <Filter>persistence\taml\json</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\source\audio\audio_ScriptBinding.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\metaScripting_ScriptBinding.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\fileSystem_ScriptBinding.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\math_ScriptBinding.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\memory\frameAllocator_ScriptBinding.cc">
+      <Filter>memory</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformNetwork_ScriptBinding.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\Package.cc">
+      <Filter>console</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\source\audio\audio.h">
@@ -2105,9 +2111,6 @@
     <ClInclude Include="..\..\source\io\bufferStream.h">
       <Filter>io</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\source\io\fileio.h">
-      <Filter>io</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\source\io\fileObject.h">
       <Filter>io</Filter>
     </ClInclude>
@@ -2384,9 +2387,6 @@
     <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectRotateToEvent.h">
       <Filter>2d\sceneobject</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectTimerEvent.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\source\2d\sceneobject\Scroller.h">
       <Filter>2d\sceneobject</Filter>
     </ClInclude>
@@ -2760,6 +2760,225 @@
     <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONParser.h">
       <Filter>persistence\taml\json</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\Utility_ScriptBinding.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\undo_ScriptBinding.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent_ScriptBinding.h">
+      <Filter>component</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\simComponent_ScriptBinding.h">
+      <Filter>component</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleDoc_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleExprEvalState_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleLogger_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleNamespace_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\expando_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\inputManagement_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\output_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\taggedStrings_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\profiler_ScriptBinding.h">
+      <Filter>debug</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\telnetDebugger_ScriptBinding.h">
+      <Filter>debug</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\gameConnection_ScriptBinding.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\version_ScriptBinding.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\color_ScriptBinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\dgl_ScriptBinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\dglMac_ScriptBinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\gFont_ScriptBinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\PNGImage_ScriptBinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureManager_ScriptBinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiCanvas_ScriptBinding.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiControl_ScriptBinding.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\input\actionMap_ScriptBinding.h">
+      <Filter>input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\fileObject_ScriptBinding.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\fileStreamObject_ScriptBinding.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\streamObject_ScriptBinding.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipObject_ScriptBinding.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\resource\resourceManager_ScriptBinding.h">
+      <Filter>io\resource</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\box_ScriptBinding.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\matrix_ScriptBinding.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\random_ScriptBinding.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\vector_ScriptBinding.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\dispatcher_ScriptBinding.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\eventManager_ScriptBinding.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\message_ScriptBinding.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\connectionProtocol_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\httpObject_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netConnection_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netInterface_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netObject_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netStringTable_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\RemoteCommandEvent_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\serverQuery_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\tcpObject_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\telnetConsole_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\SimXMLDocument_ScriptBinding.h">
+      <Filter>persistence</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\CursorManager_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformAssert_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformFileIO_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformString_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformVideo_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\menus\popupMenu_ScriptBinding.h">
+      <Filter>platform\menus</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog_ScriptBinding.h">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox_ScriptBinding.h">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\cardProfile_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winConsole_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winExec_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winGLSpecial_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winInput_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winMath_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winOGLVideo_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simBase_ScriptBinding.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simDatablock_ScriptBinding.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simObject_ScriptBinding.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simSerialize_ScriptBinding.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simSet_ScriptBinding.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringBuffer_ScriptBinding.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringUnit_ScriptBinding.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\testing\unitTesting_ScriptBinding.h">
+      <Filter>testing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\RemoteCommandEvent.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\Package.h">
+      <Filter>console</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <CustomBuild Include="..\..\source\math\mMath_ASM.asm">

+ 89 - 22
engine/compilers/VisualStudio 2012/Torque 2D.vcxproj

@@ -75,7 +75,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../Source/persistence/rapidjson/include;../../Source/persistence/libjson;../../source/testing/googleTest;../../source/testing/googleTest/include;../../Lib/LeapSDK/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../Source/persistence/rapidjson/include;../../Source/persistence/libjson;../../source/testing/googleTest;../../source/testing/googleTest/include;../../source/testing/googleTest;../../source/testing/googleTest/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>TORQUE_DEBUG;TORQUE_DEBUG_GUARD;_CRT_SECURE_NO_DEPRECATE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -100,10 +100,10 @@
       <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>Leapd.lib;COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;RPCRT4.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;unicows.lib;shell32.lib;shlwapi.lib;ole32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;RPCRT4.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;unicows.lib;shell32.lib;shlwapi.lib;ole32.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>../../../Torque2D_DEBUG.exe</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../lib/LeapSDK/lib/x86;../../Lib/unicode;../../lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>../../Lib/unicode;../../lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <IgnoreSpecificDefaultLibraries>LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
@@ -124,7 +124,7 @@
     <ClCompile>
       <Optimization>MinSpace</Optimization>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../Source/persistence/rapidjson/include;../../Source/persistence/libjson;../../source/testing/googleTest;../../source/testing/googleTest/include;../../Lib/LeapSDK/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../Source/persistence/rapidjson/include;../../Source/persistence/libjson;../../source/testing/googleTest;../../source/testing/googleTest/include;../../source/testing/googleTest;../../source/testing/googleTest/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>UNICODE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -149,10 +149,10 @@
       <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>Leap.lib;COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;unicows.lib;shell32.lib;shlwapi.lib;ole32.lib;RPCRT4.LIB;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;unicows.lib;shell32.lib;shlwapi.lib;ole32.lib;RPCRT4.LIB;%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>../../../Torque2D.exe</OutputFile>
       <SuppressStartupBanner>false</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../lib/LeapSDK/lib/x86;../../Lib/unicode;../../Lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>../../Lib/unicode;../../Lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
       <GenerateDebugInformation>false</GenerateDebugInformation>
       <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
@@ -184,7 +184,7 @@
     <ClCompile>
       <Optimization>MinSpace</Optimization>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../Source/persistence/rapidjson/include;../../Source/persistence/libjson;../../Lib/LeapSDK/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../Source/persistence/rapidjson/include;../../Source/persistence/libjson;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>TORQUE_SHIPPING;UNICODE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -209,10 +209,10 @@
       <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>Leap.lib;COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;unicows.lib;shell32.lib;shlwapi.lib;ole32.lib;RPCRT4.LIB;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;unicows.lib;shell32.lib;shlwapi.lib;ole32.lib;RPCRT4.LIB;%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>../../../Torque2D.exe</OutputFile>
       <SuppressStartupBanner>false</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../Lib/unicode;../../Lib/MSPlatformSDK/Lib;../../lib/LeapSDK/lib/x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>../../Lib/unicode;../../Lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
       <GenerateDebugInformation>false</GenerateDebugInformation>
       <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
@@ -293,6 +293,7 @@
     <ClCompile Include="..\..\source\assets\declaredAssets.cc" />
     <ClCompile Include="..\..\source\assets\referencedAssets.cc" />
     <ClCompile Include="..\..\source\audio\AudioAsset.cc" />
+    <ClCompile Include="..\..\source\audio\audio_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\box2d\Collision\b2BroadPhase.cpp" />
     <ClCompile Include="..\..\source\box2d\Collision\b2CollideCircle.cpp" />
     <ClCompile Include="..\..\source\box2d\Collision\b2CollideEdge.cpp" />
@@ -349,6 +350,8 @@
     <ClCompile Include="..\..\source\console\consoleExprEvalState.cc" />
     <ClCompile Include="..\..\source\console\consoleNamespace.cc" />
     <ClCompile Include="..\..\source\console\ConsoleTypeValidators.cc" />
+    <ClCompile Include="..\..\source\console\metaScripting_ScriptBinding.cc" />
+    <ClCompile Include="..\..\source\console\Package.cc" />
     <ClCompile Include="..\..\source\debug\profiler.cc" />
     <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc" />
     <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc" />
@@ -408,14 +411,12 @@
     <ClCompile Include="..\..\source\gui\language\lang.cc" />
     <ClCompile Include="..\..\source\gui\messageVector.cc" />
     <ClCompile Include="..\..\source\input\actionMap.cc" />
-    <ClCompile Include="..\..\source\input\leapMotion\leapMotionManager.cc" />
-    <ClCompile Include="..\..\source\input\leapMotion\leapMotionUtil.cpp" />
     <ClCompile Include="..\..\source\io\bitStream.cc" />
     <ClCompile Include="..\..\source\io\bufferStream.cc" />
     <ClCompile Include="..\..\source\io\fileObject.cc" />
     <ClCompile Include="..\..\source\io\fileStream.cc" />
     <ClCompile Include="..\..\source\io\fileStreamObject.cc" />
-    <ClCompile Include="..\..\source\io\fileSystemFunctions.cpp" />
+    <ClCompile Include="..\..\source\io\fileSystem_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\io\filterStream.cc" />
     <ClCompile Include="..\..\source\io\memStream.cc" />
     <ClCompile Include="..\..\source\io\nStream.cc" />
@@ -434,10 +435,10 @@
     <ClCompile Include="..\..\source\io\zip\zipObject.cc" />
     <ClCompile Include="..\..\source\io\zip\zipSubStream.cc" />
     <ClCompile Include="..\..\source\io\zip\zipTempStream.cc" />
-    <ClCompile Include="..\..\source\math\mPoint.cpp" />
+    <ClCompile Include="..\..\source\math\math_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\math\rectClipper.cpp" />
     <ClCompile Include="..\..\source\memory\dataChunker.cc" />
-    <ClCompile Include="..\..\source\memory\frameAllocator.cc" />
+    <ClCompile Include="..\..\source\memory\frameAllocator_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\messaging\dispatcher.cc" />
     <ClCompile Include="..\..\source\messaging\eventManager.cc" />
     <ClCompile Include="..\..\source\messaging\message.cc" />
@@ -480,7 +481,6 @@
     <ClCompile Include="..\..\source\audio\audio.cc" />
     <ClCompile Include="..\..\source\audio\audioBuffer.cc" />
     <ClCompile Include="..\..\source\audio\audioDataBlock.cc" />
-    <ClCompile Include="..\..\source\audio\audioFunctions.cc" />
     <ClCompile Include="..\..\source\audio\audioStreamSourceFactory.cc" />
     <ClCompile Include="..\..\source\audio\wavStreamSource.cc" />
     <ClCompile Include="..\..\source\component\dynamicConsoleMethodComponent.cpp" />
@@ -507,7 +507,6 @@
     <ClCompile Include="..\..\source\math\mathTypes.cc" />
     <ClCompile Include="..\..\source\math\mathUtils.cc" />
     <ClCompile Include="..\..\source\math\mBox.cc" />
-    <ClCompile Include="..\..\source\math\mConsoleFunctions.cc" />
     <ClCompile Include="..\..\source\math\mMath_C.cc" />
     <ClCompile Include="..\..\source\math\mMathAltivec.cc" />
     <ClCompile Include="..\..\source\math\mMathAMD.cc" />
@@ -530,7 +529,7 @@
     <ClCompile Include="..\..\source\platform\platformFileIO.cc" />
     <ClCompile Include="..\..\source\platform\platformFont.cc" />
     <ClCompile Include="..\..\source\platform\platformMemory.cc" />
-    <ClCompile Include="..\..\source\platform\platformNetwork.cc" />
+    <ClCompile Include="..\..\source\platform\platformNetwork_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\platform\platformString.cc" />
     <ClCompile Include="..\..\source\platform\platformVideo.cc" />
     <ClCompile Include="..\..\source\platform\menus\popupMenu.cc" />
@@ -658,6 +657,7 @@
     <ClInclude Include="..\..\source\2d\core\SpriteBatchQuery.h" />
     <ClInclude Include="..\..\source\2d\core\SpriteBatchQueryResult.h" />
     <ClInclude Include="..\..\source\2d\core\Utility.h" />
+    <ClInclude Include="..\..\source\2d\core\Utility_ScriptBinding.h" />
     <ClInclude Include="..\..\source\2d\core\Vector2.h" />
     <ClInclude Include="..\..\source\2d\core\Vector2_ScriptBinding.h" />
     <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite.h" />
@@ -786,6 +786,7 @@
     <ClInclude Include="..\..\source\collection\simpleHashTable.h" />
     <ClInclude Include="..\..\source\collection\sparseArray.h" />
     <ClInclude Include="..\..\source\collection\undo.h" />
+    <ClInclude Include="..\..\source\collection\undo_ScriptBinding.h" />
     <ClInclude Include="..\..\source\collection\vector.h" />
     <ClInclude Include="..\..\source\collection\vector2d.h" />
     <ClInclude Include="..\..\source\collection\vectorHeap.h" />
@@ -794,13 +795,25 @@
     <ClInclude Include="..\..\source\component\behaviors\behaviorComponent_ScriptBinding.h" />
     <ClInclude Include="..\..\source\component\behaviors\behaviorInstance_ScriptBinding.h" />
     <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\component\simComponent_ScriptBinding.h" />
     <ClInclude Include="..\..\source\console\consoleBaseType.h" />
     <ClInclude Include="..\..\source\console\consoleDictionary.h" />
+    <ClInclude Include="..\..\source\console\consoleDoc_ScriptBinding.h" />
     <ClInclude Include="..\..\source\console\consoleExprEvalState.h" />
+    <ClInclude Include="..\..\source\console\consoleExprEvalState_ScriptBinding.h" />
     <ClInclude Include="..\..\source\console\consoleInternal.h" />
+    <ClInclude Include="..\..\source\console\consoleLogger_ScriptBinding.h" />
     <ClInclude Include="..\..\source\console\consoleNamespace.h" />
+    <ClInclude Include="..\..\source\console\consoleNamespace_ScriptBinding.h" />
     <ClInclude Include="..\..\source\console\ConsoleTypeValidators.h" />
+    <ClInclude Include="..\..\source\console\expando_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\console\inputManagement_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\console\output_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\console\Package.h" />
+    <ClInclude Include="..\..\source\console\taggedStrings_ScriptBinding.h" />
     <ClInclude Include="..\..\source\debug\profiler.h" />
+    <ClInclude Include="..\..\source\debug\profiler_ScriptBinding.h" />
     <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1.h" />
     <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1_ScriptBinding.h" />
     <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase.h" />
@@ -808,23 +821,32 @@
     <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge.h" />
     <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge_ScriptBinding.h" />
     <ClInclude Include="..\..\source\debug\telnetDebugger.h" />
+    <ClInclude Include="..\..\source\debug\telnetDebugger_ScriptBinding.h" />
     <ClInclude Include="..\..\source\delegates\delegate.h" />
     <ClInclude Include="..\..\source\delegates\delegateSignal.h" />
     <ClInclude Include="..\..\source\delegates\FastDelegate.h" />
     <ClInclude Include="..\..\source\game\defaultGame.h" />
+    <ClInclude Include="..\..\source\game\gameConnection_ScriptBinding.h" />
     <ClInclude Include="..\..\source\game\gameInterface.h" />
     <ClInclude Include="..\..\source\game\gameInterface_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\game\version_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\color.h" />
+    <ClInclude Include="..\..\source\graphics\color_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\dgl.h" />
+    <ClInclude Include="..\..\source\graphics\dglMac_Scriptbinding.h" />
+    <ClInclude Include="..\..\source\graphics\dgl_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\DynamicTexture.h" />
     <ClInclude Include="..\..\source\graphics\gBitmap.h" />
     <ClInclude Include="..\..\source\graphics\gFont.h" />
+    <ClInclude Include="..\..\source\graphics\gFont_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\gPalette.h" />
     <ClInclude Include="..\..\source\graphics\PNGImage.h" />
+    <ClInclude Include="..\..\source\graphics\PNGImage_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\splineUtil.h" />
     <ClInclude Include="..\..\source\graphics\TextureDictionary.h" />
     <ClInclude Include="..\..\source\graphics\TextureHandle.h" />
     <ClInclude Include="..\..\source\graphics\TextureManager.h" />
+    <ClInclude Include="..\..\source\graphics\TextureManager_ScriptBinding.h" />
     <ClInclude Include="..\..\source\graphics\TextureObject.h" />
     <ClInclude Include="..\..\source\gui\containers\guiGridCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiArrayCtrl.h" />
@@ -832,11 +854,13 @@
     <ClInclude Include="..\..\source\gui\guiBitmapCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiBubbleTextCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiCanvas.h" />
+    <ClInclude Include="..\..\source\gui\guiCanvas_ScriptBinding.h" />
     <ClInclude Include="..\..\source\gui\guiColorPicker.h" />
     <ClInclude Include="..\..\source\gui\guiConsole.h" />
     <ClInclude Include="..\..\source\gui\guiConsoleEditCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiConsoleTextCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiControl.h" />
+    <ClInclude Include="..\..\source\gui\guiControl_ScriptBinding.h" />
     <ClInclude Include="..\..\source\gui\guiDefaultControlRender.h" />
     <ClInclude Include="..\..\source\gui\guiInputCtrl.h" />
     <ClInclude Include="..\..\source\gui\guiListBoxCtrl.h" />
@@ -860,22 +884,22 @@
     <ClInclude Include="..\..\source\gui\language\lang.h" />
     <ClInclude Include="..\..\source\gui\messageVector.h" />
     <ClInclude Include="..\..\source\input\actionMap.h" />
-    <ClInclude Include="..\..\source\input\leapMotion\leapMotionConstants.h" />
-    <ClInclude Include="..\..\source\input\leapMotion\leapMotionManager.h" />
-    <ClInclude Include="..\..\source\input\leapMotion\LeapMotionManager_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\input\leapMotion\leapMotionUtil.h" />
+    <ClInclude Include="..\..\source\input\actionMap_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\bitStream.h" />
     <ClInclude Include="..\..\source\io\bufferStream.h" />
-    <ClInclude Include="..\..\source\io\fileio.h" />
     <ClInclude Include="..\..\source\io\fileObject.h" />
+    <ClInclude Include="..\..\source\io\fileObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\fileStream.h" />
     <ClInclude Include="..\..\source\io\fileStreamObject.h" />
+    <ClInclude Include="..\..\source\io\fileStreamObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\filterStream.h" />
     <ClInclude Include="..\..\source\io\memstream.h" />
     <ClInclude Include="..\..\source\io\resizeStream.h" />
     <ClInclude Include="..\..\source\io\resource\resourceManager.h" />
+    <ClInclude Include="..\..\source\io\resource\resourceManager_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\stream.h" />
     <ClInclude Include="..\..\source\io\streamObject.h" />
+    <ClInclude Include="..\..\source\io\streamObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\zip\centralDir.h" />
     <ClInclude Include="..\..\source\io\zip\compressor.h" />
     <ClInclude Include="..\..\source\io\zip\extraField.h" />
@@ -883,18 +907,26 @@
     <ClInclude Include="..\..\source\io\zip\zipArchive.h" />
     <ClInclude Include="..\..\source\io\zip\zipCryptStream.h" />
     <ClInclude Include="..\..\source\io\zip\zipObject.h" />
+    <ClInclude Include="..\..\source\io\zip\zipObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\io\zip\zipStatFilter.h" />
     <ClInclude Include="..\..\source\io\zip\zipSubStream.h" />
     <ClInclude Include="..\..\source\io\zip\zipTempStream.h" />
+    <ClInclude Include="..\..\source\math\box_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\math\matrix_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\math\random_ScriptBinding.h" />
     <ClInclude Include="..\..\source\math\rectClipper.h" />
+    <ClInclude Include="..\..\source\math\vector_ScriptBinding.h" />
     <ClInclude Include="..\..\source\memory\dataChunker.h" />
     <ClInclude Include="..\..\source\memory\factoryCache.h" />
     <ClInclude Include="..\..\source\memory\frameAllocator.h" />
     <ClInclude Include="..\..\source\memory\safeDelete.h" />
     <ClInclude Include="..\..\source\messaging\dispatcher.h" />
+    <ClInclude Include="..\..\source\messaging\dispatcher_ScriptBinding.h" />
     <ClInclude Include="..\..\source\messaging\eventManager.h" />
+    <ClInclude Include="..\..\source\messaging\eventManager_ScriptBinding.h" />
     <ClInclude Include="..\..\source\messaging\message.h" />
     <ClInclude Include="..\..\source\messaging\messageForwarder.h" />
+    <ClInclude Include="..\..\source\messaging\message_ScriptBinding.h" />
     <ClInclude Include="..\..\source\messaging\scriptMsgListener.h" />
     <ClInclude Include="..\..\source\module\moduleCallbacks.h" />
     <ClInclude Include="..\..\source\module\moduleDefinition.h" />
@@ -904,16 +936,27 @@
     <ClInclude Include="..\..\source\module\moduleMergeDefinition.h" />
     <ClInclude Include="..\..\source\module\tamlModuleIdUpdateVisitor.h" />
     <ClInclude Include="..\..\source\network\connectionProtocol.h" />
+    <ClInclude Include="..\..\source\network\connectionProtocol_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\connectionStringTable.h" />
     <ClInclude Include="..\..\source\network\httpObject.h" />
+    <ClInclude Include="..\..\source\network\httpObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\netConnection.h" />
+    <ClInclude Include="..\..\source\network\netConnection_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\netInterface.h" />
+    <ClInclude Include="..\..\source\network\netInterface_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\netObject.h" />
+    <ClInclude Include="..\..\source\network\netObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\netStringTable.h" />
+    <ClInclude Include="..\..\source\network\netStringTable_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\networkProcessList.h" />
+    <ClInclude Include="..\..\source\network\RemoteCommandEvent.h" />
+    <ClInclude Include="..\..\source\network\RemoteCommandEvent_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\serverQuery.h" />
+    <ClInclude Include="..\..\source\network\serverQuery_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\tcpObject.h" />
+    <ClInclude Include="..\..\source\network\tcpObject_ScriptBinding.h" />
     <ClInclude Include="..\..\source\network\telnetConsole.h" />
+    <ClInclude Include="..\..\source\network\telnetConsole_ScriptBinding.h" />
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\allocators.h" />
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\document.h" />
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\encodedstream.h" />
@@ -929,6 +972,7 @@
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\reader.h" />
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\stringbuffer.h" />
     <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\writer.h" />
+    <ClInclude Include="..\..\source\persistence\SimXMLDocument_ScriptBinding.h" />
     <ClInclude Include="..\..\source\persistence\taml\binary\tamlBinaryReader.h" />
     <ClInclude Include="..\..\source\persistence\taml\binary\tamlBinaryWriter.h" />
     <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONParser.h" />
@@ -990,18 +1034,31 @@
     <ClInclude Include="..\..\source\math\mSphere.h" />
     <ClInclude Include="..\..\source\math\mSplinePatch.h" />
     <ClInclude Include="..\..\source\persistence\SimXMLDocument.h" />
+    <ClInclude Include="..\..\source\platformWin32\cardProfile_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winConsole_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winExec_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winGLSpecial_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winInput_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winMath_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winOGLVideo_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platformWin32\winWindow.h" />
+    <ClInclude Include="..\..\source\platform\CursorManager_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\event.h" />
     <ClInclude Include="..\..\source\platform\GLCoreFunc.h" />
     <ClInclude Include="..\..\source\platform\GLExtFunc.h" />
     <ClInclude Include="..\..\source\platform\GLUFunc.h" />
+    <ClInclude Include="..\..\source\platform\menus\popupMenu_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\platform.h" />
     <ClInclude Include="..\..\source\platform\platformAL.h" />
     <ClInclude Include="..\..\source\platform\platformAssert.h" />
+    <ClInclude Include="..\..\source\platform\platformAssert_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\platformAudio.h" />
     <ClInclude Include="..\..\source\platform\platformCPU.h" />
     <ClInclude Include="..\..\source\platform\platformEndian.h" />
     <ClInclude Include="..\..\source\platform\platformFileIO.h" />
+    <ClInclude Include="..\..\source\platform\platformFileIO_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\platformFont.h" />
     <ClInclude Include="..\..\source\platform\platformGL.h" />
     <ClInclude Include="..\..\source\platform\platformInput.h" />
@@ -1011,10 +1068,12 @@
     <ClInclude Include="..\..\source\platform\platformNetwork.h" />
     <ClInclude Include="..\..\source\platform\platformSemaphore.h" />
     <ClInclude Include="..\..\source\platform\platformString.h" />
+    <ClInclude Include="..\..\source\platform\platformString_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\platformTimeManager.h" />
     <ClInclude Include="..\..\source\platform\platformTLS.h" />
     <ClInclude Include="..\..\source\platform\platformVFS.h" />
     <ClInclude Include="..\..\source\platform\platformVideo.h" />
+    <ClInclude Include="..\..\source\platform\platformVideo_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\platform_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\Tickable.h" />
     <ClInclude Include="..\..\source\platform\types.codewarrior.h" />
@@ -1054,10 +1113,12 @@
     <ClInclude Include="..\..\source\sim\scriptGroup.h" />
     <ClInclude Include="..\..\source\sim\scriptObject.h" />
     <ClInclude Include="..\..\source\sim\simBase.h" />
+    <ClInclude Include="..\..\source\sim\simBase_ScriptBinding.h" />
     <ClInclude Include="..\..\source\sim\simConsoleEvent.h" />
     <ClInclude Include="..\..\source\sim\simConsoleThreadExecEvent.h" />
     <ClInclude Include="..\..\source\sim\simDatablock.h" />
     <ClInclude Include="..\..\source\sim\simDatablockGroup.h" />
+    <ClInclude Include="..\..\source\sim\simDatablock_ScriptBinding.h" />
     <ClInclude Include="..\..\source\sim\simDictionary.h" />
     <ClInclude Include="..\..\source\sim\simEvent.h" />
     <ClInclude Include="..\..\source\sim\simFieldDictionary.h" />
@@ -1065,12 +1126,17 @@
     <ClInclude Include="..\..\source\sim\SimObjectList.h" />
     <ClInclude Include="..\..\source\sim\simObjectPtr.h" />
     <ClInclude Include="..\..\source\sim\simObjectTimerEvent.h" />
+    <ClInclude Include="..\..\source\sim\simObject_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\sim\simSerialize_ScriptBinding.h" />
     <ClInclude Include="..\..\source\sim\simSet.h" />
+    <ClInclude Include="..\..\source\sim\simSet_ScriptBinding.h" />
     <ClInclude Include="..\..\source\string\findMatch.h" />
     <ClInclude Include="..\..\source\string\stringBuffer.h" />
+    <ClInclude Include="..\..\source\string\stringBuffer_ScriptBinding.h" />
     <ClInclude Include="..\..\source\string\stringStack.h" />
     <ClInclude Include="..\..\source\string\stringTable.h" />
     <ClInclude Include="..\..\source\string\stringUnit.h" />
+    <ClInclude Include="..\..\source\string\stringUnit_ScriptBinding.h" />
     <ClInclude Include="..\..\source\string\unicode.h" />
     <ClInclude Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.h" />
     <ClInclude Include="..\..\source\gui\buttons\guiButtonBaseCtrl.h" />
@@ -1101,6 +1167,7 @@
     <ClInclude Include="..\..\source\gui\editor\guiMenuBar.h" />
     <ClInclude Include="..\..\source\gui\editor\guiSeparatorCtrl.h" />
     <ClInclude Include="..\..\source\testing\unitTesting.h" />
+    <ClInclude Include="..\..\source\testing\unitTesting_ScriptBinding.h" />
     <ClInclude Include="..\..\source\torqueConfig.h" />
   </ItemGroup>
   <ItemGroup>

+ 233 - 35
engine/compilers/VisualStudio 2012/Torque 2D.vcxproj.filters

@@ -193,9 +193,6 @@
     <Filter Include="persistence\taml\xml">
       <UniqueIdentifier>{cc1c1416-376b-4686-a4ac-21d1a35c9390}</UniqueIdentifier>
     </Filter>
-    <Filter Include="input\leapMotion">
-      <UniqueIdentifier>{b62fccbf-2a14-44da-a4a5-aebf62e89956}</UniqueIdentifier>
-    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\source\audio\audio.cc">
@@ -207,9 +204,6 @@
     <ClCompile Include="..\..\source\audio\audioDataBlock.cc">
       <Filter>audio</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\audio\audioFunctions.cc">
-      <Filter>audio</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\source\audio\audioStreamSourceFactory.cc">
       <Filter>audio</Filter>
     </ClCompile>
@@ -288,9 +282,6 @@
     <ClCompile Include="..\..\source\math\mBox.cc">
       <Filter>math</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\math\mConsoleFunctions.cc">
-      <Filter>math</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\source\math\mMath_C.cc">
       <Filter>math</Filter>
     </ClCompile>
@@ -954,9 +945,6 @@
     <ClCompile Include="..\..\source\memory\dataChunker.cc">
       <Filter>memory</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\memory\frameAllocator.cc">
-      <Filter>memory</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\source\algorithm\crc.cc">
       <Filter>algorithm</Filter>
     </ClCompile>
@@ -1017,9 +1005,6 @@
     <ClCompile Include="..\..\source\network\tcpObject.cc">
       <Filter>network</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\io\fileSystemFunctions.cpp">
-      <Filter>io</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\source\string\stringBuffer.cc">
       <Filter>string</Filter>
     </ClCompile>
@@ -1218,9 +1203,6 @@
     <ClCompile Include="..\..\source\platform\platformFont.cc">
       <Filter>platform</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformNetwork.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\source\network\networkProcessList.cc">
       <Filter>network</Filter>
     </ClCompile>
@@ -1335,15 +1317,27 @@
     <ClCompile Include="..\..\source\gui\containers\guiGridCtrl.cc">
       <Filter>gui\containers</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\input\leapMotion\leapMotionManager.cc">
-      <Filter>input\leapMotion</Filter>
+    <ClCompile Include="..\..\source\console\metaScripting_ScriptBinding.cc">
+      <Filter>console</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\input\leapMotion\leapMotionUtil.cpp">
-      <Filter>input\leapMotion</Filter>
+    <ClCompile Include="..\..\source\audio\audio_ScriptBinding.cc">
+      <Filter>audio</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\source\math\mPoint.cpp">
+    <ClCompile Include="..\..\source\io\fileSystem_ScriptBinding.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\math_ScriptBinding.cc">
       <Filter>math</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformNetwork_ScriptBinding.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\memory\frameAllocator_ScriptBinding.cc">
+      <Filter>memory</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\Package.cc">
+      <Filter>console</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\source\audio\audio.h">
@@ -2117,9 +2111,6 @@
     <ClInclude Include="..\..\source\io\bufferStream.h">
       <Filter>io</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\source\io\fileio.h">
-      <Filter>io</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\source\io\fileObject.h">
       <Filter>io</Filter>
     </ClInclude>
@@ -2612,7 +2603,6 @@
     <ClInclude Include="..\..\source\2d\core\ParticleSystem.h">
       <Filter>2d\core</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\source\torqueConfig.h" />
     <ClInclude Include="..\..\source\2d\sceneobject\ImageFont.h">
       <Filter>2d\sceneobject</Filter>
     </ClInclude>
@@ -2769,17 +2759,225 @@
     <ClInclude Include="..\..\source\gui\containers\guiGridCtrl.h">
       <Filter>gui\containers</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\source\input\leapMotion\leapMotionConstants.h">
-      <Filter>input\leapMotion</Filter>
+    <ClInclude Include="..\..\source\sim\simBase_ScriptBinding.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\input\actionMap_ScriptBinding.h">
+      <Filter>input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiCanvas_ScriptBinding.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformString_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringUnit_ScriptBinding.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\output_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformVideo_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\version_ScriptBinding.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\expando_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\color_ScriptBinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simObject_ScriptBinding.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simSet_ScriptBinding.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\SimXMLDocument_ScriptBinding.h">
+      <Filter>persistence</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\eventManager_ScriptBinding.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\fileObject_ScriptBinding.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog_ScriptBinding.h">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleLogger_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netConnection_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\gameConnection_ScriptBinding.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\menus\popupMenu_ScriptBinding.h">
+      <Filter>platform\menus</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\source\input\leapMotion\leapMotionManager.h">
-      <Filter>input\leapMotion</Filter>
+    <ClInclude Include="..\..\source\io\streamObject_ScriptBinding.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\undo_ScriptBinding.h">
+      <Filter>collection</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\source\input\leapMotion\LeapMotionManager_ScriptBinding.h">
-      <Filter>input\leapMotion</Filter>
+    <ClInclude Include="..\..\source\console\consoleDoc_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\dispatcher_ScriptBinding.h">
+      <Filter>messaging</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\source\input\leapMotion\leapMotionUtil.h">
-      <Filter>input\leapMotion</Filter>
+    <ClInclude Include="..\..\source\math\random_ScriptBinding.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\matrix_ScriptBinding.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\vector_ScriptBinding.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\box_ScriptBinding.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\simComponent_ScriptBinding.h">
+      <Filter>component</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent_ScriptBinding.h">
+      <Filter>component</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\fileStreamObject_ScriptBinding.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\httpObject_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\message_ScriptBinding.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\tcpObject_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netObject_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simSerialize_ScriptBinding.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\PNGImage_ScriptBinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleNamespace_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\gFont_ScriptBinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\serverQuery_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformAssert_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformFileIO_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\profiler_ScriptBinding.h">
+      <Filter>debug</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\telnetDebugger_ScriptBinding.h">
+      <Filter>debug</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\RemoteCommandEvent_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\RemoteCommandEvent.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\resource\resourceManager_ScriptBinding.h">
+      <Filter>io\resource</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureManager_ScriptBinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\torqueConfig.h" />
+    <ClInclude Include="..\..\source\platformWin32\cardProfile_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\connectionProtocol_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleExprEvalState_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\taggedStrings_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\inputManagement_ScriptBinding.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\CursorManager_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\dgl_ScriptBinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\dglMac_Scriptbinding.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winOGLVideo_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winInput_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\Utility_ScriptBinding.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winExec_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winGLSpecial_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winConsole_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netInterface_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netStringTable_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\telnetConsole_ScriptBinding.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\testing\unitTesting_ScriptBinding.h">
+      <Filter>testing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox_ScriptBinding.h">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simDatablock_ScriptBinding.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winMath_ScriptBinding.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringBuffer_ScriptBinding.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipObject_ScriptBinding.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiControl_ScriptBinding.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\Package.h">
+      <Filter>console</Filter>
     </ClInclude>
   </ItemGroup>
   <ItemGroup>

+ 186 - 41
engine/compilers/Xcode/Torque2D.xcodeproj/project.pbxproj

@@ -54,7 +54,6 @@
 		8658B175165A7BFB0087ABC1 /* osxNetwork.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8658B172165A7BFB0087ABC1 /* osxNetwork.mm */; };
 		8658B176165A7BFB0087ABC1 /* osxString.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8658B173165A7BFB0087ABC1 /* osxString.mm */; };
 		865A20CA16515B1E00527C44 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 869FF8BF1651518C002FE082 /* AppKit.framework */; };
-		865A20CB16515B1E00527C44 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 865A20C116515ACE00527C44 /* AVFoundation.framework */; };
 		865A20CC16515B1E00527C44 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 869FF8BC1651518C002FE082 /* Cocoa.framework */; };
 		865A20CD16515B1E00527C44 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 869FF8C01651518C002FE082 /* CoreData.framework */; };
 		865A20CE16515B1E00527C44 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 865A20C216515ACE00527C44 /* CoreFoundation.framework */; };
@@ -219,7 +218,6 @@
 		86D76FA3165686D80046D71F /* AudioAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0316518D4600D96ADF /* AudioAsset.cc */; };
 		86D76FA4165686D80046D71F /* audioBuffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0516518D4600D96ADF /* audioBuffer.cc */; };
 		86D76FA5165686D80046D71F /* audioDataBlock.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0716518D4600D96ADF /* audioDataBlock.cc */; };
-		86D76FA6165686D80046D71F /* audioFunctions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0916518D4600D96ADF /* audioFunctions.cc */; };
 		86D76FA7165686D80046D71F /* audioStreamSourceFactory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0B16518D4600D96ADF /* audioStreamSourceFactory.cc */; };
 		86D76FA8165686D80046D71F /* wavStreamSource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0D16518D4600D96ADF /* wavStreamSource.cc */; };
 		86D76FA9165686D80046D71F /* bitTables.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F1216518D4600D96ADF /* bitTables.cc */; };
@@ -348,7 +346,6 @@
 		86D77041165687220046D71F /* fileObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806116518D4600D96ADF /* fileObject.cc */; };
 		86D77042165687220046D71F /* fileStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806316518D4600D96ADF /* fileStream.cc */; };
 		86D77043165687220046D71F /* fileStreamObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806516518D4600D96ADF /* fileStreamObject.cc */; };
-		86D77044165687220046D71F /* fileSystemFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806716518D4600D96ADF /* fileSystemFunctions.cpp */; };
 		86D77045165687220046D71F /* filterStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806816518D4600D96ADF /* filterStream.cc */; };
 		86D77046165687220046D71F /* memStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806A16518D4600D96ADF /* memStream.cc */; };
 		86D77047165687220046D71F /* nStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806C16518D4600D96ADF /* nStream.cc */; };
@@ -370,7 +367,6 @@
 		86D770571656873C0046D71F /* mathTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809316518D4600D96ADF /* mathTypes.cc */; };
 		86D770581656873C0046D71F /* mathUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809516518D4600D96ADF /* mathUtils.cc */; };
 		86D770591656873C0046D71F /* mBox.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809716518D4600D96ADF /* mBox.cc */; };
-		86D7705A1656873C0046D71F /* mConsoleFunctions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809916518D4600D96ADF /* mConsoleFunctions.cc */; };
 		86D7705B1656873C0046D71F /* mMath_C.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809D16518D4600D96ADF /* mMath_C.cc */; };
 		86D7705C1656873C0046D71F /* mMathAltivec.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809E16518D4600D96ADF /* mMathAltivec.cc */; };
 		86D7705D1656873C0046D71F /* mMathFn.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80A116518D4600D96ADF /* mMathFn.cc */; };
@@ -382,7 +378,6 @@
 		86D770631656873C0046D71F /* mSplinePatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B416518D4600D96ADF /* mSplinePatch.cc */; };
 		86D770641656873C0046D71F /* rectClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B616518D4600D96ADF /* rectClipper.cpp */; };
 		86D770651656873C0046D71F /* dataChunker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B916518D4600D96ADF /* dataChunker.cc */; };
-		86D770661656873C0046D71F /* frameAllocator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80BC16518D4600D96ADF /* frameAllocator.cc */; };
 		86D770671656873C0046D71F /* dispatcher.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C016518D4600D96ADF /* dispatcher.cc */; };
 		86D770681656873C0046D71F /* eventManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C216518D4600D96ADF /* eventManager.cc */; };
 		86D770691656873C0046D71F /* message.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C416518D4600D96ADF /* message.cc */; };
@@ -414,7 +409,6 @@
 		86D770891656873C0046D71F /* tinyxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810916518D4600D96ADF /* tinyxml.cpp */; };
 		86D7708A1656873C0046D71F /* tinyxmlerror.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810B16518D4600D96ADF /* tinyxmlerror.cpp */; };
 		86D7708B1656873C0046D71F /* tinyxmlparser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810C16518D4600D96ADF /* tinyxmlparser.cpp */; };
-		86D7708C1656873C0046D71F /* platformNetwork.cc in Sources */ = {isa = PBXBuildFile; fileRef = 864ECFEB1652795700012416 /* platformNetwork.cc */; };
 		86D7708D1656873C0046D71F /* CursorManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834C16518FE800D96ADF /* CursorManager.cc */; };
 		86D7708E1656873C0046D71F /* platform.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834D16518FE800D96ADF /* platform.cc */; };
 		86D7708F1656873C0046D71F /* platformAssert.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834E16518FE800D96ADF /* platformAssert.cc */; };
@@ -451,9 +445,17 @@
 		86DE5688171F05F60054CB83 /* guiGridCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86DE5686171F05F60054CB83 /* guiGridCtrl.cc */; };
 		86EA5B401678C7C700598E68 /* osxCocoaUtilities.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86EA5B3F1678C7C700598E68 /* osxCocoaUtilities.mm */; };
 		86EC5AC7165C1E0100757872 /* osxTorqueView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86EC5AC6165C1E0100757872 /* osxTorqueView.mm */; };
+		B350D12F174ED1FE00033EBB /* math_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D12C174ED1FE00033EBB /* math_ScriptBinding.cc */; };
+		B350D131174ED23E00033EBB /* frameAllocator_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D130174ED23E00033EBB /* frameAllocator_ScriptBinding.cc */; };
+		B350D147174ED56500033EBB /* platformNetwork_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D144174ED56500033EBB /* platformNetwork_ScriptBinding.cc */; };
+		B350D158174EF62400033EBB /* fileSystem_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D156174EF62400033EBB /* fileSystem_ScriptBinding.cc */; };
+		B350D164174EF71B00033EBB /* metaScripting_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D161174EF71B00033EBB /* metaScripting_ScriptBinding.cc */; };
+		B350D172174EF91900033EBB /* audio_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D171174EF91900033EBB /* audio_ScriptBinding.cc */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
+		04CC626B1795512500F9C119 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = ../../../../../../../System/Library/Frameworks/AVFoundation.framework; sourceTree = "<group>"; };
+		2797C9E117F4E12500625B51 /* eaxtypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eaxtypes.h; sourceTree = "<group>"; };
 		2A03300B165D1D2100E9CD70 /* unitTesting.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = unitTesting.cc; path = ../../../source/testing/unitTesting.cc; sourceTree = "<group>"; };
 		2A03300C165D1D2100E9CD70 /* unitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = unitTesting.h; path = ../../../source/testing/unitTesting.h; sourceTree = "<group>"; };
 		2A033010165D1D4100E9CD70 /* platformFileIoTests.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = platformFileIoTests.cc; path = ../../../source/testing/tests/platformFileIoTests.cc; sourceTree = "<group>"; };
@@ -559,11 +561,10 @@
 		8609FE3016556E5A004662ED /* osxThread.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxThread.mm; sourceTree = "<group>"; };
 		8609FE3216556F22004662ED /* osxFileDialogs.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxFileDialogs.mm; sourceTree = "<group>"; };
 		8609FE351655716E004662ED /* osxPopupMenu.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxPopupMenu.mm; sourceTree = "<group>"; };
-		8609FE37165572EC004662ED /* osxFont.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxFont.mm; sourceTree = "<group>"; };
+		8609FE37165572EC004662ED /* osxFont.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 1; path = osxFont.mm; sourceTree = "<group>"; };
 		861CD8CE1678F6C200DAE1A0 /* fileDialog_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileDialog_ScriptBinding.h; sourceTree = "<group>"; };
 		861CD8CF1678F6C200DAE1A0 /* fileDialog.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileDialog.cc; sourceTree = "<group>"; };
 		864ECFEA1652795700012416 /* platform_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_ScriptBinding.h; sourceTree = "<group>"; };
-		864ECFEB1652795700012416 /* platformNetwork.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformNetwork.cc; sourceTree = "<group>"; };
 		864ECFED165279E100012416 /* networkProcessList.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = networkProcessList.cc; sourceTree = "<group>"; };
 		864ECFEE165279E100012416 /* networkProcessList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = networkProcessList.h; sourceTree = "<group>"; };
 		864ECFF016527A8500012416 /* gameInterface_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameInterface_ScriptBinding.h; sourceTree = "<group>"; };
@@ -865,7 +866,6 @@
 		86BC7F0616518D4600D96ADF /* audioBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioBuffer.h; sourceTree = "<group>"; };
 		86BC7F0716518D4600D96ADF /* audioDataBlock.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioDataBlock.cc; sourceTree = "<group>"; };
 		86BC7F0816518D4600D96ADF /* audioDataBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioDataBlock.h; sourceTree = "<group>"; };
-		86BC7F0916518D4600D96ADF /* audioFunctions.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioFunctions.cc; sourceTree = "<group>"; };
 		86BC7F0A16518D4600D96ADF /* audioStreamSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioStreamSource.h; sourceTree = "<group>"; };
 		86BC7F0B16518D4600D96ADF /* audioStreamSourceFactory.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioStreamSourceFactory.cc; sourceTree = "<group>"; };
 		86BC7F0C16518D4600D96ADF /* audioStreamSourceFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioStreamSourceFactory.h; sourceTree = "<group>"; };
@@ -1096,7 +1096,6 @@
 		86BC806416518D4600D96ADF /* fileStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStream.h; sourceTree = "<group>"; };
 		86BC806516518D4600D96ADF /* fileStreamObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileStreamObject.cc; sourceTree = "<group>"; };
 		86BC806616518D4600D96ADF /* fileStreamObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStreamObject.h; sourceTree = "<group>"; };
-		86BC806716518D4600D96ADF /* fileSystemFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileSystemFunctions.cpp; sourceTree = "<group>"; };
 		86BC806816518D4600D96ADF /* filterStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filterStream.cc; sourceTree = "<group>"; };
 		86BC806916518D4600D96ADF /* filterStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filterStream.h; sourceTree = "<group>"; };
 		86BC806A16518D4600D96ADF /* memStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memStream.cc; sourceTree = "<group>"; };
@@ -1138,7 +1137,6 @@
 		86BC809616518D4600D96ADF /* mathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathUtils.h; sourceTree = "<group>"; };
 		86BC809716518D4600D96ADF /* mBox.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mBox.cc; sourceTree = "<group>"; };
 		86BC809816518D4600D96ADF /* mBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mBox.h; sourceTree = "<group>"; };
-		86BC809916518D4600D96ADF /* mConsoleFunctions.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mConsoleFunctions.cc; sourceTree = "<group>"; };
 		86BC809A16518D4600D96ADF /* mConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mConstants.h; sourceTree = "<group>"; };
 		86BC809B16518D4600D96ADF /* mMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mMath.h; sourceTree = "<group>"; };
 		86BC809D16518D4600D96ADF /* mMath_C.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMath_C.cc; sourceTree = "<group>"; };
@@ -1167,7 +1165,6 @@
 		86BC80B916518D4600D96ADF /* dataChunker.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dataChunker.cc; sourceTree = "<group>"; };
 		86BC80BA16518D4600D96ADF /* dataChunker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dataChunker.h; sourceTree = "<group>"; };
 		86BC80BB16518D4600D96ADF /* factoryCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = factoryCache.h; sourceTree = "<group>"; };
-		86BC80BC16518D4600D96ADF /* frameAllocator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = frameAllocator.cc; sourceTree = "<group>"; };
 		86BC80BD16518D4600D96ADF /* frameAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = frameAllocator.h; sourceTree = "<group>"; };
 		86BC80BE16518D4600D96ADF /* safeDelete.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = safeDelete.h; sourceTree = "<group>"; };
 		86BC80C016518D4600D96ADF /* dispatcher.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dispatcher.cc; sourceTree = "<group>"; };
@@ -1364,6 +1361,75 @@
 		86EA5B3F1678C7C700598E68 /* osxCocoaUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxCocoaUtilities.mm; sourceTree = "<group>"; };
 		86EC5AC5165C1E0100757872 /* osxTorqueView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxTorqueView.h; sourceTree = "<group>"; };
 		86EC5AC6165C1E0100757872 /* osxTorqueView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxTorqueView.mm; sourceTree = "<group>"; };
+		B350D129174ED16800033EBB /* vector_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D12B174ED1FE00033EBB /* box_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = box_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D12C174ED1FE00033EBB /* math_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = math_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D12D174ED1FE00033EBB /* matrix_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = matrix_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D12E174ED1FE00033EBB /* random_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = random_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D130174ED23E00033EBB /* frameAllocator_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = frameAllocator_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D132174ED27200033EBB /* dispatcher_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dispatcher_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D133174ED27200033EBB /* eventManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eventManager_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D134174ED27200033EBB /* message_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = message_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D135174ED37000033EBB /* connectionProtocol_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = connectionProtocol_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D136174ED37000033EBB /* httpObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = httpObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D137174ED37000033EBB /* netConnection_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netConnection_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D138174ED37000033EBB /* netInterface_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netInterface_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D139174ED37000033EBB /* netObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D13A174ED37000033EBB /* netStringTable_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netStringTable_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D13B174ED37000033EBB /* RemoteCommandEvent_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteCommandEvent_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D13C174ED37000033EBB /* RemoteCommandEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteCommandEvent.h; sourceTree = "<group>"; };
+		B350D13D174ED37000033EBB /* serverQuery_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serverQuery_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D13E174ED37000033EBB /* tcpObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tcpObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D13F174ED37000033EBB /* telnetConsole_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telnetConsole_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D140174ED4B800033EBB /* SimXMLDocument_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimXMLDocument_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D141174ED56500033EBB /* CursorManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CursorManager_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D142174ED56500033EBB /* platformAssert_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformAssert_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D143174ED56500033EBB /* platformFileIO_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformFileIO_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D144174ED56500033EBB /* platformNetwork_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformNetwork_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D145174ED56500033EBB /* platformString_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformString_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D146174ED56500033EBB /* platformVideo_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformVideo_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D148174EE4AA00033EBB /* msgBox_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = msgBox_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D149174EE4FA00033EBB /* dynamicConsoleMethodComponent_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dynamicConsoleMethodComponent_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D14A174EE4FA00033EBB /* simComponent_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simComponent_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D14B174EF4DF00033EBB /* popupMenu_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = popupMenu_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D14C174EF54C00033EBB /* simBase_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simBase_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D14D174EF54C00033EBB /* simDatablock_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simDatablock_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D14E174EF54C00033EBB /* simObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D14F174EF54C00033EBB /* simSerialize_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simSerialize_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D150174EF54C00033EBB /* simSet_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simSet_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D151174EF5A400033EBB /* stringBuffer_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringBuffer_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D152174EF5A400033EBB /* stringUnit_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringUnit_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D153174EF5F200033EBB /* actionMap_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actionMap_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D154174EF62400033EBB /* fileObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D155174EF62400033EBB /* fileStreamObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStreamObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D156174EF62400033EBB /* fileSystem_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileSystem_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D157174EF62400033EBB /* streamObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = streamObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D159174EF65E00033EBB /* resourceManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resourceManager_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D15A174EF67100033EBB /* zipObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D15B174EF71B00033EBB /* consoleDoc_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleDoc_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D15C174EF71B00033EBB /* consoleExprEvalState_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleExprEvalState_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D15D174EF71B00033EBB /* consoleLogger_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleLogger_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D15E174EF71B00033EBB /* consoleNamespace_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleNamespace_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D15F174EF71B00033EBB /* expando_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = expando_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D160174EF71B00033EBB /* inputManagement_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inputManagement_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D161174EF71B00033EBB /* metaScripting_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = metaScripting_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D162174EF71B00033EBB /* output_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = output_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D163174EF71B00033EBB /* taggedStrings_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taggedStrings_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D165174EF78100033EBB /* profiler_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profiler_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D166174EF78100033EBB /* telnetDebugger_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telnetDebugger_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D167174EF80400033EBB /* gameConnection_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameConnection_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D168174EF80500033EBB /* version_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D169174EF83600033EBB /* color_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = color_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D16A174EF83600033EBB /* dgl_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dgl_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D16B174EF83600033EBB /* dglMac_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dglMac_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D16C174EF83600033EBB /* gFont_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gFont_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D16D174EF83600033EBB /* PNGImage_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PNGImage_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D16E174EF83600033EBB /* TextureManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureManager_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D16F174EF89600033EBB /* guiCanvas_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiCanvas_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D170174EF89600033EBB /* guiControl_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiControl_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D171174EF91900033EBB /* audio_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audio_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D173174EF93900033EBB /* undo_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = undo_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D174174EFA6100033EBB /* Utility_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utility_ScriptBinding.h; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -1372,7 +1438,6 @@
 			buildActionMask = 2147483647;
 			files = (
 				865A20CA16515B1E00527C44 /* AppKit.framework in Frameworks */,
-				865A20CB16515B1E00527C44 /* AVFoundation.framework in Frameworks */,
 				865A20CC16515B1E00527C44 /* Cocoa.framework in Frameworks */,
 				865A20CD16515B1E00527C44 /* CoreData.framework in Frameworks */,
 				865A20CE16515B1E00527C44 /* CoreFoundation.framework in Frameworks */,
@@ -1836,6 +1901,7 @@
 		869FF8AD1651518C002FE082 = {
 			isa = PBXGroup;
 			children = (
+				04CC626B1795512500F9C119 /* AVFoundation.framework */,
 				8652F29F16C146CF00639EFE /* torque2d.icns */,
 				869FF8C21651518C002FE082 /* Torque2D */,
 				865A2351165188AF00527C44 /* platformOSX */,
@@ -1956,6 +2022,7 @@
 		86BC7E8016518D4600D96ADF /* core */ = {
 			isa = PBXGroup;
 			children = (
+				B350D174174EFA6100033EBB /* Utility_ScriptBinding.h */,
 				2AA3655516F3552200E7A900 /* ImageFrameProvider.cc */,
 				2AA3655616F3552200E7A900 /* ImageFrameProvider.h */,
 				2AA3655716F3552200E7A900 /* ImageFrameProviderCore.cc */,
@@ -2120,6 +2187,7 @@
 		86BC7F0016518D4600D96ADF /* audio */ = {
 			isa = PBXGroup;
 			children = (
+				B350D171174EF91900033EBB /* audio_ScriptBinding.cc */,
 				86BC7F0116518D4600D96ADF /* audio.cc */,
 				86BC7F0216518D4600D96ADF /* audio.h */,
 				86BC7F0316518D4600D96ADF /* AudioAsset.cc */,
@@ -2128,7 +2196,6 @@
 				86BC7F0616518D4600D96ADF /* audioBuffer.h */,
 				86BC7F0716518D4600D96ADF /* audioDataBlock.cc */,
 				86BC7F0816518D4600D96ADF /* audioDataBlock.h */,
-				86BC7F0916518D4600D96ADF /* audioFunctions.cc */,
 				86BC7F0A16518D4600D96ADF /* audioStreamSource.h */,
 				86BC7F0B16518D4600D96ADF /* audioStreamSourceFactory.cc */,
 				86BC7F0C16518D4600D96ADF /* audioStreamSourceFactory.h */,
@@ -2142,6 +2209,7 @@
 		86BC7F0F16518D4600D96ADF /* collection */ = {
 			isa = PBXGroup;
 			children = (
+				B350D173174EF93900033EBB /* undo_ScriptBinding.h */,
 				86BC7F1016518D4600D96ADF /* bitMatrix.h */,
 				86BC7F1116518D4600D96ADF /* bitSet.h */,
 				86BC7F1216518D4600D96ADF /* bitTables.cc */,
@@ -2172,6 +2240,8 @@
 		86BC7F2616518D4600D96ADF /* component */ = {
 			isa = PBXGroup;
 			children = (
+				B350D149174EE4FA00033EBB /* dynamicConsoleMethodComponent_ScriptBinding.h */,
+				B350D14A174EE4FA00033EBB /* simComponent_ScriptBinding.h */,
 				86BC7F3516518D4600D96ADF /* behaviors */,
 				86BC7F4016518D4600D96ADF /* dynamicConsoleMethodComponent.cpp */,
 				86BC7F4116518D4600D96ADF /* dynamicConsoleMethodComponent.h */,
@@ -2202,6 +2272,15 @@
 		86BC7F4716518D4600D96ADF /* console */ = {
 			isa = PBXGroup;
 			children = (
+				B350D15B174EF71B00033EBB /* consoleDoc_ScriptBinding.h */,
+				B350D15C174EF71B00033EBB /* consoleExprEvalState_ScriptBinding.h */,
+				B350D15D174EF71B00033EBB /* consoleLogger_ScriptBinding.h */,
+				B350D15E174EF71B00033EBB /* consoleNamespace_ScriptBinding.h */,
+				B350D15F174EF71B00033EBB /* expando_ScriptBinding.h */,
+				B350D160174EF71B00033EBB /* inputManagement_ScriptBinding.h */,
+				B350D161174EF71B00033EBB /* metaScripting_ScriptBinding.cc */,
+				B350D162174EF71B00033EBB /* output_ScriptBinding.h */,
+				B350D163174EF71B00033EBB /* taggedStrings_ScriptBinding.h */,
 				86BC82B316518DF400D96ADF /* consoleDictionary.cc */,
 				86BC82B416518DF400D96ADF /* consoleDictionary.h */,
 				86BC82B516518DF400D96ADF /* consoleExprEvalState.cc */,
@@ -2248,6 +2327,8 @@
 		86BC7F7316518D4600D96ADF /* debug */ = {
 			isa = PBXGroup;
 			children = (
+				B350D165174EF78100033EBB /* profiler_ScriptBinding.h */,
+				B350D166174EF78100033EBB /* telnetDebugger_ScriptBinding.h */,
 				86BC7F7416518D4600D96ADF /* profiler.cc */,
 				86BC7F7516518D4600D96ADF /* profiler.h */,
 				86BC7F7616518D4600D96ADF /* remote */,
@@ -2289,6 +2370,8 @@
 		86BC7FAE16518D4600D96ADF /* game */ = {
 			isa = PBXGroup;
 			children = (
+				B350D167174EF80400033EBB /* gameConnection_ScriptBinding.h */,
+				B350D168174EF80500033EBB /* version_ScriptBinding.h */,
 				864ECFF016527A8500012416 /* gameInterface_ScriptBinding.h */,
 				86BC7FAF16518D4600D96ADF /* defaultGame.cc */,
 				86BC7FB016518D4600D96ADF /* defaultGame.h */,
@@ -2307,6 +2390,12 @@
 		86BC7FB916518D4600D96ADF /* graphics */ = {
 			isa = PBXGroup;
 			children = (
+				B350D169174EF83600033EBB /* color_ScriptBinding.h */,
+				B350D16A174EF83600033EBB /* dgl_ScriptBinding.h */,
+				B350D16B174EF83600033EBB /* dglMac_ScriptBinding.h */,
+				B350D16C174EF83600033EBB /* gFont_ScriptBinding.h */,
+				B350D16D174EF83600033EBB /* PNGImage_ScriptBinding.h */,
+				B350D16E174EF83600033EBB /* TextureManager_ScriptBinding.h */,
 				86BC7FBA16518D4600D96ADF /* bitmapBmp.cc */,
 				86BC7FBB16518D4600D96ADF /* bitmapJpeg.cc */,
 				86BC7FBC16518D4600D96ADF /* bitmapPng.cc */,
@@ -2343,6 +2432,8 @@
 		86BC7FD716518D4600D96ADF /* gui */ = {
 			isa = PBXGroup;
 			children = (
+				B350D16F174EF89600033EBB /* guiCanvas_ScriptBinding.h */,
+				B350D170174EF89600033EBB /* guiControl_ScriptBinding.h */,
 				86BC7FD816518D4600D96ADF /* buttons */,
 				86BC7FE816518D4600D96ADF /* containers */,
 				86BC800116518D4600D96ADF /* editor */,
@@ -2509,6 +2600,7 @@
 		86BC805816518D4600D96ADF /* input */ = {
 			isa = PBXGroup;
 			children = (
+				B350D153174EF5F200033EBB /* actionMap_ScriptBinding.h */,
 				86BC805916518D4600D96ADF /* actionMap.cc */,
 				86BC805A16518D4600D96ADF /* actionMap.h */,
 			);
@@ -2519,6 +2611,10 @@
 		86BC805B16518D4600D96ADF /* io */ = {
 			isa = PBXGroup;
 			children = (
+				B350D154174EF62400033EBB /* fileObject_ScriptBinding.h */,
+				B350D155174EF62400033EBB /* fileStreamObject_ScriptBinding.h */,
+				B350D156174EF62400033EBB /* fileSystem_ScriptBinding.cc */,
+				B350D157174EF62400033EBB /* streamObject_ScriptBinding.h */,
 				86BC805C16518D4600D96ADF /* bitStream.cc */,
 				86BC805D16518D4600D96ADF /* bitStream.h */,
 				86BC805E16518D4600D96ADF /* bufferStream.cc */,
@@ -2529,7 +2625,6 @@
 				86BC806416518D4600D96ADF /* fileStream.h */,
 				86BC806516518D4600D96ADF /* fileStreamObject.cc */,
 				86BC806616518D4600D96ADF /* fileStreamObject.h */,
-				86BC806716518D4600D96ADF /* fileSystemFunctions.cpp */,
 				86BC806816518D4600D96ADF /* filterStream.cc */,
 				86BC806916518D4600D96ADF /* filterStream.h */,
 				86BC806A16518D4600D96ADF /* memStream.cc */,
@@ -2550,6 +2645,7 @@
 		86BC806F16518D4600D96ADF /* resource */ = {
 			isa = PBXGroup;
 			children = (
+				B350D159174EF65E00033EBB /* resourceManager_ScriptBinding.h */,
 				86BC807016518D4600D96ADF /* resourceDictionary.cc */,
 				86BC807116518D4600D96ADF /* resourceManager.cc */,
 				86BC807216518D4600D96ADF /* resourceManager.h */,
@@ -2560,6 +2656,7 @@
 		86BC807616518D4600D96ADF /* zip */ = {
 			isa = PBXGroup;
 			children = (
+				B350D15A174EF67100033EBB /* zipObject_ScriptBinding.h */,
 				86BC807716518D4600D96ADF /* centralDir.cc */,
 				86BC807816518D4600D96ADF /* centralDir.h */,
 				86BC807916518D4600D96ADF /* compressor.cc */,
@@ -2588,6 +2685,11 @@
 		86BC809116518D4600D96ADF /* math */ = {
 			isa = PBXGroup;
 			children = (
+				B350D12B174ED1FE00033EBB /* box_ScriptBinding.h */,
+				B350D12C174ED1FE00033EBB /* math_ScriptBinding.cc */,
+				B350D12D174ED1FE00033EBB /* matrix_ScriptBinding.h */,
+				B350D12E174ED1FE00033EBB /* random_ScriptBinding.h */,
+				B350D129174ED16800033EBB /* vector_ScriptBinding.h */,
 				86BC809216518D4600D96ADF /* mathIO.h */,
 				86BC809316518D4600D96ADF /* mathTypes.cc */,
 				86BC809416518D4600D96ADF /* mathTypes.h */,
@@ -2595,7 +2697,6 @@
 				86BC809616518D4600D96ADF /* mathUtils.h */,
 				86BC809716518D4600D96ADF /* mBox.cc */,
 				86BC809816518D4600D96ADF /* mBox.h */,
-				86BC809916518D4600D96ADF /* mConsoleFunctions.cc */,
 				86BC809A16518D4600D96ADF /* mConstants.h */,
 				86BC809B16518D4600D96ADF /* mMath.h */,
 				86BC809D16518D4600D96ADF /* mMath_C.cc */,
@@ -2629,10 +2730,10 @@
 		86BC80B816518D4600D96ADF /* memory */ = {
 			isa = PBXGroup;
 			children = (
+				B350D130174ED23E00033EBB /* frameAllocator_ScriptBinding.cc */,
 				86BC80B916518D4600D96ADF /* dataChunker.cc */,
 				86BC80BA16518D4600D96ADF /* dataChunker.h */,
 				86BC80BB16518D4600D96ADF /* factoryCache.h */,
-				86BC80BC16518D4600D96ADF /* frameAllocator.cc */,
 				86BC80BD16518D4600D96ADF /* frameAllocator.h */,
 				86BC80BE16518D4600D96ADF /* safeDelete.h */,
 			);
@@ -2643,6 +2744,9 @@
 		86BC80BF16518D4600D96ADF /* messaging */ = {
 			isa = PBXGroup;
 			children = (
+				B350D132174ED27200033EBB /* dispatcher_ScriptBinding.h */,
+				B350D133174ED27200033EBB /* eventManager_ScriptBinding.h */,
+				B350D134174ED27200033EBB /* message_ScriptBinding.h */,
 				86BC80C016518D4600D96ADF /* dispatcher.cc */,
 				86BC80C116518D4600D96ADF /* dispatcher.h */,
 				86BC80C216518D4600D96ADF /* eventManager.cc */,
@@ -2679,6 +2783,17 @@
 		86BC80D516518D4600D96ADF /* network */ = {
 			isa = PBXGroup;
 			children = (
+				B350D135174ED37000033EBB /* connectionProtocol_ScriptBinding.h */,
+				B350D136174ED37000033EBB /* httpObject_ScriptBinding.h */,
+				B350D137174ED37000033EBB /* netConnection_ScriptBinding.h */,
+				B350D138174ED37000033EBB /* netInterface_ScriptBinding.h */,
+				B350D139174ED37000033EBB /* netObject_ScriptBinding.h */,
+				B350D13A174ED37000033EBB /* netStringTable_ScriptBinding.h */,
+				B350D13B174ED37000033EBB /* RemoteCommandEvent_ScriptBinding.h */,
+				B350D13C174ED37000033EBB /* RemoteCommandEvent.h */,
+				B350D13D174ED37000033EBB /* serverQuery_ScriptBinding.h */,
+				B350D13E174ED37000033EBB /* tcpObject_ScriptBinding.h */,
+				B350D13F174ED37000033EBB /* telnetConsole_ScriptBinding.h */,
 				864ECFED165279E100012416 /* networkProcessList.cc */,
 				864ECFEE165279E100012416 /* networkProcessList.h */,
 				86BC80D616518D4600D96ADF /* connectionProtocol.cc */,
@@ -2714,6 +2829,7 @@
 		86BC80EF16518D4600D96ADF /* persistence */ = {
 			isa = PBXGroup;
 			children = (
+				B350D140174ED4B800033EBB /* SimXMLDocument_ScriptBinding.h */,
 				2AD4212517043387005BB8AD /* rapidjson */,
 				86BC80F016518D4600D96ADF /* SimXMLDocument.cpp */,
 				86BC80F116518D4600D96ADF /* SimXMLDocument.h */,
@@ -2761,6 +2877,11 @@
 		86BC812C16518D4600D96ADF /* sim */ = {
 			isa = PBXGroup;
 			children = (
+				B350D14C174EF54C00033EBB /* simBase_ScriptBinding.h */,
+				B350D14D174EF54C00033EBB /* simDatablock_ScriptBinding.h */,
+				B350D14E174EF54C00033EBB /* simObject_ScriptBinding.h */,
+				B350D14F174EF54C00033EBB /* simSerialize_ScriptBinding.h */,
+				B350D150174EF54C00033EBB /* simSet_ScriptBinding.h */,
 				2AD07B2616D15F5A0070DC79 /* simObjectTimerEvent.h */,
 				86BC812D16518D4600D96ADF /* scriptGroup.cc */,
 				86BC812E16518D4600D96ADF /* scriptGroup.h */,
@@ -2797,6 +2918,8 @@
 		86BC814816518D4600D96ADF /* string */ = {
 			isa = PBXGroup;
 			children = (
+				B350D151174EF5A400033EBB /* stringBuffer_ScriptBinding.h */,
+				B350D152174EF5A400033EBB /* stringUnit_ScriptBinding.h */,
 				86BC814916518D4600D96ADF /* findMatch.cc */,
 				86BC814A16518D4600D96ADF /* findMatch.h */,
 				86BC814B16518D4600D96ADF /* stringBuffer.cc */,
@@ -2817,6 +2940,13 @@
 		86BC82ED16518F6800D96ADF /* platform */ = {
 			isa = PBXGroup;
 			children = (
+				2797C9E117F4E12500625B51 /* eaxtypes.h */,
+				B350D141174ED56500033EBB /* CursorManager_ScriptBinding.h */,
+				B350D142174ED56500033EBB /* platformAssert_ScriptBinding.h */,
+				B350D143174ED56500033EBB /* platformFileIO_ScriptBinding.h */,
+				B350D144174ED56500033EBB /* platformNetwork_ScriptBinding.cc */,
+				B350D145174ED56500033EBB /* platformString_ScriptBinding.h */,
+				B350D146174ED56500033EBB /* platformVideo_ScriptBinding.h */,
 				86BC834C16518FE800D96ADF /* CursorManager.cc */,
 				86BC835516518FE800D96ADF /* event.h */,
 				86CEFC76166FE17500DAF75D /* platformInput_ScriptBinding.h */,
@@ -2843,7 +2973,6 @@
 				86BC834516518FE800D96ADF /* platformMemory.h */,
 				86BC835216518FE800D96ADF /* platformNetAsync.unix.cc */,
 				86BC835D16518FE800D96ADF /* platformNetAsync.unix.h */,
-				864ECFEB1652795700012416 /* platformNetwork.cc */,
 				86BC834616518FE800D96ADF /* platformNetwork.h */,
 				86BC835E16518FE800D96ADF /* platformSemaphore.h */,
 				86BC835316518FE800D96ADF /* platformString.cc */,
@@ -2867,6 +2996,7 @@
 		86BC82F416518F6800D96ADF /* menus */ = {
 			isa = PBXGroup;
 			children = (
+				B350D14B174EF4DF00033EBB /* popupMenu_ScriptBinding.h */,
 				86BC833816518FB100D96ADF /* popupMenu.cc */,
 				86BC833916518FB100D96ADF /* popupMenu.h */,
 			);
@@ -2876,6 +3006,7 @@
 		86BC82F716518F6800D96ADF /* nativeDialogs */ = {
 			isa = PBXGroup;
 			children = (
+				B350D148174EE4AA00033EBB /* msgBox_ScriptBinding.h */,
 				86BC833B16518FBC00D96ADF /* msgBox.cpp */,
 				861CD8CE1678F6C200DAE1A0 /* fileDialog_ScriptBinding.h */,
 				861CD8CF1678F6C200DAE1A0 /* fileDialog.cc */,
@@ -2962,7 +3093,6 @@
 				86D770571656873C0046D71F /* mathTypes.cc in Sources */,
 				86D770581656873C0046D71F /* mathUtils.cc in Sources */,
 				86D770591656873C0046D71F /* mBox.cc in Sources */,
-				86D7705A1656873C0046D71F /* mConsoleFunctions.cc in Sources */,
 				86D7705B1656873C0046D71F /* mMath_C.cc in Sources */,
 				86D7705C1656873C0046D71F /* mMathAltivec.cc in Sources */,
 				86D7705D1656873C0046D71F /* mMathFn.cc in Sources */,
@@ -2974,7 +3104,6 @@
 				86D770631656873C0046D71F /* mSplinePatch.cc in Sources */,
 				86D770641656873C0046D71F /* rectClipper.cpp in Sources */,
 				86D770651656873C0046D71F /* dataChunker.cc in Sources */,
-				86D770661656873C0046D71F /* frameAllocator.cc in Sources */,
 				86D770671656873C0046D71F /* dispatcher.cc in Sources */,
 				86D770681656873C0046D71F /* eventManager.cc in Sources */,
 				86D770691656873C0046D71F /* message.cc in Sources */,
@@ -3006,7 +3135,6 @@
 				86D770891656873C0046D71F /* tinyxml.cpp in Sources */,
 				86D7708A1656873C0046D71F /* tinyxmlerror.cpp in Sources */,
 				86D7708B1656873C0046D71F /* tinyxmlparser.cpp in Sources */,
-				86D7708C1656873C0046D71F /* platformNetwork.cc in Sources */,
 				86D7708D1656873C0046D71F /* CursorManager.cc in Sources */,
 				86D7708E1656873C0046D71F /* platform.cc in Sources */,
 				86D7708F1656873C0046D71F /* platformAssert.cc in Sources */,
@@ -3045,7 +3173,6 @@
 				86D77041165687220046D71F /* fileObject.cc in Sources */,
 				86D77042165687220046D71F /* fileStream.cc in Sources */,
 				86D77043165687220046D71F /* fileStreamObject.cc in Sources */,
-				86D77044165687220046D71F /* fileSystemFunctions.cpp in Sources */,
 				86D77045165687220046D71F /* filterStream.cc in Sources */,
 				86D77046165687220046D71F /* memStream.cc in Sources */,
 				86D77047165687220046D71F /* nStream.cc in Sources */,
@@ -3188,7 +3315,6 @@
 				86D76FA3165686D80046D71F /* AudioAsset.cc in Sources */,
 				86D76FA4165686D80046D71F /* audioBuffer.cc in Sources */,
 				86D76FA5165686D80046D71F /* audioDataBlock.cc in Sources */,
-				86D76FA6165686D80046D71F /* audioFunctions.cc in Sources */,
 				86D76FA7165686D80046D71F /* audioStreamSourceFactory.cc in Sources */,
 				86D76FA8165686D80046D71F /* wavStreamSource.cc in Sources */,
 				86D76FA9165686D80046D71F /* bitTables.cc in Sources */,
@@ -3392,6 +3518,12 @@
 				2AD4214E17043413005BB8AD /* tamlBinaryWriter.cc in Sources */,
 				2ACAFD4A1705CF4A0022601C /* tamlJSONParser.cc in Sources */,
 				86DE5688171F05F60054CB83 /* guiGridCtrl.cc in Sources */,
+				B350D12F174ED1FE00033EBB /* math_ScriptBinding.cc in Sources */,
+				B350D131174ED23E00033EBB /* frameAllocator_ScriptBinding.cc in Sources */,
+				B350D147174ED56500033EBB /* platformNetwork_ScriptBinding.cc in Sources */,
+				B350D158174EF62400033EBB /* fileSystem_ScriptBinding.cc in Sources */,
+				B350D164174EF71B00033EBB /* metaScripting_ScriptBinding.cc in Sources */,
+				B350D172174EF91900033EBB /* audio_ScriptBinding.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -3413,32 +3545,34 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = YES;
-				ARCHS = "$(NATIVE_ARCH_ACTUAL)";
+				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_CXX_LIBRARY = "libstdc++";
 				CLANG_WARN_EMPTY_BODY = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = YES;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				"FRAMEWORK_SEARCH_PATHS[arch=*]" = "";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_C_LANGUAGE_STANDARD = gnu89;
 				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
 				GCC_PREPROCESSOR_DEFINITIONS = TORQUE_SHIPPING;
+				GCC_VERSION = "";
 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				HEADER_SEARCH_PATHS = "";
 				LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
-				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
 				SDKROOT = macosx;
+				VALID_ARCHS = i386;
 			};
 			name = Shipping;
 		};
 		865A20AF165152EA00527C44 /* Shipping */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ARCHS = "$(NATIVE_ARCH)";
+				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
 				COMBINE_HIDPI_IMAGES = YES;
 				CONFIGURATION_BUILD_DIR = ../../..;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -3447,6 +3581,7 @@
 					TORQUE_OS_OSX,
 					"$(inherited)",
 				);
+				GCC_VERSION = "";
 				HEADER_SEARCH_PATHS = (
 					../../source,
 					../../lib,
@@ -3460,9 +3595,10 @@
 				);
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
 				LIBRARY_SEARCH_PATHS = "$(inherited)";
-				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
 				OTHER_LDFLAGS = /usr/lib/libz.dylib;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				VALID_ARCHS = i386;
 				WRAPPER_EXTENSION = app;
 			};
 			name = Shipping;
@@ -3471,14 +3607,14 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = YES;
-				ARCHS = "$(NATIVE_ARCH_ACTUAL)";
+				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_CXX_LIBRARY = "libstdc++";
 				CLANG_WARN_EMPTY_BODY = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = NO;
 				"FRAMEWORK_SEARCH_PATHS[arch=*]" = "";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_C_LANGUAGE_STANDARD = gnu89;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
@@ -3488,15 +3624,17 @@
 					"GTEST_USE_OWN_TR1_TUPLE=1",
 				);
 				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_VERSION = "";
 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				HEADER_SEARCH_PATHS = "";
 				LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
-				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
 				ONLY_ACTIVE_ARCH = NO;
 				SDKROOT = macosx;
+				VALID_ARCHS = i386;
 			};
 			name = Debug;
 		};
@@ -3504,36 +3642,38 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = YES;
-				ARCHS = "$(NATIVE_ARCH_ACTUAL)";
+				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_CXX_LIBRARY = "libstdc++";
 				CLANG_WARN_EMPTY_BODY = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = YES;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				"FRAMEWORK_SEARCH_PATHS[arch=*]" = "";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_C_LANGUAGE_STANDARD = gnu89;
 				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					TORQUE_RELEASE,
 					GTEST_OS_MAC,
 					"GTEST_USE_OWN_TR1_TUPLE=1",
 				);
+				GCC_VERSION = "";
 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				HEADER_SEARCH_PATHS = "";
 				LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
-				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
 				SDKROOT = macosx;
+				VALID_ARCHS = i386;
 			};
 			name = Release;
 		};
 		869FF8D71651518C002FE082 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ARCHS = "$(NATIVE_ARCH)";
+				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
 				COMBINE_HIDPI_IMAGES = YES;
 				CONFIGURATION_BUILD_DIR = ../../..;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -3542,6 +3682,7 @@
 					TORQUE_OS_OSX,
 					"$(inherited)",
 				);
+				GCC_VERSION = "";
 				HEADER_SEARCH_PATHS = (
 					../../source,
 					../../lib,
@@ -3557,9 +3698,10 @@
 				);
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
 				LIBRARY_SEARCH_PATHS = "$(inherited)";
-				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
 				OTHER_LDFLAGS = /usr/lib/libz.dylib;
 				PRODUCT_NAME = "$(TARGET_NAME)_DEBUG";
+				VALID_ARCHS = i386;
 				WRAPPER_EXTENSION = app;
 			};
 			name = Debug;
@@ -3567,7 +3709,7 @@
 		869FF8D81651518C002FE082 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ARCHS = "$(NATIVE_ARCH)";
+				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
 				COMBINE_HIDPI_IMAGES = YES;
 				CONFIGURATION_BUILD_DIR = ../../..;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -3575,7 +3717,9 @@
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					TORQUE_OS_OSX,
 					"$(inherited)",
+					TORQUE_ALLOW_DSO_GENERATION,
 				);
+				GCC_VERSION = "";
 				HEADER_SEARCH_PATHS = (
 					../../source,
 					../../lib,
@@ -3591,9 +3735,10 @@
 				);
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
 				LIBRARY_SEARCH_PATHS = "$(inherited)";
-				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
 				OTHER_LDFLAGS = /usr/lib/libz.dylib;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				VALID_ARCHS = i386;
 				WRAPPER_EXTENSION = app;
 			};
 			name = Release;

+ 150 - 20
engine/compilers/Xcode_iOS/Torque2D.xcodeproj/project.pbxproj

@@ -120,7 +120,6 @@
 		867BB00F16AEC9050033868F /* AudioAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD8C16AEC9050033868F /* AudioAsset.cc */; };
 		867BB01016AEC9050033868F /* audioBuffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD8E16AEC9050033868F /* audioBuffer.cc */; };
 		867BB01116AEC9050033868F /* audioDataBlock.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9016AEC9050033868F /* audioDataBlock.cc */; };
-		867BB01216AEC9050033868F /* audioFunctions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9216AEC9050033868F /* audioFunctions.cc */; };
 		867BB01316AEC9050033868F /* audioStreamSourceFactory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9416AEC9050033868F /* audioStreamSourceFactory.cc */; };
 		867BB01416AEC9050033868F /* wavStreamSource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9616AEC9050033868F /* wavStreamSource.cc */; };
 		867BB01516AEC9050033868F /* bitTables.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9B16AEC9050033868F /* bitTables.cc */; };
@@ -247,7 +246,6 @@
 		867BB09D16AEC9050033868F /* fileObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC316AEC9050033868F /* fileObject.cc */; };
 		867BB09E16AEC9050033868F /* fileStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC516AEC9050033868F /* fileStream.cc */; };
 		867BB09F16AEC9050033868F /* fileStreamObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC716AEC9050033868F /* fileStreamObject.cc */; };
-		867BB0A016AEC9050033868F /* fileSystemFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC916AEC9050033868F /* fileSystemFunctions.cpp */; };
 		867BB0A116AEC9050033868F /* filterStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECA16AEC9050033868F /* filterStream.cc */; };
 		867BB0A216AEC9050033868F /* memStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECC16AEC9050033868F /* memStream.cc */; };
 		867BB0A316AEC9050033868F /* nStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECE16AEC9050033868F /* nStream.cc */; };
@@ -269,7 +267,6 @@
 		867BB0B616AEC9050033868F /* mathTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF516AEC9050033868F /* mathTypes.cc */; };
 		867BB0B716AEC9050033868F /* mathUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF716AEC9050033868F /* mathUtils.cc */; };
 		867BB0B816AEC9050033868F /* mBox.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF916AEC9050033868F /* mBox.cc */; };
-		867BB0B916AEC9050033868F /* mConsoleFunctions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEFB16AEC9050033868F /* mConsoleFunctions.cc */; };
 		867BB0BB16AEC9050033868F /* mMath_C.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEFF16AEC9050033868F /* mMath_C.cc */; };
 		867BB0BC16AEC9050033868F /* mMathAltivec.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0016AEC9050033868F /* mMathAltivec.cc */; };
 		867BB0BD16AEC9050033868F /* mMathAMD.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0116AEC9050033868F /* mMathAMD.cc */; };
@@ -284,7 +281,6 @@
 		867BB0C816AEC9050033868F /* mSplinePatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1616AEC9050033868F /* mSplinePatch.cc */; };
 		867BB0C916AEC9050033868F /* rectClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1816AEC9050033868F /* rectClipper.cpp */; };
 		867BB0CA16AEC9050033868F /* dataChunker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1B16AEC9050033868F /* dataChunker.cc */; };
-		867BB0CB16AEC9050033868F /* frameAllocator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1E16AEC9050033868F /* frameAllocator.cc */; };
 		867BB0CC16AEC9050033868F /* dispatcher.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2216AEC9050033868F /* dispatcher.cc */; };
 		867BB0CD16AEC9050033868F /* eventManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2416AEC9050033868F /* eventManager.cc */; };
 		867BB0CE16AEC9050033868F /* message.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2616AEC9050033868F /* message.cc */; };
@@ -327,7 +323,6 @@
 		867BB0FA16AEC9050033868F /* platformFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF8F16AEC9050033868F /* platformFont.cc */; };
 		867BB0FB16AEC9050033868F /* platformMemory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF9516AEC9050033868F /* platformMemory.cc */; };
 		867BB0FC16AEC9050033868F /* platformNetAsync.unix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF9716AEC9050033868F /* platformNetAsync.unix.cc */; };
-		867BB0FD16AEC9050033868F /* platformNetwork.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF9916AEC9050033868F /* platformNetwork.cc */; };
 		867BB0FE16AEC9050033868F /* platformString.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF9C16AEC9050033868F /* platformString.cc */; };
 		867BB0FF16AEC9050033868F /* platformVideo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFA116AEC9050033868F /* platformVideo.cc */; };
 		867BB10016AEC9050033868F /* Tickable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFA716AEC9050033868F /* Tickable.cc */; };
@@ -482,6 +477,12 @@
 		86A9A3FE16AEC836003F01E6 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E416AEC817003F01E6 /* OpenAL.framework */; };
 		86A9A3FF16AEC836003F01E6 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E516AEC817003F01E6 /* OpenGLES.framework */; };
 		86A9A40016AEC836003F01E6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E616AEC817003F01E6 /* QuartzCore.framework */; };
+		B350D17C174F053800033EBB /* audio_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D17B174F053800033EBB /* audio_ScriptBinding.cc */; };
+		B350D189174F057E00033EBB /* metaScripting_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D186174F057E00033EBB /* metaScripting_ScriptBinding.cc */; };
+		B350D19B174F060700033EBB /* fileSystem_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D199174F060700033EBB /* fileSystem_ScriptBinding.cc */; };
+		B350D1A3174F063200033EBB /* math_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D19F174F063200033EBB /* math_ScriptBinding.cc */; };
+		B350D1A5174F064000033EBB /* frameAllocator_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D1A4174F064000033EBB /* frameAllocator_ScriptBinding.cc */; };
+		B350D1BB174F06B700033EBB /* platformNetwork_ScriptBinding.cc in Sources */ = {isa = PBXBuildFile; fileRef = B350D1B8174F06B700033EBB /* platformNetwork_ScriptBinding.cc */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
@@ -755,7 +756,6 @@
 		867BAD8F16AEC9050033868F /* audioBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioBuffer.h; sourceTree = "<group>"; };
 		867BAD9016AEC9050033868F /* audioDataBlock.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioDataBlock.cc; sourceTree = "<group>"; };
 		867BAD9116AEC9050033868F /* audioDataBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioDataBlock.h; sourceTree = "<group>"; };
-		867BAD9216AEC9050033868F /* audioFunctions.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioFunctions.cc; sourceTree = "<group>"; };
 		867BAD9316AEC9050033868F /* audioStreamSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioStreamSource.h; sourceTree = "<group>"; };
 		867BAD9416AEC9050033868F /* audioStreamSourceFactory.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioStreamSourceFactory.cc; sourceTree = "<group>"; };
 		867BAD9516AEC9050033868F /* audioStreamSourceFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioStreamSourceFactory.h; sourceTree = "<group>"; };
@@ -1021,7 +1021,6 @@
 		867BAEC616AEC9050033868F /* fileStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStream.h; sourceTree = "<group>"; };
 		867BAEC716AEC9050033868F /* fileStreamObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileStreamObject.cc; sourceTree = "<group>"; };
 		867BAEC816AEC9050033868F /* fileStreamObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStreamObject.h; sourceTree = "<group>"; };
-		867BAEC916AEC9050033868F /* fileSystemFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileSystemFunctions.cpp; sourceTree = "<group>"; };
 		867BAECA16AEC9050033868F /* filterStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filterStream.cc; sourceTree = "<group>"; };
 		867BAECB16AEC9050033868F /* filterStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filterStream.h; sourceTree = "<group>"; };
 		867BAECC16AEC9050033868F /* memStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memStream.cc; sourceTree = "<group>"; };
@@ -1063,7 +1062,6 @@
 		867BAEF816AEC9050033868F /* mathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathUtils.h; sourceTree = "<group>"; };
 		867BAEF916AEC9050033868F /* mBox.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mBox.cc; sourceTree = "<group>"; };
 		867BAEFA16AEC9050033868F /* mBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mBox.h; sourceTree = "<group>"; };
-		867BAEFB16AEC9050033868F /* mConsoleFunctions.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mConsoleFunctions.cc; sourceTree = "<group>"; };
 		867BAEFC16AEC9050033868F /* mConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mConstants.h; sourceTree = "<group>"; };
 		867BAEFD16AEC9050033868F /* mMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mMath.h; sourceTree = "<group>"; };
 		867BAEFF16AEC9050033868F /* mMath_C.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMath_C.cc; sourceTree = "<group>"; };
@@ -1094,7 +1092,6 @@
 		867BAF1B16AEC9050033868F /* dataChunker.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dataChunker.cc; sourceTree = "<group>"; };
 		867BAF1C16AEC9050033868F /* dataChunker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dataChunker.h; sourceTree = "<group>"; };
 		867BAF1D16AEC9050033868F /* factoryCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = factoryCache.h; sourceTree = "<group>"; };
-		867BAF1E16AEC9050033868F /* frameAllocator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = frameAllocator.cc; sourceTree = "<group>"; };
 		867BAF1F16AEC9050033868F /* frameAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = frameAllocator.h; sourceTree = "<group>"; };
 		867BAF2016AEC9050033868F /* safeDelete.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = safeDelete.h; sourceTree = "<group>"; };
 		867BAF2216AEC9050033868F /* dispatcher.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dispatcher.cc; sourceTree = "<group>"; };
@@ -1194,7 +1191,6 @@
 		867BAF9616AEC9050033868F /* platformMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformMemory.h; sourceTree = "<group>"; };
 		867BAF9716AEC9050033868F /* platformNetAsync.unix.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformNetAsync.unix.cc; sourceTree = "<group>"; };
 		867BAF9816AEC9050033868F /* platformNetAsync.unix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformNetAsync.unix.h; sourceTree = "<group>"; };
-		867BAF9916AEC9050033868F /* platformNetwork.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformNetwork.cc; sourceTree = "<group>"; };
 		867BAF9A16AEC9050033868F /* platformNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformNetwork.h; sourceTree = "<group>"; };
 		867BAF9B16AEC9050033868F /* platformSemaphore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformSemaphore.h; sourceTree = "<group>"; };
 		867BAF9C16AEC9050033868F /* platformString.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformString.cc; sourceTree = "<group>"; };
@@ -1444,6 +1440,75 @@
 		86A9A3E416AEC817003F01E6 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
 		86A9A3E516AEC817003F01E6 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
 		86A9A3E616AEC817003F01E6 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+		B350D179174F04F300033EBB /* Utility_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utility_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D17B174F053800033EBB /* audio_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audio_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D17D174F054300033EBB /* undo_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = undo_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D17E174F055200033EBB /* dynamicConsoleMethodComponent_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dynamicConsoleMethodComponent_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D17F174F055200033EBB /* simComponent_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simComponent_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D180174F057E00033EBB /* consoleDoc_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleDoc_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D181174F057E00033EBB /* consoleExprEvalState_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleExprEvalState_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D182174F057E00033EBB /* consoleLogger_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleLogger_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D183174F057E00033EBB /* consoleNamespace_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleNamespace_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D184174F057E00033EBB /* expando_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = expando_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D185174F057E00033EBB /* inputManagement_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inputManagement_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D186174F057E00033EBB /* metaScripting_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = metaScripting_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D187174F057E00033EBB /* output_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = output_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D188174F057E00033EBB /* taggedStrings_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taggedStrings_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D18A174F058D00033EBB /* profiler_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profiler_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D18B174F058D00033EBB /* telnetDebugger_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telnetDebugger_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D18C174F05A200033EBB /* gameConnection_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameConnection_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D18D174F05A200033EBB /* version_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D18E174F05B700033EBB /* color_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = color_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D18F174F05B700033EBB /* dgl_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dgl_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D190174F05B700033EBB /* dglMac_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dglMac_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D191174F05B700033EBB /* gFont_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gFont_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D192174F05B700033EBB /* PNGImage_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PNGImage_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D193174F05B700033EBB /* TextureManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureManager_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D194174F05CB00033EBB /* guiCanvas_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiCanvas_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D195174F05CB00033EBB /* guiControl_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiControl_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D196174F05F100033EBB /* actionMap_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actionMap_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D197174F060700033EBB /* fileObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D198174F060700033EBB /* fileStreamObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStreamObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D199174F060700033EBB /* fileSystem_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileSystem_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D19A174F060700033EBB /* streamObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = streamObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D19C174F061100033EBB /* resourceManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resourceManager_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D19D174F061D00033EBB /* zipObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D19E174F063200033EBB /* box_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = box_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D19F174F063200033EBB /* math_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = math_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D1A0174F063200033EBB /* matrix_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = matrix_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1A1174F063200033EBB /* random_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = random_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1A2174F063200033EBB /* vector_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1A4174F064000033EBB /* frameAllocator_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = frameAllocator_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D1A6174F064F00033EBB /* dispatcher_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dispatcher_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1A7174F064F00033EBB /* eventManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eventManager_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1A8174F064F00033EBB /* message_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = message_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1A9174F067300033EBB /* connectionProtocol_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = connectionProtocol_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1AA174F067300033EBB /* httpObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = httpObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1AB174F067300033EBB /* netConnection_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netConnection_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1AC174F067300033EBB /* netInterface_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netInterface_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1AD174F067300033EBB /* netObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1AE174F067300033EBB /* netStringTable_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netStringTable_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1AF174F067300033EBB /* RemoteCommandEvent_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteCommandEvent_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1B0174F067300033EBB /* RemoteCommandEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteCommandEvent.h; sourceTree = "<group>"; };
+		B350D1B1174F067300033EBB /* serverQuery_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serverQuery_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1B2174F067300033EBB /* tcpObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tcpObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1B3174F067300033EBB /* telnetConsole_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telnetConsole_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1B4174F067F00033EBB /* SimXMLDocument_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimXMLDocument_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1B5174F06B700033EBB /* CursorManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CursorManager_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1B6174F06B700033EBB /* platformAssert_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformAssert_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1B7174F06B700033EBB /* platformFileIO_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformFileIO_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1B8174F06B700033EBB /* platformNetwork_ScriptBinding.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformNetwork_ScriptBinding.cc; sourceTree = "<group>"; };
+		B350D1B9174F06B700033EBB /* platformString_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformString_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1BA174F06B700033EBB /* platformVideo_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformVideo_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1BC174F06C000033EBB /* msgBox_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = msgBox_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1BD174F06C900033EBB /* popupMenu_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = popupMenu_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1BE174F06DE00033EBB /* simBase_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simBase_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1BF174F06DE00033EBB /* simDatablock_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simDatablock_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1C0174F06DE00033EBB /* simObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simObject_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1C1174F06DE00033EBB /* simSerialize_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simSerialize_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1C2174F06DE00033EBB /* simSet_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simSet_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1C3174F06ED00033EBB /* stringBuffer_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringBuffer_ScriptBinding.h; sourceTree = "<group>"; };
+		B350D1C4174F06ED00033EBB /* stringUnit_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringUnit_ScriptBinding.h; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -1708,6 +1773,7 @@
 		867BAD0C16AEC9050033868F /* core */ = {
 			isa = PBXGroup;
 			children = (
+				B350D179174F04F300033EBB /* Utility_ScriptBinding.h */,
 				2AA3655B16F3553E00E7A900 /* ImageFrameProvider.cc */,
 				2AA3655C16F3553E00E7A900 /* ImageFrameProvider.h */,
 				2AA3655D16F3553E00E7A900 /* ImageFrameProviderCore.cc */,
@@ -1872,6 +1938,7 @@
 		867BAD8916AEC9050033868F /* audio */ = {
 			isa = PBXGroup;
 			children = (
+				B350D17B174F053800033EBB /* audio_ScriptBinding.cc */,
 				867BAD8A16AEC9050033868F /* audio.cc */,
 				867BAD8B16AEC9050033868F /* audio.h */,
 				867BAD8C16AEC9050033868F /* AudioAsset.cc */,
@@ -1880,7 +1947,6 @@
 				867BAD8F16AEC9050033868F /* audioBuffer.h */,
 				867BAD9016AEC9050033868F /* audioDataBlock.cc */,
 				867BAD9116AEC9050033868F /* audioDataBlock.h */,
-				867BAD9216AEC9050033868F /* audioFunctions.cc */,
 				867BAD9316AEC9050033868F /* audioStreamSource.h */,
 				867BAD9416AEC9050033868F /* audioStreamSourceFactory.cc */,
 				867BAD9516AEC9050033868F /* audioStreamSourceFactory.h */,
@@ -1894,6 +1960,7 @@
 		867BAD9816AEC9050033868F /* collection */ = {
 			isa = PBXGroup;
 			children = (
+				B350D17D174F054300033EBB /* undo_ScriptBinding.h */,
 				867BAD9916AEC9050033868F /* bitMatrix.h */,
 				867BAD9A16AEC9050033868F /* bitSet.h */,
 				867BAD9B16AEC9050033868F /* bitTables.cc */,
@@ -1924,6 +1991,8 @@
 		867BADAF16AEC9050033868F /* component */ = {
 			isa = PBXGroup;
 			children = (
+				B350D17E174F055200033EBB /* dynamicConsoleMethodComponent_ScriptBinding.h */,
+				B350D17F174F055200033EBB /* simComponent_ScriptBinding.h */,
 				867BADBE16AEC9050033868F /* behaviors */,
 				867BADC916AEC9050033868F /* dynamicConsoleMethodComponent.cpp */,
 				867BADCA16AEC9050033868F /* dynamicConsoleMethodComponent.h */,
@@ -1954,6 +2023,15 @@
 		867BADD016AEC9050033868F /* console */ = {
 			isa = PBXGroup;
 			children = (
+				B350D180174F057E00033EBB /* consoleDoc_ScriptBinding.h */,
+				B350D181174F057E00033EBB /* consoleExprEvalState_ScriptBinding.h */,
+				B350D182174F057E00033EBB /* consoleLogger_ScriptBinding.h */,
+				B350D183174F057E00033EBB /* consoleNamespace_ScriptBinding.h */,
+				B350D184174F057E00033EBB /* expando_ScriptBinding.h */,
+				B350D185174F057E00033EBB /* inputManagement_ScriptBinding.h */,
+				B350D186174F057E00033EBB /* metaScripting_ScriptBinding.cc */,
+				B350D187174F057E00033EBB /* output_ScriptBinding.h */,
+				B350D188174F057E00033EBB /* taggedStrings_ScriptBinding.h */,
 				867BADD116AEC9050033868F /* ast.h */,
 				867BADD216AEC9050033868F /* astAlloc.cc */,
 				867BADD316AEC9050033868F /* astNodes.cc */,
@@ -2001,6 +2079,8 @@
 		867BADFC16AEC9050033868F /* debug */ = {
 			isa = PBXGroup;
 			children = (
+				B350D18A174F058D00033EBB /* profiler_ScriptBinding.h */,
+				B350D18B174F058D00033EBB /* telnetDebugger_ScriptBinding.h */,
 				867BADFD16AEC9050033868F /* profiler.cc */,
 				867BADFE16AEC9050033868F /* profiler.h */,
 				867BADFF16AEC9050033868F /* remote */,
@@ -2042,6 +2122,8 @@
 		867BAE1016AEC9050033868F /* game */ = {
 			isa = PBXGroup;
 			children = (
+				B350D18C174F05A200033EBB /* gameConnection_ScriptBinding.h */,
+				B350D18D174F05A200033EBB /* version_ScriptBinding.h */,
 				867BAE1116AEC9050033868F /* defaultGame.cc */,
 				867BAE1216AEC9050033868F /* defaultGame.h */,
 				867BAE1316AEC9050033868F /* gameConnection.cc */,
@@ -2060,6 +2142,12 @@
 		867BAE1B16AEC9050033868F /* graphics */ = {
 			isa = PBXGroup;
 			children = (
+				B350D18E174F05B700033EBB /* color_ScriptBinding.h */,
+				B350D18F174F05B700033EBB /* dgl_ScriptBinding.h */,
+				B350D190174F05B700033EBB /* dglMac_ScriptBinding.h */,
+				B350D191174F05B700033EBB /* gFont_ScriptBinding.h */,
+				B350D192174F05B700033EBB /* PNGImage_ScriptBinding.h */,
+				B350D193174F05B700033EBB /* TextureManager_ScriptBinding.h */,
 				867BAE1C16AEC9050033868F /* bitmapBmp.cc */,
 				867BAE1D16AEC9050033868F /* bitmapJpeg.cc */,
 				867BAE1E16AEC9050033868F /* bitmapPng.cc */,
@@ -2096,6 +2184,8 @@
 		867BAE3A16AEC9050033868F /* gui */ = {
 			isa = PBXGroup;
 			children = (
+				B350D194174F05CB00033EBB /* guiCanvas_ScriptBinding.h */,
+				B350D195174F05CB00033EBB /* guiControl_ScriptBinding.h */,
 				867BAE3B16AEC9050033868F /* buttons */,
 				867BAE4B16AEC9050033868F /* containers */,
 				867BAE6416AEC9050033868F /* editor */,
@@ -2258,6 +2348,7 @@
 		867BAEBB16AEC9050033868F /* input */ = {
 			isa = PBXGroup;
 			children = (
+				B350D196174F05F100033EBB /* actionMap_ScriptBinding.h */,
 				867BAEBC16AEC9050033868F /* actionMap.cc */,
 				867BAEBD16AEC9050033868F /* actionMap.h */,
 			);
@@ -2268,6 +2359,10 @@
 		867BAEBE16AEC9050033868F /* io */ = {
 			isa = PBXGroup;
 			children = (
+				B350D197174F060700033EBB /* fileObject_ScriptBinding.h */,
+				B350D198174F060700033EBB /* fileStreamObject_ScriptBinding.h */,
+				B350D199174F060700033EBB /* fileSystem_ScriptBinding.cc */,
+				B350D19A174F060700033EBB /* streamObject_ScriptBinding.h */,
 				867BAEBF16AEC9050033868F /* bitStream.cc */,
 				867BAEC016AEC9050033868F /* bitStream.h */,
 				867BAEC116AEC9050033868F /* bufferStream.cc */,
@@ -2278,7 +2373,6 @@
 				867BAEC616AEC9050033868F /* fileStream.h */,
 				867BAEC716AEC9050033868F /* fileStreamObject.cc */,
 				867BAEC816AEC9050033868F /* fileStreamObject.h */,
-				867BAEC916AEC9050033868F /* fileSystemFunctions.cpp */,
 				867BAECA16AEC9050033868F /* filterStream.cc */,
 				867BAECB16AEC9050033868F /* filterStream.h */,
 				867BAECC16AEC9050033868F /* memStream.cc */,
@@ -2299,6 +2393,7 @@
 		867BAED116AEC9050033868F /* resource */ = {
 			isa = PBXGroup;
 			children = (
+				B350D19C174F061100033EBB /* resourceManager_ScriptBinding.h */,
 				867BAED216AEC9050033868F /* resourceDictionary.cc */,
 				867BAED316AEC9050033868F /* resourceManager.cc */,
 				867BAED416AEC9050033868F /* resourceManager.h */,
@@ -2309,6 +2404,7 @@
 		867BAED816AEC9050033868F /* zip */ = {
 			isa = PBXGroup;
 			children = (
+				B350D19D174F061D00033EBB /* zipObject_ScriptBinding.h */,
 				867BAED916AEC9050033868F /* centralDir.cc */,
 				867BAEDA16AEC9050033868F /* centralDir.h */,
 				867BAEDB16AEC9050033868F /* compressor.cc */,
@@ -2337,6 +2433,11 @@
 		867BAEF316AEC9050033868F /* math */ = {
 			isa = PBXGroup;
 			children = (
+				B350D19E174F063200033EBB /* box_ScriptBinding.h */,
+				B350D19F174F063200033EBB /* math_ScriptBinding.cc */,
+				B350D1A0174F063200033EBB /* matrix_ScriptBinding.h */,
+				B350D1A1174F063200033EBB /* random_ScriptBinding.h */,
+				B350D1A2174F063200033EBB /* vector_ScriptBinding.h */,
 				867BAEF416AEC9050033868F /* mathIO.h */,
 				867BAEF516AEC9050033868F /* mathTypes.cc */,
 				867BAEF616AEC9050033868F /* mathTypes.h */,
@@ -2344,7 +2445,6 @@
 				867BAEF816AEC9050033868F /* mathUtils.h */,
 				867BAEF916AEC9050033868F /* mBox.cc */,
 				867BAEFA16AEC9050033868F /* mBox.h */,
-				867BAEFB16AEC9050033868F /* mConsoleFunctions.cc */,
 				867BAEFC16AEC9050033868F /* mConstants.h */,
 				867BAEFD16AEC9050033868F /* mMath.h */,
 				867BAEFF16AEC9050033868F /* mMath_C.cc */,
@@ -2380,10 +2480,10 @@
 		867BAF1A16AEC9050033868F /* memory */ = {
 			isa = PBXGroup;
 			children = (
+				B350D1A4174F064000033EBB /* frameAllocator_ScriptBinding.cc */,
 				867BAF1B16AEC9050033868F /* dataChunker.cc */,
 				867BAF1C16AEC9050033868F /* dataChunker.h */,
 				867BAF1D16AEC9050033868F /* factoryCache.h */,
-				867BAF1E16AEC9050033868F /* frameAllocator.cc */,
 				867BAF1F16AEC9050033868F /* frameAllocator.h */,
 				867BAF2016AEC9050033868F /* safeDelete.h */,
 			);
@@ -2394,6 +2494,9 @@
 		867BAF2116AEC9050033868F /* messaging */ = {
 			isa = PBXGroup;
 			children = (
+				B350D1A6174F064F00033EBB /* dispatcher_ScriptBinding.h */,
+				B350D1A7174F064F00033EBB /* eventManager_ScriptBinding.h */,
+				B350D1A8174F064F00033EBB /* message_ScriptBinding.h */,
 				867BAF2216AEC9050033868F /* dispatcher.cc */,
 				867BAF2316AEC9050033868F /* dispatcher.h */,
 				867BAF2416AEC9050033868F /* eventManager.cc */,
@@ -2430,6 +2533,17 @@
 		867BAF3716AEC9050033868F /* network */ = {
 			isa = PBXGroup;
 			children = (
+				B350D1A9174F067300033EBB /* connectionProtocol_ScriptBinding.h */,
+				B350D1AA174F067300033EBB /* httpObject_ScriptBinding.h */,
+				B350D1AB174F067300033EBB /* netConnection_ScriptBinding.h */,
+				B350D1AC174F067300033EBB /* netInterface_ScriptBinding.h */,
+				B350D1AD174F067300033EBB /* netObject_ScriptBinding.h */,
+				B350D1AE174F067300033EBB /* netStringTable_ScriptBinding.h */,
+				B350D1AF174F067300033EBB /* RemoteCommandEvent_ScriptBinding.h */,
+				B350D1B0174F067300033EBB /* RemoteCommandEvent.h */,
+				B350D1B1174F067300033EBB /* serverQuery_ScriptBinding.h */,
+				B350D1B2174F067300033EBB /* tcpObject_ScriptBinding.h */,
+				B350D1B3174F067300033EBB /* telnetConsole_ScriptBinding.h */,
 				867BAF3816AEC9050033868F /* connectionProtocol.cc */,
 				867BAF3916AEC9050033868F /* connectionProtocol.h */,
 				867BAF3A16AEC9050033868F /* connectionStringTable.cc */,
@@ -2465,6 +2579,7 @@
 		867BAF5316AEC9050033868F /* persistence */ = {
 			isa = PBXGroup;
 			children = (
+				B350D1B4174F067F00033EBB /* SimXMLDocument_ScriptBinding.h */,
 				2AD42168170434F9005BB8AD /* rapidjson */,
 				867BAF5416AEC9050033868F /* SimXMLDocument.cpp */,
 				867BAF5516AEC9050033868F /* SimXMLDocument.h */,
@@ -2512,6 +2627,12 @@
 		867BAF7216AEC9050033868F /* platform */ = {
 			isa = PBXGroup;
 			children = (
+				B350D1B5174F06B700033EBB /* CursorManager_ScriptBinding.h */,
+				B350D1B6174F06B700033EBB /* platformAssert_ScriptBinding.h */,
+				B350D1B7174F06B700033EBB /* platformFileIO_ScriptBinding.h */,
+				B350D1B8174F06B700033EBB /* platformNetwork_ScriptBinding.cc */,
+				B350D1B9174F06B700033EBB /* platformString_ScriptBinding.h */,
+				B350D1BA174F06B700033EBB /* platformVideo_ScriptBinding.h */,
 				867BAF7316AEC9050033868F /* CursorManager.cc */,
 				867BAF7416AEC9050033868F /* eaxtypes.h */,
 				867BAF7516AEC9050033868F /* event.h */,
@@ -2542,7 +2663,6 @@
 				867BAF9616AEC9050033868F /* platformMemory.h */,
 				867BAF9716AEC9050033868F /* platformNetAsync.unix.cc */,
 				867BAF9816AEC9050033868F /* platformNetAsync.unix.h */,
-				867BAF9916AEC9050033868F /* platformNetwork.cc */,
 				867BAF9A16AEC9050033868F /* platformNetwork.h */,
 				867BAF9B16AEC9050033868F /* platformSemaphore.h */,
 				867BAF9C16AEC9050033868F /* platformString.cc */,
@@ -2575,6 +2695,7 @@
 		867BAF7916AEC9050033868F /* menus */ = {
 			isa = PBXGroup;
 			children = (
+				B350D1BD174F06C900033EBB /* popupMenu_ScriptBinding.h */,
 				867BAF7A16AEC9050033868F /* popupMenu.cc */,
 				867BAF7B16AEC9050033868F /* popupMenu.h */,
 			);
@@ -2584,6 +2705,7 @@
 		867BAF7C16AEC9050033868F /* nativeDialogs */ = {
 			isa = PBXGroup;
 			children = (
+				B350D1BC174F06C000033EBB /* msgBox_ScriptBinding.h */,
 				867BAF7D16AEC9050033868F /* fileDialog.cc */,
 				867BAF7E16AEC9050033868F /* fileDialog.h */,
 				867BAF7F16AEC9050033868F /* fileDialog_ScriptBinding.h */,
@@ -2606,6 +2728,11 @@
 		867BAFB516AEC9050033868F /* sim */ = {
 			isa = PBXGroup;
 			children = (
+				B350D1BE174F06DE00033EBB /* simBase_ScriptBinding.h */,
+				B350D1BF174F06DE00033EBB /* simDatablock_ScriptBinding.h */,
+				B350D1C0174F06DE00033EBB /* simObject_ScriptBinding.h */,
+				B350D1C1174F06DE00033EBB /* simSerialize_ScriptBinding.h */,
+				B350D1C2174F06DE00033EBB /* simSet_ScriptBinding.h */,
 				2AD07B2716D15F8E0070DC79 /* simObjectTimerEvent.h */,
 				867BAFB616AEC9050033868F /* scriptGroup.cc */,
 				867BAFB716AEC9050033868F /* scriptGroup.h */,
@@ -2642,6 +2769,8 @@
 		867BAFD116AEC9050033868F /* string */ = {
 			isa = PBXGroup;
 			children = (
+				B350D1C3174F06ED00033EBB /* stringBuffer_ScriptBinding.h */,
+				B350D1C4174F06ED00033EBB /* stringUnit_ScriptBinding.h */,
 				867BAFD216AEC9050033868F /* findMatch.cc */,
 				867BAFD316AEC9050033868F /* findMatch.h */,
 				867BAFD416AEC9050033868F /* stringBuffer.cc */,
@@ -3163,7 +3292,6 @@
 				867BB00F16AEC9050033868F /* AudioAsset.cc in Sources */,
 				867BB01016AEC9050033868F /* audioBuffer.cc in Sources */,
 				867BB01116AEC9050033868F /* audioDataBlock.cc in Sources */,
-				867BB01216AEC9050033868F /* audioFunctions.cc in Sources */,
 				867BB01316AEC9050033868F /* audioStreamSourceFactory.cc in Sources */,
 				867BB01416AEC9050033868F /* wavStreamSource.cc in Sources */,
 				867BB01516AEC9050033868F /* bitTables.cc in Sources */,
@@ -3289,7 +3417,6 @@
 				867BB09D16AEC9050033868F /* fileObject.cc in Sources */,
 				867BB09E16AEC9050033868F /* fileStream.cc in Sources */,
 				867BB09F16AEC9050033868F /* fileStreamObject.cc in Sources */,
-				867BB0A016AEC9050033868F /* fileSystemFunctions.cpp in Sources */,
 				867BB0A116AEC9050033868F /* filterStream.cc in Sources */,
 				867BB0A216AEC9050033868F /* memStream.cc in Sources */,
 				867BB0A316AEC9050033868F /* nStream.cc in Sources */,
@@ -3311,7 +3438,6 @@
 				867BB0B616AEC9050033868F /* mathTypes.cc in Sources */,
 				867BB0B716AEC9050033868F /* mathUtils.cc in Sources */,
 				867BB0B816AEC9050033868F /* mBox.cc in Sources */,
-				867BB0B916AEC9050033868F /* mConsoleFunctions.cc in Sources */,
 				867BB0BB16AEC9050033868F /* mMath_C.cc in Sources */,
 				867BB0BC16AEC9050033868F /* mMathAltivec.cc in Sources */,
 				867BB0BD16AEC9050033868F /* mMathAMD.cc in Sources */,
@@ -3326,7 +3452,6 @@
 				867BB0C816AEC9050033868F /* mSplinePatch.cc in Sources */,
 				867BB0C916AEC9050033868F /* rectClipper.cpp in Sources */,
 				867BB0CA16AEC9050033868F /* dataChunker.cc in Sources */,
-				867BB0CB16AEC9050033868F /* frameAllocator.cc in Sources */,
 				867BB0CC16AEC9050033868F /* dispatcher.cc in Sources */,
 				867BB0CD16AEC9050033868F /* eventManager.cc in Sources */,
 				867BB0CE16AEC9050033868F /* message.cc in Sources */,
@@ -3369,7 +3494,6 @@
 				867BB0FA16AEC9050033868F /* platformFont.cc in Sources */,
 				867BB0FB16AEC9050033868F /* platformMemory.cc in Sources */,
 				867BB0FC16AEC9050033868F /* platformNetAsync.unix.cc in Sources */,
-				867BB0FD16AEC9050033868F /* platformNetwork.cc in Sources */,
 				867BB0FE16AEC9050033868F /* platformString.cc in Sources */,
 				867BB0FF16AEC9050033868F /* platformVideo.cc in Sources */,
 				867BB10016AEC9050033868F /* Tickable.cc in Sources */,
@@ -3528,6 +3652,12 @@
 				2AD42167170434F0005BB8AD /* tamlJSONWriter.cc in Sources */,
 				2ACAFD471705CF340022601C /* tamlJSONParser.cc in Sources */,
 				860A196C171F0666000E9FE8 /* guiGridCtrl.cc in Sources */,
+				B350D17C174F053800033EBB /* audio_ScriptBinding.cc in Sources */,
+				B350D189174F057E00033EBB /* metaScripting_ScriptBinding.cc in Sources */,
+				B350D19B174F060700033EBB /* fileSystem_ScriptBinding.cc in Sources */,
+				B350D1A3174F063200033EBB /* math_ScriptBinding.cc in Sources */,
+				B350D1A5174F064000033EBB /* frameAllocator_ScriptBinding.cc in Sources */,
+				B350D1BB174F06B700033EBB /* platformNetwork_ScriptBinding.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

+ 0 - 4566
engine/lib/LeapSDK/include/Leap.h

@@ -1,4566 +0,0 @@
-/******************************************************************************\
-* Copyright (C) 2012-2013 Leap Motion, Inc. All rights reserved.               *
-* Leap Motion proprietary and confidential. Not for distribution.              *
-* Use subject to the terms of the Leap Motion SDK Agreement available at       *
-* https://developer.leapmotion.com/sdk_agreement, or another agreement         *
-* between Leap Motion and you, your company or other organization.             *
-\******************************************************************************/
-
-#if !defined(__Leap_h__)
-#define __Leap_h__
-
-#include "LeapMath.h"
-#include <string>
-#include <vector>
-
-// Define integer types for Visual Studio 2008 and earlier
-#if defined(_MSC_VER) && (_MSC_VER < 1600)
-typedef __int32 int32_t;
-typedef __int64 int64_t;
-typedef unsigned __int32 uint32_t;
-typedef unsigned __int64 uint64_t;
-#else
-#include <stdint.h>
-#endif
-
-// Define Leap export macros
-#if defined(_WIN32) // Windows
-#if LEAP_API_INTERNAL
-#define LEAP_EXPORT
-#elif LEAP_API_IMPLEMENTATION
-#define LEAP_EXPORT __declspec(dllexport)
-#else
-#define LEAP_EXPORT __declspec(dllimport)
-#endif
-#define LEAP_EXPORT_CLASS
-#define LEAP_EXPORT_PLUGIN __declspec(dllexport)
-#elif !defined(SWIG)
-#define LEAP_EXPORT __attribute__((visibility("default")))
-#define LEAP_EXPORT_CLASS __attribute__((visibility("default")))
-#define LEAP_EXPORT_PLUGIN __attribute__((visibility("default")))
-#else
-#define LEAP_EXPORT
-#define LEAP_EXPORT_CLASS
-#define LEAP_EXPORT_PLUGIN
-#endif
-
-namespace Leap {
-
-  // Interface for internal use only
-  class LEAP_EXPORT_CLASS Interface {
-  public:
-    struct Implementation {
-      LEAP_EXPORT virtual ~Implementation() {}
-    };
-  protected:
-    LEAP_EXPORT Interface(void* owner);
-    LEAP_EXPORT Interface(Implementation* reference, void* owner);
-    LEAP_EXPORT Interface(const Interface& rhs);
-    Interface(class SharedObject* object);
-    LEAP_EXPORT Interface& operator=(const Interface& rhs);
-    LEAP_EXPORT virtual ~Interface();
-    template<typename T> T* get() const { return static_cast<T*>(reference()); }
-    class SharedObject* m_object;
-  private:
-    LEAP_EXPORT Implementation* reference() const;
-  };
-
-  // Forward declarations for internal use only
-  class PointableImplementation;
-  class FingerImplementation;
-  class ToolImplementation;
-  class HandImplementation;
-  class GestureImplementation;
-  class ScreenImplementation;
-  class DeviceImplementation;
-  class InteractionBoxImplementation;
-  class FrameImplementation;
-  class ControllerImplementation;
-  template<typename T> class ListBaseImplementation;
-
-  // Forward declarations
-  class PointableList;
-  class FingerList;
-  class ToolList;
-  class HandList;
-  class GestureList;
-  class Hand;
-  class Gesture;
-  class Screen;
-  class InteractionBox;
-  class Frame;
-  class Listener;
-
-  /**
-   * The Pointable class reports the physical characteristics of a detected finger or tool.
-   *
-   * Both fingers and tools are classified as Pointable objects. Use the Pointable::isFinger()
-   * function to determine whether a Pointable object represents a finger. Use the
-   * Pointable::isTool() function to determine whether a Pointable object represents a tool.
-   * The Leap Motion software classifies a detected entity as a tool when it is thinner, straighter, and longer
-   * than a typical finger.
-   *
-   * \include Pointable_Get_Basic.txt
-   *
-   * To provide touch emulation, the Leap Motion software associates a floating touch
-   * plane that adapts to the user's finger movement and hand posture. The Leap Motion
-   * interprets purposeful movements toward this plane as potential touch points.
-   * The Pointable class reports
-   * touch state with the touchZone and touchDistance values.
-   *
-   * Note that Pointable objects can be invalid, which means that they do not contain
-   * valid tracking data and do not correspond to a physical entity. Invalid Pointable
-   * objects can be the result of asking for a Pointable object using an ID from an
-   * earlier frame when no Pointable objects with that ID exist in the current frame.
-   * A Pointable object created from the Pointable constructor is also invalid.
-   * Test for validity with the Pointable::isValid() function.
-   *
-   * @since 1.0
-   */
-  class Pointable : public Interface {
-  public:
-
-    /**
-     * Defines the values for reporting the state of a Pointable object in relation to
-     * an adaptive touch plane.
-     * @since 1.0
-     */
-    enum Zone {
-      /**
-       * The Pointable object is too far from the plane to be
-       * considered hovering or touching.
-       * @since 1.0
-       */
-      ZONE_NONE       = 0,
-      /**
-       * The Pointable object is close to, but not touching
-       * the plane.
-       * @since 1.0
-       */
-      ZONE_HOVERING   = 1,
-      /**
-       * The Pointable has penetrated the plane.
-       * @since 1.0
-       */
-      ZONE_TOUCHING   = 2,
-    };
-
-    // For internal use only.
-    Pointable(PointableImplementation*);
-    // For internal use only.
-    Pointable(FingerImplementation*);
-    // For internal use only.
-    Pointable(ToolImplementation*);
-
-    /**
-     * Constructs a Pointable object.
-     *
-     * An uninitialized pointable is considered invalid.
-     * Get valid Pointable objects from a Frame or a Hand object.
-     *
-     * \include Pointable_Pointable.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT Pointable();
-
-    /**
-     * A unique ID assigned to this Pointable object, whose value remains the
-     * same across consecutive frames while the tracked finger or tool remains
-     * visible. If tracking is lost (for example, when a finger is occluded by
-     * another finger or when it is withdrawn from the Leap Motion Controller field of view), the
-     * Leap Motion software may assign a new ID when it detects the entity in a future frame.
-     *
-     * \include Pointable_id.txt
-     *
-     * Use the ID value with the Frame::pointable() function to find this
-     * Pointable object in future frames.
-     *
-     * IDs should be from 1 to 100 (inclusive). If more than 100 objects are tracked
-     * an IDs of -1 will be used until an ID in the defined range is available.
-     *
-     * @returns The ID assigned to this Pointable object.
-     * @since 1.0
-     */
-    LEAP_EXPORT int32_t id() const;
-
-    /**
-     * The Frame associated with this Pointable object.
-     *
-     * \include Pointable_frame.txt
-     *
-     * @returns The associated Frame object, if available; otherwise,
-     * an invalid Frame object is returned.
-     * @since 1.0
-     */
-    LEAP_EXPORT Frame frame() const;
-
-    /**
-     * The Hand associated with this finger or tool.
-     *
-     * \include Pointable_hand.txt
-     *
-     * @returns The associated Hand object, if available; otherwise,
-     * an invalid Hand object is returned.
-     * @since 1.0
-     */
-    LEAP_EXPORT Hand hand() const;
-
-    /**
-     * The tip position in millimeters from the Leap Motion origin.
-     *
-     * \include Pointable_tipPosition.txt
-     *
-     * @returns The Vector containing the coordinates of the tip position.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector tipPosition() const;
-
-    /**
-     * The rate of change of the tip position in millimeters/second.
-     *
-     * \include Pointable_tipVelocity.txt
-     *
-     * @returns The Vector containing the coordinates of the tip velocity.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector tipVelocity() const;
-
-    /**
-     * The direction in which this finger or tool is pointing.
-     *
-     * \include Pointable_direction.txt
-     *
-     * The direction is expressed as a unit vector pointing in the same
-     * direction as the tip.
-     *
-     * \image html images/Leap_Finger_Model.png
-     *
-     * @returns The Vector pointing in the same direction as the tip of this
-     * Pointable object.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector direction() const;
-
-    /**
-     * The estimated width of the finger or tool in millimeters.
-     *
-     * \include Pointable_width.txt
-     *
-     * The reported width is the average width of the visible portion of the
-     * finger or tool from the hand to the tip. If the width isn't known,
-     * then a value of 0 is returned.
-     *
-     * @returns The estimated width of this Pointable object.
-     * @since 1.0
-     */
-    LEAP_EXPORT float width() const;
-
-    /**
-     * The estimated length of the finger or tool in millimeters.
-     *
-     * The reported length is the visible length of the finger or tool from the
-     * hand to tip. If the length isn't known, then a value of 0 is returned.
-     *
-     * \include Pointable_length.txt
-     *
-     * @returns The estimated length of this Pointable object.
-     * @since 1.0
-     */
-    LEAP_EXPORT float length() const;
-
-    /**
-     * Whether or not the Pointable is believed to be a finger.
-     * Fingers are generally shorter, thicker, and less straight than tools.
-     *
-     * \include Pointable_Conversion.txt
-     *
-     * @returns True, if this Pointable is classified as a finger.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isFinger() const;
-
-    /**
-     * Whether or not the Pointable is believed to be a tool.
-     * Tools are generally longer, thinner, and straighter than fingers.
-     *
-     * \include Pointable_Conversion.txt
-     *
-     * @returns True, if this Pointable is classified as a tool.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isTool() const;
-
-    /**
-     * Reports whether this is a valid Pointable object.
-     *
-     * \include Pointable_isValid.txt
-     *
-     * @returns True, if this Pointable object contains valid tracking data.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isValid() const;
-
-    /**
-     * The current touch zone of this Pointable object.
-     *
-     * The Leap Motion software computes the touch zone based on a floating touch
-     * plane that adapts to the user's finger movement and hand posture. The Leap
-     * Motion software interprets purposeful movements toward this plane as potential touch
-     * points. When a Pointable moves close to the adaptive touch plane, it enters the
-     * "hovering" zone. When a Pointable reaches or passes through the plane, it enters
-     * the "touching" zone.
-     *
-     * The possible states are present in the Zone enum of this class:
-     *
-     * * Zone.NONE -- The Pointable is outside the hovering zone.
-     * * Zone.HOVERING -- The Pointable is close to, but not touching the touch plane.
-     * * Zone.TOUCHING -- The Pointable has penetrated the touch plane.
-     *
-     * The touchDistance value provides a normalized indication of the distance to
-     * the touch plane when the Pointable is in the hovering or touching zones.
-     *
-     * \include Pointable_touchZone.txt
-     *
-     * @returns The touch zone of this Pointable
-     * @since 1.0
-     */
-    LEAP_EXPORT Zone touchZone() const;
-
-    /**
-     * A value proportional to the distance between this Pointable object and the
-     * adaptive touch plane.
-     *
-     * \image html images/Leap_Touch_Plane.png
-     *
-     * The touch distance is a value in the range [-1, 1]. The value 1.0 indicates the
-     * Pointable is at the far edge of the hovering zone. The value 0 indicates the
-     * Pointable is just entering the touching zone. A value of -1.0 indicates the
-     * Pointable is firmly within the touching zone. Values in between are
-     * proportional to the distance from the plane. Thus, the touchDistance of 0.5
-     * indicates that the Pointable is halfway into the hovering zone.
-     *
-     * \include Pointable_touchDistance.txt
-     *
-     * You can use the touchDistance value to modulate visual feedback given to the
-     * user as their fingers close in on a touch target, such as a button.
-     *
-     * @returns The normalized touch distance of this Pointable object.
-     * @since 1.0
-     */
-    LEAP_EXPORT float touchDistance() const;
-
-    /**
-     * The stabilized tip position of this Pointable.
-     *
-     * Smoothing and stabilization is performed in order to make
-     * this value more suitable for interaction with 2D content. The stabilized
-     * position lags behind the tip position by a variable amount, depending
-     * primarily on the speed of movement.
-     *
-     * \include Pointable_stabilizedTipPosition.txt
-     *
-     * @returns A modified tip position of this Pointable object
-     * with some additional smoothing and stabilization applied.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector stabilizedTipPosition() const;
-
-    /**
-     * The duration of time this Pointable has been visible to the Leap Motion Controller.
-     *
-     * \include Pointable_timeVisible.txt
-     *
-     * @returns The duration (in seconds) that this Pointable has been tracked.
-     * @since 1.0
-     */
-    LEAP_EXPORT float timeVisible() const;
-
-    /**
-     * Returns an invalid Pointable object.
-     *
-     * You can use the instance returned by this function in comparisons testing
-     * whether a given Pointable instance is valid or invalid. (You can also use the
-     * Pointable::isValid() function.)
-     *
-     * \include Pointable_invalid.txt
-     *
-     * @returns The invalid Pointable instance.
-     * @since 1.0
-     */
-    LEAP_EXPORT static const Pointable& invalid();
-
-    /**
-     * Compare Pointable object equality.
-     *
-     * \include Pointable_operator_equals.txt
-     *
-     * Two Pointable objects are equal if and only if both Pointable objects represent the
-     * exact same physical entities in the same frame and both Pointable objects are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator==(const Pointable&) const;
-
-    /**
-     * Compare Pointable object inequality.
-     *
-     * \include Pointable_operator_not_equal.txt
-     *
-     * Two Pointable objects are equal if and only if both Pointable objects represent the
-     * exact same physical entities in the same frame and both Pointable objects are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator!=(const Pointable&) const;
-
-    /**
-     * Writes a brief, human readable description of the Pointable object to an output stream.
-     *
-     * \include Pointable_operator_stream.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT friend std::ostream& operator<<(std::ostream&, const Pointable&);
-
-    /**
-     * A string containing a brief, human readable description of the Pointable object.
-     *
-     * @returns A description of the Pointable object as a string.
-     * @since 1.0
-     */
-    LEAP_EXPORT std::string toString() const;
-  };
-
-  /**
-   * The Finger class represents a tracked finger.
-   *
-   * Fingers are Pointable objects that the Leap Motion software has classified as a finger.
-   * Get valid Finger objects from a Frame or a Hand object.
-   *
-   * Fingers may be permanently associated to a hand. In this case the angular order of the finger IDs
-   * will be invariant. As fingers move in and out of view it is possible for the guessed ID
-   * of a finger to be incorrect. Consequently, it may be necessary for finger IDs to be
-   * exchanged. All tracked properties, such as velocity, will remain continuous in the API.
-   * However, quantities that are derived from the API output (such as a history of positions)
-   * will be discontinuous unless they have a corresponding ID exchange.
-   *
-   * Note that Finger objects can be invalid, which means that they do not contain
-   * valid tracking data and do not correspond to a physical finger. Invalid Finger
-   * objects can be the result of asking for a Finger object using an ID from an
-   * earlier frame when no Finger objects with that ID exist in the current frame.
-   * A Finger object created from the Finger constructor is also invalid.
-   * Test for validity with the Finger::isValid() function.
-   * @since 1.0
-   */
-  class Finger : public Pointable {
-  public:
-    // For internal use only.
-    Finger(FingerImplementation*);
-
-    /**
-     * Constructs a Finger object.
-     *
-     * An uninitialized finger is considered invalid.
-     * Get valid Finger objects from a Frame or a Hand object.
-     * @since 1.0
-     */
-    LEAP_EXPORT Finger();
-
-    /**
-     * If the specified Pointable object represents a finger, creates a copy
-     * of it as a Finger object; otherwise, creates an invalid Finger object.
-     *
-     * \include Finger_Finger.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT explicit Finger(const Pointable&);
-
-    /**
-     * Returns an invalid Finger object.
-     *
-     * You can use the instance returned by this function in comparisons testing
-     * whether a given Finger instance is valid or invalid. (You can also use the
-     * Finger::isValid() function.)
-     *
-     * \include Finger_invalid.txt
-     *
-     * @returns The invalid Finger instance.
-     * @since 1.0
-     */
-    LEAP_EXPORT static const Finger& invalid();
-
-    /**
-     * A string containing a brief, human readable description of the Finger object.
-     *
-     * @returns A description of the Finger object as a string.
-     * @since 1.0
-     */
-    LEAP_EXPORT std::string toString() const;
-  };
-
-  /**
-   * The Tool class represents a tracked tool.
-   *
-   * Tools are Pointable objects that the Leap Motion software has classified as a tool.
-   * Tools are longer, thinner, and straighter than a typical finger.
-   * Get valid Tool objects from a Frame or a Hand object.
-   *
-   * Tools may reference a hand, but unlike fingers they are not permanently associated.
-   * Instead, a tool can be transferred between hands while keeping the same ID.
-   *
-   * \image html images/Leap_Tool.png
-   *
-   * Note that Tool objects can be invalid, which means that they do not contain
-   * valid tracking data and do not correspond to a physical tool. Invalid Tool
-   * objects can be the result of asking for a Tool object using an ID from an
-   * earlier frame when no Tool objects with that ID exist in the current frame.
-   * A Tool object created from the Tool constructor is also invalid.
-   * Test for validity with the Tool::isValid() function.
-   * @since 1.0
-   */
-  class Tool : public Pointable {
-  public:
-    // For internal use only.
-    Tool(ToolImplementation*);
-
-    /**
-     * Constructs a Tool object.
-     *
-     * An uninitialized tool is considered invalid.
-     * Get valid Tool objects from a Frame or a Hand object.
-     *
-     * \include Tool_Tool.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT Tool();
-
-    /**
-     * If the specified Pointable object represents a tool, creates a copy
-     * of it as a Tool object; otherwise, creates an invalid Tool object.
-     *
-     * \include Tool_Tool_copy.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT explicit Tool(const Pointable&);
-
-    /**
-     * Returns an invalid Tool object.
-     *
-     * You can use the instance returned by this function in comparisons testing
-     * whether a given Tool instance is valid or invalid. (You can also use the
-     * Tool::isValid() function.)
-     *
-     * \include Tool_invalid.txt
-     *
-     * @returns The invalid Tool instance.
-     * @since 1.0
-     */
-    LEAP_EXPORT static const Tool& invalid();
-
-    /**
-     * A string containing a brief, human readable description of the Tool object.
-     *
-     * @returns A description of the Tool object as a string.
-     * @since 1.0
-     */
-    LEAP_EXPORT std::string toString() const;
-  };
-
-  /**
-   * The Hand class reports the physical characteristics of a detected hand.
-   *
-   * Hand tracking data includes a palm position and velocity; vectors for
-   * the palm normal and direction to the fingers; properties of a sphere fit
-   * to the hand; and lists of the attached fingers and tools.
-   *
-   * Get Hand objects from a Frame object:
-   *
-   * \include Hand_Get_First.txt
-   *
-   * Note that Hand objects can be invalid, which means that they do not contain
-   * valid tracking data and do not correspond to a physical entity. Invalid Hand
-   * objects can be the result of asking for a Hand object using an ID from an
-   * earlier frame when no Hand objects with that ID exist in the current frame.
-   * A Hand object created from the Hand constructor is also invalid.
-   * Test for validity with the Hand::isValid() function.
-   * @since 1.0
-   */
-  class Hand : public Interface {
-  public:
-    // For internal use only.
-    Hand(HandImplementation*);
-
-    /**
-     * Constructs a Hand object.
-     *
-     * An uninitialized hand is considered invalid.
-     * Get valid Hand objects from a Frame object.
-     *
-     * \include Hand_Hand.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT Hand();
-
-    /**
-     * A unique ID assigned to this Hand object, whose value remains the same
-     * across consecutive frames while the tracked hand remains visible. If
-     * tracking is lost (for example, when a hand is occluded by another hand
-     * or when it is withdrawn from or reaches the edge of the Leap Motion Controller field of view),
-     * the Leap Motion software may assign a new ID when it detects the hand in a future frame.
-     *
-     * Use the ID value with the Frame::hand() function to find this Hand object
-     * in future frames:
-     *
-     * \include Hand_Get_ID.txt
-     *
-     * @returns The ID of this hand.
-     * @since 1.0
-     */
-    LEAP_EXPORT int32_t id() const;
-
-    /**
-     * The Frame associated with this Hand.
-     *
-     * \include Hand_frame.txt
-     *
-     * @returns The associated Frame object, if available; otherwise,
-     * an invalid Frame object is returned.
-     * @since 1.0
-     */
-    LEAP_EXPORT Frame frame() const;
-
-    /**
-     * The list of Pointable objects (fingers and tools) detected in this frame
-     * that are associated with this hand, given in arbitrary order. The list
-     * can be empty if no fingers or tools associated with this hand are detected.
-     *
-     * Use the Pointable::isFinger() function to determine whether or not an
-     * item in the list represents a finger. Use the Pointable::isTool() function
-     * to determine whether or not an item in the list represents a tool.
-     * You can also get only fingers using the Hand::fingers() function or
-     * only tools using the Hand::tools() function.
-     *
-     * \include Hand_Get_Fingers.txt
-     *
-     * @returns The PointableList containing all Pointable objects associated with this hand.
-     * @since 1.0
-     */
-    LEAP_EXPORT PointableList pointables() const;
-
-    /**
-     * The Pointable object with the specified ID associated with this hand.
-     *
-     * Use the Hand::pointable() function to retrieve a Pointable object
-     * associated with this hand using an ID value obtained from a previous frame.
-     * This function always returns a Pointable object, but if no finger or tool
-     * with the specified ID is present, an invalid Pointable object is returned.
-     *
-     * \include Hand_Get_Pointable_ByID.txt
-     *
-     * Note that the ID values assigned to objects persist across frames, but only until 
-     * tracking of that object is lost. If tracking of a finger or tool is lost and subsequently
-     * regained, the new Pointable object representing that finger or tool may have a
-     * different ID than that representing the finger or tool in an earlier frame.
-     *
-     * @param id The ID value of a Pointable object from a previous frame.
-     * @returns The Pointable object with the matching ID if one exists for this
-     * hand in this frame; otherwise, an invalid Pointable object is returned.
-     * @since 1.0
-     */
-    LEAP_EXPORT Pointable pointable(int32_t id) const;
-
-    /**
-     * The list of Finger objects detected in this frame that are attached to
-     * this hand, given in arbitrary order.
-     * The list can be empty if no fingers attached to this hand are detected.
-     *
-     * \include Hand_Get_Fingers.txt
-     *
-     * @returns The FingerList containing all Finger objects attached to this hand.
-     * @since 1.0
-     */
-    LEAP_EXPORT FingerList fingers() const;
-
-    /**
-     * The Finger object with the specified ID attached to this hand.
-     *
-     * Use the Hand::finger() function to retrieve a Finger object attached to
-     * this hand using an ID value obtained from a previous frame.
-     * This function always returns a Finger object, but if no finger
-     * with the specified ID is present, an invalid Finger object is returned.
-     *
-     * \include Hand_finger.txt
-     *
-     * Note that ID values persist across frames, but only until tracking of a
-     * particular object is lost. If tracking of a finger is lost and subsequently
-     * regained, the new Finger object representing that finger may have a
-     * different ID than that representing the finger in an earlier frame.
-     *
-     * @param id The ID value of a Finger object from a previous frame.
-     * @returns The Finger object with the matching ID if one exists for this
-     * hand in this frame; otherwise, an invalid Finger object is returned.
-     * @since 1.0
-     */
-    LEAP_EXPORT Finger finger(int32_t id) const;
-
-    /**
-     * The list of Tool objects detected in this frame that are held by this
-     * hand, given in arbitrary order.
-     * The list can be empty if no tools held by this hand are detected.
-     *
-     * \include Hand_tools.txt
-     *
-     * @returns The ToolList containing all Tool objects held by this hand.
-     * @since 1.0
-     */
-    LEAP_EXPORT ToolList tools() const;
-
-    /**
-     * The Tool object with the specified ID held by this hand.
-     *
-     * Use the Hand::tool() function to retrieve a Tool object held by
-     * this hand using an ID value obtained from a previous frame.
-     * This function always returns a Tool object, but if no tool
-     * with the specified ID is present, an invalid Tool object is returned.
-     *
-     * \include Hand_tool.txt
-     *
-     * Note that ID values persist across frames, but only until tracking of a
-     * particular object is lost. If tracking of a tool is lost and subsequently
-     * regained, the new Tool object representing that tool may have a
-     * different ID than that representing the tool in an earlier frame.
-     *
-     * @param id The ID value of a Tool object from a previous frame.
-     * @returns The Tool object with the matching ID if one exists for this
-     * hand in this frame; otherwise, an invalid Tool object is returned.
-     * @since 1.0
-     */
-    LEAP_EXPORT Tool tool(int32_t id) const;
-
-    /**
-     * The center position of the palm in millimeters from the Leap Motion Controller origin.
-     *
-     * \include Hand_palmPosition.txt
-     *
-     * @returns The Vector representing the coordinates of the palm position.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector palmPosition() const;
-
-    /**
-     * The stabilized palm position of this Hand.
-     *
-     * Smoothing and stabilization is performed in order to make
-     * this value more suitable for interaction with 2D content. The stabilized
-     * position lags behind the palm position by a variable amount, depending
-     * primarily on the speed of movement.
-     * 
-     * \include Hand_stabilizedPalmPosition.txt
-     *
-     * @returns A modified palm position of this Hand object
-     * with some additional smoothing and stabilization applied.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector stabilizedPalmPosition() const;
-
-    /**
-     * The rate of change of the palm position in millimeters/second.
-     *
-     * \include Hand_palmVelocity.txt
-     *
-     * @returns The Vector representing the coordinates of the palm velocity.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector palmVelocity() const;
-
-    /**
-     * The normal vector to the palm. If your hand is flat, this vector will
-     * point downward, or "out" of the front surface of your palm.
-     *
-     * \image html images/Leap_Palm_Vectors.png
-     *
-     * The direction is expressed as a unit vector pointing in the same
-     * direction as the palm normal (that is, a vector orthogonal to the palm).
-     *
-     * You can use the palm normal vector to compute the roll angle of the palm with
-     * respect to the horizontal plane:
-     *
-     * \include Hand_Get_Angles.txt
-     *
-     * @returns The Vector normal to the plane formed by the palm.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector palmNormal() const;
-
-    /**
-     * The direction from the palm position toward the fingers.
-     *
-     * The direction is expressed as a unit vector pointing in the same
-     * direction as the directed line from the palm position to the fingers.
-     *
-     * You can use the palm direction vector to compute the pitch and yaw angles of the palm with
-     * respect to the horizontal plane:
-     *
-     * \include Hand_Get_Angles.txt
-     *
-     * @returns The Vector pointing from the palm position toward the fingers.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector direction() const;
-
-    /**
-     * The center of a sphere fit to the curvature of this hand.
-     *
-     * \include Hand_sphereCenter.txt
-     *
-     * This sphere is placed roughly as if the hand were holding a ball.
-     *
-     * \image html images/Leap_Hand_Ball.png
-     *
-     * @returns The Vector representing the center position of the sphere.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector sphereCenter() const;
-
-    /**
-     * The radius of a sphere fit to the curvature of this hand.
-     *
-     * This sphere is placed roughly as if the hand were holding a ball. Thus the
-     * size of the sphere decreases as the fingers are curled into a fist.
-     *
-     * \include Hand_sphereRadius.txt
-     *
-     * @returns The radius of the sphere in millimeters.
-     * @since 1.0
-     */
-    LEAP_EXPORT float sphereRadius() const;
-
-    /**
-     * The change of position of this hand between the current frame and
-     * the specified frame.
-     *
-     * The returned translation vector provides the magnitude and direction of
-     * the movement in millimeters.
-     *
-     * \include Hand_translation.txt
-     *
-     * If a corresponding Hand object is not found in sinceFrame, or if either
-     * this frame or sinceFrame are invalid Frame objects, then this method
-     * returns a zero vector.
-     *
-     * @param sinceFrame The starting frame for computing the translation.
-     * @returns A Vector representing the heuristically determined change in
-     * hand position between the current frame and that specified in the
-     * sinceFrame parameter.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector translation(const Frame& sinceFrame) const;
-
-    /**
-     * The estimated probability that the hand motion between the current
-     * frame and the specified frame is intended to be a translating motion.
-     *
-     * \include Hand_translationProbability.txt
-     *
-     * If a corresponding Hand object is not found in sinceFrame, or if either
-     * this frame or sinceFrame are invalid Frame objects, then this method
-     * returns zero.
-     *
-     * @param sinceFrame The starting frame for computing the translation.
-     * @returns A value between 0 and 1 representing the estimated probability
-     * that the hand motion between the current frame and the specified frame
-     * is intended to be a translating motion.
-     * @since 1.0
-     */
-    LEAP_EXPORT float translationProbability(const Frame& sinceFrame) const;
-
-    /**
-     * The axis of rotation derived from the change in orientation of this
-     * hand, and any associated fingers and tools, between the current frame
-     * and the specified frame.
-     *
-     * \include Hand_rotationAxis.txt
-     *
-     * The returned direction vector is normalized.
-     *
-     * If a corresponding Hand object is not found in sinceFrame, or if either
-     * this frame or sinceFrame are invalid Frame objects, then this method
-     * returns a zero vector.
-     *
-     * @param sinceFrame The starting frame for computing the relative rotation.
-     * @returns A normalized direction Vector representing the heuristically
-     * determined axis of rotational change of the hand between the current
-     * frame and that specified in the sinceFrame parameter.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector rotationAxis(const Frame& sinceFrame) const;
-
-    /**
-     * The angle of rotation around the rotation axis derived from the change
-     * in orientation of this hand, and any associated fingers and tools,
-     * between the current frame and the specified frame.
-     *
-     * \include Hand_rotationAngle.txt
-     *
-     * The returned angle is expressed in radians measured clockwise around the
-     * rotation axis (using the right-hand rule) between the start and end frames.
-     * The value is always between 0 and pi radians (0 and 180 degrees).
-     *
-     * If a corresponding Hand object is not found in sinceFrame, or if either
-     * this frame or sinceFrame are invalid Frame objects, then the angle of
-     * rotation is zero.
-     *
-     * @param sinceFrame The starting frame for computing the relative rotation.
-     * @returns A positive value representing the heuristically determined
-     * rotational change of the hand between the current frame and that
-     * specified in the sinceFrame parameter.
-     * @since 1.0
-     */
-    LEAP_EXPORT float rotationAngle(const Frame& sinceFrame) const;
-
-    /**
-     * The angle of rotation around the specified axis derived from the change
-     * in orientation of this hand, and any associated fingers and tools,
-     * between the current frame and the specified frame.
-     *
-     * \include Hand_rotationAngle_axis.txt
-     *
-     * The returned angle is expressed in radians measured clockwise around the
-     * rotation axis (using the right-hand rule) between the start and end frames.
-     * The value is always between -pi and pi radians (-180 and 180 degrees).
-     *
-     * If a corresponding Hand object is not found in sinceFrame, or if either
-     * this frame or sinceFrame are invalid Frame objects, then the angle of
-     * rotation is zero.
-     *
-     * @param sinceFrame The starting frame for computing the relative rotation.
-     * @param axis The axis to measure rotation around.
-     * @returns A value representing the heuristically determined rotational
-     * change of the hand between the current frame and that specified in the
-     * sinceFrame parameter around the specified axis.
-     * @since 1.0
-     */
-    LEAP_EXPORT float rotationAngle(const Frame& sinceFrame, const Vector& axis) const;
-
-    /**
-     * The transform matrix expressing the rotation derived from the change
-     * in orientation of this hand, and any associated fingers and tools,
-     * between the current frame and the specified frame.
-     *
-     * \include Hand_rotationMatrix.txt
-     *
-     * If a corresponding Hand object is not found in sinceFrame, or if either
-     * this frame or sinceFrame are invalid Frame objects, then this method
-     * returns an identity matrix.
-     *
-     * @param sinceFrame The starting frame for computing the relative rotation.
-     * @returns A transformation Matrix representing the heuristically determined
-     * rotational change of the hand between the current frame and that specified
-     * in the sinceFrame parameter.
-     * @since 1.0
-     */
-    LEAP_EXPORT Matrix rotationMatrix(const Frame& sinceFrame) const;
-
-    /**
-     * The estimated probability that the hand motion between the current
-     * frame and the specified frame is intended to be a rotating motion.
-     *
-     * \include Hand_rotationProbability.txt
-     *
-     * If a corresponding Hand object is not found in sinceFrame, or if either
-     * this frame or sinceFrame are invalid Frame objects, then this method
-     * returns zero.
-     *
-     * @param sinceFrame The starting frame for computing the relative rotation.
-     * @returns A value between 0 and 1 representing the estimated probability
-     * that the hand motion between the current frame and the specified frame
-     * is intended to be a rotating motion.
-     * @since 1.0
-     */
-    LEAP_EXPORT float rotationProbability(const Frame& sinceFrame) const;
-
-    /**
-     * The scale factor derived from this hand's motion between the current frame
-     * and the specified frame.
-     *
-     * The scale factor is always positive. A value of 1.0 indicates no
-     * scaling took place. Values between 0.0 and 1.0 indicate contraction
-     * and values greater than 1.0 indicate expansion.
-     *
-     * \include Hand_scaleFactor.txt
-     *
-     * The Leap Motion software derives scaling from the relative inward or outward motion of
-     * a hand and its associated fingers and tools (independent of translation
-     * and rotation).
-     *
-     * If a corresponding Hand object is not found in sinceFrame, or if either
-     * this frame or sinceFrame are invalid Frame objects, then this method
-     * returns 1.0.
-     *
-     * @param sinceFrame The starting frame for computing the relative scaling.
-     * @returns A positive value representing the heuristically determined
-     * scaling change ratio of the hand between the current frame and that
-     * specified in the sinceFrame parameter.
-     * @since 1.0
-     */
-    LEAP_EXPORT float scaleFactor(const Frame& sinceFrame) const;
-
-    /**
-     * The estimated probability that the hand motion between the current
-     * frame and the specified frame is intended to be a scaling motion.
-     *
-     * \include Hand_scaleProbability.txt
-     *
-     * If a corresponding Hand object is not found in sinceFrame, or if either
-     * this frame or sinceFrame are invalid Frame objects, then this method
-     * returns zero.
-     *
-     * @param sinceFrame The starting frame for computing the relative scaling.
-     * @returns A value between 0 and 1 representing the estimated probability
-     * that the hand motion between the current frame and the specified frame
-     * is intended to be a scaling motion.
-     * @since 1.0
-     */
-    LEAP_EXPORT float scaleProbability(const Frame& sinceFrame) const;
-
-    /**
-     * The duration of time this Hand has been visible to the Leap Motion Controller.
-     *
-     * \include Hand_timeVisible.txt
-     *
-     * @returns The duration (in seconds) that this Hand has been tracked.
-     * @since 1.0
-     */
-    LEAP_EXPORT float timeVisible() const;
-
-    /**
-     * Reports whether this is a valid Hand object.
-     *
-     * \include Hand_isValid.txt
-     *
-     * @returns True, if this Hand object contains valid tracking data.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isValid() const;
-
-    /**
-     * Returns an invalid Hand object.
-     *
-     * \include Hand_invalid.txt
-     *
-     * You can use the instance returned by this function in comparisons testing
-     * whether a given Hand instance is valid or invalid. (You can also use the
-     * Hand::isValid() function.)
-     *
-     * @returns The invalid Hand instance.
-     * @since 1.0
-     */
-    LEAP_EXPORT static const Hand& invalid();
-
-    /**
-     * Compare Hand object equality.
-     *
-     * \include Hand_operator_equals.txt
-     *
-     * Two Hand objects are equal if and only if both Hand objects represent the
-     * exact same physical hand in the same frame and both Hand objects are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator==(const Hand&) const;
-
-    /**
-     * Compare Hand object inequality.
-     *
-     * \include Hand_operator_not_equals.txt
-     *
-     * Two Hand objects are equal if and only if both Hand objects represent the
-     * exact same physical hand in the same frame and both Hand objects are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator!=(const Hand&) const;
-
-    /**
-     * Writes a brief, human readable description of the Hand object to an output stream.
-     *
-     * \include Hand_operator_stream.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT friend std::ostream& operator<<(std::ostream&, const Hand&);
-
-    /**
-     * A string containing a brief, human readable description of the Hand object.
-     *
-     * @returns A description of the Hand as a string.
-     * @since 1.0
-     */
-    LEAP_EXPORT std::string toString() const;
-  };
-
-  /**
-   * The Gesture class represents a recognized movement by the user.
-   *
-   * The Leap Motion Controller watches the activity within its field of view for certain movement
-   * patterns typical of a user gesture or command. For example, a movement from side to
-   * side with the hand can indicate a swipe gesture, while a finger poking forward
-   * can indicate a screen tap gesture.
-   *
-   * When the Leap Motion software recognizes a gesture, it assigns an ID and adds a
-   * Gesture object to the frame gesture list. For continuous gestures, which
-   * occur over many frames, the Leap Motion software updates the gesture by adding
-   * a Gesture object having the same ID and updated properties in each
-   * subsequent frame.
-   *
-   * **Important:** Recognition for each type of gesture must be enabled using the
-   * Controller::enableGesture() function; otherwise **no gestures are recognized or
-   * reported**.
-   *
-   * \include Gesture_Feature_enable.txt
-   *
-   * Subclasses of Gesture define the properties for the specific movement patterns
-   * recognized by the Leap Motion software.
-   *
-   * The Gesture subclasses for include:
-   *
-   * * CircleGesture -- A circular movement by a finger.
-   * * SwipeGesture -- A straight line movement by the hand with fingers extended.
-   * * ScreenTapGesture -- A forward tapping movement by a finger.
-   * * KeyTapGesture -- A downward tapping movement by a finger.
-   *
-   * Circle and swipe gestures are continuous and these objects can have a
-   * state of start, update, and stop.
-   *
-   * The screen tap gesture is a discrete gesture. The Leap Motion software only creates a single
-   * ScreenTapGesture object for each tap and it always has a stop state.
-   *
-   * Get valid Gesture instances from a Frame object. You can get a list of gestures
-   * with the Frame::gestures() method. You can get a list of gestures since a
-   * specified frame with the `Frame::gestures(const Frame&)` method. You can also
-   * use the `Frame::gesture()` method to find a gesture in the current frame using
-   * an ID value obtained in a previous frame.
-   *
-   * Gesture objects can be invalid. For example, when you get a gesture by ID
-   * using `Frame::gesture()`, and there is no gesture with that ID in the current
-   * frame, then `gesture()` returns an Invalid Gesture object (rather than a null
-   * value). Always check object validity in situations where a gesture might be
-   * invalid.
-   *
-   * The following keys can be used with the Config class to configure the gesture
-   * recognizer:
-   *
-   * Key string | Value type | Default value | Units
-   * -----------|------------|---------------|------
-   * Gesture.Circle.MinRadius | float | 5.0 | mm
-   * Gesture.Circle.MinArc | float | 1.5*pi | radians
-   * Gesture.Swipe.MinLength | float | 150 | mm
-   * Gesture.Swipe.MinVelocity | float | 1000 | mm/s
-   * Gesture.KeyTap.MinDownVelocity | float | 50 | mm/s
-   * Gesture.KeyTap.HistorySeconds | float | 0.1 | s
-   * Gesture.KeyTap.MinDistance | float | 5.0 | mm
-   * Gesture.ScreenTap.MinForwardVelocity  | float | 50 | mm/s
-   * Gesture.ScreenTap.HistorySeconds | float | 0.1 | s
-   * Gesture.ScreenTap.MinDistance | float | 3.0 | mm
-   * @since 1.0
-   */
-  class Gesture : public Interface {
-  public:
-    // For internal use only.
-    Gesture(GestureImplementation*);
-
-    /**
-     * The supported types of gestures.
-     * @since 1.0
-     */
-    enum Type {
-      /**
-       * An invalid type.
-       * @since 1.0
-       */
-      TYPE_INVALID    = -1,
-      /**
-       * A straight line movement by the hand with fingers extended.
-       * @since 1.0
-       */
-      TYPE_SWIPE      = 1,
-      /**
-       * A circular movement by a finger.
-       * @since 1.0
-       */
-      TYPE_CIRCLE     = 4,
-      /**
-       * A forward tapping movement by a finger.
-       * @since 1.0
-       */
-      TYPE_SCREEN_TAP = 5,
-      /**
-       * A downward tapping movement by a finger.
-       * @since 1.0
-       */
-      TYPE_KEY_TAP    = 6
-    };
-
-    /**
-     * The possible gesture states.
-     * @since 1.0
-     */
-    enum State {
-      /**
-       * An invalid state
-       * @since 1.0
-       */
-      STATE_INVALID = -1,
-      /**
-       * The gesture is starting. Just enough has happened to recognize it.
-       * @since 1.0
-       */
-      STATE_START   = 1,
-      /**
-       * The gesture is in progress. (Note: not all gestures have updates).
-       * @since 1.0
-       */
-      STATE_UPDATE  = 2,
-      /**
-       * The gesture has completed or stopped.
-       * @since 1.0
-       */
-      STATE_STOP    = 3,
-    };
-
-    /**
-     * Constructs a new Gesture object.
-     *
-     * An uninitialized Gesture object is considered invalid. Get valid instances
-     * of the Gesture class, which will be one of the Gesture subclasses, from a
-     * Frame object.
-     * @since 1.0
-     */
-    LEAP_EXPORT Gesture();
-
-    /**
-     * Constructs a new copy of an Gesture object.
-     *
-     * \include Gesture_Gesture_copy.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT Gesture(const Gesture& rhs);
-
-    /**
-     * The gesture type.
-     *
-     * \include Gesture_type.txt
-     *
-     * @returns Gesture::Type A value from the Gesture::Type enumeration.
-     * @since 1.0
-     */
-    LEAP_EXPORT Type type() const;
-
-    /**
-     * The gesture state.
-     *
-     * Recognized movements occur over time and have a beginning, a middle,
-     * and an end. The 'state()' attribute reports where in that sequence this
-     * Gesture object falls.
-     *
-     * \include Gesture_state.txt
-     *
-     * @returns Gesture::State A value from the Gesture::State enumeration.
-     * @since 1.0
-     */
-    LEAP_EXPORT State state() const;
-
-    /**
-     * The gesture ID.
-     *
-     * All Gesture objects belonging to the same recognized movement share the
-     * same ID value. Use the ID value with the Frame::gesture() method to
-     * find updates related to this Gesture object in subsequent frames.
-     *
-     * \include Gesture_id.txt
-     *
-     * @returns int32_t the ID of this Gesture.
-     * @since 1.0
-     */
-    LEAP_EXPORT int32_t id() const;
-
-    /**
-     * The elapsed duration of the recognized movement up to the
-     * frame containing this Gesture object, in microseconds.
-     *
-     * \include Gesture_duration.txt
-     *
-     * The duration reported for the first Gesture in the sequence (with the
-     * STATE_START state) will typically be a small positive number since
-     * the movement must progress far enough for the Leap Motion software to recognize it as
-     * an intentional gesture.
-     *
-     * @return int64_t the elapsed duration in microseconds.
-     * @since 1.0
-     */
-    LEAP_EXPORT int64_t duration() const;
-
-    /**
-     * The elapsed duration in seconds.
-     *
-     * \include Gesture_durationSeconds.txt
-     *
-     * @see duration()
-     * @return float the elapsed duration in seconds.
-     * @since 1.0
-     */
-    LEAP_EXPORT float durationSeconds() const;
-
-    /**
-     * The Frame containing this Gesture instance.
-     *
-     * \include Gesture_frame.txt
-     _
-     * @return Frame The parent Frame object.
-     * @since 1.0
-     */
-    LEAP_EXPORT Frame frame() const;
-
-    /**
-     * The list of hands associated with this Gesture, if any.
-     *
-     * \include Gesture_hands.txt
-     *
-     * If no hands are related to this gesture, the list is empty.
-     *
-     * @return HandList the list of related Hand objects.
-     * @since 1.0
-     */
-    LEAP_EXPORT HandList hands() const;
-
-    /**
-     * The list of fingers and tools associated with this Gesture, if any.
-     *
-     * If no Pointable objects are related to this gesture, the list is empty.
-     *
-     * \include Gesture_pointables.txt
-     *
-     * @return PointableList the list of related Pointable objects.
-     * @since 1.0
-     */
-    LEAP_EXPORT PointableList pointables() const;
-
-    /**
-     * Reports whether this Gesture instance represents a valid Gesture.
-     *
-     * An invalid Gesture object does not represent a snapshot of a recognized
-     * movement. Invalid Gesture objects are returned when a valid object cannot
-     * be provided. For example, when you get an gesture by ID
-     * using Frame::gesture(), and there is no gesture with that ID in the current
-     * frame, then gesture() returns an Invalid Gesture object (rather than a null
-     * value). Always check object validity in situations where an gesture might be
-     * invalid.
-     *
-     * \include Gesture_isValid.txt
-     *
-     * @returns bool True, if this is a valid Gesture instance; false, otherwise.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isValid() const;
-
-    /**
-     * Compare Gesture object equality.
-     *
-     * \include Gesture_operator_equals.txt
-     *
-     * Two Gestures are equal if they represent the same snapshot of the same
-     * recognized movement.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator==(const Gesture& rhs) const;
-
-    /**
-     * Compare Gesture object inequality.
-     *
-     * \include Gesture_operator_not_equals.txt
-     *
-     * Two Gestures are equal only if they represent the same snapshot of the same
-     * recognized movement.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator!=(const Gesture& rhs) const;
-
-    /**
-     * A string containing a brief, human-readable description of this
-     * Gesture.
-     *
-     * \include Gesture_toString.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT std::string toString() const;
-
-    /**
-     * Returns an invalid Gesture object.
-     *
-     * You can use the instance returned by this function in comparisons testing
-     * whether a given Gesture instance is valid or invalid. (You can also use the
-     * Gesture::isValid() function.)
-     *
-     * \include Gesture_invalid.txt
-     *
-     * @returns The invalid Gesture instance.
-     * @since 1.0
-     */
-    LEAP_EXPORT static const Gesture& invalid();
-  };
-
-  /**
-   * The SwipeGesture class represents a swiping motion of a finger or tool.
-   *
-   * \image html images/Leap_Gesture_Swipe.png
-   *
-   * **Important:** To use swipe gestures in your application, you must enable
-   * recognition of the swipe gesture. You can enable recognition with:
-   *
-   * \include Gesture_Swipe_Enable.txt
-   *
-   * Swipe gestures are continuous.
-   *
-   * You can set the minimum length and velocity required for a movement
-   * to be recognized as a swipe using the config attribute of a connected
-   * Controller object. Use the following keys to configure swipe recognition:
-   *
-   * Key string | Value type | Default value | Units
-   * -----------|------------|---------------|------
-   * Gesture.Swipe.MinLength | float | 150 | mm
-   * Gesture.Swipe.MinVelocity | float | 1000 | mm/s
-   *
-   * The following example demonstrates how to set the swipe configuration
-   * parameters:
-   *
-   * \include Gesture_Swipe_Params.txt
-   * @since 1.0
-   */
-  class SwipeGesture : public Gesture
-  {
-  public:
-    /**
-     * The swipe gesture type.
-     *
-     * \include SwipeGesture_classType.txt
-     *
-     * @returns Type The type value designating a swipe gesture.
-     * @since 1.0
-     */
-    static Type classType() { return TYPE_SWIPE; }
-
-    LEAP_EXPORT SwipeGesture();
-
-    /**
-     * Constructs a SwipeGesture object from an instance of the Gesture class.
-     *
-     * \include SwipeGesture_SwipeGesture.txt
-     *
-     * @param rhs The Gesture instance to specialize. This Gesture instance must
-     * be a SwipeGesture object.
-     * @since 1.0
-     */
-    LEAP_EXPORT SwipeGesture(const Gesture& rhs);
-
-    /**
-     * The position where the swipe began.
-     *
-     * \include SwipeGesture_startPosition.txt
-     *
-     * @returns Vector The starting position within the Leap Motion frame of
-     * reference, in mm.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector startPosition() const;
-
-    /**
-     * The current position of the swipe.
-     *
-     * \include SwipeGesture_position.txt
-     *
-     * @returns Vector The current swipe position within the Leap Motion frame of
-     * reference, in mm.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector position() const;
-
-    /**
-     * The unit direction vector parallel to the swipe motion.
-     *
-     * \include SwipeGesture_direction.txt
-     *
-     * You can compare the components of the vector to classify the swipe as
-     * appropriate for your application. For example, if you are using swipes
-     * for two dimensional scrolling, you can compare the x and y values to
-     * determine if the swipe is primarily horizontal or vertical.
-     *
-     * @returns Vector The unit direction vector representing the swipe
-     * motion.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector direction() const;
-
-    /**
-     * The swipe speed in mm/second.
-     *
-     * \include SwipeGesture_speed.txt
-     *
-     * @returns float The speed of the finger performing the swipe gesture in
-     * millimeters per second.
-     * @since 1.0
-     */
-    LEAP_EXPORT float speed() const;
-
-    /**
-     * The finger performing the swipe gesture.
-     *
-     * \include SwipeGesture_pointable.txt
-     *
-     * @returns Pointable A Pointable object representing the swiping finger.
-     * @since 1.0
-     */
-    LEAP_EXPORT Pointable pointable() const;
-  };
-
-  /**
-   * The CircleGesture classes represents a circular finger movement.
-   *
-   * A circle movement is recognized when the tip of a finger draws a circle
-   * within the Leap Motion Controller field of view.
-   *
-   * \image html images/Leap_Gesture_Circle.png
-   *
-   * **Important:** To use circle gestures in your application, you must enable
-   * recognition of the circle gesture. You can enable recognition with:
-   *
-   * \include Gesture_Circle_Enable.txt
-   *
-   * Circle gestures are continuous. The CircleGesture objects for the gesture have
-   * three possible states:
-   *
-   * * State::STATE_START -- The circle gesture has just started. The movement has
-   *   progressed far enough for the recognizer to classify it as a circle.
-   * * State::STATE_UPDATE -- The circle gesture is continuing.
-   * * State::STATE_STOP -- The circle gesture is finished.
-   *
-   * You can set the minimum radius and minimum arc length required for a movement
-   * to be recognized as a circle using the config attribute of a connected
-   * Controller object. Use the following keys to configure circle recognition:
-   *
-   * Key string | Value type | Default value | Units
-   * -----------|------------|---------------|------
-   * Gesture.Circle.MinRadius | float | 5.0 | mm
-   * Gesture.Circle.MinArc | float | 1.5*pi | radians
-   *
-   * The following example demonstrates how to set the circle configuration
-   * parameters:
-   *
-   * \include Gesture_Circle_Params.txt
-   *
-   * @since 1.0
-   */
-  class CircleGesture : public Gesture
-  {
-  public:
-    /**
-     * The circle gesture type.
-     *
-     * \include CircleGesture_classType.txt
-     *
-     * @returns Type The type value designating a circle gesture.
-     * @since 1.0
-     */
-    static Type classType() { return TYPE_CIRCLE; }
-
-    /**
-     * Constructs a new CircleGesture object.
-     *
-     * An uninitialized CircleGesture object is considered invalid. Get valid instances
-     * of the CircleGesture class from a Frame object.
-     * @since 1.0
-     */
-    LEAP_EXPORT CircleGesture();
-
-    /**
-     * Constructs a CircleGesture object from an instance of the Gesture class.
-     *
-     * \include CircleGesture_CircleGesture.txt
-     *
-     * @param rhs The Gesture instance to specialize. This Gesture instance must
-     * be a CircleGesture object.
-     * @since 1.0
-     */
-    LEAP_EXPORT CircleGesture(const Gesture& rhs);
-
-    /**
-     * The center point of the circle within the Leap Motion frame of reference.
-     *
-     * \include CircleGesture_center.txt
-     * @returns Vector The center of the circle in mm from the Leap Motion origin.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector center() const;
-
-    /**
-     * Returns the normal vector for the circle being traced.
-     *
-     * If you draw the circle clockwise, the normal vector points in the same
-     * general direction as the pointable object drawing the circle. If you draw
-     * the circle counterclockwise, the normal points back toward the
-     * pointable. If the angle between the normal and the pointable object
-     * drawing the circle is less than 90 degrees, then the circle is clockwise.
-     *
-     * \include Gesture_Circle_Direction.txt
-     *
-     * @return Vector the normal vector for the circle being traced
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector normal() const;
-
-    /**
-     * The number of times the finger tip has traversed the circle.
-     *
-     * Progress is reported as a positive number of the number. For example,
-     * a progress value of .5 indicates that the finger has gone halfway
-     * around, while a value of 3 indicates that the finger has gone around
-     * the the circle three times.
-     *
-     * \include CircleGesture_progress.txt
-     *
-     * Progress starts where the circle gesture began. Since the circle
-     * must be partially formed before the Leap Motion software can recognize it, progress
-     * will be greater than zero when a circle gesture first appears in the
-     * frame.
-     *
-     * @returns float A positive number indicating the gesture progress.
-     * @since 1.0
-     */
-    LEAP_EXPORT float progress() const;
-
-    /**
-     * The radius of the circle.
-     *
-     * \include CircleGesture_radius.txt
-     *
-     * @returns The circle radius in mm.
-     * @since 1.0
-     */
-    LEAP_EXPORT float radius() const;
-
-    /**
-     * The finger performing the circle gesture.
-     *
-     * \include CircleGesture_pointable.txt
-     *
-     * @returns Pointable A Pointable object representing the circling finger.
-     * @since 1.0
-     */
-    LEAP_EXPORT Pointable pointable() const;
-  };
-
-  /**
-   * The ScreenTapGesture class represents a tapping gesture by a finger or tool.
-   *
-   * A screen tap gesture is recognized when the tip of a finger pokes forward
-   * and then springs back to approximately the original postion, as if
-   * tapping a vertical screen. The tapping finger must pause briefly before beginning the tap.
-   *
-   * \image html images/Leap_Gesture_Tap2.png
-   *
-   * **Important:** To use screen tap gestures in your application, you must enable
-   * recognition of the screen tap gesture. You can enable recognition with:
-   *
-   * \include Gesture_ScreenTap_Enable.txt
-   *
-   * ScreenTap gestures are discrete. The ScreenTapGesture object representing a tap always
-   * has the state, STATE_STOP. Only one ScreenTapGesture object is created for each
-   * screen tap gesture recognized.
-   *
-   * You can set the minimum finger movement and velocity required for a movement
-   * to be recognized as a screen tap as well as adjust the detection window for
-   * evaluating the movement using the config attribute of a connected
-   * Controller object. Use the following keys to configure screen tap recognition:
-   *
-   * Key string | Value type | Default value | Units
-   * -----------|------------|---------------|------
-   * Gesture.ScreenTap.MinForwardVelocity  | float | 50 | mm/s
-   * Gesture.ScreenTap.HistorySeconds | float | 0.1 | s
-   * Gesture.ScreenTap.MinDistance | float | 3.0 | mm
-   *
-   * The following example demonstrates how to set the screen tap configuration
-   * parameters:
-   *
-   * \include Gesture_ScreenTap_Params.txt
-   * @since 1.0
-   */
-  class ScreenTapGesture : public Gesture
-  {
-  public:
-    /**
-     * The screen tap gesture type.
-     *
-     * \include ScreenTapGesture_classType.txt
-     *
-     * @returns Type The type value designating a screen tap gesture.
-     * @since 1.0
-     */
-    static Type classType() { return TYPE_SCREEN_TAP; }
-
-    /**
-     * Constructs a new ScreenTapGesture object.
-     *
-     * An uninitialized ScreenTapGesture object is considered invalid. Get valid instances
-     * of the ScreenTapGesture class from a Frame object.
-     * @since 1.0
-     */
-    LEAP_EXPORT ScreenTapGesture();
-
-    /**
-     * Constructs a ScreenTapGesture object from an instance of the Gesture class.
-     *
-     * \include ScreenTapGesture_ScreenTapGesture.txt
-     *
-     * @param rhs The Gesture instance to specialize. This Gesture instance must
-     * be a ScreenTapGesture object.
-     * @since 1.0
-     */
-    LEAP_EXPORT ScreenTapGesture(const Gesture& rhs);
-
-    /**
-     * The position where the screen tap is registered.
-     *
-     * \include ScreenTapGesture_position.txt
-     *
-     * @return Vector A Vector containing the coordinates of screen tap location.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector position() const;
-
-    /**
-     * The direction of finger tip motion.
-     *
-     * \include ScreenTapGesture_direction.txt
-     *
-     * @returns Vector A unit direction vector.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector direction() const;
-
-    /**
-     * The progess value is always 1.0 for a screen tap gesture.
-     *
-     * @returns float The value 1.0.
-     * @since 1.0
-     */
-    LEAP_EXPORT float progress() const;
-
-    /**
-     * The finger performing the screen tap gesture.
-     *
-     * \include ScreenTapGesture_pointable.txt
-     *
-     * @returns Pointable A Pointable object representing the tapping finger.
-     * @since 1.0
-     */
-    LEAP_EXPORT Pointable pointable() const;
-  };
-
-  /**
-   * The KeyTapGesture class represents a tapping gesture by a finger or tool.
-   *
-   * A key tap gesture is recognized when the tip of a finger rotates down toward the
-   * palm and then springs back to approximately the original postion, as if
-   * tapping. The tapping finger must pause briefly before beginning the tap.
-   *
-   * \image html images/Leap_Gesture_Tap.png
-   *
-   * **Important:** To use key tap gestures in your application, you must enable
-   * recognition of the key tap gesture. You can enable recognition with:
-   *
-   * \include Gesture_KeyTap_Enable.txt
-   *
-   * Key tap gestures are discrete. The KeyTapGesture object representing a tap always
-   * has the state, STATE_STOP. Only one KeyTapGesture object is created for each
-   * key tap gesture recognized.
-   *
-   * You can set the minimum finger movement and velocity required for a movement
-   * to be recognized as a key tap as well as adjust the detection window for
-   * evaluating the movement using the config attribute of a connected
-   * Controller object. Use the following configuration keys to configure key tap
-   * recognition:
-   *
-   * Key string | Value type | Default value | Units
-   * -----------|------------|---------------|------
-   * Gesture.KeyTap.MinDownVelocity | float | 50 | mm/s
-   * Gesture.KeyTap.HistorySeconds | float | 0.1 | s
-   * Gesture.KeyTap.MinDistance | float | 5.0 | mm
-   *
-   * The following example demonstrates how to set the key tap configuration
-   * parameters:
-   *
-   * \include Gesture_KeyTap_Params.txt
-   *
-   * @since 1.0
-   */
-  class KeyTapGesture : public Gesture
-  {
-  public:
-    /**
-     * The key tap gesture type.
-     *
-     * \include KeyTapGesture_classType.txt
-     *
-     * @returns Type The type value designating a key tap gesture.
-     * @since 1.0
-     */
-    static Type classType() { return TYPE_KEY_TAP; }
-
-    /**
-     * Constructs a new KeyTapGesture object.
-     *
-     * An uninitialized KeyTapGesture object is considered invalid. Get valid instances
-     * of the KeyTapGesture class from a Frame object.
-     * @since 1.0
-     */
-    LEAP_EXPORT KeyTapGesture();
-
-    /**
-     * Constructs a KeyTapGesture object from an instance of the Gesture class.
-     *
-     * \include KeyTapGesture_KeyTapGesture.txt
-     *
-     * @param rhs The Gesture instance to specialize. This Gesture instance must
-     * be a KeyTapGesture object.
-     * @since 1.0
-     */
-    LEAP_EXPORT KeyTapGesture(const Gesture& rhs);
-
-    /**
-     * The position where the key tap is registered.
-     *
-     * \include KeyTapGesture_position.txt
-     *
-     * @return Vector A Vector containing the coordinates of tap location.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector position() const;
-
-    /**
-     * The direction of finger tip motion.
-     *
-     * \include KeyTapGesture_direction.txt
-     *
-     * @returns Vector A unit direction vector if the finger tip is moving;
-     * otherwise, a zero-vector.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector direction() const;
-
-    /**
-     * The progess value is always 1.0 for a key tap gesture.
-     *
-     * @returns float The value 1.0.
-     * @since 1.0
-     */
-    LEAP_EXPORT float progress() const;
-
-    /**
-     * The finger performing the key tap gesture.
-     *
-     * \include KeyTapGesture_pointable.txt
-     *
-     * @returns Pointable A Pointable object representing the tapping finger.
-     * @since 1.0
-     */
-    LEAP_EXPORT Pointable pointable() const;
-  };
-
-  /*
-   * The Screen class is currently unsupported.
-   *
-   * We are re-evaluating this feature due to the cumbersome location process
-   * required to use it and the amount of confusion about the feature's purpose.
-   *
-   * The Screen class represents a computer monitor screen.
-   *
-   * The Screen class reports characteristics describing the position and
-   * orientation of the monitor screen within the Leap Motion coordinate system. These
-   * characteristics include the bottom-left corner position of the screen,
-   * direction vectors for the horizontal and vertical axes of the screen, and
-   * the screen's normal vector. The screen must be properly registered with the
-   * Screen Locator for the Leap Motion software to report these characteristics accurately.
-   * The Screen class also reports the size of the screen in pixels, using
-   * information obtained from the operating system. (Run the Screen Locator
-   * from the Leap Motion Settings dialog, on the Screen page.)
-   *
-   * You can get the point of intersection between the screen and a ray
-   * projected from a Pointable object using the Screen::intersect() function.
-   * Likewise, you can get the closest point on the screen to a point in space
-   * using the Screen::project() function. Again, the screen location
-   * must be registered with the Screen Locator for these functions to
-   * return accurate values.
-   *
-   * Note that Screen objects can be invalid, which means that they do not contain
-   * valid screen coordinate data and do not correspond to a physical entity.
-   * Test for validity with the Screen::isValid() function.
-   * @since 1.0
-   */
-  class Screen : public Interface {
-  public:
-    // For internal use only.
-    Screen(ScreenImplementation*);
-
-    /**
-     * Constructs a Screen object.
-     *
-     * An uninitialized screen is considered invalid.
-     * Get valid Screen objects from a ScreenList object obtained using the
-     * Controller::locatedScreens() method.
-     * @since 1.0
-     */
-    LEAP_EXPORT Screen();
-
-    /**
-     * A unique identifier for this screen based on the screen
-     * information in the configuration. A default screen with ID, *0*,
-     * always exists and contains default characteristics, even if no screens
-     * have been located.
-     * @since 1.0
-     */
-    LEAP_EXPORT int32_t id() const;
-
-    /**
-     * Returns the intersection between this screen and a ray projecting from a
-     * Pointable object.
-     *
-     * The projected ray emanates from the Pointable tipPosition along the
-     * Pointable's direction vector.
-     *
-     * Set the normalize parameter to true to request the intersection point in
-     * normalized screen coordinates. Normalized screen coordinates are usually
-     * values between 0 and 1, where 0 represents the screen's origin at the
-     * bottom-left corner and 1 represents the opposite edge (either top or
-     * right). When you request normalized coordinates, the z-component of the
-     * returned vector is zero. Multiply a normalized coordinate by the values
-     * returned by Screen::widthPixels() or Screen::heightPixels() to calculate
-     * the screen position in pixels (remembering that many other computer
-     * graphics coordinate systems place the origin in the top-left corner).
-     *
-     * Set the normalize parameter to false to request the intersection point
-     * in Leap Motion coordinates (millimeters from the Leap Motion origin).
-     *
-     * If the Pointable object points outside the screen's border (but still
-     * intersects the plane in which the screen lies), the returned intersection
-     * point is clamped to the nearest point on the edge of the screen.
-     *
-     * You can use the clampRatio parameter to contract or expand the area in
-     * which you can point. For example, if you set the clampRatio parameter to
-     * 0.5, then the positions reported for intersection points outside the
-     * central 50% of the screen are moved to the border of this smaller area.
-     * If, on the other hand, you expanded the area by setting clampRatio to
-     * a value such as 3.0, then you could point well outside screen's physical
-     * boundary before the intersection points would be clamped. The positions
-     * for any points clamped would also be placed on this larger outer border.
-     * The positions reported for any intersection points inside the clamping
-     * border are unaffected by clamping.
-     *
-     * \include Screen_Normalized_2.txt
-     *
-     * If the Pointable object does not point toward the plane of the screen
-     * (i.e. it is pointing parallel to or away from the screen), then the
-     * components of the returned vector are all set to NaN (not-a-number).
-     *
-     * @param pointable The Pointable object to check for screen intersection.
-     *
-     * @param normalize If true, return normalized coordinates representing
-     * the intersection point as a percentage of the screen's width and height.
-     * If false, return Leap Motion coordinates (millimeters from the Leap Motion origin,
-     * which is located at the center of the top surface of the Leap Motion Controller).
-     * If true and the clampRatio parameter is set to 1.0, coordinates will be
-     * of the form (0..1, 0..1, 0). Setting the clampRatio to a different value
-     * changes the range for normalized coordinates. For example, a clampRatio
-     * of 5.0 changes the range of values to be of the form (-2..3, -2..3, 0).
-     *
-     * @param clampRatio Adjusts the clamping border around this screen.
-     * By default this ratio is 1.0, and the border corresponds to the actual
-     * boundaries of the screen. Setting clampRatio to 0.5 would reduce the
-     * interaction area. Likewise, setting the ratio to 2.0 would increase the
-     * interaction area, adding 50% around each edge of the physical monitor.
-     * Intersection points outside the interaction area are repositioned to
-     * the closest point on the clamping border before the vector is returned.
-     *
-     * @returns A Vector containing the coordinates of the intersection between
-     * this screen and a ray projecting from the specified Pointable object.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector intersect(const Pointable& pointable, bool normalize, float clampRatio = 1.0f) const;
-
-    /**
-     * Returns the intersection between this screen and a ray projecting from
-     * the specified position along the specified direction.
-     *
-     * Set the normalize parameter to true to request the intersection point in
-     * normalized screen coordinates. Normalized screen coordinates are usually
-     * values between 0 and 1, where 0 represents the screen's origin at the
-     * bottom-left corner and 1 represents the opposite edge (either top or
-     * right). When you request normalized coordinates, the z-component of the
-     * returned vector is zero. Multiply a normalized coordinate by the values
-     * returned by Screen::widthPixels() or Screen::heightPixels() to calculate
-     * the screen position in pixels (remembering that many other computer
-     * graphics coordinate systems place the origin in the top-left corner).
-     *
-     * Set the normalize parameter to false to request the intersection point
-     * in Leap Motion coordinates (millimeters from the Leap Motion origin).
-     *
-     * If the specified ray points outside the screen's border (but still
-     * intersects the plane in which the screen lies), the returned intersection
-     * point is clamped to the nearest point on the edge of the screen.
-     *
-     * You can use the clampRatio parameter to contract or expand the area in
-     * which you can point. For example, if you set the clampRatio parameter to
-     * 0.5, then the positions reported for intersection points outside the
-     * central 50% of the screen are moved to the border of this smaller area.
-     * If, on the other hand, you expanded the area by setting clampRatio to
-     * a value such as 3.0, then you could point well outside screen's physical
-     * boundary before the intersection points would be clamped. The positions
-     * for any points clamped would also be placed on this larger outer border.
-     * The positions reported for any intersection points inside the clamping
-     * border are unaffected by clamping.
-     *
-     * If the specified ray does not point toward the plane of the screen
-     * (i.e. it is pointing parallel to or away from the screen), then the
-     * components of the returned vector are all set to NaN (not-a-number).
-     *
-     * @param position The position from which to check for screen intersection.
-     * @param direction The direction in which to check for screen intersection.
-     *
-     * @param normalize If true, return normalized coordinates representing
-     * the intersection point as a percentage of the screen's width and height.
-     * If false, return Leap Motion coordinates (millimeters from the Leap Motion origin,
-     * which is located at the center of the top surface of the Leap Motion Controller).
-     * If true and the clampRatio parameter is set to 1.0, coordinates will be
-     * of the form (0..1, 0..1, 0). Setting the clampRatio to a different value
-     * changes the range for normalized coordinates. For example, a clampRatio
-     * of 5.0 changes the range of values to be of the form (-2..3, -2..3, 0).
-     *
-     * @param clampRatio Adjusts the clamping border around this screen.
-     * By default this ratio is 1.0, and the border corresponds to the actual
-     * boundaries of the screen. Setting clampRatio to 0.5 would reduce the
-     * interaction area. Likewise, setting the ratio to 2.0 would increase the
-     * interaction area, adding 50% around each edge of the physical monitor.
-     * Intersection points outside the interaction area are repositioned to
-     * the closest point on the clamping border before the vector is returned.
-     *
-     * @returns A Vector containing the coordinates of the intersection between
-     * this screen and a ray projecting from the specified position in the
-     * specified direction.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector intersect(const Vector& position, const Vector& direction, bool normalize, float clampRatio = 1.0f) const;
-
-    /**
-     * Returns the projection from the specified position onto this screen.
-     *
-     * Set the normalize parameter to true to request the projection point in
-     * normalized screen coordinates. Normalized screen coordinates are usually
-     * values between 0 and 1, where 0 represents the screen's origin at the
-     * bottom-left corner and 1 represents the opposite edge (either top or
-     * right). When you request normalized coordinates, the z-component of the
-     * returned vector is zero. Multiply a normalized coordinate by the values
-     * returned by Screen::widthPixels() or Screen::heightPixels() to calculate
-     * the screen position in pixels (remembering that many other computer
-     * graphics coordinate systems place the origin in the top-left corner).
-     *
-     * Set the normalize parameter to false to request the projection point
-     * in Leap Motion coordinates (millimeters from the Leap Motion origin).
-     *
-     * If the specified point projects outside the screen's border, the returned
-     * projection point is clamped to the nearest point on the edge of the screen.
-     *
-     * You can use the clampRatio parameter to contract or expand the area in
-     * which you can point. For example, if you set the clampRatio parameter to
-     * 0.5, then the positions reported for projection points outside the
-     * central 50% of the screen are moved to the border of this smaller area.
-     * If, on the other hand, you expanded the area by setting clampRatio to
-     * a value such as 3.0, then you could point well outside screen's physical
-     * boundary before the projection points would be clamped. The positions
-     * for any points clamped would also be placed on this larger outer border.
-     * The positions reported for any projection points inside the clamping
-     * border are unaffected by clamping.
-     *
-     * @param position The position from which to project onto this screen.
-     *
-     * @param normalize If true, return normalized coordinates representing
-     * the projection point as a percentage of the screen's width and height.
-     * If false, return Leap Motion coordinates (millimeters from the Leap Motion origin,
-     * which is located at the center of the top surface of the Leap Motion Controller).
-     * If true and the clampRatio parameter is set to 1.0, coordinates will be
-     * of the form (0..1, 0..1, 0). Setting the clampRatio to a different value
-     * changes the range for normalized coordinates. For example, a clampRatio
-     * of 5.0 changes the range of values to be of the form (-2..3, -2..3, 0).
-     *
-     * @param clampRatio Adjusts the clamping border around this screen.
-     * By default this ratio is 1.0, and the border corresponds to the actual
-     * boundaries of the screen. Setting clampRatio to 0.5 would reduce the
-     * interaction area. Likewise, setting the ratio to 2.0 would increase the
-     * interaction area, adding 50% around each edge of the physical monitor.
-     * Projection points outside the interaction area are repositioned to
-     * the closest point on the clamping border before the vector is returned.
-     *
-     * @returns A Vector containing the coordinates of the projection between
-     * this screen and a ray projecting from the specified position onto the
-     * screen along its normal vector.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector project(const Vector& position, bool normalize, float clampRatio = 1.0f) const;
-
-    /**
-     * A Vector representing the horizontal axis of this Screen within the
-     * Leap Motion coordinate system.
-     *
-     * The magnitude of this vector estimates the physical width of this Screen
-     * in millimeters. The direction of this vector is parallel to the bottom
-     * edge of the screen and points toward the right edge of the screen.
-     *
-     * Together, horizontalAxis(), verticalAxis(), and bottomLeftCorner()
-     * describe the physical position, size and orientation of this Screen.
-     *
-     * @returns A Vector representing the bottom, horizontal edge of this Screen.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector horizontalAxis() const;
-
-    /**
-     * A Vector representing the vertical axis of this Screen within the
-     * Leap Motion coordinate system.
-     *
-     * The magnitude of this vector estimates the physical height of this Screen
-     * in millimeters. The direction of this vector is parallel to the left
-     * edge of the screen and points toward the top edge of the screen.
-     *
-     * Together, horizontalAxis(), verticalAxis(), and bottomLeftCorner()
-     * describe the physical position, size and orientation of this screen.
-     *
-     * @returns A Vector representing the left, vertical edge of this Screen.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector verticalAxis() const;
-
-    /**
-     * A Vector representing the bottom left corner of this Screen within the
-     * Leap Motion coordinate system.
-     *
-     * The point represented by this vector defines the origin of the screen
-     * in the Leap Motion coordinate system.
-     *
-     * Together, horizontalAxis(), verticalAxis(), and bottomLeftCorner()
-     * describe the physical position, size and orientation of this Screen.
-     *
-     * @returns A Vector containing the coordinates of the bottom-left corner
-     * of this Screen.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector bottomLeftCorner() const;
-
-    /**
-     * A Vector normal to the plane in which this Screen lies.
-     *
-     * The normal vector is a unit direction vector orthogonal to the screen's
-     * surface plane. It points toward a viewer positioned for typical use of
-     * the monitor.
-     *
-     * @returns A Vector representing this Screen's normal vector.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector normal() const;
-
-    /**
-     * The horizontal resolution of this screen, in pixels.
-     *
-     * @returns The width of this Screen in pixels.
-     * @since 1.0
-     */
-    LEAP_EXPORT int widthPixels() const;
-
-    /**
-     * The vertical resolution of this screen, in pixels.
-     *
-     * @returns The height of this Screen in pixels.
-     * @since 1.0
-     */
-    LEAP_EXPORT int heightPixels() const;
-
-    /**
-     * The shortest distance from the specified point to the plane in which this
-     * Screen lies.
-     *
-     * @returns The length of the perpendicular line segment extending from
-     * the plane this Screen lies in to the specified point.
-     * @since 1.0
-     */
-    LEAP_EXPORT float distanceToPoint(const Vector& point) const;
-
-    /**
-     * Reports whether this is a valid Screen object.
-     *
-     * **Important:** A valid Screen object does not necessarily contain
-     * up-to-date screen location information. Location information is only
-     * accurate until the Leap Motion Controller or the monitor are moved. In addition, the
-     * primary screen always contains default location information even if the
-     * user has never run the screen location utility. This default location
-     * information will not return accurate results.
-     *
-     * @returns True, if this Screen object contains valid data.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isValid() const;
-
-    /**
-     * Returns an invalid Screen object.
-     *
-     * You can use the instance returned by this function in comparisons testing
-     * whether a given Screen instance is valid or invalid. (You can also use the
-     * Screen::isValid() function.)
-     *
-     * @returns The invalid Screen instance.
-     * @since 1.0
-     */
-    LEAP_EXPORT static const Screen& invalid();
-
-    /**
-     * Compare Screen object equality.
-     * Two Screen objects are equal if and only if both Screen objects represent the
-     * exact same Screens and both Screens are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator==(const Screen&) const;
-
-    /**
-     * Compare Screen object inequality.
-     * Two Screen objects are equal if and only if both Screen objects represent the
-     * exact same Screens and both Screens are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator!=(const Screen&) const;
-
-    /**
-     * Writes a brief, human readable description of the Screen object.
-     * @since 1.0
-     */
-    LEAP_EXPORT friend std::ostream& operator<<(std::ostream&, const Screen&);
-
-    /**
-     * A string containing a brief, human readable description of the Screen object.
-     *
-     * @returns A description of the Screen as a string.
-     * @since 1.0
-     */
-    LEAP_EXPORT std::string toString() const;
-  };
-
-  /**
-   * The Device class represents a physically connected device.
-   *
-   * The Device class contains information related to a particular connected
-   * device such as field of view, device id, and calibrated positions.
-   *
-   * Note that Device objects can be invalid, which means that they do not contain
-   * valid device information and do not correspond to a physical device.
-   * Test for validity with the Device::isValid() function.
-   * @since 1.0
-   */
-  class Device : public Interface {
-  public:
-    // For internal use only.
-    Device(DeviceImplementation*);
-
-    /**
-     * Constructs a Device object.
-     *
-     * An uninitialized device is considered invalid.
-     * Get valid Device objects from a DeviceList object obtained using the
-     * Controller::devices() method.
-     *
-     * \include Device_Device.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT Device();
-
-    /**
-     * The angle of view along the x axis of this device.
-     *
-     * \image html images/Leap_horizontalViewAngle.png
-     *
-     * The Leap Motion controller scans a region in the shape of an inverted pyramid
-     * centered at the device's center and extending upwards. The horizontalViewAngle
-     * reports the view angle along the long dimension of the device.
-     *
-     * \include Device_horizontalViewAngle.txt
-     *
-     * @returns The horizontal angle of view in radians.
-     * @since 1.0
-     */
-    LEAP_EXPORT float horizontalViewAngle() const;
-
-    /**
-     * The angle of view along the z axis of this device.
-     *
-     * \image html images/Leap_verticalViewAngle.png
-     *
-     * The Leap Motion controller scans a region in the shape of an inverted pyramid
-     * centered at the device's center and extending upwards. The verticalViewAngle
-     * reports the view angle along the short dimension of the device.
-     *
-     * \include Device_verticalViewAngle.txt
-     *
-     * @returns The vertical angle of view in radians.
-     * @since 1.0
-     */
-    LEAP_EXPORT float verticalViewAngle() const;
-
-    /**
-     * The maximum reliable tracking range.
-     *
-     * The range reports the maximum recommended distance from the device center
-     * for which tracking is expected to be reliable. This distance is not a hard limit.
-     * Tracking may be still be functional above this distance or begin to degrade slightly
-     * before this distance depending on calibration and extreme environmental conditions.
-     *
-     * \include Device_range.txt
-     *
-     * @returns The recommended maximum range of the device in mm.
-     * @since 1.0
-     */
-    LEAP_EXPORT float range() const;
-
-    /**
-     * The distance to the nearest edge of the Leap Motion controller's view volume.
-     *
-     * The view volume is an axis-aligned, inverted pyramid centered on the device origin
-     * and extending upward to the range limit. The walls of the pyramid are described
-     * by the horizontalViewAngle and verticalViewAngle and the roof by the range.
-     * This function estimates the distance between the specified input position and the
-     * nearest wall or roof of the view volume.
-     *
-     * \include Device_distanceToBoundary.txt
-     *
-     * @param position The point to use for the distance calculation.
-     * @returns The distance in millimeters from the input position to the nearest boundary.
-     * @since 1.0
-     */
-    LEAP_EXPORT float distanceToBoundary(const Vector& position) const;
-
-    /**
-     * Reports whether this is a valid Device object.
-     *
-     * \include Device_isValid.txt
-     *
-     * @returns True, if this Device object contains valid data.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isValid() const;
-
-    /**
-     * Returns an invalid Device object.
-     *
-     * You can use the instance returned by this function in comparisons testing
-     * whether a given Device instance is valid or invalid. (You can also use the
-     * Device::isValid() function.)
-     *
-     * \include Device_invalid.txt
-     *
-     * @returns The invalid Device instance.
-     * @since 1.0
-     */
-    LEAP_EXPORT static const Device& invalid();
-
-    /**
-     * Compare Device object equality.
-     *
-     * \include Device_operator_equals.txt
-     *
-     * Two Device objects are equal if and only if both Device objects represent the
-     * exact same Device and both Devices are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator==(const Device&) const;
-
-    /**
-     * Compare Device object inequality.
-     *
-     * \include Device_operator_not_equals.txt
-     *
-     * Two Device objects are equal if and only if both Device objects represent the
-     * exact same Device and both Devices are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator!=(const Device&) const;
-
-    /**
-     * Writes a brief, human readable description of the Device object.
-     *
-     * \include Device_operator_stream.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT friend std::ostream& operator<<(std::ostream&, const Device&);
-
-    /**
-     * A string containing a brief, human readable description of the Device object.
-     *
-     * @returns A description of the Device as a string.
-     * @since 1.0
-     */
-    LEAP_EXPORT std::string toString() const;
-  };
-
-  // For internal use only.
-  template<typename L, typename T>
-  class ConstListIterator {
-  public:
-    ConstListIterator<L,T>(const L& list, int index) : m_list(list), m_index(index) {}
-
-    const T operator*() const { return m_list[m_index]; }
-    void operator++(int) {++m_index;}
-    const ConstListIterator<L,T>& operator++() { ++m_index; return *this; }
-    bool operator!=(const ConstListIterator<L,T>& rhs) const { return m_index != rhs.m_index; }
-    bool operator==(const ConstListIterator<L,T>& rhs) const { return m_index == rhs.m_index; }
-
-    typedef std::ptrdiff_t difference_type;
-    typedef T value_type;
-    typedef const T* pointer;
-    typedef const T& reference;
-    typedef std::forward_iterator_tag iterator_category;
-
-  private:
-    const L& m_list;
-    int m_index;
-  };
-
-  /**
-   * The PointableList class represents a list of Pointable objects.
-   *
-   * Pointable objects include entities that can be pointed, such as fingers and tools.
-   *
-   * Get a PointableList object by calling Frame::pointables() or Hand::pointables().
-   *
-   * \include PointableList_PointableList.txt
-   *
-   * @since 1.0
-   */
-  class PointableList : public Interface {
-  public:
-    // For internal use only.
-    PointableList(const ListBaseImplementation<Pointable>&);
-
-    /**
-     * Constructs an empty list of pointable entities.
-     * @since 1.0
-     */
-    LEAP_EXPORT PointableList();
-
-    /**
-     * Returns the number of pointable entities in this list.
-     *
-     * \include PointableList_count.txt
-     *
-     * @returns The number of pointable entities in this list.
-     * @since 1.0
-     */
-    LEAP_EXPORT int count() const;
-
-    /**
-     * Reports whether the list is empty.
-     *
-     * \include PointableList_isEmpty.txt
-     *
-     * @returns True, if the list has no members.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isEmpty() const;
-
-    /**
-     * Access a list member by its position in the list.
-     *
-     * \include PointableList_operator_index.txt
-     *
-     * @param index The zero-based list position index.
-     * @returns The Pointable object at the specified index.
-     * @since 1.0
-     */
-    LEAP_EXPORT Pointable operator[](int index) const;
-
-    /**
-     * Appends the members of the specifed PointableList to this PointableList.
-     * @param other A PointableList object containing Pointable objects
-     * to append to the end of this PointableList.
-     * @since 1.0
-     */
-    LEAP_EXPORT PointableList& append(const PointableList& other);
-
-    /**
-     * Appends the members of the specifed FingerList to this PointableList.
-     * @param other A FingerList object containing Finger objects
-     * to append to the end of this PointableList.
-     * @since 1.0
-     */
-    LEAP_EXPORT PointableList& append(const FingerList& other);
-
-    /**
-     * Appends the members of the specifed ToolList to this PointableList.
-     * @param other A ToolList object containing Tool objects
-     * to append to the end of this PointableList.
-     * @since 1.0
-     */
-    LEAP_EXPORT PointableList& append(const ToolList& other);
-
-    /**
-     * The member of the list that is farthest to the left within the standard
-     * Leap Motion frame of reference (i.e has the smallest X coordinate).
-     *
-     * \include PointableList_leftmost.txt
-     *
-     * @returns The leftmost pointable, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Pointable leftmost() const;
-
-    /**
-     * The member of the list that is farthest to the right within the standard
-     * Leap Motion frame of reference (i.e has the largest X coordinate).
-     *
-     * \include PointableList_rightmost.txt
-     *
-     * @returns The rightmost pointable, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Pointable rightmost() const;
-
-
-    /**
-     * The member of the list that is farthest to the front within the standard
-     * Leap Motion frame of reference (i.e has the smallest Z coordinate).
-     *
-     * \include PointableList_frontmost.txt
-     *
-     * @returns The frontmost pointable, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Pointable frontmost() const;
-
-    /**
-     * A C++ iterator type for PointableList objects.
-     *
-     * \include PointableList_iterator.txt
-     *
-     * @since 1.0
-     */
-    typedef ConstListIterator<PointableList, Pointable> const_iterator;
-
-    /**
-     * The C++ iterator set to the beginning of this PointableList.
-     *
-     * \include PointableList_begin.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator begin() const;
-
-    /**
-     * The C++ iterator set to the end of this PointableList.
-     *
-     * \include PointableList_end.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator end() const;
-  };
-
-  /**
-   * The FingerList class represents a list of Finger objects.
-   *
-   * Get a FingerList object by calling Frame::fingers().
-   *
-   * \include FingerList_FingerList.txt
-   *
-   * @since 1.0
-   */
-  class FingerList : public Interface {
-  public:
-    // For internal use only.
-    FingerList(const ListBaseImplementation<Finger>&);
-
-    /**
-     * Constructs an empty list of fingers.
-     * @since 1.0
-     */
-    LEAP_EXPORT FingerList();
-
-    /**
-     * Returns the number of fingers in this list.
-     *
-     * \include FingerList_count.txt
-     *
-     * @returns The number of fingers in this list.
-     * @since 1.0
-     */
-    LEAP_EXPORT int count() const;
-
-    /**
-     * Reports whether the list is empty.
-     *
-     * \include FingerList_isEmpty.txt
-     *
-     * @returns True, if the list has no members.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isEmpty() const;
-
-    /**
-     * Access a list member by its position in the list.
-     *
-     * \include FingerList_index.txt
-     *
-     * @param index The zero-based list position index.
-     * @returns The Finger object at the specified index.
-     * @since 1.0
-     */
-    LEAP_EXPORT Finger operator[](int index) const;
-
-    /**
-     * Appends the members of the specifed FingerList to this FingerList.
-     * @param other A FingerList object containing Finger objects
-     * to append to the end of this FingerList.
-     * @since 1.0
-     */
-    LEAP_EXPORT FingerList& append(const FingerList& other);
-
-    /**
-     * The member of the list that is farthest to the left within the standard
-     * Leap Motion frame of reference (i.e has the smallest X coordinate).
-     *
-     * \include FingerList_leftmost.txt
-     *
-     * @returns The leftmost finger, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Finger leftmost() const;
-
-    /**
-     * The member of the list that is farthest to the right within the standard
-     * Leap Motion frame of reference (i.e has the largest X coordinate).
-     *
-     * \include FingerList_rightmost.txt
-     *
-     * @returns The rightmost finger, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Finger rightmost() const;
-
-    /**
-     * The member of the list that is farthest to the front within the standard
-     * Leap Motion frame of reference (i.e has the smallest Z coordinate).
-     *
-     * \include FingerList_frontmost.txt
-     *
-     * @returns The frontmost finger, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Finger frontmost() const;
-
-    /**
-     * A C++ iterator type for FingerList objects.
-     *
-     * \include FingerList_iterator.txt
-     *
-     * @since 1.0
-     */
-    typedef ConstListIterator<FingerList, Finger> const_iterator;
-
-    /**
-     * The C++ iterator set to the beginning of this FingerList.
-     *
-     * \include FingerList_begin.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator begin() const;
-
-    /**
-     * The C++ iterator set to the end of this FingerList.
-     *
-     * \include FingerList_end.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator end() const;
-  };
-
-  /**
-   * The ToolList class represents a list of Tool objects.
-   *
-   * Get a ToolList object by calling Frame::tools() or Hand::tools().
-   *
-   * \include ToolList_ToolList.txt
-   *
-   * @since 1.0
-   */
-  class ToolList : public Interface {
-  public:
-    // For internal use only.
-    ToolList(const ListBaseImplementation<Tool>&);
-
-    /**
-     * Constructs an empty list of tools.
-     * @since 1.0
-     */
-    LEAP_EXPORT ToolList();
-
-    /**
-     * Returns the number of tools in this list.
-     *
-     * \include ToolList_count.txt
-     *
-     * @returns The number of tools in this list.
-     * @since 1.0
-     */
-    LEAP_EXPORT int count() const;
-
-    /**
-     * Reports whether the list is empty.
-     *
-     * \include ToolList_isEmpty.txt
-     *
-     * @returns True, if the list has no members.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isEmpty() const;
-
-    /**
-     * Access a list member by its position in the list.
-     *
-     * \include ToolList_operator_index.txt
-     *
-     * @param index The zero-based list position index.
-     * @returns The Tool object at the specified index.
-     * @since 1.0
-     */
-    LEAP_EXPORT Tool operator[](int index) const;
-
-    /**
-     * Appends the members of the specifed ToolList to this ToolList.
-     * @param other A ToolList object containing Tool objects
-     * to append to the end of this ToolList.
-     * @since 1.0
-     */
-    LEAP_EXPORT ToolList& append(const ToolList& other);
-
-    /**
-     * The member of the list that is farthest to the left within the standard
-     * Leap Motion frame of reference (i.e has the smallest X coordinate).
-     *
-     * \include ToolList_leftmost.txt
-     *
-     * @returns The leftmost tool, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Tool leftmost() const;
-
-    /**
-     * The member of the list that is farthest to the right within the standard
-     * Leap Motion frame of reference (i.e has the largest X coordinate).
-     *
-     * \include ToolList_rightmost.txt
-     *
-     * @returns The rightmost tool, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Tool rightmost() const;
-
-    /**
-     * The member of the list that is farthest to the front within the standard
-     * Leap Motion frame of reference (i.e has the smallest Z coordinate).
-     *
-     * \include ToolList_frontmost.txt
-     *
-     * @returns The frontmost tool, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Tool frontmost() const;
-
-    /**
-     * A C++ iterator type for ToolList objects.
-     *
-     * \include ToolList_iterator.txt
-     *
-     * @since 1.0
-     */
-    typedef ConstListIterator<ToolList, Tool> const_iterator;
-
-    /**
-     * The C++ iterator set to the beginning of this ToolList.
-     *
-     * \include ToolList_begin.txt
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator begin() const;
-
-    /**
-     * The C++ iterator set to the end of this ToolList.
-     *
-     * \include ToolList_end.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator end() const;
-  };
-
-  /**
-   * The HandList class represents a list of Hand objects.
-   *
-   * Get a HandList object by calling Frame::hands().
-   *
-   * \include HandList_HandList.txt
-   *
-   * @since 1.0
-   */
-  class HandList : public Interface {
-  public:
-    // For internal use only.
-    HandList(const ListBaseImplementation<Hand>&);
-
-    /**
-     * Constructs an empty list of hands.
-     * @since 1.0
-     */
-    LEAP_EXPORT HandList();
-
-    /**
-     * Returns the number of hands in this list.
-     *
-     * \include HandList_count.txt
-     * @returns The number of hands in this list.
-     * @since 1.0
-     */
-    LEAP_EXPORT int count() const;
-
-    /**
-     * Reports whether the list is empty.
-     *
-     * \include HandList_isEmpty.txt
-     *
-     * @returns True, if the list has no members.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isEmpty() const;
-
-    /**
-     * Access a list member by its position in the list.
-     *
-     * \include HandList_operator_index.txt
-     *
-     * @param index The zero-based list position index.
-     * @returns The Hand object at the specified index.
-     * @since 1.0
-     */
-    LEAP_EXPORT Hand operator[](int index) const;
-
-    /**
-     * Appends the members of the specifed HandList to this HandList.
-     * @param other A HandList object containing Hand objects
-     * to append to the end of this HandList.
-     */
-    LEAP_EXPORT HandList& append(const HandList& other);
-
-    /**
-     * The member of the list that is farthest to the left within the standard
-     * Leap Motion frame of reference (i.e has the smallest X coordinate).
-     *
-     * \include HandList_leftmost.txt
-     *
-     * @returns The leftmost hand, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Hand leftmost() const;
-
-    /**
-     * The member of the list that is farthest to the right within the standard
-     * Leap Motion frame of reference (i.e has the largest X coordinate).
-     *
-     * \include HandList_rightmost.txt
-     *
-     * @returns The rightmost hand, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Hand rightmost() const;
-
-    /**
-     * The member of the list that is farthest to the front within the standard
-     * Leap Motion frame of reference (i.e has the smallest Z coordinate).
-     *
-     * \include HandList_frontmost.txt
-     *
-     * @returns The frontmost hand, or invalid if list is empty.
-     * @since 1.0
-     */
-    LEAP_EXPORT Hand frontmost() const;
-
-    /**
-     * A C++ iterator type for this HandList objects.
-     *
-     * \include HandList_iterator.txt
-     *
-     * @since 1.0
-     */
-    typedef ConstListIterator<HandList, Hand> const_iterator;
-
-    /**
-     * The C++ iterator set to the beginning of this HandList.
-     *
-     * \include HandList_begin.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator begin() const;
-
-    /**
-     * The C++ iterator set to the end of this HandList.
-     *
-     * \include HandList_end.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator end() const;
-  };
-
-  /**
-   * The GestureList class represents a list of Gesture objects.
-   *
-   * Get a GestureList object from a Frame object.
-   * @since 1.0
-   */
-  class GestureList : public Interface {
-  public:
-    // For internal use only.
-    GestureList(const ListBaseImplementation<Gesture>&);
-
-    /**
-     * Constructs an empty gesture list.
-     * @since 1.0
-     */
-    LEAP_EXPORT GestureList();
-
-    /**
-     * The length of this list.
-     *
-     * \include GestureList_count.txt
-     *
-     * @returns The number of gestures in this list.
-     * @since 1.0
-     */
-    LEAP_EXPORT int count() const;
-
-    /**
-     * Reports whether the list is empty.
-     *
-     * \include GestureList_isEmpty.txt
-     *
-     * @returns True, if the list has no members.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isEmpty() const;
-
-    /**
-     * Access a list member by its position in the list.
-     *
-     * \include GestureList_operator_index.txt
-     *
-     * @param index The zero-based list position index.
-     * @returns The Gesture object at the specified index.
-     * @since 1.0
-     */
-    LEAP_EXPORT Gesture operator[](int index) const;
-
-    /**
-     * Appends the members of the specified GestureList to this GestureList.
-     * @param other A GestureList object containing Gesture objects
-     * to append to the end of this GestureList.
-     * @since 1.0
-     */
-    LEAP_EXPORT GestureList& append(const GestureList& other);
-
-    /**
-     * A C++ iterator type for GestureList objects.
-     *
-     * \include GestureList_iterator.txt
-     * @since 1.0
-     */
-    typedef ConstListIterator<GestureList, Gesture> const_iterator;
-
-    /**
-     * The C++ iterator set to the beginning of this GestureList.
-     *
-     * \include GestureList_begin.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator begin() const;
-
-    /**
-     * The C++ iterator set to the end of this GestureList.
-     *
-     * \include GestureList_end.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator end() const;
-  };
-
-  /*
-   * The ScreenList and Screen classes are currently unsupported.
-   *
-   * We are re-evaluating this feature due to the cumbersome location process
-   * required to use it and the amount of confusion about the feature's purpose.
-   *
-   * The ScreenList class represents a list of Screen objects.
-   *
-   * The list always contains at least one entry representing the default
-   * screen. If the user has not registered the location of this default
-   * screen, then the coordinates, directions, and other values reported by
-   * the functions in its Screen object will not be accurate. Other monitor
-   * screens only appear in the list if their positions have been registered
-   * using the Leap Motion Screen Locator.
-   *
-   * Get a ScreenList object by calling Controller::locatedScreens().
-   *
-   * \include Screen_Closest_1.txt
-   * @since 1.0
-   */
-  class ScreenList : public Interface {
-  public:
-    // For internal use only.
-    ScreenList(const ListBaseImplementation<Screen>&);
-
-    /**
-     * Constructs an empty list of screens.
-     * @since 1.0
-     */
-    LEAP_EXPORT ScreenList();
-
-    /**
-     * Returns the number of screens in this list.
-     * @returns The number of screens in this list.
-     * @since 1.0
-     */
-    LEAP_EXPORT int count() const;
-
-    /**
-     * Reports whether the list is empty.
-     * @returns True, if the list has no members.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isEmpty() const;
-
-    /**
-     * Access a list member by its position in the list.
-     * @param index The zero-based list position index.
-     * @returns The Screen object at the specified index.
-     * @since 1.0
-     */
-    LEAP_EXPORT Screen operator[](int index) const;
-
-    /**
-     * A C++ iterator type for this ScreenList objects.
-     * @since 1.0
-     */
-    typedef ConstListIterator<ScreenList, Screen> const_iterator;
-
-    /**
-     * The C++ iterator set to the beginning of this ScreenList.
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator begin() const;
-
-    /**
-     * The C++ iterator set to the end of this ScreenList.
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator end() const;
-
-    /**
-     * Gets the closest Screen intercepting a ray projecting from the specified
-     * Pointable object.
-     *
-     * The projected ray emanates from the Pointable tipPosition along the
-     * Pointable's direction vector. If the projected ray does not intersect
-     * any screen surface directly, then the Leap Motion software checks for intersection with
-     * the planes extending from the surfaces of the known screens
-     * and returns the Screen with the closest intersection.
-     *
-     * \include Screen_Closest_2.txt
-     *
-     * If no intersections are found (i.e. the ray is directed parallel to or
-     * away from all known screens), then an invalid Screen object is returned.
-     *
-     * *Note:* Be sure to test whether the Screen object returned by this method
-     * is valid. Attempting to use an invalid Screen object will lead to
-     * incorrect results.
-     *
-     * @param pointable The Pointable object to check for screen intersection.
-     * @returns The closest Screen toward which the specified Pointable object
-     * is pointing, or, if the pointable is not pointing in the direction of
-     * any known screen, an invalid Screen object.
-     * @since 1.0
-     */
-    LEAP_EXPORT Screen closestScreenHit(const Pointable& pointable) const;
-
-    /**
-     * Gets the closest Screen intercepting a ray projecting from the specified
-     * position in the specified direction.
-     *
-     * The projected ray emanates from the position along the direction vector.
-     * If the projected ray does not intersect any screen surface directly,
-     * then the Leap Motion software checks for intersection with the planes extending from the
-     * surfaces of the known screens and returns the Screen with the closest
-     * intersection.
-     *
-     * \include Screen_Closest_3.txt
-     *
-     * If no intersections are found (i.e. the ray is directed parallel to or
-     * away from all known screens), then an invalid Screen object is returned.
-     *
-     * *Note:* Be sure to test whether the Screen object returned by this method
-     * is valid. Attempting to use an invalid Screen object will lead to
-     * incorrect results.
-     *
-     * @param position The position from which to check for screen intersection.
-     * @param direction The direction in which to check for screen intersection.
-     * @returns The closest Screen toward which the specified ray is pointing,
-     * or, if the ray is not pointing in the direction of any known screen,
-     * an invalid Screen object.
-     * @since 1.0
-     */
-    LEAP_EXPORT Screen closestScreenHit(const Vector& position, const Vector& direction) const;
-
-    /**
-     * Gets the Screen closest to the specified position.
-     *
-     * The specified position is projected along each screen's normal vector
-     * onto the screen's plane. The screen whose projected point is closest to
-     * the specified position is returned. Call Screen::project(position)
-     * on the returned Screen object to find the projected point.
-     *
-     * \include Screen_Closest_3.txt
-     *
-     * @param position The position from which to check for screen projection.
-     * @returns The closest Screen onto which the specified position is projected.
-     * @since 1.0
-     */
-    LEAP_EXPORT Screen closestScreen(const Vector& position) const;
-  };
-
-  /**
-   * The DeviceList class represents a list of Device objects.
-   *
-   * Get a DeviceList object by calling Controller::devices().
-   * @since 1.0
-   */
-  class DeviceList : public Interface {
-  public:
-    // For internal use only.
-    DeviceList(const ListBaseImplementation<Device>&);
-
-    /**
-     * Constructs an empty list of devices.
-     * @since 1.0
-     */
-    LEAP_EXPORT DeviceList();
-
-    /**
-     * Returns the number of devices in this list.
-     * @returns The number of devices in this list.
-     * @since 1.0
-     */
-    LEAP_EXPORT int count() const;
-
-    /**
-     * Reports whether the list is empty.
-     *
-     * \include DeviceList_isEmpty.txt
-     *
-     * @returns True, if the list has no members.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isEmpty() const;
-
-    /**
-     * Access a list member by its position in the list.
-     * @param index The zero-based list position index.
-     * @returns The Device object at the specified index.
-     * @since 1.0
-     */
-    LEAP_EXPORT Device operator[](int index) const;
-
-    /**
-     * Appends the members of the specifed DeviceList to this DeviceList.
-     * @param other A DeviceList object containing Device objects
-     * to append to the end of this DeviceList.
-     * @since 1.0
-     */
-    LEAP_EXPORT DeviceList& append(const DeviceList& other);
-
-    /**
-     * A C++ iterator type for this DeviceList objects.
-     * @since 1.0
-     */
-    typedef ConstListIterator<DeviceList, Device> const_iterator;
-
-    /**
-     * The C++ iterator set to the beginning of this DeviceList.
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator begin() const;
-
-    /**
-     * The C++ iterator set to the end of this DeviceList.
-     * @since 1.0
-     */
-    LEAP_EXPORT const_iterator end() const;
-  };
-
-  /**
-   * The InteractionBox class represents a box-shaped region completely
-   * within the field of view of the Leap Motion controller.
-   *
-   * The interaction box is an axis-aligned rectangular prism and provides normalized
-   * coordinates for hands, fingers, and tools within this box. The InteractionBox class
-   * can make it easier to map positions in the Leap Motion coordinate system to 2D or
-   * 3D coordinate systems used for application drawing.
-   *
-   * \image html images/Leap_InteractionBox.png
-   *
-   * The InteractionBox region is defined by a center and dimensions along the x, y,
-   * and z axes.
-   *
-   * Get an InteractionBox object from a Frame object.
-   * @since 1.0
-   */
-  class InteractionBox : public Interface {
-  public:
-    // For internal use only.
-    InteractionBox(InteractionBoxImplementation*);
-
-    LEAP_EXPORT InteractionBox();
-
-    /**
-     * Normalizes the coordinates of a point using the interaction box.
-     *
-     * \include InteractionBox_normalizePoint.txt
-     *
-     * Coordinates from the Leap Motion frame of reference (millimeters) are converted
-     * to a range of [0..1] such that the minimum value of the InteractionBox maps to 0
-     * and the maximum value of the InteractionBox maps to 1.
-     *
-     * @param position The input position in device coordinates.
-     * @param clamp Whether or not to limit the output value to the range [0,1] when the
-     * input position is outside the InteractionBox. Defaults to true.
-     * @returns The normalized position.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector normalizePoint(const Vector& position, bool clamp = true) const;
-
-    /**
-     * Converts a position defined by normalized InteractionBox coordinates into device
-     * coordinates in millimeters.
-     *
-     * \include InteractionBox_denormalizePoint.txt
-     *
-     * This function performs the inverse of normalizePoint().
-     *
-     * @param normalizedPosition The input position in InteractionBox coordinates.
-     * @returns The corresponding denormalized position in device coordinates.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector denormalizePoint(const Vector& normalizedPosition) const;
-
-    /**
-     * The center of the InteractionBox in device coordinates (millimeters). This point
-     * is equidistant from all sides of the box.
-     *
-     * \include InteractionBox_center.txt
-     *
-     * @returns The InteractionBox center in device coordinates.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector center() const;
-
-    /**
-     * The width of the InteractionBox in millimeters, measured along the x-axis.
-     *
-     * \include InteractionBox_width.txt
-     *
-     * @returns The InteractionBox width in millimeters.
-     * @since 1.0
-     */
-    LEAP_EXPORT float width() const;
-
-    /**
-     * The height of the InteractionBox in millimeters, measured along the y-axis.
-     *
-     * \include InteractionBox_height.txt
-     *
-     * @returns The InteractionBox height in millimeters.
-     * @since 1.0
-     */
-    LEAP_EXPORT float height() const;
-
-    /**
-     * The depth of the InteractionBox in millimeters, measured along the z-axis.
-     *
-     * \include InteractionBox_depth.txt
-     *
-     * @returns The InteractionBox depth in millimeters.
-     * @since 1.0
-     */
-    LEAP_EXPORT float depth() const;
-
-    /**
-     * Reports whether this is a valid InteractionBox object.
-     *
-     * \include InteractionBox_isValid.txt
-     *
-     * @returns True, if this InteractionBox object contains valid data.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isValid() const;
-
-    /**
-     * Returns an invalid InteractionBox object.
-     *
-     * You can use the instance returned by this function in comparisons testing
-     * whether a given InteractionBox instance is valid or invalid. (You can also use the
-     * InteractionBox::isValid() function.)
-     *
-     * \include InteractionBox_invalid.txt
-     *
-     * @returns The invalid InteractionBox instance.
-     * @since 1.0
-     */
-    LEAP_EXPORT static const InteractionBox& invalid();
-
-    /**
-     * Compare InteractionBox object equality.
-     *
-     * \include InteractionBox_operator_equals.txt
-     *
-     * Two InteractionBox objects are equal if and only if both InteractionBox objects represent the
-     * exact same InteractionBox and both InteractionBoxes are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator==(const InteractionBox&) const;
-
-    /**
-     * Compare InteractionBox object inequality.
-     *
-     * \include InteractionBox_operator_not_equals.txt
-     *
-     * Two InteractionBox objects are equal if and only if both InteractionBox objects represent the
-     * exact same InteractionBox and both InteractionBoxes are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator!=(const InteractionBox&) const;
-
-    /**
-     * Writes a brief, human readable description of the InteractionBox object.
-     *
-     * \include InteractionBox_operator_stream.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT friend std::ostream& operator<<(std::ostream&, const InteractionBox&);
-
-    /**
-     * A string containing a brief, human readable description of the InteractionBox object.
-     *
-     * @returns A description of the InteractionBox as a string.
-     * @since 1.0
-     */
-    LEAP_EXPORT std::string toString() const;
-  };
-
-  /**
-   * The Frame class represents a set of hand and finger tracking data detected
-   * in a single frame.
-   *
-   * The Leap Motion software detects hands, fingers and tools within the tracking area, reporting
-   * their positions, orientations, gestures, and motions in frames at the Leap Motion frame rate.
-   *
-   * Access Frame objects through an instance of the Controller class: 
-   *
-   * \include Controller_Frame_1.txt
-   *
-   * Implement a Listener subclass to receive a callback event when a new Frame is available.
-   * @since 1.0
-   */
-  class Frame : public Interface {
-  public:
-    // For internal use only.
-    Frame(FrameImplementation*);
-
-    /**
-     * Constructs a Frame object.
-     *
-     * Frame instances created with this constructor are invalid.
-     * Get valid Frame objects by calling the Controller::frame() function.
-     *
-     * \include Frame_Frame.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT Frame();
-
-    /**
-     * A unique ID for this Frame. 
-     *
-     * Consecutive frames processed by the Leap Motion software have consecutive 
-     * increasing values. You can use the frame ID to avoid processing the same
-     * Frame object twice:
-     *
-     * \include Frame_Duplicate.txt
-     *
-     * As well as to make sure that your application processes every frame:
-     *
-     * \include Frame_Skipped.txt
-     *
-     * @returns The frame ID.
-     * @since 1.0
-     */
-    LEAP_EXPORT int64_t id() const;
-
-    /**
-     * The frame capture time in microseconds elapsed since the Leap started.
-     *
-     * \include Frame_timestamp.txt
-     *
-     * @returns The timestamp in microseconds.
-     * @since 1.0
-     */
-    LEAP_EXPORT int64_t timestamp() const;
-
-    /**
-     * The list of Hand objects detected in this frame, given in arbitrary order.
-     * The list can be empty if no hands are detected.
-     *
-     * \include Frame_hands.txt
-     *
-     * @returns The HandList containing all Hand objects detected in this frame.
-     * @since 1.0
-     */
-    LEAP_EXPORT HandList hands() const;
-
-    /**
-     * The Hand object with the specified ID in this frame.
-     *
-     * Use the Frame::hand() function to retrieve the Hand object from
-     * this frame using an ID value obtained from a previous frame.
-     * This function always returns a Hand object, but if no hand
-     * with the specified ID is present, an invalid Hand object is returned.
-     *
-     * \include Frame_hand.txt
-     *
-     * Note that ID values persist across frames, but only until tracking of a
-     * particular object is lost. If tracking of a hand is lost and subsequently
-     * regained, the new Hand object representing that physical hand may have
-     * a different ID than that representing the physical hand in an earlier frame.
-     *
-     * @param id The ID value of a Hand object from a previous frame.
-     * @returns The Hand object with the matching ID if one exists in this frame;
-     * otherwise, an invalid Hand object is returned.
-     * @since 1.0
-     */
-    LEAP_EXPORT Hand hand(int32_t id) const;
-
-    /**
-     * The list of Pointable objects (fingers and tools) detected in this frame,
-     * given in arbitrary order. The list can be empty if no fingers or tools are detected.
-     *
-     * \include Frame_pointables.txt
-     *
-     * @returns The PointableList containing all Pointable objects detected in this frame.
-     * @since 1.0
-     */
-    LEAP_EXPORT PointableList pointables() const;
-
-    /**
-     * The Pointable object with the specified ID in this frame.
-     *
-     * Use the Frame::pointable() function to retrieve the Pointable object from
-     * this frame using an ID value obtained from a previous frame.
-     * This function always returns a Pointable object, but if no finger or tool
-     * with the specified ID is present, an invalid Pointable object is returned.
-     *
-     * \include Frame_pointable.txt
-     *
-     * Note that ID values persist across frames, but only until tracking of a
-     * particular object is lost. If tracking of a finger or tool is lost and subsequently
-     * regained, the new Pointable object representing that finger or tool may have
-     * a different ID than that representing the finger or tool in an earlier frame.
-     *
-     * @param id The ID value of a Pointable object from a previous frame.
-     * @returns The Pointable object with the matching ID if one exists in this frame;
-     * otherwise, an invalid Pointable object is returned.
-     * @since 1.0
-     */
-    LEAP_EXPORT Pointable pointable(int32_t id) const;
-
-    /**
-     * The list of Finger objects detected in this frame, given in arbitrary order.
-     * The list can be empty if no fingers are detected.
-     *
-     * \include Frame_fingers.txt
-     *
-     * @returns The FingerList containing all Finger objects detected in this frame.
-     * @since 1.0
-     */
-    LEAP_EXPORT FingerList fingers() const;
-
-    /**
-     * The Finger object with the specified ID in this frame.
-     *
-     * Use the Frame::finger() function to retrieve the Finger object from
-     * this frame using an ID value obtained from a previous frame.
-     * This function always returns a Finger object, but if no finger
-     * with the specified ID is present, an invalid Finger object is returned.
-     *
-     * \include Frame_finger.txt
-     *
-     * Note that ID values persist across frames, but only until tracking of a
-     * particular object is lost. If tracking of a finger is lost and subsequently
-     * regained, the new Finger object representing that physical finger may have
-     * a different ID than that representing the finger in an earlier frame.
-     *
-     * @param id The ID value of a Finger object from a previous frame.
-     * @returns The Finger object with the matching ID if one exists in this frame;
-     * otherwise, an invalid Finger object is returned.
-     * @since 1.0
-     */
-    LEAP_EXPORT Finger finger(int32_t id) const;
-
-    /**
-     * The list of Tool objects detected in this frame, given in arbitrary order.
-     * The list can be empty if no tools are detected.
-     *
-     * \include Frame_tools.txt
-     *
-     * @returns The ToolList containing all Tool objects detected in this frame.
-     * @since 1.0
-     */
-    LEAP_EXPORT ToolList tools() const;
-
-    /**
-     * The Tool object with the specified ID in this frame.
-     *
-     * Use the Frame::tool() function to retrieve the Tool object from
-     * this frame using an ID value obtained from a previous frame.
-     * This function always returns a Tool object, but if no tool
-     * with the specified ID is present, an invalid Tool object is returned.
-     *
-     * \include Frame_tool.txt
-     *
-     * Note that ID values persist across frames, but only until tracking of a
-     * particular object is lost. If tracking of a tool is lost and subsequently
-     * regained, the new Tool object representing that tool may have a
-     * different ID than that representing the tool in an earlier frame.
-     *
-     * @param id The ID value of a Tool object from a previous frame.
-     * @returns The Tool object with the matching ID if one exists in this frame;
-     * otherwise, an invalid Tool object is returned.
-     * @since 1.0
-     */
-    LEAP_EXPORT Tool tool(int32_t id) const;
-
-    /**
-     * The Gesture object with the specified ID in this frame.
-     *
-     * Use the Frame::gesture() function to return a Gesture object in this
-     * frame using an ID obtained in an earlier frame. The function always
-     * returns a Gesture object, but if there was no update for the gesture in
-     * this frame, then an invalid Gesture object is returned.
-     *
-     * \include Frame_gesture.txt
-     *
-     * All Gesture objects representing the same recognized movement share the
-     * same ID.
-     * @param id The ID of an Gesture object from a previous frame.
-     * @returns The Gesture object in the frame with the specified ID if one
-     * exists; Otherwise, an Invalid Gesture object.
-     * @since 1.0
-     */
-    LEAP_EXPORT Gesture gesture(int32_t id) const;
-
-    /**
-     * The gestures recognized or continuing in this frame.
-     *
-     * \include Frame_gestures_now.txt
-     *
-     * Circle and swipe gestures are updated every frame. Tap gestures
-     * only appear in the list  for a single frame.
-     *
-     * @return GestureList the list of gestures.
-     * @since 1.0
-     */
-    LEAP_EXPORT GestureList gestures() const;
-
-    /**
-     * Returns a GestureList containing all gestures that have occured since
-     * the specified frame.
-     *
-     * \include Frame_gestures_since.txt
-     *
-     * @param sinceFrame An earlier Frame object. The starting frame must
-     * still be in the frame history cache, which has a default length of
-     * 60 frames.
-     * @return GestureList The list of the Gesture objects that have occured
-     * since the specified frame.
-     * @since 1.0
-     */
-    LEAP_EXPORT GestureList gestures(const Frame& sinceFrame) const;
-
-    /**
-     * The change of position derived from the overall linear motion between
-     * the current frame and the specified frame.
-     *
-     * The returned translation vector provides the magnitude and direction of
-     * the movement in millimeters.
-     *
-     * \include Frame_translation.txt
-     *
-     * The Leap Motion software derives frame translation from the linear motion of
-     * all objects detected in the field of view.
-     *
-     * If either this frame or sinceFrame is an invalid Frame object, then this
-     * method returns a zero vector.
-     *
-     * @param sinceFrame The starting frame for computing the relative translation.
-     * @returns A Vector representing the heuristically determined change in
-     * position of all objects between the current frame and that specified
-     * in the sinceFrame parameter.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector translation(const Frame& sinceFrame) const;
-
-    /**
-     * The estimated probability that the overall motion between the current
-     * frame and the specified frame is intended to be a translating motion.
-     *
-     * \include Frame_translationProbability.txt
-     *
-     * If either this frame or sinceFrame is an invalid Frame object, then this
-     * method returns zero.
-     *
-     * @param sinceFrame The starting frame for computing the translation.
-     * @returns A value between 0 and 1 representing the estimated probability
-     * that the overall motion between the current frame and the specified frame
-     * is intended to be a translating motion.
-     * @since 1.0
-     */
-    LEAP_EXPORT float translationProbability(const Frame& sinceFrame) const;
-
-    /**
-     * The axis of rotation derived from the overall rotational motion between
-     * the current frame and the specified frame.
-     *
-     * The returned direction vector is normalized.
-     *
-     * \include Frame_rotationAxis.txt
-     *
-     * The Leap Motion software derives frame rotation from the relative change in position and
-     * orientation of all objects detected in the field of view.
-     *
-     * If either this frame or sinceFrame is an invalid Frame object, or if no
-     * rotation is detected between the two frames, a zero vector is returned.
-     *
-     * @param sinceFrame The starting frame for computing the relative rotation.
-     * @returns A normalized direction Vector representing the axis of the
-     * heuristically determined rotational change between the current frame
-     * and that specified in the sinceFrame parameter.
-     * @since 1.0
-     */
-    LEAP_EXPORT Vector rotationAxis(const Frame& sinceFrame) const;
-
-    /**
-     * The angle of rotation around the rotation axis derived from the overall
-     * rotational motion between the current frame and the specified frame.
-     *
-     * The returned angle is expressed in radians measured clockwise around the
-     * rotation axis (using the right-hand rule) between the start and end frames.
-     * The value is always between 0 and pi radians (0 and 180 degrees).
-     *
-     * \include Frame_rotationAngle.txt
-     *
-     * The Leap Motion software derives frame rotation from the relative change in position and
-     * orientation of all objects detected in the field of view.
-     *
-     * If either this frame or sinceFrame is an invalid Frame object, then the
-     * angle of rotation is zero.
-     *
-     * @param sinceFrame The starting frame for computing the relative rotation.
-     * @returns A positive value containing the heuristically determined
-     * rotational change between the current frame and that specified in the
-     * sinceFrame parameter.
-     * @since 1.0
-     */
-    LEAP_EXPORT float rotationAngle(const Frame& sinceFrame) const;
-
-    /**
-     * The angle of rotation around the specified axis derived from the overall
-     * rotational motion between the current frame and the specified frame.
-     *
-     * The returned angle is expressed in radians measured clockwise around the
-     * rotation axis (using the right-hand rule) between the start and end frames.
-     * The value is always between -pi and pi radians (-180 and 180 degrees).
-     *
-     * \include Frame_rotationAngle_axis.txt
-     *
-     * The Leap Motion software derives frame rotation from the relative change in position and
-     * orientation of all objects detected in the field of view.
-     *
-     * If either this frame or sinceFrame is an invalid Frame object, then the
-     * angle of rotation is zero.
-     *
-     * @param sinceFrame The starting frame for computing the relative rotation.
-     * @param axis The axis to measure rotation around.
-     * @returns A value containing the heuristically determined rotational
-     * change between the current frame and that specified in the sinceFrame
-     * parameter around the given axis.
-     * @since 1.0
-     */
-    LEAP_EXPORT float rotationAngle(const Frame& sinceFrame, const Vector& axis) const;
-
-    /**
-     * The transform matrix expressing the rotation derived from the overall
-     * rotational motion between the current frame and the specified frame.
-     *
-     * \include Frame_rotationMatrix.txt
-     *
-     * The Leap Motion software derives frame rotation from the relative change in position and
-     * orientation of all objects detected in the field of view.
-     *
-     * If either this frame or sinceFrame is an invalid Frame object, then this
-     * method returns an identity matrix.
-     *
-     * @param sinceFrame The starting frame for computing the relative rotation.
-     * @returns A transformation Matrix containing the heuristically determined
-     * rotational change between the current frame and that specified in the
-     * sinceFrame parameter.
-     * @since 1.0
-     */
-    LEAP_EXPORT Matrix rotationMatrix(const Frame& sinceFrame) const;
-
-    /**
-     * The estimated probability that the overall motion between the current
-     * frame and the specified frame is intended to be a rotating motion.
-     *
-     * \include Frame_rotationProbability.txt
-     *
-     * If either this frame or sinceFrame is an invalid Frame object, then this
-     * method returns zero.
-     *
-     * @param sinceFrame The starting frame for computing the relative rotation.
-     * @returns A value between 0 and 1 representing the estimated probability
-     * that the overall motion between the current frame and the specified frame
-     * is intended to be a rotating motion.
-     * @since 1.0
-     */
-    LEAP_EXPORT float rotationProbability(const Frame& sinceFrame) const;
-
-    /**
-     * The scale factor derived from the overall motion between the current frame
-     * and the specified frame.
-     *
-     * The scale factor is always positive. A value of 1.0 indicates no
-     * scaling took place. Values between 0.0 and 1.0 indicate contraction
-     * and values greater than 1.0 indicate expansion.
-     *
-     * \include Frame_scaleFactor.txt
-     *
-     * The Leap Motion software derives scaling from the relative inward or outward motion of
-     * all objects detected in the field of view (independent of translation
-     * and rotation).
-     *
-     * If either this frame or sinceFrame is an invalid Frame object, then this
-     * method returns 1.0.
-     *
-     * @param sinceFrame The starting frame for computing the relative scaling.
-     * @returns A positive value representing the heuristically determined
-     * scaling change ratio between the current frame and that specified in the
-     * sinceFrame parameter.
-     * @since 1.0
-     */
-    LEAP_EXPORT float scaleFactor(const Frame& sinceFrame) const;
-
-    /**
-     * The estimated probability that the overall motion between the current
-     * frame and the specified frame is intended to be a scaling motion.
-     *
-     * \include Frame_scaleProbability.txt
-     *
-     * If either this frame or sinceFrame is an invalid Frame object, then this
-     * method returns zero.
-     *
-     * @param sinceFrame The starting frame for computing the relative scaling.
-     * @returns A value between 0 and 1 representing the estimated probability
-     * that the overall motion between the current frame and the specified frame
-     * is intended to be a scaling motion.
-     * @since 1.0
-     */
-    LEAP_EXPORT float scaleProbability(const Frame& sinceFrame) const;
-
-    /**
-     * The current InteractionBox for the frame. See the InteractionBox class
-     * documentation for more details on how this class should be used.
-     *
-     * \include Frame_interactionBox.txt
-     *
-     * @returns The current InteractionBox object.
-     * @since 1.0
-     */
-    LEAP_EXPORT InteractionBox interactionBox() const;
-
-    /**
-     * The instantaneous framerate.
-     *
-     * The rate at which the Leap Motion software is providing frames of data
-     * (in frames per second). The framerate can fluctuate depending on available computing
-     * resources, activity within the device field of view, software tracking settings,
-     * and other factors.
-     *
-     * \include Frame_currentFramesPerSecond.txt
-     *
-     * @returns An estimate of frames per second of the Leap Motion Controller.
-     * @since 1.0
-     */
-    LEAP_EXPORT float currentFramesPerSecond() const;
-
-    /**
-     * Reports whether this Frame instance is valid.
-     *
-     * A valid Frame is one generated by the Leap::Controller object that contains
-     * tracking data for all detected entities. An invalid Frame contains no
-     * actual tracking data, but you can call its functions without risk of a
-     * null pointer exception. The invalid Frame mechanism makes it more
-     * convenient to track individual data across the frame history. For example,
-     * you can invoke:
-     *
-     * \include Frame_Valid_Chain.txt
-     *
-     * for an arbitrary Frame history value, "n", without first checking whether
-     * frame(n) returned a null object. (You should still check that the
-     * returned Finger instance is valid.)
-     *
-     * @returns True, if this is a valid Frame object; false otherwise.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isValid() const;
-
-    /**
-     * Returns an invalid Frame object.
-     *
-     * You can use the instance returned by this function in comparisons testing
-     * whether a given Frame instance is valid or invalid. (You can also use the
-     * Frame::isValid() function.)
-     *
-     * \include Frame_Invalid_Demo.txt
-     *
-     * @returns The invalid Frame instance.
-     * @since 1.0
-     */
-    LEAP_EXPORT static const Frame& invalid();
-
-    /**
-     * Compare Frame object equality.
-     *
-     * \include Frame_operator_equals.txt
-     *
-     * Two Frame objects are equal if and only if both Frame objects represent
-     * the exact same frame of tracking data and both Frame objects are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator==(const Frame&) const;
-
-    /**
-     * Compare Frame object inequality.
-     *
-     * \include Frame_operator_not_equals.txt
-     *
-     * Two Frame objects are equal if and only if both Frame objects represent
-     * the exact same frame of tracking data and both Frame objects are valid.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool operator!=(const Frame&) const;
-
-    /**
-     * Writes a brief, human readable description of the Frame object to an output stream.
-     *
-     * \include Frame_operator_stream.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT friend std::ostream& operator<<(std::ostream&, const Frame&);
-
-    /**
-     * A string containing a brief, human readable description of the Frame object.
-     *
-     * @returns A description of the Frame as a string.
-     * @since 1.0
-     */
-    LEAP_EXPORT std::string toString() const;
-  };
-
-  /**
-   * The Config class provides access to Leap Motion system configuration information.
-   *
-   * You can get and set gesture configuration parameters using the Config object
-   * obtained from a connected Controller object. The key strings required to
-   * identify a configuration parameter include:
-   *
-   * Key string | Value type | Default value | Units
-   * -----------|------------|---------------|------
-   * Gesture.Circle.MinRadius | float | 5.0 | mm
-   * Gesture.Circle.MinArc | float | 1.5*pi | radians
-   * Gesture.Swipe.MinLength | float | 150 | mm
-   * Gesture.Swipe.MinVelocity | float | 1000 | mm/s
-   * Gesture.KeyTap.MinDownVelocity | float | 50 | mm/s
-   * Gesture.KeyTap.HistorySeconds | float | 0.1 | s
-   * Gesture.KeyTap.MinDistance | float | 3.0 | mm
-   * Gesture.ScreenTap.MinForwardVelocity  | float | 50 | mm/s
-   * Gesture.ScreenTap.HistorySeconds | float | 0.1 | s
-   * Gesture.ScreenTap.MinDistance | float | 5.0 | mm
-   *
-   * After setting a configuration value, you must call the Config::save method
-   * to commit the changes. The configuration value changes are not persistent;
-   * your application needs to set the values everytime it runs.
-   *
-   * @see CircleGesture
-   * @see KeyTapGesture
-   * @see ScreenTapGesture
-   * @see SwipeGesture
-   * @since 1.0
-   */
-  class Config : public Interface {
-  public:
-    /**
-     * Constructs a Config object. 
-     * Do not create your own Config objects. Get a Config object using
-     * the Controller::config() function.
-     *
-     * \include Config_Constructor.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT Config();
-
-    /**
-     * Enumerates the possible data types for configuration values.
-     *
-     * The Config::type() function returns an item from the ValueType enumeration.
-     * @since 1.0
-     */
-    enum ValueType {
-      /**
-       * The data type is unknown.
-       * @since 1.0
-       */
-      TYPE_UNKNOWN = 0,
-      /**
-       * A boolean value.
-       * @since 1.0
-       */
-      TYPE_BOOLEAN = 1,
-      /**
-       * A 32-bit integer.
-       * @since 1.0
-       */
-      TYPE_INT32   = 2,
-      /**
-       * A floating-point number.
-       * @since 1.0
-       */
-      TYPE_FLOAT   = 6,
-      /**
-       * A string of characters.
-       * @since 1.0
-       */
-      TYPE_STRING  = 8
-    };
-
-    /**
-     * Reports the natural data type for the value related to the specified key.
-     *
-     * \include Config_type.txt
-     *
-     * @param key The key for the looking up the value in the configuration dictionary.
-     * @returns The native data type of the value, that is, the type that does not
-     * require a data conversion.
-     * @since 1.0
-     */
-    LEAP_EXPORT ValueType type(const std::string& key) const;
-
-    /**
-     * Gets the boolean representation for the specified key.
-     *
-     * \include Config_getBool.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT bool getBool(const std::string& key) const;
-
-    /** Sets the boolean representation for the specified key.
-     *
-     * \include Config_setBool.txt
-     *
-     * @returns true on success, false on failure.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool setBool(const std::string& key, bool value);
-
-    /**
-     * Gets the 32-bit integer representation for the specified key.
-     *
-     * \include Config_getInt32.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT int32_t getInt32(const std::string& key) const;
-
-    /** Sets the 32-bit integer representation for the specified key.
-     *
-     * \include Config_setInt32.txt
-     *
-     * @returns true on success, false on failure.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool setInt32(const std::string& key, int32_t value);
-
-    /**
-     * Gets the floating point representation for the specified key.
-     *
-     * \include Config_getFloat.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT float getFloat(const std::string& key) const;
-
-    /** Sets the floating point representation for the specified key.
-     *
-     * \include Config_setFloat.txt
-     *
-     * @returns true on success, false on failure.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool setFloat(const std::string& key, float value);
-
-    /**
-     * Gets the string representation for the specified key.
-     *
-     * \include Config_getString.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT std::string getString(const std::string& key) const;
-
-    /** Sets the string representation for the specified key.
-     *
-     * \include Config_setString.txt
-     *
-     * @returns true on success, false on failure.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool setString(const std::string& key, const std::string& value);
-
-    /**
-     * Saves the current state of the config.
-     *
-     * Call ``save()`` after making a set of configuration changes. The
-     * ``save()`` function transfers the configuration changes to the Leap Motion
-     * service. The configuration value changes are not persistent; your
-     * application must set the values everytime it runs.
-     *
-     * \include Config_save.txt
-     *
-     * @returns true on success, false on failure.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool save();
-  };
-
-  /**
-   * The Controller class is your main interface to the Leap Motion Controller.
-   *
-   * Create an instance of this Controller class to access frames of tracking
-   * data and configuration information. Frame data can be polled at any time
-   * using the Controller::frame() function. Call frame() or frame(0) to get the
-   * most recent frame. Set the history parameter to a positive integer to access
-   * previous frames. A controller stores up to 60 frames in its frame history.
-   *
-   * Polling is an appropriate strategy for applications which already have an
-   * intrinsic update loop, such as a game. You can also add an instance of a
-   * subclass of Leap::Listener to the controller to handle events as they occur.
-   * The Controller dispatches events to the listener upon initialization and exiting,
-   * on connection changes, when the application gains and loses the OS input focus,
-   * and when a new frame of tracking data is available.
-   * When these events occur, the controller object invokes the appropriate
-   * callback function defined in your subclass of Listener.
-   *
-   * To access frames of tracking data as they become available:
-   *
-   * 1. Implement a subclass of the Listener class and override the
-   *    Listener::onFrame() function.
-   * 2. In your Listener::onFrame() function, call the Controller::frame()
-   *    function to access the newest frame of tracking data.
-   * 3. To start receiving frames, create a Controller object and add an instance
-   *    of the Listener subclass to the Controller::addListener() function.
-   *
-   * When an instance of a Listener subclass is added to a Controller object,
-   * it calls the Listener::onInit() function when the listener is ready for use.
-   * When a connection is established between the controller and the Leap Motion software,
-   * the controller calls the Listener::onConnect() function. At this point, your
-   * application will start receiving frames of data. The controller calls the
-   * Listener::onFrame() function each time a new frame is available. If the
-   * controller loses its connection with the Leap Motion software or device for any
-   * reason, it calls the Listener::onDisconnect() function. If the listener is
-   * removed from the controller or the controller is destroyed, it calls the
-   * Listener::onExit() function. At that point, unless the listener is added to
-   * another controller again, it will no longer receive frames of tracking data.
-   *
-   * The Controller object is multithreaded and calls the Listener functions on
-   * its own thread, not on an application thread.
-   * @since 1.0
-   */
-  class Controller : public Interface {
-  public:
-    // For internal use only.
-    Controller(ControllerImplementation*);
-
-    /**
-     * Constructs a Controller object.
-     *
-     * When creating a Controller object, you may optionally pass in a
-     * reference to an instance of a subclass of Leap::Listener. Alternatively,
-     * you may add a listener using the Controller::addListener() function.
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT Controller();
-    LEAP_EXPORT virtual ~Controller();
-    /**
-     * Constructs a Controller object.
-     *
-     * When creating a Controller object, you may optionally pass in a
-     * reference to an instance of a subclass of Leap::Listener. Alternatively,
-     * you may add a listener using the Controller::addListener() function.
-     *
-     * \include Controller_Controller.txt
-     *
-     * @param listener An instance of Leap::Listener implementing the callback
-     * functions for the Leap Motion events you want to handle in your application.
-     * @since 1.0
-     */
-    LEAP_EXPORT Controller(Listener& listener);
-
-    /**
-     * Reports whether this Controller is connected to the Leap Motion service and 
-     * the Leap Motion hardware is plugged in.
-     *
-     * When you first create a Controller object, isConnected() returns false.
-     * After the controller finishes initializing and connects to the Leap Motion 
-     * software and if the Leap Motion hardware is plugged in, isConnected() returns true.
-     *
-     * You can either handle the onConnect event using a Listener instance or
-     * poll the isConnected() function if you need to wait for your
-     * application to be connected to the Leap Motion software before performing some other
-     * operation.
-     *
-     * \include Controller_isConnected.txt
-     * @returns True, if connected; false otherwise.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isConnected() const;
-
-    /**
-     * Reports whether this application is the focused, foreground application.
-     *
-     * By default, your application only receives tracking information from
-     * the Leap Motion controller when it has the operating system input focus.
-     * To receive tracking data when your application is in the background,
-     * the background frames policy flag must be set.
-     *
-     * \include Controller_hasFocus.txt
-     *
-     * @returns True, if application has focus; false otherwise.
-     *
-     * @see Controller::setPolicyFlags()
-     * @since 1.0
-     */
-    LEAP_EXPORT bool hasFocus() const;
-
-    /**
-     * The supported controller policies.
-     *
-     * Currently, the only supported policy is the background frames policy,
-     * which determines whether your application receives frames of tracking
-     * data when it is not the focused, foreground application.
-     * @since 1.0
-     */
-    enum PolicyFlag {
-      /**
-       * The default policy.
-       * @since 1.0
-       */
-      POLICY_DEFAULT = 0,
-      /**
-       * Receive background frames.
-       * @since 1.0
-       */
-      POLICY_BACKGROUND_FRAMES = (1 << 0)
-    };
-
-    /**
-     * Gets the active policy settings.
-     *
-     * Use this function to determine the current policy state.
-     * Keep in mind that setting a policy flag is asynchronous, so changes are
-     * not effective immediately after calling setPolicyFlag(). In addition, a
-     * policy request can be declined by the user. You should always set the
-     * policy flags required by your application at startup and check that the
-     * policy change request was successful after an appropriate interval.
-     *
-     * If the controller object is not connected to the Leap Motion software, then the default
-     * policy state is returned.
-     *
-     * \include Controller_policyFlags.txt
-     *
-     * @returns The current policy flags.
-     * @since 1.0
-     */
-    LEAP_EXPORT PolicyFlag policyFlags() const;
-
-    /**
-     * Requests a change in policy.
-     *
-     * A request to change a policy is subject to user approval and a policy
-     * can be changed by the user at any time (using the Leap Motion settings dialog).
-     * The desired policy flags must be set every time an application runs.
-     *
-     * Policy changes are completed asynchronously and, because they are subject
-     * to user approval, may not complete successfully. Call
-     * Controller::policyFlags() after a suitable interval to test whether
-     * the change was accepted.
-     *
-     * Currently, the background frames policy is the only policy supported.
-     * The background frames policy determines whether an application
-     * receives frames of tracking data while in the background. By
-     * default, the Leap Motion  software only sends tracking data to the foreground application.
-     * Only applications that need this ability should request the background
-     * frames policy.
-     *
-     * At this time, you can use the Leap Motion Settings dialog to
-     * globally enable or disable the background frames policy. However,
-     * each application that needs tracking data while in the background
-     * must also set the policy flag using this function.
-     *
-     * This function can be called before the Controller object is connected,
-     * but the request will be sent to the Leap Motion software after the Controller connects.
-     *
-     * \include Controller_setPolicyFlags.txt
-     *
-     * @param flags A PolicyFlag value indicating the policies to request.
-     * @since 1.0
-     */
-    LEAP_EXPORT void setPolicyFlags(PolicyFlag flags) const;
-
-    /**
-     * Adds a listener to this Controller.
-     *
-     * The Controller dispatches Leap Motion events to each associated listener. The
-     * order in which listener callback functions are invoked is arbitrary. If
-     * you pass a listener to the Controller's constructor function, it is
-     * automatically added to the list and can be removed with the
-     * Controller::removeListener() function.
-     *
-     * \include Controller_addListener.txt
-     *
-     * @param listener A subclass of Leap::Listener implementing the callback
-     * functions for the Leap Motion events you want to handle in your application.
-     * @returns Whether or not the listener was successfully added to the list
-     * of listeners.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool addListener(Listener& listener);
-
-    /**
-     * Remove a listener from the list of listeners that will receive Leap Motion
-     * events. A listener must be removed if its lifetime is shorter than the
-     * controller to which it is listening.
-     *
-     * \include Controller_removeListener.txt
-     *
-     * @param listener The listener to remove.
-     * @returns Whether or not the listener was successfully removed from the
-     * list of listeners.
-     * @since 1.0
-     */
-    LEAP_EXPORT bool removeListener(Listener& listener);
-
-    /**
-     * Returns a frame of tracking data from the Leap Motion software. Use the optional
-     * history parameter to specify which frame to retrieve. Call frame() or
-     * frame(0) to access the most recent frame; call frame(1) to access the
-     * previous frame, and so on. If you use a history value greater than the
-     * number of stored frames, then the controller returns an invalid frame.
-     *
-     * \include Controller_Frame_1.txt
-     *
-     * You can call this function in your Listener implementation to get frames at the
-     * Leap Motion frame rate:
-     *
-     * \include Controller_Listener_onFrame.txt
-     
-     * @param history The age of the frame to return, counting backwards from
-     * the most recent frame (0) into the past and up to the maximum age (59).
-     * @returns The specified frame; or, if no history parameter is specified,
-     * the newest frame. If a frame is not available at the specified history
-     * position, an invalid Frame is returned.
-     * @since 1.0
-     */
-    LEAP_EXPORT Frame frame(int history = 0) const;
-
-    /**
-     * Returns a Config object, which you can use to query the Leap Motion system for
-     * configuration information.
-     *
-     * \include Controller_config.txt
-     *
-     * @since 1.0
-     */
-    LEAP_EXPORT Config config() const;
-
-    /**
-     * The list of currently attached and recognized Leap Motion controller devices.
-     *
-     * The Device objects in the list describe information such as the range and
-     * tracking volume.
-     *
-     * \include Controller_devices.txt
-     *
-     * Currently, the Leap Motion Controller only recognizes a single device at a time.
-     * @since 1.0
-     */
-    LEAP_EXPORT DeviceList devices() const;
-
-    /*
-     * The Screen and ScreenList classes are currently unsupported.
-     *
-     * We are re-evaluating this feature due to the cumbersome location process
-     * required to use it and the amount of confusion about the feature's purpose.
-     *
-     * The list of screens whose positions have been identified by using the
-     * Leap Motion Screen Locator.
-     *
-     * The list always contains at least one entry representing the default
-     * screen. If the user has not registered the location of this default
-     * screen, then the coordinates, directions, and other values reported by
-     * the functions in its Screen object will not be accurate. Other monitor
-     * screens only appear in the list if their positions have been registered
-     * using the Leap Motion Screen Locator.
-     *
-     * A Screen object represents the position and orientation of a display
-     * monitor screen within the Leap Motion coordinate system.
-     * For example, if the screen location is known, you can get Leap Motion coordinates
-     * for the bottom-left corner of the screen. Registering the screen
-     * location also allows the Leap Motion software to calculate the point on the screen at
-     * which a finger or tool is pointing.
-     *
-     * A user can run the Screen Locator tool from the Leap Motion
-     * Settings dialog. Avoid assuming that a screen location is known or that
-     * an existing position is still correct. The registered position is only
-     * valid as long as the relative position of the Leap Motion Controller and the
-     * monitor screen remain constant.
-     *
-     * \include Screen_Closest_1.txt
-     *
-     * @returns ScreenList A list containing the screens whose positions have
-     * been registered by the user using the Screen Locator tool.
-     * The list always contains at least one entry representing the default
-     * monitor. If the user has not run the Screen Locator or has moved the Leap
-     * Motion device or screen since running it, the Screen object for this entry
-     * only contains default values.
-     * @since 1.0
-     */
-    LEAP_EXPORT ScreenList locatedScreens() const;
-
-    /**
-     * Enables or disables reporting of a specified gesture type.
-     *
-     * By default, all gesture types are disabled. When disabled, gestures of the
-     * disabled type are never reported and will not appear in the frame
-     * gesture list.
-     *
-     * \include Controller_enableGesture.txt
-     *
-     * As a performance optimization, only enable recognition for the types
-     * of movements that you use in your application.
-     *
-     * @param type The type of gesture to enable or disable. Must be a
-     * member of the Gesture::Type enumeration.
-     * @param enable True, to enable the specified gesture type; False,
-     * to disable.
-     * @see Controller::isGestureEnabled()
-     * @since 1.0
-     */
-    LEAP_EXPORT void enableGesture(Gesture::Type type, bool enable = true) const;
-
-    /**
-     * Reports whether the specified gesture type is enabled.
-     *
-     * \include Controller_isGestureEnabled.txt
-     *
-     * @return True, if the specified type is enabled; false, otherwise.
-     * @see Controller::enableGesture()
-     * @since 1.0
-     */
-    LEAP_EXPORT bool isGestureEnabled(Gesture::Type type) const;
-  };
-
-  /**
-   * The Listener class defines a set of callback functions that you can
-   * override in a subclass to respond to events dispatched by the Controller object.
-   *
-   * To handle Leap Motion events, create an instance of a Listener subclass and assign
-   * it to the Controller instance. The Controller calls the relevant Listener
-   * callback function when an event occurs, passing in a reference to itself.
-   * You do not have to implement callbacks for events you do not want to handle.
-   *
-   * The Controller object calls these Listener functions from a thread created
-   * by the Leap Motion library, not the thread used to create or set the Listener instance.
-   * @since 1.0
-   */
-  class Listener {
-  public:
-    /**
-     * Constructs a Listener object.
-     * @since 1.0
-     */
-    LEAP_EXPORT Listener() {}
-
-    /**
-     * Destroys this Listener object.
-     */
-    LEAP_EXPORT virtual ~Listener() {}
-
-    /**
-     * Called once, when this Listener object is newly added to a Controller.
-     *
-     * \include Listener_onInit.txt
-     *
-     * @param controller The Controller object invoking this callback function.
-     * @since 1.0
-     */
-    LEAP_EXPORT virtual void onInit(const Controller&) {}
-
-    /**
-     * Called when the Controller object connects to the Leap Motion software and 
-     * the Leap Motion hardware device is plugged in,
-     * or when this Listener object is added to a Controller that is already connected.
-     *
-     * \include Listener_onConnect.txt
-     *
-     * @param controller The Controller object invoking this callback function.
-     * @since 1.0
-     */
-    LEAP_EXPORT virtual void onConnect(const Controller&) {}
-
-    /**
-     * Called when the Controller object disconnects from the Leap Motion software or
-     * the Leap Motion hardware is unplugged.
-     * The controller can disconnect when the Leap Motion device is unplugged, the
-     * user shuts the Leap Motion software down, or the Leap Motion software encounters an
-     * unrecoverable error.
-     *
-     * \include Listener_onDisconnect.txt
-     *
-     * Note: When you launch a Leap-enabled application in a debugger, the
-     * Leap Motion library does not disconnect from the application. This is to allow
-     * you to step through code without losing the connection because of time outs.
-     *
-     * @param controller The Controller object invoking this callback function.
-     * @since 1.0
-     */
-    LEAP_EXPORT virtual void onDisconnect(const Controller&) {}
-
-    /**
-     * Called when this Listener object is removed from the Controller
-     * or the Controller instance is destroyed.
-     *
-     * \include Listener_onExit.txt
-     *
-     * @param controller The Controller object invoking this callback function.
-     * @since 1.0
-     */
-    LEAP_EXPORT virtual void onExit(const Controller&) {}
-
-    /**
-     * Called when a new frame of hand and finger tracking data is available.
-     * Access the new frame data using the Controller::frame() function.
-     *
-     * \include Listener_onFrame.txt
-     *
-     * Note, the Controller skips any pending onFrame events while your
-     * onFrame handler executes. If your implementation takes too long to return,
-     * one or more frames can be skipped. The Controller still inserts the skipped
-     * frames into the frame history. You can access recent frames by setting
-     * the history parameter when calling the Controller::frame() function.
-     * You can determine if any pending onFrame events were skipped by comparing
-     * the ID of the most recent frame with the ID of the last received frame.
-     *
-     * @param controller The Controller object invoking this callback function.
-     * @since 1.0
-     */
-    LEAP_EXPORT virtual void onFrame(const Controller&) {}
-
-    /**
-     * Called when this application becomes the foreground application.
-     *
-     * Only the foreground application receives tracking data from the Leap
-     * Motion Controller. This function is only called when the controller
-     * object is in a connected state.
-     *
-     * \include Listener_onFocusGained.txt
-     *
-     * @param controller The Controller object invoking this callback function.
-     * @since 1.0
-     */
-    LEAP_EXPORT virtual void onFocusGained(const Controller&) {}
-
-    /**
-     * Called when this application loses the foreground focus.
-     *
-     * Only the foreground application receives tracking data from the Leap
-     * Motion Controller. This function is only called when the controller
-     * object is in a connected state.
-     *
-     * \include Listener_onFocusLost.txt
-     *
-     * @param controller The Controller object invoking this callback function.
-     * @since 1.0
-     */
-    LEAP_EXPORT virtual void onFocusLost(const Controller&) {}
-  };
-
-}
-
-#endif // __Leap_h__

+ 0 - 1036
engine/lib/LeapSDK/include/LeapMath.h

@@ -1,1036 +0,0 @@
-/******************************************************************************\
-* Copyright (C) 2012-2013 Leap Motion, Inc. All rights reserved.               *
-* Leap Motion proprietary and confidential. Not for distribution.              *
-* Use subject to the terms of the Leap Motion SDK Agreement available at       *
-* https://developer.leapmotion.com/sdk_agreement, or another agreement         *
-* between Leap Motion and you, your company or other organization.             *
-\******************************************************************************/
-
-#if !defined(__LeapMath_h__)
-#define __LeapMath_h__
-
-#include <cmath>
-#include <iostream>
-#include <sstream>
-#include <float.h>
-
-namespace Leap {
-
-/**
- * The constant pi as a single precision floating point number.
- * @since 1.0
- */
-static const float PI          = 3.1415926536f;
-/**
- * The constant ratio to convert an angle measure from degrees to radians.
- * Multiply a value in degrees by this constant to convert to radians.
- * @since 1.0
- */
-static const float DEG_TO_RAD  = 0.0174532925f;
-/**
- * The constant ratio to convert an angle measure from radians to degrees.
- * Multiply a value in radians by this constant to convert to degrees.
- * @since 1.0
- */
-static const float RAD_TO_DEG  = 57.295779513f;
-
-/**
- * The Vector struct represents a three-component mathematical vector or point
- * such as a direction or position in three-dimensional space.
- *
- * The Leap Motion software employs a right-handed Cartesian coordinate system.
- * Values given are in units of real-world millimeters. The origin is centered
- * at the center of the Leap Motion Controller. The x- and z-axes lie in the horizontal
- * plane, with the x-axis running parallel to the long edge of the device.
- * The y-axis is vertical, with positive values increasing upwards (in contrast
- * to the downward orientation of most computer graphics coordinate systems).
- * The z-axis has positive values increasing away from the computer screen.
- *
- * \image html images/Leap_Axes.png
- * @since 1.0
- */
-struct Vector {
-  /**
-   * Creates a new Vector with all components set to zero.
-   * @since 1.0
-   */
-  Vector() :
-    x(0), y(0), z(0) {}
-
-  /**
-   * Creates a new Vector with the specified component values.
-   *
-   * \include Vector_Constructor_1.txt
-   * @since 1.0
-   */
-  Vector(float _x, float _y, float _z) :
-    x(_x), y(_y), z(_z) {}
-
-  /**
-   * Copies the specified Vector.
-   *
-   * \include Vector_Constructor_2.txt
-   * @since 1.0
-   */
-  Vector(const Vector& vector) :
-    x(vector.x), y(vector.y), z(vector.z) {}
-
-  /**
-   * The zero vector: (0, 0, 0)
-   *
-   * \include Vector_Zero.txt
-   * @since 1.0
-   */
-  static const Vector& zero() {
-    static Vector s_zero(0, 0, 0);
-    return s_zero;
-  }
-
-  /**
-   * The x-axis unit vector: (1, 0, 0)
-   *
-   * \include Vector_XAxis.txt
-   * @since 1.0
-   */
-  static const Vector& xAxis() {
-    static Vector s_xAxis(1, 0, 0);
-    return s_xAxis;
-  }
-  /**
-   * The y-axis unit vector: (0, 1, 0)
-   *
-   * \include Vector_YAxis.txt
-   * @since 1.0
-   */
-  static const Vector& yAxis() {
-    static Vector s_yAxis(0, 1, 0);
-    return s_yAxis;
-  }
-  /**
-   * The z-axis unit vector: (0, 0, 1)
-   *
-   * \include Vector_ZAxis.txt
-   * @since 1.0
-   */
-  static const Vector& zAxis() {
-    static Vector s_zAxis(0, 0, 1);
-    return s_zAxis;
-  }
-
-  /**
-   * The unit vector pointing left along the negative x-axis: (-1, 0, 0)
-   *
-   * \include Vector_Left.txt
-   * @since 1.0
-   */
-  static const Vector& left() {
-    static Vector s_left(-1, 0, 0);
-    return s_left;
-  }
-  /**
-   * The unit vector pointing right along the positive x-axis: (1, 0, 0)
-   *
-   * \include Vector_Right.txt
-   * @since 1.0
-   */
-  static const Vector& right() {
-    return xAxis();
-  }
-  /**
-   * The unit vector pointing down along the negative y-axis: (0, -1, 0)
-   *
-   * \include Vector_Down.txt
-   * @since 1.0
-   */
-  static const Vector& down() {
-    static Vector s_down(0, -1, 0);
-    return s_down;
-  }
-  /**
-   * The unit vector pointing up along the positive y-axis: (0, 1, 0)
-   *
-   * \include Vector_Up.txt
-   * @since 1.0
-   */
-  static const Vector& up() {
-    return yAxis();
-  }
-  /**
-   * The unit vector pointing forward along the negative z-axis: (0, 0, -1)
-   *
-   * \include Vector_Forward.txt
-   * @since 1.0
-   */
-  static const Vector& forward() {
-    static Vector s_forward(0, 0, -1);
-    return s_forward;
-  }
-  /**
-   * The unit vector pointing backward along the positive z-axis: (0, 0, 1)
-   *
-   * \include Vector_Backward.txt
-   * @since 1.0
-   */
-  static const Vector& backward() {
-    return zAxis();
-  }
-
-  /**
-   * The magnitude, or length, of this vector.
-   *
-   * The magnitude is the L2 norm, or Euclidean distance between the origin and
-   * the point represented by the (x, y, z) components of this Vector object.
-   *
-   * \include Vector_Magnitude.txt
-   *
-   * @returns The length of this vector.
-   * @since 1.0
-   */
-  float magnitude() const {
-    return std::sqrt(x*x + y*y + z*z);
-  }
-
-  /**
-   * The square of the magnitude, or length, of this vector.
-   *
-   * \include Vector_Magnitude_Squared.txt
-   *
-   * @returns The square of the length of this vector.
-   * @since 1.0
-   */
-  float magnitudeSquared() const {
-    return x*x + y*y + z*z;
-  }
-
-  /**
-   * The distance between the point represented by this Vector
-   * object and a point represented by the specified Vector object.
-   *
-   * \include Vector_DistanceTo.txt
-   *
-   * @param other A Vector object.
-   * @returns The distance from this point to the specified point.
-   * @since 1.0
-   */
-  float distanceTo(const Vector& other) const {
-    return std::sqrt((x - other.x)*(x - other.x) +
-                     (y - other.y)*(y - other.y) +
-                     (z - other.z)*(z - other.z));
-  }
-
-  /**
-   * The angle between this vector and the specified vector in radians.
-   *
-   * The angle is measured in the plane formed by the two vectors. The
-   * angle returned is always the smaller of the two conjugate angles.
-   * Thus <tt>A.angleTo(B) == B.angleTo(A)</tt> and is always a positive
-   * value less than or equal to pi radians (180 degrees).
-   *
-   * If either vector has zero length, then this function returns zero.
-   *
-   * \image html images/Math_AngleTo.png
-   *
-   * \include Vector_AngleTo.txt
-   *
-   * @param other A Vector object.
-   * @returns The angle between this vector and the specified vector in radians.
-   * @since 1.0
-   */
-  float angleTo(const Vector& other) const {
-    float denom = this->magnitudeSquared() * other.magnitudeSquared();
-    if (denom <= 0.0f) {
-      return 0.0f;
-    }
-    return std::acos(this->dot(other) / std::sqrt(denom));
-  }
-
-  /**
-   * The pitch angle in radians.
-   *
-   * Pitch is the angle between the negative z-axis and the projection of
-   * the vector onto the y-z plane. In other words, pitch represents rotation
-   * around the x-axis.
-   * If the vector points upward, the returned angle is between 0 and pi radians
-   * (180 degrees); if it points downward, the angle is between 0 and -pi radians.
-   *
-   * \image html images/Math_Pitch_Angle.png
-   *
-   * \include Vector_Pitch.txt
-   *
-   * @returns The angle of this vector above or below the horizon (x-z plane).
-   * @since 1.0
-   */
-  float pitch() const {
-    return std::atan2(y, -z);
-  }
-
-  /**
-   * The yaw angle in radians.
-   *
-   * Yaw is the angle between the negative z-axis and the projection of
-   * the vector onto the x-z plane. In other words, yaw represents rotation
-   * around the y-axis. If the vector points to the right of the negative z-axis,
-   * then the returned angle is between 0 and pi radians (180 degrees);
-   * if it points to the left, the angle is between 0 and -pi radians.
-   *
-   * \image html images/Math_Yaw_Angle.png
-   *
-   * \include Vector_Yaw.txt
-   *
-   * @returns The angle of this vector to the right or left of the negative z-axis.
-   * @since 1.0
-   */
-  float yaw() const {
-    return std::atan2(x, -z);
-  }
-
-  /**
-   * The roll angle in radians.
-   *
-   * Roll is the angle between the y-axis and the projection of
-   * the vector onto the x-y plane. In other words, roll represents rotation
-   * around the z-axis. If the vector points to the left of the y-axis,
-   * then the returned angle is between 0 and pi radians (180 degrees);
-   * if it points to the right, the angle is between 0 and -pi radians.
-   *
-   * \image html images/Math_Roll_Angle.png
-   *
-   * Use this function to get roll angle of the plane to which this vector is a
-   * normal. For example, if this vector represents the normal to the palm,
-   * then this function returns the tilt or roll of the palm plane compared
-   * to the horizontal (x-z) plane.
-   *
-   * \include Vector_Roll.txt
-   *
-   * @returns The angle of this vector to the right or left of the y-axis.
-   * @since 1.0
-   */
-  float roll() const {
-    return std::atan2(x, -y);
-  }
-
-  /**
-   * The dot product of this vector with another vector.
-   *
-   * The dot product is the magnitude of the projection of this vector
-   * onto the specified vector.
-   *
-   * \image html images/Math_Dot.png
-   *
-   * \include Vector_Dot.txt
-   *
-   * @param other A Vector object.
-   * @returns The dot product of this vector and the specified vector.
-   * @since 1.0
-   */
-  float dot(const Vector& other) const {
-    return (x * other.x) + (y * other.y) + (z * other.z);
-  }
-
-  /**
-   * The cross product of this vector and the specified vector.
-   *
-   * The cross product is a vector orthogonal to both original vectors.
-   * It has a magnitude equal to the area of a parallelogram having the
-   * two vectors as sides. The direction of the returned vector is
-   * determined by the right-hand rule. Thus <tt>A.cross(B) == -B.cross(A).</tt>
-   *
-   * \image html images/Math_Cross.png
-   *
-   * \include Vector_Cross.txt
-   *
-   * @param other A Vector object.
-   * @returns The cross product of this vector and the specified vector.
-   * @since 1.0
-   */
-  Vector cross(const Vector& other) const {
-    return Vector((y * other.z) - (z * other.y),
-                  (z * other.x) - (x * other.z),
-                  (x * other.y) - (y * other.x));
-  }
-
-  /**
-   * A normalized copy of this vector.
-   *
-   * A normalized vector has the same direction as the original vector,
-   * but with a length of one.
-   *
-   * \include Vector_Normalized.txt
-   *
-   * @returns A Vector object with a length of one, pointing in the same
-   * direction as this Vector object.
-   * @since 1.0
-   */
-  Vector normalized() const {
-    float denom = this->magnitudeSquared();
-    if (denom <= 0.0f) {
-      return Vector::zero();
-    }
-    denom = 1.0f / std::sqrt(denom);
-    return Vector(x * denom, y * denom, z * denom);
-  }
-
-  /**
-   * A copy of this vector pointing in the opposite direction.
-   *
-   * \include Vector_Negate.txt
-   *
-   * @returns A Vector object with all components negated.
-   * @since 1.0
-   */
-  Vector operator-() const {
-    return Vector(-x, -y, -z);
-  }
-
-  /**
-   * Add vectors component-wise.
-   *
-   * \include Vector_Plus.txt
-   * @since 1.0
-   */
-  Vector operator+(const Vector& other) const {
-    return Vector(x + other.x, y + other.y, z + other.z);
-  }
-
-  /**
-   * Subtract vectors component-wise.
-   *
-   * \include Vector_Minus.txt
-   * @since 1.0
-   */
-  Vector operator-(const Vector& other) const {
-    return Vector(x - other.x, y - other.y, z - other.z);
-  }
-
-  /**
-   * Multiply vector by a scalar.
-   *
-   * \include Vector_Times.txt
-   * @since 1.0
-   */
-  Vector operator*(float scalar) const {
-    return Vector(x * scalar, y * scalar, z * scalar);
-  }
-
-  /**
-   * Divide vector by a scalar.
-   *
-   * \include Vector_Divide.txt
-   * @since 1.0
-   */
-  Vector operator/(float scalar) const {
-    return Vector(x / scalar, y / scalar, z / scalar);
-  }
-
-#if !defined(SWIG)
-  /**
-   * Multiply vector by a scalar on the left-hand side (C++ only).
-   *
-   * \include Vector_Left_Times.txt
-   * @since 1.0
-   */
-  friend Vector operator*(float scalar, const Vector& vector) {
-    return Vector(vector.x * scalar, vector.y * scalar, vector.z * scalar);
-  }
-#endif
-
-  /**
-   * Add vectors component-wise and assign the sum.
-   * @since 1.0
-   */
-  Vector& operator+=(const Vector& other) {
-    x += other.x;
-    y += other.y;
-    z += other.z;
-    return *this;
-  }
-
-  /**
-   * Subtract vectors component-wise and assign the difference.
-   * @since 1.0
-   */
-  Vector& operator-=(const Vector& other) {
-    x -= other.x;
-    y -= other.y;
-    z -= other.z;
-    return *this;
-  }
-
-  /**
-   * Multiply vector by a scalar and assign the product.
-   * @since 1.0
-   */
-  Vector& operator*=(float scalar) {
-    x *= scalar;
-    y *= scalar;
-    z *= scalar;
-    return *this;
-  }
-
-  /**
-   * Divide vector by a scalar and assign the quotient.
-   * @since 1.0
-   */
-  Vector& operator/=(float scalar) {
-    x /= scalar;
-    y /= scalar;
-    z /= scalar;
-    return *this;
-  }
-
-  /**
-   * Returns a string containing this vector in a human readable format: (x, y, z).
-   * @since 1.0
-   */
-  std::string toString() const {
-    std::stringstream result;
-    result << "(" << x << ", " << y << ", " << z << ")";
-    return result.str();
-  }
-  /**
-   * Writes the vector to the output stream using a human readable format: (x, y, z).
-   * @since 1.0
-   */
-  friend std::ostream& operator<<(std::ostream& out, const Vector& vector) {
-    return out << vector.toString();
-  }
-
-  /**
-   * Compare Vector equality component-wise.
-   *
-   * \include Vector_Equals.txt
-   * @since 1.0
-   */
-  bool operator==(const Vector& other) const {
-    return x == other.x && y == other.y && z == other.z;
-  }
-  /**
-   * Compare Vector inequality component-wise.
-   *
-   * \include Vector_NotEqual.txt
-   * @since 1.0
-   */
-  bool operator!=(const Vector& other) const {
-    return x != other.x || y != other.y || z != other.z;
-  }
-
-  /**
-   * Returns true if all of the vector's components are finite.  If any
-   * component is NaN or infinite, then this returns false.
-   *
-   * \include Vector_IsValid.txt
-   * @since 1.0
-   */
-  bool isValid() const {
-    return (x <= FLT_MAX && x >= -FLT_MAX) &&
-           (y <= FLT_MAX && y >= -FLT_MAX) &&
-           (z <= FLT_MAX && z >= -FLT_MAX);
-  }
-
-  /**
-   * Index vector components numerically.
-   * Index 0 is x, index 1 is y, and index 2 is z.
-   * @returns The x, y, or z component of this Vector, if the specified index
-   * value is at least 0 and at most 2; otherwise, returns zero.
-   *
-   * \include Vector_Index.txt
-   * @since 1.0
-   */
-  float operator[](unsigned int index) const {
-    return index < 3 ? (&x)[index] : 0.0f;
-  }
-
-  /**
-   * Cast the vector to a float array.
-   *
-   * \include Vector_ToFloatPointer.txt
-   * @since 1.0
-   */
-  const float* toFloatPointer() const {
-    return &x; /* Note: Assumes x, y, z are aligned in memory. */
-  }
-
-  /**
-   * Convert a Leap::Vector to another 3-component Vector type.
-   *
-   * The specified type must define a constructor that takes the x, y, and z
-   * components as separate parameters.
-   * @since 1.0
-   */
-  template<typename Vector3Type>
-  const Vector3Type toVector3() const {
-    return Vector3Type(x, y, z);
-  }
-
-  /**
-   * Convert a Leap::Vector to another 4-component Vector type.
-   *
-   * The specified type must define a constructor that takes the x, y, z, and w
-   * components as separate parameters. (The homogeneous coordinate, w, is set
-   * to zero by default, but you should typically set it to one for vectors
-   * representing a position.)
-   * @since 1.0
-   */
-  template<typename Vector4Type>
-  const Vector4Type toVector4(float w=0.0f) const {
-    return Vector4Type(x, y, z, w);
-  }
-
-  /**
-   * The horizontal component.
-   * @since 1.0
-   */
-  float x;
-  /**
-   * The vertical component.
-   * @since 1.0
-   */
-  float y;
-  /**
-   * The depth component.
-   * @since 1.0
-   */
-  float z;
-};
-
-
-/**
- * The FloatArray struct is used to allow the returning of native float arrays
- * without requiring dynamic memory allocation.  It represents a matrix
- * with a size up to 4x4.
- * @since 1.0
- */
-struct FloatArray {
-  /**
-   * Access the elements of the float array exactly like a native array.
-   * @since 1.0
-   */
-  float& operator[] (unsigned int index) {
-    return m_array[index];
-  }
-
-  /**
-   * Use the Float Array anywhere a float pointer can be used.
-   * @since 1.0
-   */
-  operator float* () {
-    return m_array;
-  }
-
-  /**
-   * Use the Float Array anywhere a const float pointer can be used.
-   * @since 1.0
-   */
-  operator const float* () const {
-    return m_array;
-  }
-
-  /**
-   * An array containing up to 16 entries of the matrix.
-   * @since 1.0
-   */
-  float m_array[16];
-};
-
-/**
- * The Matrix struct represents a transformation matrix.
- *
- * To use this struct to transform a Vector, construct a matrix containing the
- * desired transformation and then use the Matrix::transformPoint() or
- * Matrix::transformDirection() functions to apply the transform.
- *
- * Transforms can be combined by multiplying two or more transform matrices using
- * the * operator.
- * @since 1.0
- */
-struct Matrix
-{
-  /**
-   * Constructs an identity transformation matrix.
-   *
-   * \include Matrix_Matrix.txt
-   *
-   * @since 1.0
-   */
-  Matrix() :
-    xBasis(1, 0, 0),
-    yBasis(0, 1, 0),
-    zBasis(0, 0, 1),
-    origin(0, 0, 0) {
-  }
-
-  /**
-   * Constructs a copy of the specified Matrix object.
-   *
-   * \include Matrix_Matrix_copy.txt
-   *
-   * @since 1.0
-   */
-  Matrix(const Matrix& other) :
-    xBasis(other.xBasis),
-    yBasis(other.yBasis),
-    zBasis(other.zBasis),
-    origin(other.origin) {
-  }
-
-  /**
-   * Constructs a transformation matrix from the specified basis vectors.
-   *
-   * \include Matrix_Matrix_basis.txt
-   *
-   * @param _xBasis A Vector specifying rotation and scale factors for the x-axis.
-   * @param _yBasis A Vector specifying rotation and scale factors for the y-axis.
-   * @param _zBasis A Vector specifying rotation and scale factors for the z-axis.
-   * @since 1.0
-   */
-  Matrix(const Vector& _xBasis, const Vector& _yBasis, const Vector& _zBasis) :
-    xBasis(_xBasis),
-    yBasis(_yBasis),
-    zBasis(_zBasis),
-    origin(0, 0, 0) {
-  }
-
-  /**
-   * Constructs a transformation matrix from the specified basis and translation vectors.
-   *
-   * \include Matrix_Matrix_basis_origin.txt
-   *
-   * @param _xBasis A Vector specifying rotation and scale factors for the x-axis.
-   * @param _yBasis A Vector specifying rotation and scale factors for the y-axis.
-   * @param _zBasis A Vector specifying rotation and scale factors for the z-axis.
-   * @param _origin A Vector specifying translation factors on all three axes.
-   * @since 1.0
-   */
-  Matrix(const Vector& _xBasis, const Vector& _yBasis, const Vector& _zBasis, const Vector& _origin) :
-    xBasis(_xBasis),
-    yBasis(_yBasis),
-    zBasis(_zBasis),
-    origin(_origin) {
-  }
-
-  /**
-   * Constructs a transformation matrix specifying a rotation around the specified vector.
-   *
-   * \include Matrix_Matrix_rotation.txt
-   *
-   * @param axis A Vector specifying the axis of rotation.
-   * @param angleRadians The amount of rotation in radians.
-   * @since 1.0
-   */
-  Matrix(const Vector& axis, float angleRadians) :
-    origin(0, 0, 0) {
-    setRotation(axis, angleRadians);
-  }
-
-  /**
-   * Constructs a transformation matrix specifying a rotation around the specified vector
-   * and a translation by the specified vector.
-   *
-   * \include Matrix_Matrix_rotation_translation.txt
-   *
-   * @param axis A Vector specifying the axis of rotation.
-   * @param angleRadians The angle of rotation in radians.
-   * @param translation A Vector representing the translation part of the transform.
-   * @since 1.0
-   */
-  Matrix(const Vector& axis, float angleRadians, const Vector& translation)
-    : origin(translation) {
-    setRotation(axis, angleRadians);
-  }
-
-  /**
-   * Returns the identity matrix specifying no translation, rotation, and scale.
-   *
-   * \include Matrix_identity.txt
-   *
-   * @returns The identity matrix.
-   * @since 1.0
-   */
-  static const Matrix& identity() {
-    static Matrix s_identity;
-    return s_identity;
-  }
-
-  /**
-   * Sets this transformation matrix to represent a rotation around the specified vector.
-   *
-   * \include Matrix_setRotation.txt
-   *
-   * This function erases any previous rotation and scale transforms applied
-   * to this matrix, but does not affect translation.
-   *
-   * @param axis A Vector specifying the axis of rotation.
-   * @param angleRadians The amount of rotation in radians.
-   * @since 1.0
-   */
-  void setRotation(const Vector& axis, float angleRadians) {
-    const Vector n = axis.normalized();
-    const float s = std::sin(angleRadians);
-    const float c = std::cos(angleRadians);
-    const float C = (1-c);
-
-    xBasis = Vector(n[0]*n[0]*C + c,      n[0]*n[1]*C - n[2]*s, n[0]*n[2]*C + n[1]*s);
-    yBasis = Vector(n[1]*n[0]*C + n[2]*s, n[1]*n[1]*C + c,      n[1]*n[2]*C - n[0]*s);
-    zBasis = Vector(n[2]*n[0]*C - n[1]*s, n[2]*n[1]*C + n[0]*s, n[2]*n[2]*C + c     );
-  }
-
-  /**
-   * Transforms a vector with this matrix by transforming its rotation,
-   * scale, and translation.
-   *
-   * \include Matrix_transformPoint.txt
-   *
-   * Translation is applied after rotation and scale.
-   *
-   * @param in The Vector to transform.
-   * @returns A new Vector representing the transformed original.
-   * @since 1.0
-   */
-  Vector transformPoint(const Vector& in) const {
-    return xBasis*in.x + yBasis*in.y + zBasis*in.z + origin;
-  }
-
-  /**
-   * Transforms a vector with this matrix by transforming its rotation and
-   * scale only.
-   *
-   * \include Matrix_transformDirection.txt
-   *
-   * @param in The Vector to transform.
-   * @returns A new Vector representing the transformed original.
-   * @since 1.0
-   */
-  Vector transformDirection(const Vector& in) const {
-    return xBasis*in.x + yBasis*in.y + zBasis*in.z;
-  }
-
-  /**
-   * Performs a matrix inverse if the matrix consists entirely of rigid
-   * transformations (translations and rotations).  If the matrix is not rigid,
-   * this operation will not represent an inverse.
-   *
-   * \include Matrix_rigidInverse.txt
-   *
-   * Note that all matricies that are directly returned by the API are rigid.
-   *
-   * @returns The rigid inverse of the matrix.
-   * @since 1.0
-   */
-  Matrix rigidInverse() const {
-    Matrix rotInverse = Matrix(Vector(xBasis[0], yBasis[0], zBasis[0]),
-                               Vector(xBasis[1], yBasis[1], zBasis[1]),
-                               Vector(xBasis[2], yBasis[2], zBasis[2]));
-    rotInverse.origin = rotInverse.transformDirection( -origin );
-    return rotInverse;
-  }
-
-  /**
-   * Multiply transform matrices.
-   *
-   * Combines two transformations into a single equivalent transformation.
-   *
-   * \include Matrix_operator_times.txt
-   *
-   * @param other A Matrix to multiply on the right hand side.
-   * @returns A new Matrix representing the transformation equivalent to
-   * applying the other transformation followed by this transformation.
-   * @since 1.0
-   */
-  Matrix operator*(const Matrix& other) const {
-    return Matrix(transformDirection(other.xBasis),
-                  transformDirection(other.yBasis),
-                  transformDirection(other.zBasis),
-                  transformPoint(other.origin));
-  }
-
-  /**
-   * Multiply transform matrices and assign the product.
-   *
-   * \include Matrix_operator_times_equal.txt
-   *
-   * @since 1.0
-   */
-  Matrix& operator*=(const Matrix& other) {
-    return (*this) = (*this) * other;
-  }
-
-  /**
-   * Compare Matrix equality component-wise.
-   *
-   * \include Matrix_operator_equals.txt
-   *
-   * @since 1.0
-   */
-  bool operator==(const Matrix& other) const {
-    return xBasis == other.xBasis &&
-           yBasis == other.yBasis &&
-           zBasis == other.zBasis &&
-           origin == other.origin;
-  }
-  /**
-   * Compare Matrix inequality component-wise.
-   *
-   * \include Matrix_operator_not_equals.txt
-   *
-   * @since 1.0
-   */
-  bool operator!=(const Matrix& other) const {
-    return xBasis != other.xBasis ||
-           yBasis != other.yBasis ||
-           zBasis != other.zBasis ||
-           origin != other.origin;
-  }
-
-  /**
-   * Convert a Leap::Matrix object to another 3x3 matrix type.
-   *
-   * The new type must define a constructor function that takes each matrix
-   * element as a parameter in row-major order.
-   *
-   * Translation factors are discarded.
-   * @since 1.0
-   */
-  template<typename Matrix3x3Type>
-  const Matrix3x3Type toMatrix3x3() const {
-    return Matrix3x3Type(xBasis.x, xBasis.y, xBasis.z,
-                         yBasis.x, yBasis.y, yBasis.z,
-                         zBasis.x, zBasis.y, zBasis.z);
-  }
-
-  /**
-   * Convert a Leap::Matrix object to another 4x4 matrix type.
-   *
-   * The new type must define a constructor function that takes each matrix
-   * element as a parameter in row-major order.
-   * @since 1.0
-   */
-  template<typename Matrix4x4Type>
-  const Matrix4x4Type toMatrix4x4() const {
-    return Matrix4x4Type(xBasis.x, xBasis.y, xBasis.z, 0.0f,
-                         yBasis.x, yBasis.y, yBasis.z, 0.0f,
-                         zBasis.x, zBasis.y, zBasis.z, 0.0f,
-                         origin.x, origin.y, origin.z, 1.0f);
-  }
-
-  /**
-   * Writes the 3x3 Matrix object to a 9 element row-major float or
-   * double array.
-   *
-   * Translation factors are discarded.
-   *
-   * Returns a pointer to the same data.
-   * @since 1.0
-   */
-  template<typename T>
-  T* toArray3x3(T* output) const {
-    output[0] = xBasis.x; output[1] = xBasis.y; output[2] = xBasis.z;
-    output[3] = yBasis.x; output[4] = yBasis.y; output[5] = yBasis.z;
-    output[6] = zBasis.x; output[7] = zBasis.y; output[8] = zBasis.z;
-    return output;
-  }
-
-  /**
-   * Convert a 3x3 Matrix object to a 9 element row-major float array.
-   *
-   * Translation factors are discarded.
-   *
-   * \include Matrix_toArray3x3.txt
-   *
-   * Returns a FloatArray struct to avoid dynamic memory allocation.
-   * @since 1.0
-   */
-  FloatArray toArray3x3() const {
-    FloatArray output;
-    toArray3x3((float*)output);
-    return output;
-  }
-
-  /**
-   * Writes the 4x4 Matrix object to a 16 element row-major float
-   * or double array.
-   *
-   * Returns a pointer to the same data.
-   * @since 1.0
-   */
-  template<typename T>
-  T* toArray4x4(T* output) const {
-    output[0]  = xBasis.x; output[1]  = xBasis.y; output[2]  = xBasis.z; output[3]  = 0.0f;
-    output[4]  = yBasis.x; output[5]  = yBasis.y; output[6]  = yBasis.z; output[7]  = 0.0f;
-    output[8]  = zBasis.x; output[9]  = zBasis.y; output[10] = zBasis.z; output[11] = 0.0f;
-    output[12] = origin.x; output[13] = origin.y; output[14] = origin.z; output[15] = 1.0f;
-    return output;
-  }
-
-  /**
-   * Convert a 4x4 Matrix object to a 16 element row-major float array.
-   *
-   * \include Matrix_toArray4x4.txt
-   *
-   * Returns a FloatArray struct to avoid dynamic memory allocation.
-   * @since 1.0
-   */
-  FloatArray toArray4x4() const {
-    FloatArray output;
-    toArray4x4((float*)output);
-    return output;
-  }
-
-  /**
-   * Write the matrix to a string in a human readable format.
-   * @since 1.0
-   */
-  std::string toString() const {
-    std::stringstream result;
-    result << "xBasis:" << xBasis.toString() << " yBasis:" << yBasis.toString()
-           << " zBasis:" << zBasis.toString() << " origin:" << origin.toString();
-    return result.str();
-  }
-
-  /**
-   * Write the matrix to an output stream in a human readable format.
-   *
-   * \include Matrix_operator_stream.txt
-   *
-   * @since 1.0
-   */
-  friend std::ostream& operator<<(std::ostream& out, const Matrix& matrix) {
-    return out << matrix.toString();
-  }
-
-  /**
-   * The rotation and scale factors for the x-axis.
-   *
-   * \include Matrix_xBasis.txt
-   *
-   * @since 1.0
-   */
-  Vector xBasis;
-  /**
-   * The rotation and scale factors for the y-axis.
-   *
-   * \include Matrix_yBasis.txt
-   *
-   * @since 1.0
-   */
-  Vector yBasis;
-  /**
-   * The rotation and scale factors for the z-axis.
-   *
-   * \include Matrix_zBasis.txt
-   *
-   * @since 1.0
-   */
-  Vector zBasis;
-  /**
-   * The translation factors for all three axes.
-   *
-   * \include Matrix_origin.txt
-   *
-   * @since 1.0
-   */
-  Vector origin;
-};
-
-}; // namespace Leap
-
-#endif // __LeapMath_h__

BIN
engine/lib/LeapSDK/lib/libLeap.dylib


BIN
engine/lib/LeapSDK/lib/libc++/libLeap.dylib


BIN
engine/lib/LeapSDK/lib/x64/Leap.dll


BIN
engine/lib/LeapSDK/lib/x64/Leapd.dll


BIN
engine/lib/LeapSDK/lib/x64/msvcp100.dll


BIN
engine/lib/LeapSDK/lib/x64/msvcp100d.dll


BIN
engine/lib/LeapSDK/lib/x64/msvcr100.dll


BIN
engine/lib/LeapSDK/lib/x64/msvcr100d.dll


BIN
engine/lib/LeapSDK/lib/x86/Leap.dll


BIN
engine/lib/LeapSDK/lib/x86/Leapd.dll


BIN
engine/lib/LeapSDK/lib/x86/msvcp100.dll


BIN
engine/lib/LeapSDK/lib/x86/msvcp100d.dll


BIN
engine/lib/LeapSDK/lib/x86/msvcr100.dll


BIN
engine/lib/LeapSDK/lib/x86/msvcr100d.dll


+ 47 - 25
engine/source/2d/assets/AnimationAsset_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,34 +20,44 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AnimationAsset, setImage, void, 3, 3, "(assetId) Sets the image asset Id.\n"
-                                                    "@return No return value.")
+ConsoleMethodGroupBeginWithDocs(AnimationAsset, AssetBase)
+
+/*! Sets the image asset Id.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(AnimationAsset, setImage, ConsoleVoid, 3, 3, (assetId))
 {
     object->setImage( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AnimationAsset, getImage, const char*, 2, 2,  "() Gets the image asset Id.\n"
-                                                            "@return The image asset Id.")
+/*! Gets the image asset Id.
+    @return The image asset Id.
+*/
+ConsoleMethodWithDocs(AnimationAsset, getImage, ConsoleString, 2, 2, ())
 {
     return object->getImage().getAssetId();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AnimationAsset, setAnimationFrames, void, 3, 3,   "(animationFrames) Sets the image frames that compose the animation.\n"
-                                                                "@param animationFrames A set of image frames that compose the animation.\n"
-                                                                "@return No return value.")
+/*! Sets the image frames that compose the animation.
+    @param animationFrames A set of image frames that compose the animation.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(AnimationAsset, setAnimationFrames, ConsoleVoid, 3, 3, (animationFrames))
 {
     object->setAnimationFrames( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AnimationAsset, getAnimationFrames, const char*, 2, 3,    "([bool validatedFrames]) Gets the frames that compose the animation or optionally only the ones validated against the image asset.\n"
-                                                                        "@param validatedFrames - Whether to return only the validated frames or not.  Optional: Default is false.\n"
-                                                                        "@return The image frames that compose the animation or optionally only the ones validated against the image asset.")
+/*! Gets the frames that compose the animation or optionally only the ones validated against the image asset.
+    @param validatedFrames - Whether to return only the validated frames or not.  Optional: Default is false.
+    @return The image frames that compose the animation or optionally only the ones validated against the image asset.
+*/
+ConsoleMethodWithDocs(AnimationAsset, getAnimationFrames, ConsoleString, 2, 3, ([bool validatedFrames]))
 {
     // Fetch a return buffer.
     S32 bufferSize = 4096;
@@ -77,9 +87,11 @@ ConsoleMethod(AnimationAsset, getAnimationFrames, const char*, 2, 3,    "([bool
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AnimationAsset, getAnimationFrameCount, S32, 2, 3,    "([bool validatedFrames]) Gets the count of frame that compose the animation or optionally only the ones validated against the image asset.\n"
-                                                                    "@param validatedFrames - Whether to return only the validated frames or not.  Optional: Default is false.\n"
-                                                                    "@return The image frames that compose the animation or optionally only the ones validated against the image asset.")
+/*! Gets the count of frame that compose the animation or optionally only the ones validated against the image asset.
+    @param validatedFrames - Whether to return only the validated frames or not.  Optional: Default is false.
+    @return The image frames that compose the animation or optionally only the ones validated against the image asset.
+*/
+ConsoleMethodWithDocs(AnimationAsset, getAnimationFrameCount, ConsoleInt, 2, 3, ([bool validatedFrames]))
 {
     // Fetch validated frames flag.
     const bool validatedFrames = argc >= 3 ? dAtob( argv[2] ) : false;
@@ -92,17 +104,21 @@ ConsoleMethod(AnimationAsset, getAnimationFrameCount, S32, 2, 3,    "([bool vali
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AnimationAsset, setAnimationTime, void, 3, 3,      "(float animationTime) Sets the total time to cycle through all animation frames.\n"
-                                                                        "@param animationTime The total time to cycle through all animation frames.\n"
-                                                                        "@return No return value.")
+/*! Sets the total time to cycle through all animation frames.
+    @param animationTime The total time to cycle through all animation frames.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(AnimationAsset, setAnimationTime, ConsoleVoid, 3, 3, (float animationTime))
 {
     object->setAnimationTime( dAtof(argv[2] ) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AnimationAsset, getAnimationTime, F32, 2, 2,       "() Gets the total time to cycle through all animation frames.\n"
-                                                                        "@return The total time to cycle through all animation frames.")
+/*! Gets the total time to cycle through all animation frames.
+    @return The total time to cycle through all animation frames.
+*/
+ConsoleMethodWithDocs(AnimationAsset, getAnimationTime, ConsoleFloat, 2, 2, ())
 {
     return object->getAnimationTime();
 }
@@ -110,17 +126,23 @@ ConsoleMethod(AnimationAsset, getAnimationTime, F32, 2, 2,       "() Gets the to
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AnimationAsset, setAnimationCycle, void, 3, 3,     "(bool animationCycle) Sets whether the animation cycles or not.\n"
-                                                                        "@param animationCycle Whether the animation cycles or not.\n"
-                                                                        "@return No return value.")
+/*! Sets whether the animation cycles or not.
+    @param animationCycle Whether the animation cycles or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(AnimationAsset, setAnimationCycle, ConsoleVoid, 3, 3, (bool animationCycle))
 {
     object->setAnimationCycle( dAtob(argv[2] ) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AnimationAsset, getAnimationCycle, bool, 2, 2,     "() Gets whether the animation cycles or not.\n"
-                                                                        "@return Whether the animation cycles or not.")
+/*! Gets whether the animation cycles or not.
+    @return Whether the animation cycles or not.
+*/
+ConsoleMethodWithDocs(AnimationAsset, getAnimationCycle, ConsoleBool, 2, 2, ())
 {
     return object->getAnimationCycle();
-}
+}
+
+ConsoleMethodGroupEndWithDocs(AnimationAsset)

+ 27 - 0
engine/source/2d/assets/ImageAsset.cc

@@ -550,6 +550,33 @@ void ImageAsset::setCellHeight( const S32 cellheight )
     refreshAsset();
 }
 
+S32 ImageAsset::getExplicitCellWidth(const S32 cellIndex)
+{
+	if ( !getExplicitMode() )
+    {
+        // No, so warn.
+        Con::warnf( "ImageAsset() - Cannot perform explicit cell operation when not in explicit mode." );
+        return (0);
+    }
+    
+    ImageAsset::FrameArea::PixelArea thisCell = mExplicitFrames.at(cellIndex);
+    return(thisCell.mPixelWidth);
+
+}
+
+S32 ImageAsset::getExplicitCellHeight(const S32 cellIndex)
+{
+	if ( !getExplicitMode() )
+    {
+        // No, so warn.
+        Con::warnf( "ImageAsset() - Cannot perform explicit cell operation when not in explicit mode." );
+        return (0);
+	}
+	
+    ImageAsset::FrameArea::PixelArea thisCell = mExplicitFrames.at(cellIndex);
+    return(thisCell.mPixelHeight);
+
+}
 //------------------------------------------------------------------------------
 
 bool ImageAsset::clearExplicitCells( void )

+ 2 - 0
engine/source/2d/assets/ImageAsset.h

@@ -202,9 +202,11 @@ public:
 
     void                    setCellWidth( const S32 cellWidth );
     inline S32              getCellWidth( void ) const						{ return mCellWidth; }
+    S32                     getExplicitCellWidth(const S32 cellIndex);
 
     void                    setCellHeight( const S32 cellheight );
     S32                     getCellHeight( void) const						{ return mCellHeight; }
+    S32                     getExplicitCellHeight(const S32 cellIndex);
 
     inline TextureHandle&   getImageTexture( void )                         { return mImageTextureHandle; }
     inline S32              getImageWidth( void ) const                     { return mImageTextureHandle.getWidth(); }

+ 186 - 94
engine/source/2d/assets/ImageAsset_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,24 +20,32 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setImageFile, void, 3, 3,     "(ImageFile) Sets the image file (bitmap file).\n"
-                                                        "@return No return value.")
+ConsoleMethodGroupBeginWithDocs(ImageAsset, AssetBase)
+
+/*! Sets the image file (bitmap file).
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setImageFile, ConsoleVoid, 3, 3, (ImageFile))
 {
     object->setImageFile( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getImageFile, const char*, 2, 2,  "() Gets the image file.\n"
-                                                            "@return Returns the bitmap image file.")
+/*! Gets the image file.
+    @return Returns the bitmap image file.
+*/
+ConsoleMethodWithDocs(ImageAsset, getImageFile, ConsoleString, 2, 2, ())
 {
     return object->getImageFile();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setFilterMode, void, 3, 3,            "(mode) Sets the filter mode.\n"
-                                                                "@return No return value.")
+/*! Sets the filter mode.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setFilterMode, ConsoleVoid, 3, 3, (mode))
 {
     // Fetch Texture Filter Mode.
     const ImageAsset::TextureFilterMode filterMode = ImageAsset::getFilterModeEnum( argv[2] );
@@ -57,192 +65,258 @@ ConsoleMethod(ImageAsset, setFilterMode, void, 3, 3,            "(mode) Sets the
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getFilterMode, const char*, 2, 2,   "() Gets the filter mode.\n"
-                                                                        "@return The filter mode.")
+/*! Gets the filter mode.
+    @return The filter mode.
+*/
+ConsoleMethodWithDocs(ImageAsset, getFilterMode, ConsoleString, 2, 2, ())
 {
     return ImageAsset::getFilterModeDescription( object->getFilterMode() );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setForce16Bit, void, 3, 3,          "(force16Bit?) Sets whether 16-bit image is forced or not.\n"
-                                                                        "@return No return value.")
+/*! Sets whether 16-bit image is forced or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setForce16Bit, ConsoleVoid, 3, 3, (force16Bit?))
 {
     object->setForce16Bit( dAtob(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getForce16Bit, bool, 2, 2,          "() Gets whether 16-bit image is forced or not.\n"
-                                                                        "@return Whether 16-bit image is forced or not.")
+/*! Gets whether 16-bit image is forced or not.
+    @return Whether 16-bit image is forced or not.
+*/
+ConsoleMethodWithDocs(ImageAsset, getForce16Bit, ConsoleBool, 2, 2, ())
 {
     return object->getForce16Bit();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setCellRowOrder, void, 3, 3,        "(rowOrder?) Sets whether CELL row order should be used or not.\n"
-                                                                        "@return No return value.")
+/*! Sets whether CELL row order should be used or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setCellRowOrder, ConsoleVoid, 3, 3, (rowOrder?))
 {
     object->setCellRowOrder( dAtob(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getCellRowOrder, bool, 2, 2,        "() Gets whether CELL row order should be used or not.\n"
-                                                                        "@return Whether CELL row order should be used or not.")
+/*! Gets whether CELL row order should be used or not.
+    @return Whether CELL row order should be used or not.
+*/
+ConsoleMethodWithDocs(ImageAsset, getCellRowOrder, ConsoleBool, 2, 2, ())
 {
     return object->getCellRowOrder();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setCellOffsetX, void, 3, 3,         "(offsetX) Sets the CELL offset X.\n"
-                                                                        "@return No return value.")
+/*! Sets the CELL offset X.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setCellOffsetX, ConsoleVoid, 3, 3, (offsetX))
 {
     object->setCellOffsetX( dAtoi(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getCellOffsetX, S32, 2, 2,          "() Gets the CELL offset X.\n"
-                                                                        "@return The CELL offset X.")
+/*! Gets the CELL offset X.
+    @return The CELL offset X.
+*/
+ConsoleMethodWithDocs(ImageAsset, getCellOffsetX, ConsoleInt, 2, 2, ())
 {
     return object->getCellOffsetX();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setCellOffsetY, void, 3, 3,         "(offsetY) Sets the CELL offset Y.\n"
-                                                                        "@return No return value.")
+/*! Sets the CELL offset Y.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setCellOffsetY, ConsoleVoid, 3, 3, (offsetY))
 {
     object->setCellOffsetY( dAtoi(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getCellOffsetY, S32, 2, 2,          "() Gets the CELL offset Y.\n"
-                                                                        "@return The CELL offset Y.")
+/*! Gets the CELL offset Y.
+    @return The CELL offset Y.
+*/
+ConsoleMethodWithDocs(ImageAsset, getCellOffsetY, ConsoleInt, 2, 2, ())
 {
     return object->getCellOffsetY();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setCellStrideX, void, 3, 3,         "(strideX) Sets the CELL stride X.\n"
-                                                                        "@return No return value.")
+/*! Sets the CELL stride X.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setCellStrideX, ConsoleVoid, 3, 3, (strideX))
 {
     object->setCellStrideX( dAtoi(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getCellStrideX, S32, 2, 2,          "() Gets the CELL stride X.\n"
-                                                                        "@return The CELL stride X.")
+/*! Gets the CELL stride X.
+    @return The CELL stride X.
+*/
+ConsoleMethodWithDocs(ImageAsset, getCellStrideX, ConsoleInt, 2, 2, ())
 {
     return object->getCellStrideX();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setCellStrideY, void, 3, 3,         "(strideY) Sets the CELL stride Y.\n"
-                                                                        "@return No return value.")
+/*! Sets the CELL stride Y.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setCellStrideY, ConsoleVoid, 3, 3, (strideY))
 {
     object->setCellStrideY( dAtoi(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getCellStrideY, S32, 2, 2,          "() Gets the CELL stride Y.\n"
-                                                                        "@return The CELL stride Y.")
+/*! Gets the CELL stride Y.
+    @return The CELL stride Y.
+*/
+ConsoleMethodWithDocs(ImageAsset, getCellStrideY, ConsoleInt, 2, 2, ())
 {
     return object->getCellStrideY();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setCellCountX, void, 3, 3,         "(countX) Sets the CELL count X.\n"
-                                                                        "@return No return value.")
+/*! Sets the CELL count X.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setCellCountX, ConsoleVoid, 3, 3, (countX))
 {
     object->setCellCountX( dAtoi(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getCellCountX, S32, 2, 2,          "() Gets the CELL count X.\n"
-                                                                        "@return The CELL count X.")
+/*! Gets the CELL count X.
+    @return The CELL count X.
+*/
+ConsoleMethodWithDocs(ImageAsset, getCellCountX, ConsoleInt, 2, 2, ())
 {
     return object->getCellCountX();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setCellCountY, void, 3, 3,         "(countY) Sets the CELL count Y.\n"
-                                                                        "@return No return value.")
+/*! Sets the CELL count Y.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setCellCountY, ConsoleVoid, 3, 3, (countY))
 {
     object->setCellCountY( dAtoi(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getCellCountY, S32, 2, 2,          "() Gets the CELL count Y.\n"
-                                                                        "@return The CELL count Y.")
+/*! Gets the CELL count Y.
+    @return The CELL count Y.
+*/
+ConsoleMethodWithDocs(ImageAsset, getCellCountY, ConsoleInt, 2, 2, ())
 {
     return object->getCellCountY();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setCellWidth, void, 3, 3,           "(Width) Sets the CELL width.\n"
-                                                                        "@return No return value.")
+/*! Sets the CELL width.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setCellWidth, ConsoleVoid, 3, 3, (Width))
 {
     object->setCellWidth( dAtoi(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getCellWidth, S32, 2, 2,            "() Gets the CELL width.\n"
-                                                                        "@return The CELL width.")
+/*! Gets the CELL width.
+    @return The CELL width.
+*/
+ConsoleMethodWithDocs(ImageAsset, getCellWidth, ConsoleInt, 2, 2, ())
 {
     return object->getCellWidth();
 }
 
+ConsoleMethod(ImageAsset, getExplicitCellWidth, S32, 3,3, "(CellIndex) Gets the CELL width in Explicit Mode.\n"
+                                                                        "@return the specified CELL width.")
+{
+	    // Fetch cell index.
+    const S32 cellIndex = dAtoi( argv[2] );
+
+    return(object->getExplicitCellWidth(cellIndex));
+}
+
+ConsoleMethod(ImageAsset, getExplicitCellHeight, S32, 3,3, "(CellIndex) Gets the CELL height in Explicit Mode.\n"
+                                                                        "@return the specified CELL height.")
+{
+	    // Fetch cell index.
+    const S32 cellIndex = dAtoi( argv[2] );
+
+    return(object->getExplicitCellHeight(cellIndex));
+
+}
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setCellHeight, void, 3, 3,          "(Height) Sets the CELL height.\n"
-                                                                        "@return No return value.")
+/*! Sets the CELL height.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageAsset, setCellHeight, ConsoleVoid, 3, 3, (Height))
 {
     object->setCellHeight( dAtoi(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getCellHeight, S32, 2, 2,           "() Gets the CELL height.\n"
-                                                                        "@return The CELL height.")
+/*! Gets the CELL height.
+    @return The CELL height.
+*/
+ConsoleMethodWithDocs(ImageAsset, getCellHeight, ConsoleInt, 2, 2, ())
 {
     return object->getCellHeight();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getImageWidth, S32, 2, 2,           "() Gets the image width.\n"
-                                                                        "@return The image width.")
+/*! Gets the image width.
+    @return The image width.
+*/
+ConsoleMethodWithDocs(ImageAsset, getImageWidth, ConsoleInt, 2, 2, ())
 {
     return object->getImageWidth();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getImageHeight, S32, 2, 2,          "() Gets the image height.\n"
-                                                                        "@return The image width.")
+/*! Gets the image height.
+    @return The image width.
+*/
+ConsoleMethodWithDocs(ImageAsset, getImageHeight, ConsoleInt, 2, 2, ())
 {
     return object->getImageHeight();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getImageSize, const char*, 2, 2,    "() Gets the image size.\n"
-                                                                        "@return The image size.")
+/*! Gets the image size.
+    @return The image size.
+*/
+ConsoleMethodWithDocs(ImageAsset, getImageSize, ConsoleString, 2, 2, ())
 {
     // Create Returnable Buffer.
     char* pBuffer = Con::getReturnBuffer(32);
@@ -256,25 +330,31 @@ ConsoleMethod(ImageAsset, getImageSize, const char*, 2, 2,    "() Gets the image
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getIsImagePOT, bool, 2, 2,          "() Gets whether the image has a power-of-two dimensions or not.\n"
-                                                                        "@return Whether the image has a power-of-two dimensions or not." )
+/*! Gets whether the image has a power-of-two dimensions or not.
+    @return Whether the image has a power-of-two dimensions or not.
+*/
+ConsoleMethodWithDocs(ImageAsset, getIsImagePOT, ConsoleBool, 2, 2, ())
 {
     return isPow2( object->getImageWidth() ) && isPow2( object->getImageHeight() );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getFrameCount, S32, 2, 2,           "() Gets the frame count.\n"
-                                                                        "@return The frame count.")
+/*! Gets the frame count.
+    @return The frame count.
+*/
+ConsoleMethodWithDocs(ImageAsset, getFrameCount, ConsoleInt, 2, 2, ())
 {
     return object->getFrameCount(); 
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getFrameSize, const char*, 3, 3,    "(int frame) - Gets the specified frames size.\n"
-                                                                        "@param frame The frame number to use.\n"
-                                                                        "@return The specified frames size.")
+/*! Gets the specified frames size.
+    @param frame The frame number to use.
+    @return The specified frames size.
+*/
+ConsoleMethodWithDocs(ImageAsset, getFrameSize, ConsoleString, 3, 3, (int frame))
 {
     // Fetch Frame.
     const S32 frame = dAtoi(argv[2]);
@@ -303,22 +383,26 @@ ConsoleMethod(ImageAsset, getFrameSize, const char*, 3, 3,    "(int frame) - Get
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, clearExplicitCells, bool, 2, 2,   "() Clears all explicit cells.\n"
-                                                            "The image asset stays in explicit mode however with no explicit cells a single full-frame cell becomes default.\n"
-                                                            "@return Whether the operation was successful or not.")
+/*! Clears all explicit cells.
+    The image asset stays in explicit mode however with no explicit cells a single full-frame cell becomes default.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ImageAsset, clearExplicitCells, ConsoleBool, 2, 2, ())
 {
     return object->clearExplicitCells();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, addExplicitCell, bool, 6, 6,      "(int cellOffsetX, int cellOffsetY, int cellWidth, int cellHeight) Add an explicit cell.\n"
-                                                            "@param cellOffsetX The offset in the X axis to the top-left of the cell.\n"
-                                                            "@param cellOffsetY The offset in the Y axis to the top-left of the cell.\n"
-                                                            "@param cellWidth The width of the cell.\n"
-                                                            "@param cellHeight The height of the cell.\n"
-                                                            "The image asset must be in explicit mode for this operation to succeed.\n"
-                                                            "@return Whether the operation was successful or not.")
+/*! Add an explicit cell.
+    @param cellOffsetX The offset in the X axis to the top-left of the cell.
+    @param cellOffsetY The offset in the Y axis to the top-left of the cell.
+    @param cellWidth The width of the cell.
+    @param cellHeight The height of the cell.
+    The image asset must be in explicit mode for this operation to succeed.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ImageAsset, addExplicitCell, ConsoleBool, 6, 6, (int cellOffsetX, int cellOffsetY, int cellWidth, int cellHeight))
 {
     // Fetch offsets.
     const S32 cellOffsetX = dAtoi( argv[2] );
@@ -333,14 +417,16 @@ ConsoleMethod(ImageAsset, addExplicitCell, bool, 6, 6,      "(int cellOffsetX, i
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, insertExplicitCell, bool, 7, 7,   "(int cellIndex, int cellOffsetX, int cellOffsetY, int cellWidth, int cellHeight) Insert an explicit cell at the specified index.\n"
-                                                            "@param cellIndex The zero-based index to insert the cell.  This will work when no cells are present.  If the index is beyond the cell count then the cell is simply added.\n"
-                                                            "@param cellOffsetX The offset in the X axis to the top-left of the cell.\n"
-                                                            "@param cellOffsetY The offset in the Y axis to the top-left of the cell.\n"
-                                                            "@param cellWidth The width of the cell.\n"
-                                                            "@param cellHeight The height of the cell.\n"
-                                                            "The image asset must be in explicit mode for this operation to succeed.\n"
-                                                            "@return Whether the operation was successful or not.")
+/*! Insert an explicit cell at the specified index.
+    @param cellIndex The zero-based index to insert the cell.  This will work when no cells are present.  If the index is beyond the cell count then the cell is simply added.
+    @param cellOffsetX The offset in the X axis to the top-left of the cell.
+    @param cellOffsetY The offset in the Y axis to the top-left of the cell.
+    @param cellWidth The width of the cell.
+    @param cellHeight The height of the cell.
+    The image asset must be in explicit mode for this operation to succeed.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ImageAsset, insertExplicitCell, ConsoleBool, 7, 7, (int cellIndex, int cellOffsetX, int cellOffsetY, int cellWidth, int cellHeight))
 {
     // Fetch cell index.
     const S32 cellIndex = dAtoi( argv[2] );
@@ -359,9 +445,11 @@ ConsoleMethod(ImageAsset, insertExplicitCell, bool, 7, 7,   "(int cellIndex, int
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, removeExplicitCell, bool, 7, 7,   "(int cellIndex) Remove an explicit cell from the specified index.\n"
-                                                            "@param cellIndex The zero-based index to remove the cell from.\n"
-                                                            "@return Whether the operation was successful or not.")
+/*! Remove an explicit cell from the specified index.
+    @param cellIndex The zero-based index to remove the cell from.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ImageAsset, removeExplicitCell, ConsoleBool, 7, 7, (int cellIndex))
 {
     // Fetch cell index.
     const S32 cellIndex = dAtoi( argv[2] );
@@ -371,14 +459,16 @@ ConsoleMethod(ImageAsset, removeExplicitCell, bool, 7, 7,   "(int cellIndex) Rem
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, setExplicitCell, bool, 7, 7,      "(int cellIndex, int cellOffsetX, int cellOffsetY, int cellWidth, int cellHeight) Set an explicit cell at the specified index.\n"
-                                                            "@param cellIndex The zero-based index to insert the cell.  This will work when no cells are present.  If the index is beyond the cell count then the cell is simply added.\n"
-                                                            "@param cellOffsetX The offset in the X axis to the top-left of the cell.\n"
-                                                            "@param cellOffsetY The offset in the Y axis to the top-left of the cell.\n"
-                                                            "@param cellWidth The width of the cell.\n"
-                                                            "@param cellHeight The height of the cell.\n"
-                                                            "The image asset must be in explicit mode for this operation to succeed.\n"
-                                                            "@return Whether the operation was successful or not.")
+/*! Set an explicit cell at the specified index.
+    @param cellIndex The zero-based index to insert the cell.  This will work when no cells are present.  If the index is beyond the cell count then the cell is simply added.
+    @param cellOffsetX The offset in the X axis to the top-left of the cell.
+    @param cellOffsetY The offset in the Y axis to the top-left of the cell.
+    @param cellWidth The width of the cell.
+    @param cellHeight The height of the cell.
+    The image asset must be in explicit mode for this operation to succeed.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ImageAsset, setExplicitCell, ConsoleBool, 7, 7, (int cellIndex, int cellOffsetX, int cellOffsetY, int cellWidth, int cellHeight))
 {
     // Fetch cell index.
     const S32 cellIndex = dAtoi( argv[2] );
@@ -396,10 +486,12 @@ ConsoleMethod(ImageAsset, setExplicitCell, bool, 7, 7,      "(int cellIndex, int
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageAsset, getExplicitCellCount, S32, 2, 2,  "() Gets the explicit cell count.\n"
-                                                            "@return The explicit cell count.")
+/*! Gets the explicit cell count.
+    @return The explicit cell count.
+*/
+ConsoleMethodWithDocs(ImageAsset, getExplicitCellCount, ConsoleInt, 2, 2, ())
 {
     return object->getExplicitCellCount();
 }
 
-
+ConsoleMethodGroupEndWithDocs(ImageAsset)

+ 2 - 2
engine/source/2d/assets/ParticleAssetEmitter.h

@@ -47,7 +47,7 @@ class ParticleAsset;
 
 class ParticleAssetEmitter : public SimObject, protected AssetPtrCallback
 {
-    friend ParticleAsset;
+    friend class ParticleAsset;
 
 public:
     enum ParticleOrientationType
@@ -320,4 +320,4 @@ protected:
     static bool     writeAlphaTest( void* obj, StringTableEntry pFieldName )            { return static_cast<ParticleAssetEmitter*>(obj)->getAlphaTest() >= 0.0f; }
 };
 
-#endif // _PARTICLE_ASSET_EMITTER_H_
+#endif // _PARTICLE_ASSET_EMITTER_H_

+ 338 - 178
engine/source/2d/assets/ParticleAssetEmitter_ScriptBinding.h

@@ -20,12 +20,16 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
+ConsoleMethodGroupBeginWithDocs(ParticleAssetEmitter, SimObject)
+
 //-----------------------------------------------------------------------------
 /// Particle emitter accessors.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getOwner, const char*, 2, 2,    "() Gets the asset owner of the emitter.\n"
-                                                                    "@return The asset owner of the emitter or nothing if no owner assigned." )
+/*! Gets the asset owner of the emitter.
+    @return The asset owner of the emitter or nothing if no owner assigned.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getOwner, ConsoleString, 2, 2, ())
 {
     // Fetch the owner.
     ParticleAsset* pParticleAsset = object->getOwner();
@@ -35,48 +39,58 @@ ConsoleMethod(ParticleAssetEmitter, getOwner, const char*, 2, 2,    "() Gets the
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setEmitterName, void, 3, 3,     "(emitterName) Sets the name of the emitter.\n"
-                                                                    "@param emitterName The name to set the emitter to.\n"
-                                                                    "@return No return value." )
+/*! Sets the name of the emitter.
+    @param emitterName The name to set the emitter to.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setEmitterName, ConsoleVoid, 3, 3, (emitterName))
 {
     object->setEmitterName( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getEmitterName, const char*, 2, 2,  "() Gets the name of the emitter.\n"
-                                                                        "@return The name of the emitter." )
+/*! Gets the name of the emitter.
+    @return The name of the emitter.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getEmitterName, ConsoleString, 2, 2, ())
 {
     return object->getEmitterName();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setEmitterType, void, 3, 3,     "(emitterType) Sets the type of the emitter.\n"
-                                                                    "@param emitterType The type to set the emitter.  Either 'POINT', 'LINE', 'BOX' or 'DISK', 'ELLIPSE' or 'TORUS'.\n"
-                                                                    "An emitter-type of 'POINT' creates the particles at the position of the particle asset.\n"
-                                                                    "An emitter-type of 'LINE' creates the particles along a line defined by the particle width.\n"
-                                                                    "An emitter-type of 'BOX' creates the particles within the dimensions defined by the particle size.\n"
-                                                                    "An emitter-type of 'DISK' creates the particles within a disk with radii defined by the particle size.\n"
-                                                                    "An emitter-type of 'ELLIPSE' creates the particles on an ellipse with the radii defined by the particle size.\n"
-                                                                    "An emitter-type of 'TORUS' creates the particles within a torus with a maximum and minimum radii defined by the particle width and height respectively.\n"
-                                                                    "@return No return value." )
+/*! Sets the type of the emitter.
+    @param emitterType The type to set the emitter.  Either 'POINT', 'LINE', 'BOX' or 'DISK', 'ELLIPSE' or 'TORUS'.
+    An emitter-type of 'POINT' creates the particles at the position of the particle asset.
+    An emitter-type of 'LINE' creates the particles along a line defined by the particle width.
+    An emitter-type of 'BOX' creates the particles within the dimensions defined by the particle size.
+    An emitter-type of 'DISK' creates the particles within a disk with radii defined by the particle size.
+    An emitter-type of 'ELLIPSE' creates the particles on an ellipse with the radii defined by the particle size.
+    An emitter-type of 'TORUS' creates the particles within a torus with a maximum and minimum radii defined by the particle width and height respectively.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setEmitterType, ConsoleVoid, 3, 3, (emitterType))
 {
     object->setEmitterType( ParticleAssetEmitter::getEmitterTypeEnum(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getEmitterType, const char*, 2, 2,  "() Gets the type of the emitter.\n"
-                                                                        "@return The type of the emitter." )
+/*! Gets the type of the emitter.
+    @return The type of the emitter.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getEmitterType, ConsoleString, 2, 2, ())
 {
     return ParticleAssetEmitter::getEmitterTypeDescription( object->getEmitterType() );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setEmitterOffset, void, 3, 4,   "(float X / float Y) - Offsets the position of the emitter relative to the effect or player position.\n"
-                                                                    "@return No return value.")
+/*! Offsets the position of the emitter relative to the effect or player position.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setEmitterOffset, ConsoleVoid, 3, 4, (float X / float Y))
 {
     // Grab the element count.
     U32 elementCount =Utility::mGetStringElementCount(argv[2]);
@@ -101,18 +115,22 @@ ConsoleMethod(ParticleAssetEmitter, setEmitterOffset, void, 3, 4,   "(float X /
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getEmitterOffset, const char*, 2, 2,    "Gets the emitter offset position.\n"
-                                                                            "@return (float x/float y) The offset of the emitter relative to the effect or player position.")
+/*! Gets the emitter offset position.
+    @return (float x/float y) The offset of the emitter relative to the effect or player position.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getEmitterOffset, ConsoleString, 2, 2, ())
 {
     return object->getEmitterOffset().scriptThis();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setEmitterSize, void, 3, 4, "(float width / float height) - Sets the emitter size.\n"
-                                                                "@param width The width of the emitter.\n"
-                                                                "@param height The height of the emitter.\n"
-                                                                "@return No return value.")
+/*! Sets the emitter size.
+    @param width The width of the emitter.
+    @param height The height of the emitter.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setEmitterSize, ConsoleVoid, 3, 4, (width / height))
 {
     F32 width, height;
     
@@ -149,17 +167,21 @@ ConsoleMethod(ParticleAssetEmitter, setEmitterSize, void, 3, 4, "(float width /
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getEmitterSize, const char*, 2, 2,  "Gets the emitter size.\n"
-                                                                        "@return (float width/float height) The width and height of the emitter.")
+/*! Gets the emitter size.
+    @return (float width/float height) The width and height of the emitter.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getEmitterSize, ConsoleString, 2, 2, ())
 {
     return object->getEmitterSize().scriptThis();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setEmitterAngle, void, 3, 3,    "(float angle) - Sets the emitter angle.\n"
-                                                                    "@param angle The angle of the emitter."
-                                                                    "@return No return value.")
+/*! Sets the emitter angle.
+    @param angle The angle of the emitter.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setEmitterAngle, ConsoleVoid, 3, 3, (angle))
 {
     // Set Rotation.
     object->setEmitterAngle( mDegToRad( dAtof(argv[2]) ) );
@@ -167,8 +189,10 @@ ConsoleMethod(ParticleAssetEmitter, setEmitterAngle, void, 3, 3,    "(float angl
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getEmitterAngle, F32, 2, 2, "() Gets the emitter angle.\n"
-                                                                "@return (float angle) The emitter's current angle.")
+/*! Gets the emitter angle.
+    @return (float angle) The emitter's current angle.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getEmitterAngle, ConsoleFloat, 2, 2, ())
 {
     // Return angle.
     return mRadToDeg( object->getEmitterAngle());
@@ -176,137 +200,171 @@ ConsoleMethod(ParticleAssetEmitter, getEmitterAngle, F32, 2, 2, "() Gets the emi
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setFixedAspect, void, 3, 3,     "(fixedAspect) Sets the emitter to used a fixed-aspect for particles.\n"
-                                                                    "@param fixedAspect Whether to use a fixed-aspect or not.\n"
-                                                                    "@return No return value." )
+/*! Sets the emitter to used a fixed-aspect for particles.
+    @param fixedAspect Whether to use a fixed-aspect or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setFixedAspect, ConsoleVoid, 3, 3, (fixedAspect))
 {
     object->setFixedAspect( dAtob(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getFixedAspect, bool, 2, 2,     "() Gets whether the emitter uses a fixed-aspect for particles or not.\n"
-                                                                    "@return Whether the emitter uses a fixed-aspect for particles or not." )
+/*! Gets whether the emitter uses a fixed-aspect for particles or not.
+    @return Whether the emitter uses a fixed-aspect for particles or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getFixedAspect, ConsoleBool, 2, 2, ())
 {
     return object->getFixedAspect();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setFixedForceAngle, void, 3, 3, "(fixedForceAngle) Sets the emitter fixed-force angle for particles.\n"
-                                                                    "@param fixedForceAngle The fixed-force angle for particles.\n"
-                                                                    "@return No return value." )
+/*! Sets the emitter fixed-force angle for particles.
+    @param fixedForceAngle The fixed-force angle for particles.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setFixedForceAngle, ConsoleVoid, 3, 3, (fixedForceAngle))
 {
     object->setFixedForceAngle( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getFixedForceAngle, F32, 2, 2,  "() Gets the emitter fixed-force angle for particles.\n"
-                                                                    "@return The fixed-force angle for particles." )
+/*! Gets the emitter fixed-force angle for particles.
+    @return The fixed-force angle for particles.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getFixedForceAngle, ConsoleFloat, 2, 2, ())
 {
     return object->getFixedForceAngle();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setOrientationType, void, 3, 3,     "(orientationType) Sets the orientation-type of the emitter.\n"
-                                                                        "@param orientationType The orientation-type to set the emitter to.  Either 'FIXED', 'ALIGNED' or 'RANDOM'.\n"
-                                                                        "An orientation-type of 'FIXED' causes the particles to be orientation at a fixed angle.\n"
-                                                                        "An orientation-type of 'ALIGNED' causes the particles to be orientation at the current emission angle.\n"
-                                                                        "An orientation-type of 'RANDOM' causes the particles to be orientation at a fixed angle.\n"
-                                                                        "@return No return value." )
+/*! Sets the orientation-type of the emitter.
+    @param orientationType The orientation-type to set the emitter to.  Either 'FIXED', 'ALIGNED' or 'RANDOM'.
+    An orientation-type of 'FIXED' causes the particles to be orientation at a fixed angle.
+    An orientation-type of 'ALIGNED' causes the particles to be orientation at the current emission angle.
+    An orientation-type of 'RANDOM' causes the particles to be orientation at a fixed angle.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setOrientationType, ConsoleVoid, 3, 3, (orientationType))
 {
     object->setOrientationType( ParticleAssetEmitter::getOrientationTypeEnum(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getOrientationType, const char*, 2, 2,  "() Gets the orientation-type of the emitter.\n"
-                                                                            "@return The orientation-type of the emitter." )
+/*! Gets the orientation-type of the emitter.
+    @return The orientation-type of the emitter.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getOrientationType, ConsoleString, 2, 2, ())
 {
     return ParticleAssetEmitter::getOrientationTypeDescription( object->getOrientationType() );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setKeepAligned, void, 3, 3,     "(keepAligned) Sets whether to keep emitted particles aligned or not."
-                                                                    "@keepAligned Whether to keep emitted particles aligned or not.\n"
-                                                                    "@return No return value." )
+/*! Sets whether to keep emitted particles aligned or not.
+    @keepAligned Whether to keep emitted particles aligned or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setKeepAligned, ConsoleVoid, 3, 3, (keepAligned))
 {
     object->setKeepAligned( dAtob(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getKeepAligned, bool, 2, 2, "() Gets whether to keep emitted particles aligned or not.\n"
-                                                                "@return Whether to keep emitted particles aligned or not." )
+/*! Gets whether to keep emitted particles aligned or not.
+    @return Whether to keep emitted particles aligned or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getKeepAligned, ConsoleBool, 2, 2, ())
 {
     return object->getKeepAligned();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setAlignedAngleOffset, void, 3, 3,  "(alignAngleOffset) Sets the aligned angle offset.\n"
-                                                                        "@param alignAngleOffset The aligned angle offset.\n"
-                                                                        "@return No return value." )
+/*! Sets the aligned angle offset.
+    @param alignAngleOffset The aligned angle offset.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setAlignedAngleOffset, ConsoleVoid, 3, 3, (alignAngleOffset))
 {
     object->setAlignedAngleOffset( dAtof(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getAlignedAngleOffset, F32, 2, 2,  "() Gets the aligned angle offset.\n"
-                                                                        "@return The aligned angle offset." )
+/*! Gets the aligned angle offset.
+    @return The aligned angle offset.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getAlignedAngleOffset, ConsoleFloat, 2, 2, ())
 {
     return object->getAlignedAngleOffset();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setRandomAngleOffset, void, 3, 3, "(randomAngle) - Set Random-Orientation Angle-Offset.")
+/*! Set Random-Orientation Angle-Offset.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setRandomAngleOffset, ConsoleVoid, 3, 3, (randomAngle))
 {
     object->setRandomAngleOffset( dAtof(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getRandomAngleOffset, F32, 2, 2, "Get Random-Orientation Angle-Offset.")
+/*! Get Random-Orientation Angle-Offset.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getRandomAngleOffset, ConsoleFloat, 2, 2, ())
 {
     return object->getRandomAngleOffset();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setRandomArc, void, 3, 3, "(randomArc) - Set Random-Orientation Arc.")
+/*! Set Random-Orientation Arc.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setRandomArc, ConsoleVoid, 3, 3, (randomArc))
 {
     object->setRandomArc( dAtof(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getRandomArc, F32, 2, 2, "Get Random-Orientation Arc.")
+/*! Get Random-Orientation Arc.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getRandomArc, ConsoleFloat, 2, 2, ())
 {
     return object->getRandomArc();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setFixedAngleOffset, void, 3, 3, "(randomAngle) - Set Fixed-Orientation Angle-Offset.")
+/*! Set Fixed-Orientation Angle-Offset.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setFixedAngleOffset, ConsoleVoid, 3, 3, (randomAngle))
 {
     object->setFixedAngleOffset( dAtof(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getFixedAngleOffset, F32, 2, 2, "Get Fixed-Orientation Angle-Offset.")
+/*! Get Fixed-Orientation Angle-Offset.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getFixedAngleOffset, ConsoleFloat, 2, 2, ())
 {
     return object->getFixedAngleOffset();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setPivotPoint, void, 3, 4, "(pivotX / pivotY) - Set the Pivot-Point.")
+/*! Set the Pivot-Point.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setPivotPoint, ConsoleVoid, 3, 4, (pivotX / pivotY))
 {
     // Grab the element count.
     U32 elementCount =Utility::mGetStringElementCount(argv[2]);
@@ -331,42 +389,54 @@ ConsoleMethod(ParticleAssetEmitter, setPivotPoint, void, 3, 4, "(pivotX / pivotY
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getPivotPoint, const char*, 2, 2, "Get Pivot-Point.")
+/*! Get Pivot-Point.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getPivotPoint, ConsoleString, 2, 2, ())
 {
     return object->getPivotPoint().scriptThis();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setLinkEmissionRotation, void, 3, 3, "(linkEmissionRotation) - Set Link-Emission-Rotation Flag.")
+/*! Set Link-Emission-Rotation Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setLinkEmissionRotation, ConsoleVoid, 3, 3, (linkEmissionRotation))
 {
     object->setLinkEmissionRotation( dAtob(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getLinkEmissionRotation, bool, 2, 2, "Get Link-Emission-Rotation Flag.")
+/*! Get Link-Emission-Rotation Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getLinkEmissionRotation, ConsoleBool, 2, 2, ())
 {
     return object->getLinkEmissionRotation();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setIntenseParticles, void, 3, 3, "(intenseParticles) - Set Intense-Particles Flag.")
+/*! Set Intense-Particles Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setIntenseParticles, ConsoleVoid, 3, 3, (intenseParticles))
 {
     object->setIntenseParticles( dAtob(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getIntenseParticles, bool, 2, 2, "Get Intense-Particles Flag.")
+/*! Get Intense-Particles Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getIntenseParticles, ConsoleBool, 2, 2, ())
 {
     return object->getIntenseParticles();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setSingleParticle, void, 3, 3, "(singleParticle) - Set Single-Particle Flag.")
+/*! Set Single-Particle Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setSingleParticle, ConsoleVoid, 3, 3, (singleParticle))
 {
     // Set Single Particle.
     object->setSingleParticle( dAtob(argv[2]) );
@@ -374,62 +444,78 @@ ConsoleMethod(ParticleAssetEmitter, setSingleParticle, void, 3, 3, "(singleParti
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getSingleParticle, bool, 2, 2, "Get Single-Particle Flag.")
+/*! Get Single-Particle Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getSingleParticle, ConsoleBool, 2, 2, ())
 {
     return object->getSingleParticle();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setAttachPositionToEmitter, void, 3, 3, "(attachPositionToEmitter) - Set Attach-Position-To-Emitter Flag.")
+/*! Set Attach-Position-To-Emitter Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setAttachPositionToEmitter, ConsoleVoid, 3, 3, (attachPositionToEmitter))
 {
     object->setAttachPositionToEmitter( dAtob(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getAttachPositionToEmitter, bool, 2, 2, "Get Attach-Position-To-Emitter Flag.")
+/*! Get Attach-Position-To-Emitter Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getAttachPositionToEmitter, ConsoleBool, 2, 2, ())
 {
     return object->getAttachPositionToEmitter();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setAttachRotationToEmitter, void, 3, 3, "(attachRotationToEmitter) - Set Attach-Rotation-To-Emitter Flag.")
+/*! Set Attach-Rotation-To-Emitter Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setAttachRotationToEmitter, ConsoleVoid, 3, 3, (attachRotationToEmitter))
 {
     object->setAttachRotationToEmitter( dAtob(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getAttachRotationToEmitter, bool, 2, 2, "Get Attach-Rotation-To-Emitter Flag.")
+/*! Get Attach-Rotation-To-Emitter Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getAttachRotationToEmitter, ConsoleBool, 2, 2, ())
 {
     return object->getAttachRotationToEmitter();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setOldestInFront, void, 3, 3,   "(oldestInFront) Sets whether to render particles as oldest on front or not.\n"
-                                                                    "@param oldestInFront Whether to render particles as oldest on front or not.\n"
-                                                                    "@return No return value." )
+/*! Sets whether to render particles as oldest on front or not.
+    @param oldestInFront Whether to render particles as oldest on front or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setOldestInFront, ConsoleVoid, 3, 3, (oldestInFront))
 {
     object->setOldestInFront( dAtob(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getOldestInFront, bool, 2, 2,   "() Gets whether to render particles as oldest on front or not.\n"
-                                                                    "@return Whether to render particles as oldest on front or not." )
+/*! Gets whether to render particles as oldest on front or not.
+    @return Whether to render particles as oldest on front or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getOldestInFront, ConsoleBool, 2, 2, ())
 {
     return object->getOldestInFront();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setImage, bool, 3, 4,   "(imageAssetId, [frame]) Sets the emitter to use the specified image asset Id and optional frame.\n"
-                                                            "@param imageAssetId The image asset Id to use.\n"
-                                                            "@param frame The frame of the image asset Id to use.  Optional.\n"
-                                                            "@return Whether the operation was successful or not." )
+/*! Sets the emitter to use the specified image asset Id and optional frame.
+    @param imageAssetId The image asset Id to use.
+    @param frame The frame of the image asset Id to use.  Optional.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setImage, ConsoleBool, 3, 4, (imageAssetId, [frame]))
 {
     // Fetch the frame.
     const U32 frame = argc >= 4 ? dAtoi(argv[3]) : 0;
@@ -439,85 +525,105 @@ ConsoleMethod(ParticleAssetEmitter, setImage, bool, 3, 4,   "(imageAssetId, [fra
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getImage, const char*, 2, 2,    "() Gets the asset Id of the image asset assigned to the emitter.\n"
-                                                                    "@return The asset Id of the image asset assigned to the emitter or nothing if no image is assigned." )
+/*! Gets the asset Id of the image asset assigned to the emitter.
+    @return The asset Id of the image asset assigned to the emitter or nothing if no image is assigned.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getImage, ConsoleString, 2, 2, ())
 {
     return object->getImage();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setImageFrame, bool, 3, 3,   "(frame) Sets the emitter to use the specified image frame.\n"
-                                                                "@param frame The frame of the image to use..\n"
-                                                                "@return Whether the operation was successful or not." )
+/*! Sets the emitter to use the specified image frame.
+    @param frame The frame of the image to use..
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setImageFrame, ConsoleBool, 3, 3, (frame))
 {
     return object->setImageFrame( dAtoi(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getImageFrame, S32, 2, 2,    "() Gets the asset Id of the image asset assigned to the emitter.\n"
-                                                                    "@return The asset Id of the image asset assigned to the emitter or nothing if no image is assigned." )
+/*! Gets the asset Id of the image asset assigned to the emitter.
+    @return The asset Id of the image asset assigned to the emitter or nothing if no image is assigned.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getImageFrame, ConsoleInt, 2, 2, ())
 {
     return object->getImageFrame();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setRandomImageFrame, void, 3, 3,    "(randomImageFrame) Disables the Frame field and uses a random frame from the specified ImageAsset.\n"
-                                                                        "@param randomImageFrame Whether to use a random image frame or not.\n"
-                                                                        "@return No return value." )
+/*! Disables the Frame field and uses a random frame from the specified ImageAsset.
+    @param randomImageFrame Whether to use a random image frame or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setRandomImageFrame, ConsoleVoid, 3, 3, (randomImageFrame))
 {
     object->setRandomImageFrame( dAtob(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getRandomImageFrame, bool, 2, 2,    "() Gets whether a random frame from the specified ImageAsset is being used or not.\n"
-                                                                        "@return Whether to use a random image frame or not." )
+/*! Gets whether a random frame from the specified ImageAsset is being used or not.
+    @return Whether to use a random image frame or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getRandomImageFrame, ConsoleBool, 2, 2, ())
 {
     return object->getRandomImageFrame();
 }
 
-//-----------------------------------------------------------------------------
+//------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setAnimation, bool, 3, 3,   "(animationAssetId) Sets the emitter to use the specified animation asset Id.\n"
-                                                                "@param animationAssetId The animation asset Id to use.\n"
-                                                                "@return Whether the operation was successful or not." )
+/*! Sets the emitter to use the specified animation asset Id.
+    @param animationAssetId The animation asset Id to use.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setAnimation, ConsoleBool, 3, 3, (animationAssetId))
 {
     return object->setAnimation( argv[2] );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getAnimation, const char*, 2, 2,    "() Gets the asset Id of the animation asset assigned to the emitter.\n"
-                                                                        "@return The asset Id of the animation asset assigned to the emitter or nothing if no animation is assigned." )
+/*! Gets the asset Id of the animation asset assigned to the emitter.
+    @return The asset Id of the animation asset assigned to the emitter or nothing if no animation is assigned.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getAnimation, ConsoleString, 2, 2, ())
 {
     return object->getAnimation();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setBlendMode, void, 3, 3,   "(blendMode) Sets whether to use render blending or not.\n"
-                                                                "@param blendMode Whether to use render blending or not.\n"
-                                                                "@return No return value." )
+/*! Sets whether to use render blending or not.
+    @param blendMode Whether to use render blending or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setBlendMode, ConsoleVoid, 3, 3, (blendMode))
 {
     object->setBlendMode( dAtob(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getBlendMode, bool, 2, 2,   "() Gets whether to use render blending or not.\n"
-                                                                "@return Whether to use render blending or not." )
+/*! Gets whether to use render blending or not.
+    @return Whether to use render blending or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getBlendMode, ConsoleBool, 2, 2, ())
 {
     return object->getBlendMode();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setSrcBlendFactor, void, 3, 3,  "(srcBlend) - Sets the source blend factory.\n"
-                                                                    "@param srcBlend The source blend factor.\n"
-                                                                    "@return No return Value.")
+/*! Sets the source blend factory.
+    @param srcBlend The source blend factor.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setSrcBlendFactor, ConsoleVoid, 3, 3, (srcBlend))
 {
     // Fetch source blend factor.
     const  GLenum blendFactor = SceneObject::getSrcBlendFactorEnum(argv[2]);
@@ -527,17 +633,21 @@ ConsoleMethod(ParticleAssetEmitter, setSrcBlendFactor, void, 3, 3,  "(srcBlend)
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getSrcBlendFactor, const char*, 2, 2,   "() - Gets the source render blend factor.\n"
-                                                                            "@return (srcBlend) The source render blend factor.")
+/*! Gets the source render blend factor.
+    @return (srcBlend) The source render blend factor.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getSrcBlendFactor, ConsoleString, 2, 2, ())
 {
    return SceneObject::getSrcBlendFactorDescription(object->getSrcBlendFactor());
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setDstBlendFactor, void, 3, 3,  "(dstBlend) - Sets the destination render blend factor.\n"
-                                                                    "@param dstBlend The destination render blend factor.\n"
-                                                                    "@return No return Value.")
+/*! Sets the destination render blend factor.
+    @param dstBlend The destination render blend factor.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setDstBlendFactor, ConsoleVoid, 3, 3, (dstBlend))
 {
     // Fetch destination blend factor.
     const GLenum blendFactor = SceneObject::getDstBlendFactorEnum(argv[2]);
@@ -547,26 +657,32 @@ ConsoleMethod(ParticleAssetEmitter, setDstBlendFactor, void, 3, 3,  "(dstBlend)
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getDstBlendFactor, const char*, 2, 2,   "() - Gets the destination render blend factor.\n"
-                                                                            "@return (dstBlend) The destination render blend factor.")
+/*! Gets the destination render blend factor.
+    @return (dstBlend) The destination render blend factor.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getDstBlendFactor, ConsoleString, 2, 2, ())
 {
    return SceneObject::getDstBlendFactorDescription(object->getDstBlendFactor());
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setAlphaTest, void, 3, 3,   "(float alpha) - Set the render alpha test threshold.\n"
-                                                                "@param alpha The alpha test threshold in the range of 0.0 to 1.0.  Less than zero to disable alpha testing.\n"
-                                                                "@return No return value." )
+/*! Set the render alpha test threshold.
+    @param alpha The alpha test threshold in the range of 0.0 to 1.0.  Less than zero to disable alpha testing.
+    @return No return value.
 
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setAlphaTest, ConsoleVoid, 3, 3, (float alpha))
 {
     object->setAlphaTest(dAtof(argv[2]));
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getAlphaTest, F32, 2, 2,    "() - Gets the render alpha test threshold.\n"
-                                                                "@return The render alpha test threshold in the range of 0.0f to 1.0.  Less than zero represents disabled alpha testing.")
+/*! Gets the render alpha test threshold.
+    @return The render alpha test threshold in the range of 0.0f to 1.0.  Less than zero represents disabled alpha testing.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getAlphaTest, ConsoleFloat, 2, 2, ())
 {
     return object->getAlphaTest();
 }
@@ -576,16 +692,20 @@ ConsoleMethod(ParticleAssetEmitter, getAlphaTest, F32, 2, 2,    "() - Gets the r
 /// Particle emitter fields.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getSelectableFieldCount, S32, 2, 2, "() Gets the number of available selectable fields.\n"
-                                                                        "@return The number of available selectable fields." )
+/*! Gets the number of available selectable fields.
+    @return The number of available selectable fields.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getSelectableFieldCount, ConsoleInt, 2, 2, ())
 {
     return object->getParticleFields().getFields().size();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getSelectableFieldName, const char*, 3, 3, "(fieldIndex) Gets the selectable field at the specified index.\n"
-                                                                                "@return The selectable field name at the specified index." )
+/*! Gets the selectable field at the specified index.
+    @return The selectable field name at the specified index.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getSelectableFieldName, ConsoleString, 3, 3, (fieldIndex))
 {
     // Fetch the field hash.
     const ParticleAssetFieldCollection::typeFieldHash& fieldHash = object->getParticleFields().getFields();
@@ -617,25 +737,31 @@ ConsoleMethod(ParticleAssetEmitter, getSelectableFieldName, const char*, 3, 3, "
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, selectField, bool, 3, 3,   "(fieldName) Select the specified field by its name.\n"
-                                                                "@param fieldName The field name to use for the selection.  Use an empty name to deselect to stop accidental changes.\n"
-                                                            "@return Whether the field was successfully selected or not.")
+/*! Select the specified field by its name.
+    @param fieldName The field name to use for the selection.  Use an empty name to deselect to stop accidental changes.
+    @return Whether the field was successfully selected or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, selectField, ConsoleBool, 3, 3, (fieldName))
 {
     return object->getParticleFields().selectField( argv[2] ) != NULL;
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, deselectField, void, 2, 2,  "() Deselect any selected field.  If no field is selected then nothing happens.\n"
-                                                                "@return No return value.")
+/*! Deselect any selected field.  If no field is selected then nothing happens.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, deselectField, ConsoleVoid, 2, 2, ())
 {
     object->getParticleFields().deselectField();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getSelectedField, bool, 2, 2,   "() Gets the selected field name or nothing if no field is selected.\n"
-                                                                    "@return The selected field name or nothing if no fields is selected.")
+/*! Gets the selected field name or nothing if no field is selected.
+    @return The selected field name or nothing if no fields is selected.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getSelectedField, ConsoleBool, 2, 2, ())
 {
     // Get the selected field.
     const ParticleAssetField* pParticleAssetField = object->getParticleFields().getSelectedField();
@@ -645,46 +771,56 @@ ConsoleMethod(ParticleAssetEmitter, getSelectedField, bool, 2, 2,   "() Gets the
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setSingleDataKey, S32, 3, 3,    "(value) Sets a single data-key at time-zero with the specified value.  All existing keys are cleared.\n"
-                                                                    "@param value The value to set the key to.\n"
-                                                                    "@return Returns the index of the new data-key (always zero) or -1 on failure.")
+/*! Sets a single data-key at time-zero with the specified value.  All existing keys are cleared.
+    @param value The value to set the key to.
+    @return Returns the index of the new data-key (always zero) or -1 on failure.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setSingleDataKey, ConsoleInt, 3, 3, (value))
 {
     return object->getParticleFields().setSingleDataKey( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, addDataKey, S32, 4, 4,  "(time, value) Add Data-Key to Graph.\n"
-                                                            "@param time The key time.\n"
-                                                            "@param value The value at specified time\n"
-                                                            "@return Returns the index of the new data-key or -1 on failure.")
+/*! Add Data-Key to Graph.
+    @param time The key time.
+    @param value The value at specified time
+    @return Returns the index of the new data-key or -1 on failure.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, addDataKey, ConsoleInt, 4, 4, (time, value))
 {
     return object->getParticleFields().addDataKey( dAtof(argv[2]), dAtof(argv[3]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, removeDataKey, bool, 3, 3,  "(keyIndex) Remove the data-key from the field.\n"
-                                                                "@param keyIndex The index of the data-key you want to remove.\n"
-                                                                "@return Whether the operation was successful or not.")
+/*! Remove the data-key from the field.
+    @param keyIndex The index of the data-key you want to remove.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, removeDataKey, ConsoleBool, 3, 3, (keyIndex))
 {
    return object->getParticleFields().removeDataKey( dAtoi(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, clearDataKeys, bool, 2, 2,  "() Clears all data-key(s) from the field.\n"
-                                                                "@return Whether the operation was successful or not.")
+/*! Clears all data-key(s) from the field.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, clearDataKeys, ConsoleBool, 2, 2, ())
 {
    return object->getParticleFields().clearDataKeys();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setDataKeyValue, bool, 4, 4,    "(keyIndex, value) Set data-key value for the field.\n"
-                                                                    "@param keyIndex The index of the key to be modified.\n"
-                                                                    "@param value The value to change the key to.\n"
-                                                                    "@return Whether the operation was successful or not.")
+/*! Set data-key value for the field.
+    @param keyIndex The index of the key to be modified.
+    @param value The value to change the key to.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setDataKeyValue, ConsoleBool, 4, 4, (keyIndex, value))
 {
    // Set Data Key.
    return object->getParticleFields().setDataKey( dAtoi(argv[2]), dAtof(argv[3]) );
@@ -692,8 +828,10 @@ ConsoleMethod(ParticleAssetEmitter, setDataKeyValue, bool, 4, 4,    "(keyIndex,
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getDataKeyCount, S32, 2, 2,     "() Gets the data-key count.\n"
-                                                                    "@return The number of data-keys in the currently selected field or -1 if no field is selected.")
+/*! Gets the data-key count.
+    @return The number of data-keys in the currently selected field or -1 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getDataKeyCount, ConsoleInt, 2, 2, ())
 {
    // Get Data Key Count.
    return object->getParticleFields().getDataKeyCount();
@@ -701,9 +839,11 @@ ConsoleMethod(ParticleAssetEmitter, getDataKeyCount, S32, 2, 2,     "() Gets the
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getDataKey, const char*, 3, 3,  "(keyIndex) Gets the data-key at the specified index from the field.\n"
-                                                                    "@param keyIndex The index of the data-key to be retrieved.\n"
-                                                                    "@return The data-key comprising both the time and value or nothing if the key is invalid.")
+/*! Gets the data-key at the specified index from the field.
+    @param keyIndex The index of the data-key to be retrieved.
+    @return The data-key comprising both the time and value or nothing if the key is invalid.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getDataKey, ConsoleString, 3, 3, (keyIndex))
 {
    // Fetch the key index.
    const S32 keyIndex = dAtoi(argv[2]);
@@ -727,74 +867,94 @@ ConsoleMethod(ParticleAssetEmitter, getDataKey, const char*, 3, 3,  "(keyIndex)
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getMinValue, F32, 2, 2,     "() Get the minimum value for the field.\n"
-                                                                "@return The minimum value for the field or always 0.0 if no field is selected." )
+/*! Get the minimum value for the field.
+    @return The minimum value for the field or always 0.0 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getMinValue, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getMinValue();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getMaxValue, F32, 2, 2,     "() Get the maximum value for the field.\n"
-                                                                "@return The maximum value for the field or always 0.0 if no field is selected." )
+/*! Get the maximum value for the field.
+    @return The maximum value for the field or always 0.0 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getMaxValue, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getMaxValue();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getMinTime, F32, 2, 2,      "() Get the minimum time for the field.\n"
-                                                                "@return The minimum time for the field or always 0.0 if no field is selected." )
+/*! Get the minimum time for the field.
+    @return The minimum time for the field or always 0.0 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getMinTime, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getMinTime();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getMaxTime, F32, 2, 2,      "() Get the maximum time for the field.\n"
-                                                                "@return The maximum time for the field or always 0.0 if no field is selected." )
+/*! Get the maximum time for the field.
+    @return The maximum time for the field or always 0.0 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getMaxTime, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getMaxTime();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getFieldValue, F32, 3, 3,   "(time) Get the fields' value at the specified time.\n"
-                                                                "@param time The time to sample the field value at.\n"
-                                                                "@return The fields' value at the specified time or always 0.0 if no field is selected.")
+/*! Get the fields' value at the specified time.
+    @param time The time to sample the field value at.
+    @return The fields' value at the specified time or always 0.0 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getFieldValue, ConsoleFloat, 3, 3, (time))
 {
    return object->getParticleFields().getFieldValue( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setRepeatTime, bool, 3, 3,  "(repeatTime) Sets the time period to repeat (cycle) the fields' values at.\n"
-                                                                "@return Whether the operation was successful or not.")
+/*! Sets the time period to repeat (cycle) the fields' values at.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setRepeatTime, ConsoleBool, 3, 3, (repeatTime))
 {
    return object->getParticleFields().setRepeatTime( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getRepeatTime, F32, 2, 2,   "() Gets the time period that the fields' value repeat (cycle) at.\n"
-                                                                "@return The time period that the fields' value repeat (cycle) at.\n" )
+/*! Gets the time period that the fields' value repeat (cycle) at.
+    @return The time period that the fields' value repeat (cycle) at.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getRepeatTime, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getRepeatTime();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, setValueScale, bool, 3, 3,  "(valueScale) Set the scaling of field values retrieved from the field.  This does not alter the actual data-key values.\n"
-                                                                "@param valueScale The scale for field values retrieved from the field.\n"
-                                                                "@return Whether the operation was successful or not.")
+/*! Set the scaling of field values retrieved from the field.  This does not alter the actual data-key values.
+    @param valueScale The scale for field values retrieved from the field.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setValueScale, ConsoleBool, 3, 3, (valueScale))
 {
    return object->getParticleFields().setValueScale( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAssetEmitter, getValueScale, F32, 2, 2,   "() Gets the scaling of field values' retrieved from the field.\n"
-                                                                "@return The scaling of field values' retrieved from the field." )
+/*! Gets the scaling of field values' retrieved from the field.
+    @return The scaling of field values' retrieved from the field.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getValueScale, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getValueScale();
 }
+
+ConsoleMethodGroupEndWithDocs(ParticleAssetEmitter)

+ 2 - 2
engine/source/2d/assets/ParticleAssetField.cc

@@ -543,7 +543,7 @@ void ParticleAssetField::onTamlCustomWrite( TamlCustomNode* pCustomNode )
         const DataKey& dataKey = mDataKeys[index];
 
         // Add a key node.
-        TamlCustomNode* pKeyNode = pCustomNode->addNode( particleAssetFieldDataKeyName );
+        TamlCustomNode* pKeyNode = pAssetField->addNode( particleAssetFieldDataKeyName );
 
         // Add key fields.
         pKeyNode->addField( particleAssetFieldDataKeyTimeName, dataKey.mTime );
@@ -773,4 +773,4 @@ void ParticleAssetField::WriteCustomTamlSchema( const AbstractClassRep* pClassRe
     pFieldRepeatTime->SetAttribute( "name", particleAssetFieldRepeatTimeName );
     pFieldRepeatTime->SetAttribute( "type", "xs:float" );
     pFieldComplexTypeElement->LinkEndChild( pFieldRepeatTime );
-}
+}

+ 1 - 1
engine/source/2d/assets/ParticleAssetField.h

@@ -103,7 +103,7 @@ public:
     F32 getDataKeyTime( const U32 index ) const;
     inline U32 getDataKeyCount( void ) const { return (U32)mDataKeys.size(); }
     const DataKey& getDataKey( const U32 index ) const;
-    inline F32 getFieldValue( F32 time ) const;
+    F32 getFieldValue( F32 time ) const;
 
     static F32 calculateFieldBV( const ParticleAssetField& base, const ParticleAssetField& variation, const F32 effectAge, const bool modulate = false, const F32 modulo = 0.0f );
     static F32 calculateFieldBVE( const ParticleAssetField& base, const ParticleAssetField& variation, const ParticleAssetField& effect, const F32 effectAge, const bool modulate = false, const F32 modulo = 0.0f );

+ 158 - 88
engine/source/2d/assets/ParticleAsset_ScriptBinding.h

@@ -20,42 +20,52 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
+ConsoleMethodGroupBeginWithDocs(ParticleAsset, AssetBase)
+
 //-----------------------------------------------------------------------------
 /// Particle asset accessors.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, setLifeMode, void, 3, 3,   "(lifeMode) Sets the life-mode of the particle effect.\n"
-                                                        "@param lifeMode The life-mode of the particle effect (either INFINITE, CYCLE, KILL or STOP.\n"
-                                                        "A life-mode of INFINITE causes the particle effect to last forever.\n"
-                                                        "A life-mode of CYCLE causes the particle effect to restart playing when its specified 'lifetime' has been reached.\n"
-                                                        "A life-mode of KILL causes the particle effect to be deleted when its specified 'lifetime' has been reached.\n"
-                                                        "A life-mode of STOP causes the particle effect to stop playing (but not be deleted) when its specified lifetime has been reached.\n"
-                                                        "@return No return value.")
+/*! Sets the life-mode of the particle effect.
+    @param lifeMode The life-mode of the particle effect (either INFINITE, CYCLE, KILL or STOP.
+    A life-mode of INFINITE causes the particle effect to last forever.
+    A life-mode of CYCLE causes the particle effect to restart playing when its specified 'lifetime' has been reached.
+    A life-mode of KILL causes the particle effect to be deleted when its specified 'lifetime' has been reached.
+    A life-mode of STOP causes the particle effect to stop playing (but not be deleted) when its specified lifetime has been reached.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAsset, setLifeMode, ConsoleVoid, 3, 3, (lifeMode))
 {
     object->setLifeMode( ParticleAsset::getParticleAssetLifeModeEnum( argv[2] ) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( ParticleAsset, getLifeMode, const char*, 2, 2,   "() - Gets the life-mode of the particle effect.\n"
-                                                                "@return The life-mode of the particle effect." )
+/*! Gets the life-mode of the particle effect.
+    @return The life-mode of the particle effect.
+*/
+ConsoleMethodWithDocs( ParticleAsset, getLifeMode, ConsoleString, 2, 2, ())
 {
     return ParticleAsset::getParticleAssetLifeModeDescription( object->getLifeMode() );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, setLifetime, void, 3, 3,   "(lifeTime) Sets the lifetime of the particle effect.\n"
-                                                        "@param lifeTime The lifetime of the particle effect.  This is used according to the 'lifeMode' setting.\n"
-                                                        "@return No return value." )
+/*! Sets the lifetime of the particle effect.
+    @param lifeTime The lifetime of the particle effect.  This is used according to the 'lifeMode' setting.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAsset, setLifetime, ConsoleVoid, 3, 3, (lifeTime))
 {
     object->setLifetime( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getLifetime, F32, 2, 2,    "() Gets the lifetime of the particle effect.\n"
-                                                        "@return The lifetime of the particle effect." )
+/*! Gets the lifetime of the particle effect.
+    @return The lifetime of the particle effect.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getLifetime, ConsoleFloat, 2, 2, ())
 {
     return object->getLifetime();
 }
@@ -64,16 +74,20 @@ ConsoleMethod(ParticleAsset, getLifetime, F32, 2, 2,    "() Gets the lifetime of
 /// Particle asset fields.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getSelectableFieldCount, S32, 2, 2,    "() Gets the number of available selectable fields.\n"
-                                                                    "@return The number of available selectable fields." )
+/*! Gets the number of available selectable fields.
+    @return The number of available selectable fields.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getSelectableFieldCount, ConsoleInt, 2, 2, ())
 {
     return object->getParticleFields().getFields().size();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getSelectableFieldName, const char*, 3, 3, "(fieldIndex) Gets the selectable field at the specified index.\n"
-                                                                        "@return The selectable field name at the specified index." )
+/*! Gets the selectable field at the specified index.
+    @return The selectable field name at the specified index.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getSelectableFieldName, ConsoleString, 3, 3, (fieldIndex))
 {
     // Fetch the field hash.
     const ParticleAssetFieldCollection::typeFieldHash& fieldHash = object->getParticleFields().getFields();
@@ -105,25 +119,31 @@ ConsoleMethod(ParticleAsset, getSelectableFieldName, const char*, 3, 3, "(fieldI
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, selectField, bool, 3, 3,   "(fieldName) Select the specified field by its name.\n"
-                                                        "@param fieldName The field name to use for the selection.  Use an empty name to deselect to stop accidental changes.\n"
-                                                        "@return Whether the field was successfully selected or not.")
+/*! Select the specified field by its name.
+    @param fieldName The field name to use for the selection.  Use an empty name to deselect to stop accidental changes.
+    @return Whether the field was successfully selected or not.
+*/
+ConsoleMethodWithDocs(ParticleAsset, selectField, ConsoleBool, 3, 3, (fieldName))
 {
     return object->getParticleFields().selectField( argv[2] ) != NULL;
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, deselectField, void, 2, 2, "() Deselect any selected field.  If no field is selected then nothing happens.\n"
-                                                        "@return No return value.")
+/*! Deselect any selected field.  If no field is selected then nothing happens.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAsset, deselectField, ConsoleVoid, 2, 2, ())
 {
     object->getParticleFields().deselectField();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getSelectedField, bool, 2, 2,  "() Gets the selected field name or nothing if no field is selected.\n"
-                                                            "@return The selected field name or nothing if no fields is selected.")
+/*! Gets the selected field name or nothing if no field is selected.
+    @return The selected field name or nothing if no fields is selected.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getSelectedField, ConsoleBool, 2, 2, ())
 {
     // Get the selected field.
     const ParticleAssetField* pParticleAssetField = object->getParticleFields().getSelectedField();
@@ -133,46 +153,56 @@ ConsoleMethod(ParticleAsset, getSelectedField, bool, 2, 2,  "() Gets the selecte
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, setSingleDataKey, S32, 3, 3,   "(value) Sets a single data-key at time-zero with the specified value.  All existing keys are cleared.\n"
-                                                            "@param value The value to set the key to.\n"
-                                                            "@return Returns the index of the new data-key (always zero) or -1 on failure.")
+/*! Sets a single data-key at time-zero with the specified value.  All existing keys are cleared.
+    @param value The value to set the key to.
+    @return Returns the index of the new data-key (always zero) or -1 on failure.
+*/
+ConsoleMethodWithDocs(ParticleAsset, setSingleDataKey, ConsoleInt, 3, 3, (value))
 {
     return object->getParticleFields().setSingleDataKey( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, addDataKey, S32, 4, 4, "(time, value) Add Data-Key to Graph.\n"
-                                                    "@param time The key time.\n"
-                                                    "@param value The value at specified time\n"
-                                                    "@return Returns the index of the new data-key or -1 on failure.")
+/*! Add Data-Key to Graph.
+    @param time The key time.
+    @param value The value at specified time
+    @return Returns the index of the new data-key or -1 on failure.
+*/
+ConsoleMethodWithDocs(ParticleAsset, addDataKey, ConsoleInt, 4, 4, (time, value))
 {
     return object->getParticleFields().addDataKey( dAtof(argv[2]), dAtof(argv[3]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, removeDataKey, bool, 3, 3, "(keyIndex) Remove the data-key from the field.\n"
-                                                        "@param keyIndex The index of the data-key you want to remove.\n"
-                                                        "@return Whether the operation was successful or not.")
+/*! Remove the data-key from the field.
+    @param keyIndex The index of the data-key you want to remove.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAsset, removeDataKey, ConsoleBool, 3, 3, (keyIndex))
 {
    return object->getParticleFields().removeDataKey( dAtoi(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, clearDataKeys, bool, 2, 2,     "() Clears all data-key(s) from the field.\n"
-                                                            "@return Whether the operation was successful or not.")
+/*! Clears all data-key(s) from the field.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAsset, clearDataKeys, ConsoleBool, 2, 2, ())
 {
    return object->getParticleFields().clearDataKeys();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, setDataKeyValue, bool, 4, 4, "(keyIndex, value) Set data-key value for the field.\n"
-                                                          "@param keyIndex The index of the key to be modified.\n"
-                                                          "@param value The value to change the key to.\n"
-                                                          "@return Whether the operation was successful or not.")
+/*! Set data-key value for the field.
+    @param keyIndex The index of the key to be modified.
+    @param value The value to change the key to.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAsset, setDataKeyValue, ConsoleBool, 4, 4, (keyIndex, value))
 {
    // Set Data Key.
    return object->getParticleFields().setDataKey( dAtoi(argv[2]), dAtof(argv[3]) );
@@ -180,8 +210,10 @@ ConsoleMethod(ParticleAsset, setDataKeyValue, bool, 4, 4, "(keyIndex, value) Set
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getDataKeyCount, S32, 2, 2,    "() Gets the data-key count.\n"
-                                                            "@return The number of data-keys in the currently selected field or -1 if no field is selected.")
+/*! Gets the data-key count.
+    @return The number of data-keys in the currently selected field or -1 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getDataKeyCount, ConsoleInt, 2, 2, ())
 {
    // Get Data Key Count.
    return object->getParticleFields().getDataKeyCount();
@@ -189,9 +221,11 @@ ConsoleMethod(ParticleAsset, getDataKeyCount, S32, 2, 2,    "() Gets the data-ke
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getDataKey, const char*, 3, 3, "(keyIndex) Gets the data-key at the specified index from the field.\n"
-                                                            "@param keyIndex The index of the data-key to be retrieved.\n"
-                                                            "@return The data-key comprising both the time and value or nothing if the key is invalid.")
+/*! Gets the data-key at the specified index from the field.
+    @param keyIndex The index of the data-key to be retrieved.
+    @return The data-key comprising both the time and value or nothing if the key is invalid.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getDataKey, ConsoleString, 3, 3, (keyIndex))
 {
    // Fetch the key index.
    const S32 keyIndex = dAtoi(argv[2]);
@@ -215,74 +249,92 @@ ConsoleMethod(ParticleAsset, getDataKey, const char*, 3, 3, "(keyIndex) Gets the
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getMinValue, F32, 2, 2,    "() Get the minimum value for the field.\n"
-                                                        "@return The minimum value for the field or always 0.0 if no field is selected." )
+/*! Get the minimum value for the field.
+    @return The minimum value for the field or always 0.0 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getMinValue, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getMinValue();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getMaxValue, F32, 2, 2,    "() Get the maximum value for the field.\n"
-                                                        "@return The maximum value for the field or always 0.0 if no field is selected." )
+/*! Get the maximum value for the field.
+    @return The maximum value for the field or always 0.0 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getMaxValue, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getMaxValue();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getMinTime, F32, 2, 2,     "() Get the minimum time for the field.\n"
-                                                        "@return The minimum time for the field or always 0.0 if no field is selected." )
+/*! Get the minimum time for the field.
+    @return The minimum time for the field or always 0.0 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getMinTime, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getMinTime();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getMaxTime, F32, 2, 2,     "() Get the maximum time for the field.\n"
-                                                        "@return The maximum time for the field or always 0.0 if no field is selected." )
+/*! Get the maximum time for the field.
+    @return The maximum time for the field or always 0.0 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getMaxTime, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getMaxTime();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getFieldValue, F32, 3, 3,  "(time) Get the fields' value at the specified time.\n"
-                                                        "@param time The time to sample the field value at.\n"
-                                                        "@return The fields' value at the specified time or always 0.0 if no field is selected.")
+/*! Get the fields' value at the specified time.
+    @param time The time to sample the field value at.
+    @return The fields' value at the specified time or always 0.0 if no field is selected.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getFieldValue, ConsoleFloat, 3, 3, (time))
 {
    return object->getParticleFields().getFieldValue( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, setRepeatTime, bool, 3, 3, "(repeatTime) Sets the time period to repeat (cycle) the fields' values at.\n"
-                                                        "@return Whether the operation was successful or not.")
+/*! Sets the time period to repeat (cycle) the fields' values at.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAsset, setRepeatTime, ConsoleBool, 3, 3, (repeatTime))
 {
    return object->getParticleFields().setRepeatTime( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getRepeatTime, F32, 2, 2,  "() Gets the time period that the fields' value repeat (cycle) at.\n"
-                                                        "@return The time period that the fields' value repeat (cycle) at.\n" )
+/*! Gets the time period that the fields' value repeat (cycle) at.
+    @return The time period that the fields' value repeat (cycle) at.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getRepeatTime, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getRepeatTime();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, setValueScale, bool, 3, 3, "(valueScale) Set the scaling of field values retrieved from the field.  This does not alter the actual data-key values.\n"
-                                                        "@param valueScale The scale for field values retrieved from the field.\n"
-                                                        "@return Whether the operation was successful or not.")
+/*! Set the scaling of field values retrieved from the field.  This does not alter the actual data-key values.
+    @param valueScale The scale for field values retrieved from the field.
+    @return Whether the operation was successful or not.
+*/
+ConsoleMethodWithDocs(ParticleAsset, setValueScale, ConsoleBool, 3, 3, (valueScale))
 {
    return object->getParticleFields().setValueScale( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getValueScale, F32, 2, 2,  "() Gets the scaling of field values' retrieved from the field.\n"
-                                                        "@return The scaling of field values' retrieved from the field." )
+/*! Gets the scaling of field values' retrieved from the field.
+    @return The scaling of field values' retrieved from the field.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getValueScale, ConsoleFloat, 2, 2, ())
 {
    return object->getParticleFields().getValueScale();
 }
@@ -291,8 +343,10 @@ ConsoleMethod(ParticleAsset, getValueScale, F32, 2, 2,  "() Gets the scaling of
 /// Emitter asset methods.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, createEmitter, const char*, 2, 2,  "() - Creates and add a new emitter.\n"
-                                                                "@return The new emitter that was added or 0 if failed.")
+/*! Creates and add a new emitter.
+    @return The new emitter that was added or 0 if failed.
+*/
+ConsoleMethodWithDocs(ParticleAsset, createEmitter, ConsoleString, 2, 2, ())
 {
     // Find the emitter.
     ParticleAssetEmitter* pEmitter = object->createEmitter();
@@ -302,9 +356,11 @@ ConsoleMethod(ParticleAsset, createEmitter, const char*, 2, 2,  "() - Creates an
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, addEmitter, bool, 3, 3,    "(emitterId) - Adds an existing emitter.\n"
-                                                        "@param emitterId The emitter to add.\n"
-                                                        "@return On success it returns the ID of the emitter, or 0 if failed.")
+/*! Adds an existing emitter.
+    @param emitterId The emitter to add.
+    @return On success it returns the ID of the emitter, or 0 if failed.
+*/
+ConsoleMethodWithDocs(ParticleAsset, addEmitter, ConsoleBool, 3, 3, (emitterId))
 {
     // Find the emitter.
     ParticleAssetEmitter* pEmitter = Sim::findObject<ParticleAssetEmitter>( argv[2] );
@@ -322,9 +378,11 @@ ConsoleMethod(ParticleAsset, addEmitter, bool, 3, 3,    "(emitterId) - Adds an e
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, removeEmitter, bool, 3, 4, "(emitterId, [bool deleteEmitter]) - Removes an emitter.\n"
-                                                        "@param emitterId The emitter to remove.\n"
-                                                        "@return No return value.")
+/*! Removes an emitter.
+    @param emitterId The emitter to remove.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAsset, removeEmitter, ConsoleBool, 3, 4, (emitterId, [bool deleteEmitter]))
 {
     // Find the emitter.
     ParticleAssetEmitter* pEmitter = Sim::findObject<ParticleAssetEmitter>( argv[2] );
@@ -349,8 +407,10 @@ ConsoleMethod(ParticleAsset, removeEmitter, bool, 3, 4, "(emitterId, [bool delet
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, clearEmitters, void, 2, 2, "() Clear all the emitters.\n"
-                                                        "@return No return Value.")
+/*! Clear all the emitters.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(ParticleAsset, clearEmitters, ConsoleVoid, 2, 2, ())
 {
    // Clear Emitters.
    object->clearEmitters();
@@ -358,8 +418,10 @@ ConsoleMethod(ParticleAsset, clearEmitters, void, 2, 2, "() Clear all the emitte
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getEmitterCount, S32, 2, 2,    "() Gets the emitter count.\n"
-                                                            "@return Returns the number of emitters as an integer.")
+/*! Gets the emitter count.
+    @return Returns the number of emitters as an integer.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getEmitterCount, ConsoleInt, 2, 2, ())
 {
    // Get Emitter Count.
    return object->getEmitterCount();
@@ -367,9 +429,11 @@ ConsoleMethod(ParticleAsset, getEmitterCount, S32, 2, 2,    "() Gets the emitter
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, getEmitter, S32, 3, 3,     "(emitterIndex) Gets the emitter at the specified index.\n"
-                                                        "@param emitterIndex The index for the desired emitter\n"
-                                                        "@return The emitter or 0 if not found.")
+/*! Gets the emitter at the specified index.
+    @param emitterIndex The index for the desired emitter
+    @return The emitter or 0 if not found.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getEmitter, ConsoleInt, 3, 3, (emitterIndex))
 {
    // Get the emitter.
    ParticleAssetEmitter* pEmitter = object->getEmitter( dAtoi(argv[2]) );
@@ -379,9 +443,11 @@ ConsoleMethod(ParticleAsset, getEmitter, S32, 3, 3,     "(emitterIndex) Gets the
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, findEmitter, S32, 3, 3,    "(emitterName) Finds the emitter by its name.\n"
-                                                        "@param emitterName The name of the desired emitter.\n"
-                                                        "@return The emitter or 0 if not found.")
+/*! Finds the emitter by its name.
+    @param emitterName The name of the desired emitter.
+    @return The emitter or 0 if not found.
+*/
+ConsoleMethodWithDocs(ParticleAsset, findEmitter, ConsoleInt, 3, 3, (emitterName))
 {
    // Find the emitter.
    ParticleAssetEmitter* pEmitter = object->findEmitter( argv[2] );
@@ -391,11 +457,15 @@ ConsoleMethod(ParticleAsset, findEmitter, S32, 3, 3,    "(emitterName) Finds the
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticleAsset, moveEmitter, void, 4, 4, "(fromEmitterIndex, toEmitterIndex) Moves the emitter order.\n"
-              "@param fromEmitterIndex The source index of the emitter to move.\n"
-              "@param toEmitterIndex The destination index to move the emitter to.\n"
-              "@return No return value.")
+/*! Moves the emitter order.
+    @param fromEmitterIndex The source index of the emitter to move.
+    @param toEmitterIndex The destination index to move the emitter to.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticleAsset, moveEmitter, ConsoleVoid, 4, 4, (fromEmitterIndex, toEmitterIndex))
 {
    // Move Emitter Object.
    object->moveEmitter( dAtoi(argv[2]), dAtoi(argv[3]) );
 }
+
+ConsoleMethodGroupEndWithDocs(ParticleAsset)

+ 14 - 7
engine/source/2d/controllers/AmbientForceController_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,10 +20,14 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AmbientForceController, setForce, void, 3, 4,     "(float x, float y) - Sets the ambient force to use.\n"
-                                                                "@param x The component of the ambient force along the horizontal (world) axis.\n"
-                                                                "@param y The component of the ambient force along the vertical (world) axis.\n"
-                                                                "@return No return value.")
+ConsoleMethodGroupBeginWithDocs(AmbientForceController, GroupedSceneController)
+
+/*! Sets the ambient force to use.
+    @param x The component of the ambient force along the horizontal (world) axis.
+    @param y The component of the ambient force along the vertical (world) axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(AmbientForceController, setForce, ConsoleVoid, 3, 4, (float x, float y))
 {
     // The new force.
     b2Vec2 force;
@@ -51,9 +55,12 @@ ConsoleMethod(AmbientForceController, setForce, void, 3, 4,     "(float x, float
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AmbientForceController, getForce, const char*, 2, 2, "() Gets the ambient force being used.\n"
-                                                                    "@return The ambient force being used.")
+/*! Gets the ambient force being used.
+    @return The ambient force being used.
+*/
+ConsoleMethodWithDocs(AmbientForceController, getForce, ConsoleString, 2, 2, ())
 {
     return object->getForce().scriptThis();
 }
 
+ConsoleMethodGroupEndWithDocs(AmbientForceController)

+ 3 - 1
engine/source/2d/controllers/BuoyancyController_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,4 +20,6 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
+ConsoleMethodGroupBeginWithDocs(BuoyancyController, PickingSceneController)
 
+ConsoleMethodGroupEndWithDocs(BuoyancyController)

+ 67 - 36
engine/source/2d/controllers/PointForceController_ScriptBinding.h

@@ -20,10 +20,14 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, setPosition, void, 3, 4,    "(float x, float y) - Sets the position of the force center.\n"
-                                                                "@param x The position along the horizontal axis.\n"
-                                                                "@param y The position along the vertical axis.\n"
-                                                                "@return No return value.")
+ConsoleMethodGroupBeginWithDocs(PointForceController, PickingSceneController)
+
+/*! Sets the position of the force center.
+    @param x The position along the horizontal axis.
+    @param y The position along the vertical axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(PointForceController, setPosition, ConsoleVoid, 3, 4, (float x, float y))
 {
     // The new position.
     b2Vec2 position;
@@ -52,8 +56,10 @@ ConsoleMethod(PointForceController, setPosition, void, 3, 4,    "(float x, float
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, PointForceController, const char*, 2, 2,    "() Gets the position of the force center.\n"
-                                                                                "@return (float x/float y) The x and y (horizontal and vertical) position of the force center.")
+/*! Gets the position of the force center.
+    @return (float x/float y) The x and y (horizontal and vertical) position of the force center.
+*/
+ConsoleMethodWithDocs(PointForceController, getPosition, ConsoleString, 2, 2, ())
 {
     // Get position.
     return object->getPosition().scriptThis();
@@ -61,94 +67,116 @@ ConsoleMethod(PointForceController, PointForceController, const char*, 2, 2,
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, setRadius, void, 3, 3,       "(radius) - Sets the radius of the point force to use.\n"
-                                                                "@param radius The radius of the point force to use.\n"
-                                                                "@return No return value.")
+/*! Sets the radius of the point force to use.
+    @param radius The radius of the point force to use.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(PointForceController, setRadius, ConsoleVoid, 3, 3, (radius))
 {
     object->setRadius( dAtof(argv[2]) );
 } 
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, getRadius, F32, 2, 2,        "() Gets the radius of the point force being used.\n"
-                                                                "@return The radius of the point force being used.")
+/*! Gets the radius of the point force being used.
+    @return The radius of the point force being used.
+*/
+ConsoleMethodWithDocs(PointForceController, getRadius, ConsoleFloat, 2, 2, ())
 {
     return object->getRadius();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, setForce, void, 3, 3,       "(force) - Sets the point force to use.\n"
-                                                                "@param force The point force to use.\n"
-                                                                "@return No return value.")
+/*! Sets the point force to use.
+    @param force The point force to use.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(PointForceController, setForce, ConsoleVoid, 3, 3, (force))
 {
     object->setForce( dAtof(argv[2]) );
 } 
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, getForce, F32, 2, 2,        "() Gets the point force being used.\n"
-                                                                "@return The point force being used.")
+/*! Gets the point force being used.
+    @return The point force being used.
+*/
+ConsoleMethodWithDocs(PointForceController, getForce, ConsoleFloat, 2, 2, ())
 {
     return object->getForce();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, setLinearDrag, void, 3, 3,  "(linearDrag) - Sets the linear drag coefficient (0.0 to 1.0).\n"
-                                                                "@param linearDrag The linear drag coefficient\n"
-                                                                "@return No return value.")
+/*! Sets the linear drag coefficient (0.0 to 1.0).
+    @param linearDrag The linear drag coefficient
+    @return No return value.
+*/
+ConsoleMethodWithDocs(PointForceController, setLinearDrag, ConsoleVoid, 3, 3, (linearDrag))
 {
     object->setLinearDrag( dAtof(argv[2]) );
 } 
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, getLinearDrag, F32, 2, 2,   "() Gets the linear drag coefficient.\n"
-                                                                "@return The linear drag coefficient.")
+/*! Gets the linear drag coefficient.
+    @return The linear drag coefficient.
+*/
+ConsoleMethodWithDocs(PointForceController, getLinearDrag, ConsoleFloat, 2, 2, ())
 {
     return object->getLinearDrag();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, setAngularDrag, void, 3, 3, "(angularDrag) - Sets the angular drag coefficient (0.0 to 1.0).\n"
-                                                                "@param angularDrag The angular drag coefficient\n"
-                                                                "@return No return value.")
+/*! Sets the angular drag coefficient (0.0 to 1.0).
+    @param angularDrag The angular drag coefficient
+    @return No return value.
+*/
+ConsoleMethodWithDocs(PointForceController, setAngularDrag, ConsoleVoid, 3, 3, (angularDrag))
 {
     object->setAngularDrag( dAtof(argv[2]) );
 } 
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, getAngularDrag, F32, 2, 2,  "() Gets the angular drag coefficient.\n"
-                                                                "@return The angular drag coefficient.")
+/*! Gets the angular drag coefficient.
+    @return The angular drag coefficient.
+*/
+ConsoleMethodWithDocs(PointForceController, getAngularDrag, ConsoleFloat, 2, 2, ())
 {
     return object->getAngularDrag();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, setNonLinear, void, 3, 3,   "(nonLinear) - Sets whether to apply the force non-linearly (using the inverse square law) or linearly.\n"
-                                                                "@param nonLinear whether to apply the force non-linearly (using the inverse square law) or linearly.\n"
-                                                                "@return No return value.")
+/*! Sets whether to apply the force non-linearly (using the inverse square law) or linearly.
+    @param nonLinear whether to apply the force non-linearly (using the inverse square law) or linearly.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(PointForceController, setNonLinear, ConsoleVoid, 3, 3, (nonLinear))
 {
     object->setNonLinear( dAtob(argv[2]) );
 } 
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, getNonLinear, bool, 2, 2,  "() Gets whether to apply the force non-linearly (using the inverse square law) or linearly.\n"
-                                                                "@return Whether to apply the force non-linearly (using the inverse square law) or linearly.")
+/*! Gets whether to apply the force non-linearly (using the inverse square law) or linearly.
+    @return Whether to apply the force non-linearly (using the inverse square law) or linearly.
+*/
+ConsoleMethodWithDocs(PointForceController, getNonLinear, ConsoleBool, 2, 2, ())
 {
     return object->getNonLinear();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, setTrackedObject, void, 3, 3,   "(sceneObject) - Sets a scene object from which the position will be tracked.\n"
-                                                                    "@param sceneObject The scene object from which the position will be tracked.  An empty string will stop tracking.\n"
-                                                                    "@return No return value.")
+/*! Sets a scene object from which the position will be tracked.
+    @param sceneObject The scene object from which the position will be tracked.  An empty string will stop tracking.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(PointForceController, setTrackedObject, ConsoleVoid, 3, 3, (sceneObject))
 {
     // Find the scene object.
     SceneObject* pSceneObject = Sim::findObject<SceneObject>( argv[2] );
@@ -158,8 +186,10 @@ ConsoleMethod(PointForceController, setTrackedObject, void, 3, 3,   "(sceneObjec
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PointForceController, getTrackedObject, const char*, 2, 2,    "() - Gets the scene object from which the position will be tracked.\n"
-                                                                            "@return The scene object from which the position will be tracked or an empty string if nothing is being tracked.")
+/*! Gets the scene object from which the position will be tracked.
+    @return The scene object from which the position will be tracked or an empty string if nothing is being tracked.
+*/
+ConsoleMethodWithDocs(PointForceController, getTrackedObject, ConsoleString, 2, 2, ())
 {
     // Fetch the scene object.
     SceneObject* pSceneObject = object->getTrackedObject();
@@ -167,3 +197,4 @@ ConsoleMethod(PointForceController, getTrackedObject, const char*, 2, 2,    "()
     return pSceneObject == NULL ? NULL : pSceneObject->getIdString();
 } 
 
+ConsoleMethodGroupEndWithDocs(PointForceController)

+ 24 - 12
engine/source/2d/controllers/core/PickingSceneController_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,9 +20,13 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PickingSceneController, setControlGroups, void, 3, 2 + MASK_BITCOUNT, "(groups$) - Sets the control group(s).\n"
-                                                                                    "@param groups A list of groups that are affected by the controller.\n"
-                                                                                    "@return No return value.")
+ConsoleMethodGroupBeginWithDocs(PickingSceneController, SimObject)
+
+/*! Sets the control group(s).
+    @param groups A list of groups that are affected by the controller.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(PickingSceneController, setControlGroups, ConsoleVoid, 3, 2 + MASK_BITCOUNT, (groups$))
 {
     // The mask.
     U32 mask = 0;
@@ -80,8 +84,10 @@ ConsoleMethod(PickingSceneController, setControlGroups, void, 3, 2 + MASK_BITCOU
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PickingSceneController, getControlGroups, const char*, 2, 2,  "() - Gets the control groups.\n"
-                                                                            "@return (controlGroups) A list of groups that are affected by the controller.")
+/*! Gets the control groups.
+    @return (controlGroups) A list of groups that are affected by the controller.
+*/
+ConsoleMethodWithDocs(PickingSceneController, getControlGroups, ConsoleString, 2, 2, ())
 {
     U32 mask = object->getControlGroupMask();
 
@@ -104,9 +110,11 @@ ConsoleMethod(PickingSceneController, getControlGroups, const char*, 2, 2,  "()
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PickingSceneController, setControlLayers, void, 3, 2 + MASK_BITCOUNT, "(layers$) - Sets the control layers(s).\n"
-                                                                                    "@param layers A list of layers that are affected by the controller.\n"
-                                                                                    "@return No return value.")
+/*! Sets the control layers(s).
+    @param layers A list of layers that are affected by the controller.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(PickingSceneController, setControlLayers, ConsoleVoid, 3, 2 + MASK_BITCOUNT, (layers$))
 {
     // The mask.
     U32 mask = 0;
@@ -164,8 +172,10 @@ ConsoleMethod(PickingSceneController, setControlLayers, void, 3, 2 + MASK_BITCOU
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(PickingSceneController, getControlLayers, const char*, 2, 2,  "() - Gets the control layers.\n"
-                                                                            "@return (controlLayers) A list of layers that are affected by the controller.")
+/*! Gets the control layers.
+    @return (controlLayers) A list of layers that are affected by the controller.
+*/
+ConsoleMethodWithDocs(PickingSceneController, getControlLayers, ConsoleString, 2, 2, ())
 {
     U32 mask = object->getControlLayerMask();
 
@@ -184,4 +194,6 @@ ConsoleMethod(PickingSceneController, getControlLayers, const char*, 2, 2,  "()
     }
 
     return bits;
-}
+}
+
+ConsoleMethodGroupEndWithDocs(PickingSceneController)

+ 70 - 37
engine/source/2d/core/RenderProxy_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,18 +20,24 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, isStaticFrameProvider, bool, 2, 2,    "() - Gets whether the render-proxy is in static or dynamic (animated)mode.\n"
-                                                        "@return Returns whether the render-proxy is in static or dynamic (animated)mode.")
+ConsoleMethodGroupBeginWithDocs(RenderProxy, SimObject)
+
+/*! Gets whether the render-proxy is in static or dynamic (animated)mode.
+    @return Returns whether the render-proxy is in static or dynamic (animated)mode.
+*/
+ConsoleMethodWithDocs(RenderProxy, isStaticFrameProvider, ConsoleBool, 2, 2, ())
 {
     return object->isStaticFrameProvider();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, setImage, bool, 3, 4,    "(string imageAssetId, [int frame]) - Sets imageAssetId/Frame.\n"
-                                                    "@param imageAssetId The image asset Id to display\n"
-                                                    "@param frame The frame of the image to display\n"
-                                                    "@return Returns true on success.")
+/*! Sets imageAssetId/Frame.
+    @param imageAssetId The image asset Id to display
+    @param frame The frame of the image to display
+    @return Returns true on success.
+*/
+ConsoleMethodWithDocs(RenderProxy, setImage, ConsoleBool, 3, 4, (string imageAssetId, [int frame]))
 {
     // Fetch image asset Id.
     const char* pImageAssetId = argv[2];
@@ -45,8 +51,10 @@ ConsoleMethod(RenderProxy, setImage, bool, 3, 4,    "(string imageAssetId, [int
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, getImage, const char*, 2, 2, "() - Gets current image asset Id.\n"
-                                                        "@return (string imageAssetId) The image being displayed")
+/*! Gets current image asset Id.
+    @return (string imageAssetId) The image being displayed
+*/
+ConsoleMethodWithDocs(RenderProxy, getImage, ConsoleString, 2, 2, ())
 {
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
@@ -62,9 +70,11 @@ ConsoleMethod(RenderProxy, getImage, const char*, 2, 2, "() - Gets current image
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, setImageFrame, bool, 3, 3,   "(int frame) - Sets image frame.\n"
-                                                        "@param frame The frame to display\n"
-                                                        "@return Returns true on success.")
+/*! Sets image frame.
+    @param frame The frame to display
+    @return Returns true on success.
+*/
+ConsoleMethodWithDocs(RenderProxy, setImageFrame, ConsoleBool, 3, 3, (int frame))
 {
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
@@ -80,8 +90,10 @@ ConsoleMethod(RenderProxy, setImageFrame, bool, 3, 3,   "(int frame) - Sets imag
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, getImageFrame, S32, 2, 2,    "() - Gets current image Frame.\n"
-                                                        "@return (int frame) The frame currently being displayed")
+/*! Gets current image Frame.
+    @return (int frame) The frame currently being displayed
+*/
+ConsoleMethodWithDocs(RenderProxy, getImageFrame, ConsoleInt, 2, 2, ())
 {
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
@@ -97,18 +109,22 @@ ConsoleMethod(RenderProxy, getImageFrame, S32, 2, 2,    "() - Gets current image
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, playAnimation, bool, 3, 3,   "(string animationAssetId) - Plays an animation.\n"
-                                                        "@param animationAssetId The animation asset Id to play\n"
-                                                        "@return Returns true on success.")
-{    
+/*! Plays an animation.
+    @param animationAssetId The animation asset Id to play
+    @return Returns true on success.
+*/
+ConsoleMethodWithDocs(RenderProxy, playAnimation, ConsoleBool, 3, 3, (string animationAssetId))
+{
     // Play Animation.
     return static_cast<ImageFrameProvider*>(object)->setAnimation( argv[2] );
 }   
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, pauseAnimation, void, 3, 3,  "(bool enable) - Pause the current animation\n"
-                                                        "@param enable If true, pause the animation. If false, continue animating\n")
+/*! Pause the current animation
+    @param enable If true, pause the animation. If false, continue animating
+*/
+ConsoleMethodWithDocs(RenderProxy, pauseAnimation, ConsoleVoid, 3, 3, (bool enable))
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -123,8 +139,10 @@ ConsoleMethod(RenderProxy, pauseAnimation, void, 3, 3,  "(bool enable) - Pause t
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, stopAnimation, void, 2, 2,   "() - Stop the current animation\n"
-                                                        "@return No return value.")
+/*! Stop the current animation
+    @return No return value.
+*/
+ConsoleMethodWithDocs(RenderProxy, stopAnimation, ConsoleVoid, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -139,9 +157,11 @@ ConsoleMethod(RenderProxy, stopAnimation, void, 2, 2,   "() - Stop the current a
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, setAnimationFrame, void, 3, 3, "(int frame) - Sets the current animation frame.\n"
-                                                                "@param frame Which frame of the animation to display\n"
-                                                                "@return No return value.")
+/*! Sets the current animation frame.
+    @param frame Which frame of the animation to display
+    @return No return value.
+*/
+ConsoleMethodWithDocs(RenderProxy, setAnimationFrame, ConsoleVoid, 3, 3, (int frame))
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -157,8 +177,10 @@ ConsoleMethod(RenderProxy, setAnimationFrame, void, 3, 3, "(int frame) - Sets th
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, getAnimationFrame, S32, 2, 2,    "() - Gets current animation frame.\n"
-                                                            "@return (int frame) The current animation frame")
+/*! Gets current animation frame.
+    @return (int frame) The current animation frame
+*/
+ConsoleMethodWithDocs(RenderProxy, getAnimationFrame, ConsoleInt, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -174,8 +196,10 @@ ConsoleMethod(RenderProxy, getAnimationFrame, S32, 2, 2,    "() - Gets current a
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, getAnimation, const char*, 2, 2, "() - Gets current animation asset Id.\n"
-                                                            "@return (string AnimationAssetId) The current animation asset Id.")
+/*! Gets current animation asset Id.
+    @return (string AnimationAssetId) The current animation asset Id.
+*/
+ConsoleMethodWithDocs(RenderProxy, getAnimation, ConsoleString, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -192,8 +216,10 @@ ConsoleMethod(RenderProxy, getAnimation, const char*, 2, 2, "() - Gets current a
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, getAnimationTime, F32, 2, 2, "() - Gets current animation time.\n"
-                                                        "@return (float time) The current animation time")
+/*! Gets current animation time.
+    @return (float time) The current animation time
+*/
+ConsoleMethodWithDocs(RenderProxy, getAnimationTime, ConsoleFloat, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -210,8 +236,10 @@ ConsoleMethod(RenderProxy, getAnimationTime, F32, 2, 2, "() - Gets current anima
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, getIsAnimationFinished, bool, 2, 2,  "() - Checks animation status.\n"
-                                                                "@return (bool finished) Whether or not the animation is finished")
+/*! Checks animation status.
+    @return (bool finished) Whether or not the animation is finished
+*/
+ConsoleMethodWithDocs(RenderProxy, getIsAnimationFinished, ConsoleBool, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -227,8 +255,10 @@ ConsoleMethod(RenderProxy, getIsAnimationFinished, bool, 2, 2,  "() - Checks ani
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, setAnimationTimeScale, void, 3, 3,   "(float timeScale) - Change the rate of animation.\n"
-                                                                "@param timeScale Value which will scale the frame animation speed. 1 by default.\n")
+/*! Change the rate of animation.
+    @param timeScale Value which will scale the frame animation speed. 1 by default.
+*/
+ConsoleMethodWithDocs(RenderProxy, setAnimationTimeScale, ConsoleVoid, 3, 3, (float timeScale))
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -243,8 +273,10 @@ ConsoleMethod(RenderProxy, setAnimationTimeScale, void, 3, 3,   "(float timeScal
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(RenderProxy, getAnimationTimeScale, F32, 2, 2,    "() - Get the animation time scale for this render-proxy.\n"
-                                                                "@return (float) Returns the animation time scale for this render-proxy.\n")
+/*! Get the animation time scale for this render-proxy.
+    @return (float) Returns the animation time scale for this render-proxy.
+*/
+ConsoleMethodWithDocs(RenderProxy, getAnimationTimeScale, ConsoleFloat, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -257,3 +289,4 @@ ConsoleMethod(RenderProxy, getAnimationTimeScale, F32, 2, 2,    "() - Get the an
     return object->getAnimationTimeScale();
 }
 
+ConsoleMethodGroupEndWithDocs(RenderProxy)

+ 71 - 37
engine/source/2d/core/SpriteBase_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,18 +20,24 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, isStaticFrameProvider, bool, 2, 2,     "() - Gets whether the sprite is in static or dynamic (animated)mode.\n"
-                                                    "@return Returns whether the sprite is in static or dynamic (animated)mode.")
+ConsoleMethodGroupBeginWithDocs(SpriteBase, SceneObject)
+
+/*! Gets whether the sprite is in static or dynamic (animated)mode.
+    @return Returns whether the sprite is in static or dynamic (animated)mode.
+*/
+ConsoleMethodWithDocs(SpriteBase, isStaticFrameProvider, ConsoleBool, 2, 2, ())
 {
     return object->isStaticFrameProvider();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, setImage, bool, 3, 4, "(string imageAssetId, [int frame]) - Sets the sprite image and optionally frame.\n"
-                                                "@param imageAssetId The image asset Id to display\n"
-                                                "@param frame The frame of the image to display\n"
-                                                "@return Returns true on success.")
+/*! Sets the sprite image and optionally frame.
+    @param imageAssetId The image asset Id to display
+    @param frame The frame of the image to display
+    @return Returns true on success.
+*/
+ConsoleMethodWithDocs(SpriteBase, setImage, ConsoleBool, 3, 4, (string imageAssetId, [int frame]))
 {
     // Calculate Frame.
     U32 frame = argc >= 4 ? dAtoi(argv[3]) : 0;
@@ -42,8 +48,10 @@ ConsoleMethod(SpriteBase, setImage, bool, 3, 4, "(string imageAssetId, [int fram
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, getImage, const char*, 2, 2,  "() - Gets current image asset Id.\n"
-                                                        "@return (string imageAssetId) The image being displayed")
+/*! Gets current image asset Id.
+    @return (string imageAssetId) The image being displayed
+*/
+ConsoleMethodWithDocs(SpriteBase, getImage, ConsoleString, 2, 2, ())
 {
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
@@ -59,9 +67,11 @@ ConsoleMethod(SpriteBase, getImage, const char*, 2, 2,  "() - Gets current image
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, setImageFrame, bool, 3, 3,    "(frame) - Sets the image frame.\n"
-                                                        "@param frame The frame to display\n"
-                                                        "@return Returns true on success.")
+/*! Sets the image frame.
+    @param frame The frame to display
+    @return Returns true on success.
+*/
+ConsoleMethodWithDocs(SpriteBase, setImageFrame, ConsoleBool, 3, 3, (frame))
 {
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
@@ -77,8 +87,10 @@ ConsoleMethod(SpriteBase, setImageFrame, bool, 3, 3,    "(frame) - Sets the imag
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, getImageFrame, S32, 2, 2, "() - Gets the current image Frame.\n"
-                                                    "@return The current image frame.")
+/*! Gets the current image Frame.
+    @return The current image frame.
+*/
+ConsoleMethodWithDocs(SpriteBase, getImageFrame, ConsoleInt, 2, 2, ())
 {
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
@@ -94,18 +106,22 @@ ConsoleMethod(SpriteBase, getImageFrame, S32, 2, 2, "() - Gets the current image
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, playAnimation, bool, 3, 3,    "(string animationAssetId) - Plays an animation.\n"
-                                                        "@param animationAssetId The animation asset Id to play.\n"
-                                                        "@return Returns true on success.")
-{    
+/*! Plays an animation.
+    @param animationAssetId The animation asset Id to play.
+    @return Returns true on success.
+*/
+ConsoleMethodWithDocs(SpriteBase, playAnimation, ConsoleBool, 3, 3, (string animationAssetId))
+{
     // Play Animation.
     return static_cast<ImageFrameProvider*>(object)->setAnimation( argv[2] );
 }   
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, pauseAnimation, void, 3, 3, "(bool enable) - Pause the current animation\n"
-                                                             "@param enable If true, pause the animation. If false, continue animating\n")
+/*! Pause the current animation
+    @param enable If true, pause the animation. If false, continue animating
+*/
+ConsoleMethodWithDocs(SpriteBase, pauseAnimation, ConsoleVoid, 3, 3, (bool enable))
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -121,8 +137,10 @@ ConsoleMethod(SpriteBase, pauseAnimation, void, 3, 3, "(bool enable) - Pause the
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, stopAnimation, void, 2, 2,   "() - Stop the current animation\n"
-                                                        "@return No return value.")
+/*! Stop the current animation
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SpriteBase, stopAnimation, ConsoleVoid, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -137,9 +155,11 @@ ConsoleMethod(SpriteBase, stopAnimation, void, 2, 2,   "() - Stop the current an
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, setAnimationFrame, void, 3, 3, "(int frame) - Sets the current animation frame.\n"
-                                                                "@param frame Which frame of the animation to display\n"
-                                                                "@return No return value.")
+/*! Sets the current animation frame.
+    @param frame Which frame of the animation to display
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SpriteBase, setAnimationFrame, ConsoleVoid, 3, 3, (int frame))
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -155,8 +175,10 @@ ConsoleMethod(SpriteBase, setAnimationFrame, void, 3, 3, "(int frame) - Sets the
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, getAnimationFrame, S32, 2, 2, "() - Gets current animation frame.\n"
-                                                               "@return (int frame) The current animation frame")
+/*! Gets current animation frame.
+    @return (int frame) The current animation frame
+*/
+ConsoleMethodWithDocs(SpriteBase, getAnimationFrame, ConsoleInt, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -172,8 +194,10 @@ ConsoleMethod(SpriteBase, getAnimationFrame, S32, 2, 2, "() - Gets current anima
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, getAnimation, const char*, 2, 2,  "() - Gets current animation asset Id.\n"
-                                                        "@return (string AnimationAssetId) The current animation asset Id.")
+/*! Gets current animation asset Id.
+    @return (string AnimationAssetId) The current animation asset Id.
+*/
+ConsoleMethodWithDocs(SpriteBase, getAnimation, ConsoleString, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -190,8 +214,10 @@ ConsoleMethod(SpriteBase, getAnimation, const char*, 2, 2,  "() - Gets current a
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, getAnimationTime, F32, 2, 2,  "() - Gets current animation time.\n"
-                                                    "@return (float time) The current animation time")
+/*! Gets current animation time.
+    @return (float time) The current animation time
+*/
+ConsoleMethodWithDocs(SpriteBase, getAnimationTime, ConsoleFloat, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -208,8 +234,10 @@ ConsoleMethod(SpriteBase, getAnimationTime, F32, 2, 2,  "() - Gets current anima
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, getIsAnimationFinished, bool, 2, 2,   "() - Checks animation status.\n"
-                                                            "@return (bool finished) Whether or not the animation is finished")
+/*! Checks animation status.
+    @return (bool finished) Whether or not the animation is finished
+*/
+ConsoleMethodWithDocs(SpriteBase, getIsAnimationFinished, ConsoleBool, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -225,8 +253,10 @@ ConsoleMethod(SpriteBase, getIsAnimationFinished, bool, 2, 2,   "() - Checks ani
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, setAnimationTimeScale, void, 3, 3,   "(float timeScale) - Change the rate of animation.\n"
-                                                            "@param timeScale Value which will scale the frame animation speed. 1 by default.\n")
+/*! Change the rate of animation.
+    @param timeScale Value which will scale the frame animation speed. 1 by default.
+*/
+ConsoleMethodWithDocs(SpriteBase, setAnimationTimeScale, ConsoleVoid, 3, 3, (float timeScale))
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -241,8 +271,10 @@ ConsoleMethod(SpriteBase, setAnimationTimeScale, void, 3, 3,   "(float timeScale
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SpriteBase, getAnimationTimeScale, F32, 2, 2,     "() - Get the animation time scale for this sprite.\n"
-                                                            "@return (float) Returns the animation time scale for this sprite.\n")
+/*! Get the animation time scale for this sprite.
+    @return (float) Returns the animation time scale for this sprite.
+*/
+ConsoleMethodWithDocs(SpriteBase, getAnimationTimeScale, ConsoleFloat, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -254,3 +286,5 @@ ConsoleMethod(SpriteBase, getAnimationTimeScale, F32, 2, 2,     "() - Get the an
 
     return object->getAnimationTimeScale();
 }
+
+ConsoleMethodGroupEndWithDocs(SpriteBase)

+ 2 - 58
engine/source/2d/core/Utility.cc

@@ -28,6 +28,8 @@
 #include "2d/sceneobject/SceneObject.h"
 #include "2d/core/Utility.h"
 
+#include "Utility_ScriptBinding.h"
+
 //-----------------------------------------------------------------------------
 
 ConsoleType( b2AABB, Typeb2AABB, sizeof(b2AABB), "" )
@@ -76,64 +78,6 @@ ConsoleSetType( Typeb2AABB )
 namespace Utility
 {
 
-//-----------------------------------------------------------------------------
-// Return a string containing the common elements of two space-separated strings of elements.
-//-----------------------------------------------------------------------------
-ConsoleFunction( t2dGetCommonElements, const char*, 3, 3, "(set1, set2) - Returns the common elements in two sets.")
-{
-    if (argc != 3)
-    {
-        Con::warnf("t2dGetCommonElements - Invalid number of parameters!");
-        return NULL;
-    }
-
-    // Grab the element count of the first set.
-    const U32 elementCount1 = Utility::mGetStringElementCount(argv[1]);
-
-    // Make sure we get at least one number.
-    if (elementCount1 < 1)
-    {
-        return NULL;
-    }
-
-    // Grab the element count of the second set.
-    const U32 elementCount2 = Utility::mGetStringElementCount(argv[2]);
-
-    // Make sure we get at least one number.
-    if (elementCount2 < 1)
-    {
-        return NULL;
-    }
-
-    char* buffer = Con::getReturnBuffer(dStrlen(argv[1]) + 1);
-    buffer[0] = '\0';
-    bool first = true;
-    
-    // Individual elements assumed to be 1024 or less in length
-    char element[1024];
-
-    // Check for common elements
-    for (U32 i = 0; i < elementCount1; i++)
-    {
-        dStrcpy(element,  Utility::mGetStringElement(argv[1], i, true));
-        
-        for (U32 j = 0; j < elementCount2; j++)
-        {
-            if (!dStrcmp(element, Utility::mGetStringElement(argv[2], j, true)))
-            {
-                if (!first)
-                    dStrcat(buffer, " ");
-                else
-                    first = false;
-
-                dStrcat(buffer, element);
-            }
-        }
-    }
-
-    return buffer;
-}
-
 //-----------------------------------------------------------------------------
 
 const char* mGetFirstNonWhitespace( const char* inString )

+ 2 - 2
engine/source/2d/core/Vector2.h

@@ -86,8 +86,8 @@ struct Vector2 : b2Vec2
     inline Vector2 operator = (const b2Vec2 &p)                         { x = p.x; y = p.y; return *this; }
 
     /// Utility.
-    inline void setAngle(const F32 radians)                             { x = mSin(radians); y = mCos(radians); }
-    inline void setPolar(const F32 radians,F32 length)                  { x = mSin(radians)*length; y = mCos(radians)*length; }
+    inline void setAngle(const F32 radians)                             { x = mCos(radians); y = mSin(radians); }
+    inline void setPolar(const F32 radians,F32 length)                  { x = mCos(radians)*length; y = mSin(radians)*length; }
     inline void setString(const char* pString )
     {
         const U32 elementCount = Utility::mGetStringElementCount(pString);

+ 106 - 54
engine/source/2d/core/Vector2_ScriptBinding.h

@@ -30,11 +30,21 @@
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunctionGroupBegin( Vector2Math, "Vector2 math functions.");
+/*!
+   @defgroup Vector2Math Vector2 Math
+      @ingroup TorqueScriptFunctions
+      @{
+*/
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction( Vector2Add, const char*, 3, 3, "(Vector2 v1, Vector2 v2) - Returns v1+v2.")
+/*! Add two 2-vectors.
+	@return v1+v2
+
+	@boundto
+	Vector2::operator+
+*/
+ConsoleFunctionWithDocs( Vector2Add, ConsoleString, 3, 3, (Vector2 v1, Vector2 v2) )
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
@@ -50,9 +60,14 @@ ConsoleFunction( Vector2Add, const char*, 3, 3, "(Vector2 v1, Vector2 v2) - Retu
 }
 
 //-----------------------------------------------------------------------------
-// Subtract two 2D Vectors.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2Sub, const char*, 3, 3, "(Vector2 v1, Vector2 v2) - Returns v1-v2.")
+
+/*! Subtract two 2D vectors.
+    @return v1-v2
+
+	@boundto
+	Vector2::operator-(Vector2)
+*/
+ConsoleFunctionWithDocs( Vector2Sub, ConsoleString, 3, 3,(Vector2 v1, Vector2 v2))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
@@ -68,9 +83,14 @@ ConsoleFunction( Vector2Sub, const char*, 3, 3, "(Vector2 v1, Vector2 v2) - Retu
 }
 
 //-----------------------------------------------------------------------------
-// The absolute difference between two 2D Vectors.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2Abs, const char*, 3, 3, "(Vector2 v1, Vector2 v2) - Returns abs(v1-v2).")
+
+/*! Absolute difference of two 2-vectors
+	@return abs(v1-v2)
+
+	@boundto
+	Vector2::absolute
+*/
+ConsoleFunctionWithDocs( Vector2Abs, ConsoleString, 3, 3, (Vector2 v1, Vector2 v2) )
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
@@ -86,9 +106,10 @@ ConsoleFunction( Vector2Abs, const char*, 3, 3, "(Vector2 v1, Vector2 v2) - Retu
 }
 
 //-----------------------------------------------------------------------------
-// Multiply two 2D Vectors (Not Dot-Product!)
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2Mult, const char*, 3, 3, "(Vector2 v1, Vector2 v2) - Returns v1 mult v2.")
+/*! Multiply two 2D vectors (Not Dot-Product!)
+	@return v1 mult v2.
+*/
+ConsoleFunctionWithDocs( Vector2Mult, ConsoleString, 3, 3, (Vector2 v1, Vector2 v2))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
@@ -104,9 +125,14 @@ ConsoleFunction( Vector2Mult, const char*, 3, 3, "(Vector2 v1, Vector2 v2) - Ret
 }
 
 //-----------------------------------------------------------------------------
-// Scale a 2D Vector.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2Scale, const char*, 3, 3, "(Vector2 v1, scale) - Returns v1 scaled by scale.")
+/*! Scale a 2D vector.
+	@return v1 scaled by scale.
+
+	@boundto
+	Vector2::operator*
+*/
+
+ConsoleFunctionWithDocs( Vector2Scale, ConsoleString, 3, 3, (Vector2 v1, scale))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
@@ -123,9 +149,13 @@ ConsoleFunction( Vector2Scale, const char*, 3, 3, "(Vector2 v1, scale) - Returns
 }
 
 //-----------------------------------------------------------------------------
-// Normalize a 2D Vector.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2Normalize, const char*, 2, 2, "(Vector2 v1) - Returns Normalized v1.")
+/*! Normalize a 2D vector.
+	@return Normalized v1.
+
+	@boundto
+	Vector2::Normalize
+*/
+ConsoleFunctionWithDocs( Vector2Normalize, ConsoleString, 2, 2, (Vector2 v1))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
@@ -140,9 +170,13 @@ ConsoleFunction( Vector2Normalize, const char*, 2, 2, "(Vector2 v1) - Returns No
 }
 
 //-----------------------------------------------------------------------------
-// Dot-Product of two 2D Vectors.
-//-----------------------------------------------------------------------------
-ConsoleFunction(Vector2Dot, F32, 3, 3, "(Vector2 v1, Vector2 v2) - Returns dot-product of v1 and v2.")
+/*! Dot-Product of two 2D vectors.
+	@return dot-product of v1 and v2.
+
+	@boundto
+	Vector2::dot
+*/
+ConsoleFunctionWithDocs(Vector2Dot, ConsoleFloat, 3, 3, (Vector2 v1, Vector2 v2))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
@@ -158,9 +192,11 @@ ConsoleFunction(Vector2Dot, F32, 3, 3, "(Vector2 v1, Vector2 v2) - Returns dot-p
 }
 
 //-----------------------------------------------------------------------------
-// Equality of two 2D Points.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2Compare, bool, 3, 4, "(Vector2 p1, Vector2 p2, [epsilon]) - Compares points p1 and p2 with optional difference (epsilon).")
+/*! Equality of two 2D Points.
+	Compares points p1 and p2 with optional difference (epsilon).
+	@return true if equal
+*/
+ConsoleFunctionWithDocs( Vector2Compare, ConsoleBool, 3, 4, (Vector2 p1, Vector2 p2, [Vector2 epsilon=0.0001]?))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
@@ -183,9 +219,10 @@ ConsoleFunction( Vector2Compare, bool, 3, 4, "(Vector2 p1, Vector2 p2, [epsilon]
 }
 
 //-----------------------------------------------------------------------------
-// Distance between two 2D Points.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2Distance, F32, 3, 3, "(Vector2 p1, Vector2 p2) - Returns the distance between points p1 and p2.")
+/*! Distance between two 2D Points.
+	@return the distance between points p1 and p2
+*/
+ConsoleFunctionWithDocs( Vector2Distance, ConsoleFloat, 3, 3, (Vector2 p1, Vector2 p2))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
@@ -201,9 +238,10 @@ ConsoleFunction( Vector2Distance, F32, 3, 3, "(Vector2 p1, Vector2 p2) - Returns
 }
 
 //-----------------------------------------------------------------------------
-// Angle between two 2D Vectors.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2AngleBetween, F32, 3, 3, "(Vector2 v1, Vector2 v2) - Returns the angle between v1 and v2.")
+/*! Angle between two 2D vectors.
+	@return the angle between v1 and v2.
+*/
+ConsoleFunctionWithDocs( Vector2AngleBetween, ConsoleFloat, 3, 3, (Vector2 v1, Vector2 v2))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
@@ -222,9 +260,10 @@ ConsoleFunction( Vector2AngleBetween, F32, 3, 3, "(Vector2 v1, Vector2 v2) - Ret
 }
 
 //-----------------------------------------------------------------------------
-// Angle from one point to another.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2AngleToPoint, F32, 3, 3, "(Vector2 p1, Vector2 p1) - Returns the angle from p1 to p2.")
+/*! Angle from one point to another.
+	@return the angle from p1 to p2.
+*/
+ConsoleFunctionWithDocs( Vector2AngleToPoint, ConsoleFloat, 3, 3, (Vector2 p1, Vector2 p2))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
@@ -237,16 +276,18 @@ ConsoleFunction( Vector2AngleToPoint, F32, 3, 3, "(Vector2 p1, Vector2 p1) - Ret
     Vector2 p2( argv[2] );
 
     // Do Operation.
-    return mRadToDeg( mAtan((p2.x - p1.x), (p1.y - p2.y)) );
+    return mRadToDeg( mAtan((p2.x - p1.x), (p2.y - p1.y)) );
 }
 
 //-----------------------------------------------------------------------------
-// Vector from angle and magnitude.
+/*! vector from angle and magnitude.
+	Calculates a direction from an angle and magnitude.
+    @param angle The angle of the direction.
+    @param magnitude The magnitude of the direction.
+    @return No return value.
+*/
 //-----------------------------------------------------------------------------
-ConsoleFunction( Vector2Direction, const char*, 3, 3,   "(F32 angle, F32 magnitude) - Calculates a direction from an angle and magnitude.\n"
-                                                        "@param angle The angle of the direction.\n"
-                                                        "@param magnitude The magnitude of the direction.\n"
-                                                        "@return No return value.")
+ConsoleFunctionWithDocs( Vector2Direction, ConsoleString, 3, 3, (F32 angle, F32 magnitude))
 {
     // Fetch angle.
     const F32 angle = mDegToRad(dAtof(argv[1]));
@@ -261,9 +302,13 @@ ConsoleFunction( Vector2Direction, const char*, 3, 3,   "(F32 angle, F32 magnitu
 }
 
 //-----------------------------------------------------------------------------
-// Length of a 2D Vector.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2Length, F32, 2, 2, "(Vector2 v1) - Returns the length of v1.")
+/*! Length of a 2D vector.
+	@return the length of v1.
+
+	@boundto
+	Vector2::Length
+*/
+ConsoleFunctionWithDocs( Vector2Length, ConsoleFloat, 2, 2, (Vector2 v1))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
@@ -278,9 +323,14 @@ ConsoleFunction( Vector2Length, F32, 2, 2, "(Vector2 v1) - Returns the length of
 }
 
 //-----------------------------------------------------------------------------
-// Inverse of a 2D Vector.
+/*! Inverse of a 2D vector.
+	@return the inverse of v1.
+
+	@boundto
+	Vector2::operator-()
+*/
 //-----------------------------------------------------------------------------
-ConsoleFunction( Vector2Inverse, const char*, 2, 2, "(Vector2 v1) - Returns the inverse of v1.")
+ConsoleFunctionWithDocs( Vector2Inverse, ConsoleString, 2, 2, (Vector2 v1))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
@@ -295,9 +345,10 @@ ConsoleFunction( Vector2Inverse, const char*, 2, 2, "(Vector2 v1) - Returns the
 }
 
 //-----------------------------------------------------------------------------
-// Inverse X component of a 2D Vector.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2InverseX, const char*, 2, 2, "(Vector2 v1) - Returns the inverse of the v1 X component.")
+/*! Inverse X component of a 2D vector.
+	@return the inverse of the v1 X component.
+*/
+ConsoleFunctionWithDocs( Vector2InverseX, ConsoleString, 2, 2, (Vector2 v1))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
@@ -313,9 +364,10 @@ ConsoleFunction( Vector2InverseX, const char*, 2, 2, "(Vector2 v1) - Returns the
 }
 
 //-----------------------------------------------------------------------------
-// Inverse Y component of a 2D Vector.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2InverseY, const char*, 2, 2, "(Vector2 v1) - Returns the inverse of the v1 Y component.")
+/*! Inverse Y component of a 2D vector.
+	@return the inverse of the v1 Y component.
+*/
+ConsoleFunctionWithDocs( Vector2InverseY, ConsoleString, 2, 2, (Vector2 v1))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
@@ -331,9 +383,10 @@ ConsoleFunction( Vector2InverseY, const char*, 2, 2, "(Vector2 v1) - Returns the
 }
 
 //-----------------------------------------------------------------------------
-// Normalize Rectangle (two 2D Vectors) with relation to each other.
-//-----------------------------------------------------------------------------
-ConsoleFunction( Vector2AreaNormalize, const char*, 3, 3, "(Vector2 v1, Vector2 v2) - Returns Normalize rectangle of v1 and v2.")
+/*! Normalize Rectangle (two 2D vectors) with relation to each other.
+	@return Normalize rectangle of v1 and v2.
+*/
+ConsoleFunctionWithDocs( Vector2AreaNormalize, ConsoleString, 3, 3, (Vector2 v1, Vector2 v2))
 {
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
@@ -359,7 +412,6 @@ ConsoleFunction( Vector2AreaNormalize, const char*, 3, 3, "(Vector2 v1, Vector2
     return pBuffer;
 }
 
-
 //-----------------------------------------------------------------------------
 
-ConsoleFunctionGroupEnd( Vector2Math );
+/*! @} */

+ 24 - 21
engine/source/2d/experimental/composites/WaveComposite_ScriptBinding.h

@@ -1,22 +1,25 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) 2013 GarageGames, LLC
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-// IN THE SOFTWARE.
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// Copyright (c) 2013 GarageGames, LLC
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+//-----------------------------------------------------------------------------
+
+ConsoleMethodGroupBeginWithDocs(WaveComposite, SceneObject)
 
+ConsoleMethodGroupEndWithDocs(WaveComposite)

+ 2 - 29
engine/source/2d/gui/SceneWindow.cc

@@ -576,42 +576,15 @@ F32 SceneWindow::interpolate( F32 from, F32 to, F32 delta )
 {
     // Linear.
     if ( mCameraInterpolationMode == LINEAR )
-        return linearInterpolate( from, to, delta );
+        return mLerp( from, to, delta );
     // Sigmoid.
     else if ( mCameraInterpolationMode == SIGMOID )
-        return sigmoidInterpolate( from, to, delta );
+        return mSmoothStep( from, to, delta );
     // Hmmm...
     else
         return from;
 }
 
-//-----------------------------------------------------------------------------
-
-F32 SceneWindow::linearInterpolate( F32 from, F32 to, F32 delta )
-{
-    // Clamp if we're over/under time.
-    if ( delta <= 0.0f )
-        return from;
-    else if ( delta >= 1.0f )
-        return to;
-
-    // Calculate resultant interpolation.
-    return ( from * ( 1.0f - delta ) ) + ( to * delta );
-}
-
-//-----------------------------------------------------------------------------
-
-F32 SceneWindow::sigmoidInterpolate( F32 from, F32 to, F32 delta )
-{
-    // Range Expand/Clamp Delta to (-1 -> +1).
-    delta = mClampF( (delta - 0.5f) * 2.0f, -1.0f, 1.0f );
-
-    // Calculate interpolator value using sigmoid function.
-    F32 sigmoid = mClampF ( 1.0f / (1.0f + mPow(2.718282f, -15.0f * delta)), 0.0f, 1.0f );
-
-    // Calculate resultant interpolation.
-    return ( from * ( 1.0f - sigmoid ) ) + ( to * sigmoid );
-}
 
 //-----------------------------------------------------------------------------
 

+ 0 - 2
engine/source/2d/gui/SceneWindow.h

@@ -270,8 +270,6 @@ public:
     void completeCameraMove( void );
     void undoCameraMove( const F32 interpolationTime );
     F32 interpolate( F32 from, F32 to, F32 delta );
-    F32 linearInterpolate( F32 from, F32 to, F32 delta );
-    F32 sigmoidInterpolate( F32 from, F32 to, F32 delta );
     void updateCamera( void );
 
     inline Vector2 getCameraRenderPosition( void )                      { calculateCameraView( &mCameraCurrent ); return mCameraCurrent.mDestinationArea.centre(); }

+ 317 - 176
engine/source/2d/gui/SceneWindow_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,9 +20,12 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
+ConsoleMethodGroupBeginWithDocs(SceneWindow, GuiControl)
 
-ConsoleMethod(SceneWindow, getWindowExtents, const char*, 2, 2, "() Fetch Window Extents (Position/Size)."
-              "@return Returns the window dimensions as a string formatted as follows: <position.x> <position.y> <width> <height>")
+/*! Fetch Window Extents (Position/Size).
+    @return Returns the window dimensions as a string formatted as follows: <position.x> <position.y> <width> <height>
+*/
+ConsoleMethodWithDocs(SceneWindow, getWindowExtents, ConsoleString, 2, 2, ())
 {
     // Get Size Argument Buffer.
     char* pExtentsBuffer = Con::getReturnBuffer(64);
@@ -36,8 +39,10 @@ ConsoleMethod(SceneWindow, getWindowExtents, const char*, 2, 2, "() Fetch Window
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getScene, const char*, 2, 2, "() - Returns the Scene associated with this window."
-              "@return Returns the scene ID as a string")
+/*! Returns the Scene associated with this window.
+    @return Returns the scene ID as a string
+*/
+ConsoleMethodWithDocs(SceneWindow, getScene, ConsoleString, 2, 2, ())
 {
    Scene* pScene = object->getScene();
 
@@ -56,9 +61,11 @@ ConsoleMethod(SceneWindow, getScene, const char*, 2, 2, "() - Returns the Scene
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setScene, void, 2, 3, "(Scene) Associates Scene Object."
-              "@param Scene The scene ID or name.\n"
-              "@return No return value.")
+/*! Associates Scene Object.
+    @param Scene The scene ID or name.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setScene, ConsoleVoid, 2, 3, (Scene))
 {
     // No scene specified?
     if ( argc < 3 )
@@ -85,8 +92,10 @@ ConsoleMethod(SceneWindow, setScene, void, 2, 3, "(Scene) Associates Scene Objec
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, resetScene, void, 2, 2, "() Detaches the window from any Scene Object.\n"
-              "@return No return value")
+/*! Detaches the window from any Scene Object.
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneWindow, resetScene, ConsoleVoid, 2, 2, ())
 {
     // Reset Scene.
     object->resetScene();
@@ -94,10 +103,12 @@ ConsoleMethod(SceneWindow, resetScene, void, 2, 2, "() Detaches the window from
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setCameraPosition, void, 3, 4,    "(x , y) - Set the current camera position.\n"
-                                                                    "@param X Position along the X axis.\n"
-                                                                    "@param Y Position along the Y axis.\n"
-                                                                    "@return No return value.")
+/*! Set the current camera position.
+    @param X Position along the X axis.
+    @param Y Position along the Y axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setCameraPosition, ConsoleVoid, 3, 4, (x , y))
 {
    if ( argc == 3 )
    {
@@ -110,18 +121,22 @@ ConsoleMethod(SceneWindow, setCameraPosition, void, 3, 4,    "(x , y) - Set the
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getCameraPosition, const char*, 2, 2, "() Get the current camera position.\n"
-                                                                        "@return The current camera position.")
+/*! Get the current camera position.
+    @return The current camera position.
+*/
+ConsoleMethodWithDocs(SceneWindow, getCameraPosition, ConsoleString, 2, 2, ())
 {
     return object->getCameraPosition().scriptThis();
 }   
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setCameraSize, void, 3, 4,    "(width , height) - Set the current camera position.\n"
-                                                                "@param width Size along the X axis.\n"
-                                                                "@param height Size along the Y axis.\n"
-                                                                "@return No return value.")
+/*! Set the current camera position.
+    @param width Size along the X axis.
+    @param height Size along the Y axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setCameraSize, ConsoleVoid, 3, 4, (width , height))
 {
    if ( argc == 3 )
    {
@@ -134,18 +149,22 @@ ConsoleMethod(SceneWindow, setCameraSize, void, 3, 4,    "(width , height) - Set
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getCameraSize, const char*, 2, 2, "() Get the current camera size.\n"
-                                                                    "@return The current camera width and height.")
+/*! Get the current camera size.
+    @return The current camera width and height.
+*/
+ConsoleMethodWithDocs(SceneWindow, getCameraSize, ConsoleString, 2, 2, ())
 {
     return object->getCameraSize().scriptThis();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setCameraArea, void, 3, 6, "(x1 / y1 / x2 / y2) - Set the current camera area."
-              "@param x1,y1,x2,y2 The coordinates of the minimum and maximum points (top left, bottom right)\n"
-              "The input can be formatted as either \"x1 y1 x2 y2\", \"x1 y1, x2 y2\", \"x1, y1, x2, y2\"\n"
-              "@return No return value.")
+/*! Set the current camera area.
+    @param x1,y1,x2,y2 The coordinates of the minimum and maximum points (top left, bottom right)
+    The input can be formatted as either \x1 y1 x2 y2\, \x1 y1, x2 y2\, \x1, y1, x2, y2\
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setCameraArea, ConsoleVoid, 3, 6, (x1 / y1 / x2 / y2))
 {
    // Upper left bound.
    Vector2 v1;
@@ -196,8 +215,10 @@ ConsoleMethod(SceneWindow, setCameraArea, void, 3, 6, "(x1 / y1 / x2 / y2) - Set
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getCameraArea, const char*, 2, 2, "() Get the current camera Area.\n"
-              "@return The camera area formatted as \"x1 y1 x2 y2\"")
+/*! Get the current camera Area.
+    @return The camera area formatted as \x1 y1 x2 y2\
+*/
+ConsoleMethodWithDocs(SceneWindow, getCameraArea, ConsoleString, 2, 2, ())
 {
     // Fetch Camera Window.
     const RectF cameraWindow = object->getCameraArea();
@@ -214,42 +235,52 @@ ConsoleMethod(SceneWindow, getCameraArea, const char*, 2, 2, "() Get the current
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setCameraZoom, void, 3, 3,    "(zoomFactor) - Set the current camera Zoom Factor.\n"
-                                                                "@param zoomFactor A float value representing the zoom factor\n"
-                                                                "@return No return value.")
+/*! Set the current camera Zoom Factor.
+    @param zoomFactor A float value representing the zoom factor
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setCameraZoom, ConsoleVoid, 3, 3, (zoomFactor))
 {
     object->setCameraZoom( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getCameraZoom, F32, 2, 2, "() Get the current camera Zoom.\n"
-                                                            "@return The current camera zoom.")
+/*! Get the current camera Zoom.
+    @return The current camera zoom.
+*/
+ConsoleMethodWithDocs(SceneWindow, getCameraZoom, ConsoleFloat, 2, 2, ())
 {
     return object->getCameraZoom();
 } 
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setCameraAngle, void, 3, 3, "(angle) - Sets the current camera angle.\n"
-                                                              "@param angle The current camera angle in degrees.\n"
-                                                              "@return No return value.")
+/*! Sets the current camera angle.
+    @param angle The current camera angle in degrees.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setCameraAngle, ConsoleVoid, 3, 3, (angle))
 {
     object->setCameraAngle( mDegToRad(dAtof(argv[2])) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getCameraAngle, F32, 2, 2,    "() Gets the current camera angle.\n"
-                                                                "@return The current camera angle in degrees.")
+/*! Gets the current camera angle.
+    @return The current camera angle in degrees.
+*/
+ConsoleMethodWithDocs(SceneWindow, getCameraAngle, ConsoleFloat, 2, 2, ())
 {
     return object->getCameraAngle();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getCameraWorldScale, const char*, 2, 2, "() Get current camera scale to world.\n"
-              "@return Returns the cameras window width/height scale to world as a string formatted as \"widthScale heightScale\"")
+/*! Get current camera scale to world.
+    @return Returns the cameras window width/height scale to world as a string formatted as \widthScale heightScale\
+*/
+ConsoleMethodWithDocs(SceneWindow, getCameraWorldScale, ConsoleString, 2, 2, ())
 {
     // Fetch camera window
     const Vector2 cameraWindowScale = object->getCameraWindowScale();
@@ -259,16 +290,20 @@ ConsoleMethod(SceneWindow, getCameraWorldScale, const char*, 2, 2, "() Get curre
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getCameraRenderPosition, const char*, 2, 2,   "() Get current camera position post-view-limit clamping.\n"
-                                                                                "@return The current camera render position.")
+/*! Get current camera position post-view-limit clamping.
+    @return The current camera render position.
+*/
+ConsoleMethodWithDocs(SceneWindow, getCameraRenderPosition, ConsoleString, 2, 2, ())
 {
     return object->getCameraRenderPosition().scriptThis();
 } 
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getCameraRenderScale, const char*, 2, 2, "() Get current camera scale to render.\n"
-              "@return Returns the cameras window width/height scale to render as a string formatted as \"widthScale heightScale\"")
+/*! Get current camera scale to render.
+    @return Returns the cameras window width/height scale to render as a string formatted as \widthScale heightScale\
+*/
+ConsoleMethodWithDocs(SceneWindow, getCameraRenderScale, ConsoleString, 2, 2, ())
 {
     // Fetch camera window scale.
     Vector2 cameraWindowScale = object->getCameraWindowScale();
@@ -281,10 +316,12 @@ ConsoleMethod(SceneWindow, getCameraRenderScale, const char*, 2, 2, "() Get curr
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setTargetCameraPosition, void, 3, 4,     "(x , y) - Set the target camera position.\n"
-                                                                    "@param X Position along the X axis.\n"
-                                                                    "@param Y Position along the Y axis.\n"
-                                                                    "@return No return value.")
+/*! Set the target camera position.
+    @param X Position along the X axis.
+    @param Y Position along the Y axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setTargetCameraPosition, ConsoleVoid, 3, 4, (x , y))
 {
    if ( argc == 3 )
    {
@@ -298,18 +335,22 @@ ConsoleMethod(SceneWindow, setTargetCameraPosition, void, 3, 4,     "(x , y) - S
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getTargetCameraPosition, const char*, 2, 2,  "() Get the target camera position.\n"
-                                                                        "@return The target camera position.")
+/*! Get the target camera position.
+    @return The target camera position.
+*/
+ConsoleMethodWithDocs(SceneWindow, getTargetCameraPosition, ConsoleString, 2, 2, ())
 {
     return object->getTargetCameraPosition().scriptThis();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setTargetCameraSize, void, 3, 4,    "(width , height) - Set the target camera position.\n"
-                                                                "@param width Size along the X axis.\n"
-                                                                "@param height Size along the Y axis.\n"
-                                                                "@return No return value.")
+/*! Set the target camera position.
+    @param width Size along the X axis.
+    @param height Size along the Y axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setTargetCameraSize, ConsoleVoid, 3, 4, (width , height))
 {
    if ( argc == 3 )
    {
@@ -322,16 +363,20 @@ ConsoleMethod(SceneWindow, setTargetCameraSize, void, 3, 4,    "(width , height)
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getTargetCameraSize, const char*, 2, 2, "() Get the target camera size.\n"
-                                                                    "@return The target camera width and height.")
+/*! Get the target camera size.
+    @return The target camera width and height.
+*/
+ConsoleMethodWithDocs(SceneWindow, getTargetCameraSize, ConsoleString, 2, 2, ())
 {
     return object->getTargetCameraSize().scriptThis();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setTargetCameraArea, void, 3, 6, "(x / y / width / height) - Set the target camera area."
-              "@return No return value.")
+/*! Set the target camera area.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setTargetCameraArea, ConsoleVoid, 3, 6, (x / y / width / height))
 {
    // Upper left bound.
    Vector2 v1;
@@ -382,8 +427,10 @@ ConsoleMethod(SceneWindow, setTargetCameraArea, void, 3, 6, "(x / y / width / he
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getTargetCameraArea, const char*, 2, 2, "() Get the target camera Area.\n"
-              "@return The camera area formatted as \"x1 y1 x2 y2\"")
+/*! Get the target camera Area.
+    @return The camera area formatted as \x1 y1 x2 y2\
+*/
+ConsoleMethodWithDocs(SceneWindow, getTargetCameraArea, ConsoleString, 2, 2, ())
 {
     // Fetch Camera Window.
     const RectF cameraWindow = object->getTargetCameraArea();
@@ -400,41 +447,51 @@ ConsoleMethod(SceneWindow, getTargetCameraArea, const char*, 2, 2, "() Get the t
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setTargetCameraZoom, void, 3, 3, "(zoomFactor) - Set the target camera Zoom Factor."
-                                                            "@return No return value.")
+/*! Set the target camera Zoom Factor.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setTargetCameraZoom, ConsoleVoid, 3, 3, (zoomFactor))
 {
     object->setTargetCameraZoom( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getTargetCameraZoom, F32, 2, 2, "() Get the target camera Zoom.\n"
-                                                            "@return The current camera zoom.")
+/*! Get the target camera Zoom.
+    @return The current camera zoom.
+*/
+ConsoleMethodWithDocs(SceneWindow, getTargetCameraZoom, ConsoleFloat, 2, 2, ())
 {
     return object->getTargetCameraZoom();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setTargetCameraAngle, void, 3, 3,    "(angle) - Sets the target camera angle.\n"
-                                                                "@param angle The target camera angle in degrees.\n"
-                                                              " @return No return value.")
+/*! Sets the target camera angle.
+    @param angle The target camera angle in degrees.
+     @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setTargetCameraAngle, ConsoleVoid, 3, 3, (angle))
 {
     object->setTargetCameraAngle( mDegToRad(dAtof(argv[2])) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getTargetCameraAngle, F32, 2, 2,    "() Gets the target camera angle.\n"
-                                                                "@return The target camera angle in degrees.")
+/*! Gets the target camera angle.
+    @return The target camera angle in degrees.
+*/
+ConsoleMethodWithDocs(SceneWindow, getTargetCameraAngle, ConsoleFloat, 2, 2, ())
 {
     return object->getTargetCameraAngle();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setCameraInterpolationTime, void, 3, 3, "(interpolationTime) - Set camera interpolation time."
-              "@return No return value")
+/*! Set camera interpolation time.
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneWindow, setCameraInterpolationTime, ConsoleVoid, 3, 3, (interpolationTime))
 {
     // Set Camera Interpolation Time.
     object->setCameraInterpolationTime( dAtof(argv[2]) );
@@ -442,8 +499,10 @@ ConsoleMethod(SceneWindow, setCameraInterpolationTime, void, 3, 3, "(interpolati
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setCameraInterpolationMode, void, 3, 3, "(interpolationMode) - Set camera interpolation mode."
-              "@return No return value.")
+/*! Set camera interpolation mode.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setCameraInterpolationMode, ConsoleVoid, 3, 3, (interpolationMode))
 {
     // Set Camera Interpolation Mode.
     object->setCameraInterpolationMode( SceneWindow::getInterpolationModeEnum(argv[2]) );
@@ -451,8 +510,10 @@ ConsoleMethod(SceneWindow, setCameraInterpolationMode, void, 3, 3, "(interpolati
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, startCameraMove, void, 2, 3, "([interpolationTime]) - Start Camera Move."
-              "@return No return value.")
+/*! Start Camera Move.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, startCameraMove, ConsoleVoid, 2, 3, ([interpolationTime]))
 {
     F32 interpolationTime;
 
@@ -468,8 +529,10 @@ ConsoleMethod(SceneWindow, startCameraMove, void, 2, 3, "([interpolationTime]) -
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, stopCameraMove, void, 2, 2, "() Stops current camera movement"
-              "@return No return value.")
+/*! Stops current camera movement
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, stopCameraMove, ConsoleVoid, 2, 2, ())
 {
     // Stop Camera Move.
     object->stopCameraMove();
@@ -477,8 +540,10 @@ ConsoleMethod(SceneWindow, stopCameraMove, void, 2, 2, "() Stops current camera
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, completeCameraMove, void, 2, 2, "() Moves camera directly to target.\n"
-              "@return No return value.")
+/*! Moves camera directly to target.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, completeCameraMove, ConsoleVoid, 2, 2, ())
 {
     // Complete Camera Move.
     object->completeCameraMove();
@@ -486,8 +551,10 @@ ConsoleMethod(SceneWindow, completeCameraMove, void, 2, 2, "() Moves camera dire
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, undoCameraMove, void, 2, 3, "([interpolationTime]) - Reverses previous camera movement."
-              "@return No return value.")
+/*! Reverses previous camera movement.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, undoCameraMove, ConsoleVoid, 2, 3, ([interpolationTime]))
 {
     F32 interpolationTime;
 
@@ -503,8 +570,10 @@ ConsoleMethod(SceneWindow, undoCameraMove, void, 2, 3, "([interpolationTime]) -
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getIsCameraMoving, bool, 2, 2, "() Check the camera moving status.\n"
-              "@return Returns a boolean value as to whether or not the camera is moving.")
+/*! Check the camera moving status.
+    @return Returns a boolean value as to whether or not the camera is moving.
+*/
+ConsoleMethodWithDocs(SceneWindow, getIsCameraMoving, ConsoleBool, 2, 2, ())
 {
     // Is Camera Moving?
     return object->isCameraMoving();
@@ -512,8 +581,10 @@ ConsoleMethod(SceneWindow, getIsCameraMoving, bool, 2, 2, "() Check the camera m
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getIsCameraMounted, bool, 2, 2, "() Check the camera mounted status.\n"
-              "@return Returns a boolean value as to whether or not the camera is mounted.")
+/*! Check the camera mounted status.
+    @return Returns a boolean value as to whether or not the camera is mounted.
+*/
+ConsoleMethodWithDocs(SceneWindow, getIsCameraMounted, ConsoleBool, 2, 2, ())
 {
     // Is Camera Mounted.
     return object->isCameraMounted();
@@ -521,10 +592,12 @@ ConsoleMethod(SceneWindow, getIsCameraMounted, bool, 2, 2, "() Check the camera
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, startCameraShake, void, 4, 4, "(shakeMagnitude, time) - Starts the camera shaking."
-              "@param shakeMagnitude The intensity of the shaking\n"
-              "@param time The length of the shake"
-              "@return No return value")
+/*! Starts the camera shaking.
+    @param shakeMagnitude The intensity of the shaking
+    @param time The length of the shake
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneWindow, startCameraShake, ConsoleVoid, 4, 4, (shakeMagnitude, time))
 {
     // Start Camera Shake.
     object->startCameraShake( dAtof(argv[2]), dAtof(argv[3]) );
@@ -532,8 +605,10 @@ ConsoleMethod(SceneWindow, startCameraShake, void, 4, 4, "(shakeMagnitude, time)
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, stopCameraShake, void, 2, 2, "() Stops the camera shaking."
-              "@return No return value")
+/*! Stops the camera shaking.
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneWindow, stopCameraShake, ConsoleVoid, 2, 2, ())
 {
     // Stop Camera Shake.
     object->stopCameraShake();
@@ -541,13 +616,15 @@ ConsoleMethod(SceneWindow, stopCameraShake, void, 2, 2, "() Stops the camera sha
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, mount, void, 3, 8,   "(sceneObject, [offsetX / offsetY], [mountForce], [sendToMount?], [mountAngle?]) - Mounts the camera onto the specified object."
-                                                "@param sceneObject The scene object to mount the camera to.\n"
-                                                "@param offsetX / offsetY The offset from the objects position to mount the camera to.  Optional: Defaults to no offset.\n"
-                                                "@param mountForce The force to use to keep the camera mounted to the object.  Zero is a rigid mount.  Optional: Defaults to zero.\n"
-                                                "@param sendToMount Whether to immediately move the camera to the objects position or not.  Optional: Defaults to true.\n"
-                                                "@param mountAngle Whether to mount the cameras angle to the objects angle or not.  Optional: Defaults to false.\n"
-                                                "@return No return value")
+/*! Mounts the camera onto the specified object.
+    @param sceneObject The scene object to mount the camera to.
+    @param offsetX / offsetY The offset from the objects position to mount the camera to.  Optional: Defaults to no offset.
+    @param mountForce The force to use to keep the camera mounted to the object.  Zero is a rigid mount.  Optional: Defaults to zero.
+    @param sendToMount Whether to immediately move the camera to the objects position or not.  Optional: Defaults to true.
+    @param mountAngle Whether to mount the cameras angle to the objects angle or not.  Optional: Defaults to false.
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneWindow, mount, ConsoleVoid, 3, 8, (sceneObject, [offsetX / offsetY], [mountForce], [sendToMount?], [mountAngle?]))
 {
     // Grab the object. Always specified.
     SceneObject* pSceneObject = dynamic_cast<SceneObject*>(Sim::findObject(argv[2]));
@@ -609,8 +686,10 @@ ConsoleMethod(SceneWindow, mount, void, 3, 8,   "(sceneObject, [offsetX / offset
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, dismount, void, 2, 2, "() Dismounts Camera from object."
-              "@return No return value")
+/*! Dismounts Camera from object.
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneWindow, dismount, ConsoleVoid, 2, 2, ())
 {
     // Dismount Object.
     object->dismount();
@@ -634,8 +713,10 @@ void SceneWindow::dismountMe( SceneObject* pSceneObject )
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setViewLimitOn, void, 3, 6, "([minX / minY / maxX / maxY]) - Set View Limit On."
-              "@return No return value")
+/*! Set View Limit On.
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneWindow, setViewLimitOn, ConsoleVoid, 3, 6, ([minX / minY / maxX / maxY]))
 {
    // Upper left bound.
    Vector2 v1;
@@ -686,8 +767,10 @@ ConsoleMethod(SceneWindow, setViewLimitOn, void, 3, 6, "([minX / minY / maxX / m
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setViewLimitOff, void, 2, 2, "() Set View Limit Off."
-              "@return No return value")
+/*! Set View Limit Off.
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneWindow, setViewLimitOff, ConsoleVoid, 2, 2, ())
 {
     // Set View Limit Off.
     object->setViewLimitOff();
@@ -695,18 +778,22 @@ ConsoleMethod(SceneWindow, setViewLimitOff, void, 2, 2, "() Set View Limit Off."
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, clampCameraViewLimit, void, 2, 2, "() Clamps the current camera to the current view limit.\n"
-                                                                    "Nothing will happen if the view-limit is not active or the camera is moving.\n"
-                                                                    "@return No return value")
+/*! Clamps the current camera to the current view limit.
+    Nothing will happen if the view-limit is not active or the camera is moving.
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneWindow, clampCameraViewLimit, ConsoleVoid, 2, 2, ())
 {
     object->clampCameraViewLimit();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setRenderGroups, void, 3, 2 + MASK_BITCOUNT, "(groups$) - Sets the render group(s).\n"
-              "@param groups The list of groups you wish to set.\n"
-              "@return No return value.")
+/*! Sets the render group(s).
+    @param groups The list of groups you wish to set.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setRenderGroups, ConsoleVoid, 3, 2 + MASK_BITCOUNT, (groups$))
 {
    // The mask.
    U32 mask = 0;
@@ -764,9 +851,11 @@ ConsoleMethod(SceneWindow, setRenderGroups, void, 3, 2 + MASK_BITCOUNT, "(groups
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setRenderLayers, void, 3, 2 + MASK_BITCOUNT, "(layers$) - Sets the render layers(s)."
-              "@param The layer numbers you wish to set.\n"
-              "@return No return value.")
+/*! Sets the render layers(s).
+    @param The layer numbers you wish to set.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setRenderLayers, ConsoleVoid, 3, 2 + MASK_BITCOUNT, (layers$))
 {
    // The mask.
    U32 mask = 0;
@@ -824,10 +913,12 @@ ConsoleMethod(SceneWindow, setRenderLayers, void, 3, 2 + MASK_BITCOUNT, "(layers
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setRenderMasks, void, 3, 4, "(layerMask, groupMask) - Sets the layer/group mask which control what is rendered."
-              "@param layermask The bitmask for setting the layers to render\n"
-              "@param groupmask The bitmask for setting the groups to render\n"
-              "@return No return value.")
+/*! Sets the layer/group mask which control what is rendered.
+    @param layermask The bitmask for setting the layers to render
+    @param groupmask The bitmask for setting the groups to render
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setRenderMasks, ConsoleVoid, 3, 4, (layerMask, groupMask))
 {
     // Set Render Masks.
    if( argc < 4 )
@@ -838,28 +929,34 @@ ConsoleMethod(SceneWindow, setRenderMasks, void, 3, 4, "(layerMask, groupMask) -
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getRenderLayerMask, S32, 2, 2, "() - Gets the layer mask which controls what is rendered."
-              "@returns The bit mask corresponding to the layers which are to be rendered")
+/*! Gets the layer mask which controls what is rendered.
+    @returns The bit mask corresponding to the layers which are to be rendered
+*/
+ConsoleMethodWithDocs(SceneWindow, getRenderLayerMask, ConsoleInt, 2, 2, ())
 {
    return object->getRenderLayerMask();
 }   
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getRenderGroupMask, S32, 2, 2, "() - Gets the group mask which controls what is rendered."
-              "@returns The bit mask corresponding to the groups which are to be rendered")
+/*! Gets the group mask which controls what is rendered.
+    @returns The bit mask corresponding to the groups which are to be rendered
+*/
+ConsoleMethodWithDocs(SceneWindow, getRenderGroupMask, ConsoleInt, 2, 2, ())
 {
    return object->getRenderGroupMask();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setBackgroundColor, void, 3, 6,  "(float red, float green, float blue, [float alpha = 1.0]) or ( stockColorName )  - Sets the background color for the scene."
-                                                            "@param red The red value.\n"
-                                                            "@param green The green value.\n"
-                                                            "@param blue The blue value.\n"
-                                                            "@param alpha The alpha value.\n"
-                                                            "@return No return Value.")
+/*! or ( stockColorName )  - Sets the background color for the scene.
+    @param red The red value.
+    @param green The green value.
+    @param blue The blue value.
+    @param alpha The alpha value.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setBackgroundColor, ConsoleVoid, 3, 6, (float red, float green, float blue, [float alpha = 1.0]))
 {
     // The colors.
     F32 red;
@@ -926,8 +1023,10 @@ ConsoleMethod(SceneWindow, setBackgroundColor, void, 3, 6,  "(float red, float g
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getBackgroundColor, const char*, 2, 2,   "Gets the background color for the scene.\n"
-                                                                    "@return (float red / float green / float blue / float alpha) The background color for the scene.")
+/*! Gets the background color for the scene.
+    @return (float red / float green / float blue / float alpha) The background color for the scene.
+*/
+ConsoleMethodWithDocs(SceneWindow, getBackgroundColor, ConsoleString, 2, 2, (...))
 {
     // Get the background color.
     const ColorF& color = object->getBackgroundColor();
@@ -951,9 +1050,11 @@ ConsoleMethod(SceneWindow, getBackgroundColor, const char*, 2, 2,   "Gets the ba
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setUseBackgroundColor, void, 3, 3,   "Sets whether to use the scene background color or not.\n"
-                                                                "@param useBackgroundColor Whether to use the scene background color or not.\n"
-                                                                "@return No return value." )
+/*! Sets whether to use the scene background color or not.
+    @param useBackgroundColor Whether to use the scene background color or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setUseBackgroundColor, ConsoleVoid, 3, 3, (...))
 {
     // Fetch flag.
     const bool useBackgroundColor = dAtob(argv[2]);
@@ -964,8 +1065,10 @@ ConsoleMethod(SceneWindow, setUseBackgroundColor, void, 3, 3,   "Sets whether to
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getUseBackgroundColor, bool, 2, 2,   "Gets whether the scene background color is in use or not.\n"
-                                                                "@return Whether the scene background color is in use or not." )
+/*! Gets whether the scene background color is in use or not.
+    @return Whether the scene background color is in use or not.
+*/
+ConsoleMethodWithDocs(SceneWindow, getUseBackgroundColor, ConsoleBool, 2, 2, (...))
 {
     // Get the flag.
     return object->getUseBackgroundColor();
@@ -973,42 +1076,52 @@ ConsoleMethod(SceneWindow, getUseBackgroundColor, bool, 2, 2,   "Gets whether th
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setUseWindowInputEvents, void, 3, 3, "(inputStatus) Sets whether input events are monitored by the window or not.\n"
-              "@param inputStatus Whether input events are processed by the window or not.\n"
-              "@return No return value.")
+/*! Sets whether input events are monitored by the window or not.
+    @param inputStatus Whether input events are processed by the window or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setUseWindowInputEvents, ConsoleVoid, 3, 3, (inputStatus))
 {
     object->setUseWindowInputEvents( dAtob(argv[2]) );
 }   
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getUseWindowInputEvents, bool, 2, 2, "() Gets whether input events are monitored by the window or not.\n"
-              "@return Whether input events are monitored by the window or not.")
+/*! Gets whether input events are monitored by the window or not.
+    @return Whether input events are monitored by the window or not.
+*/
+ConsoleMethodWithDocs(SceneWindow, getUseWindowInputEvents, ConsoleBool, 2, 2, ())
 {
     return object->getUseWindowInputEvents();
 }   
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setUseObjectInputEvents, void, 3, 3, "(inputStatus) Sets whether input events are passed onto scene objects or not.\n"
-              "@param mouseStatus Whether input events are passed onto scene objects or not.\n")
+/*! Sets whether input events are passed onto scene objects or not.
+    @param mouseStatus Whether input events are passed onto scene objects or not.
+*/
+ConsoleMethodWithDocs(SceneWindow, setUseObjectInputEvents, ConsoleVoid, 3, 3, (inputStatus))
 {
     object->setUseObjectInputEvents( dAtob(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getUseObjectInputEvents, bool, 2, 2, "() Gets whether input events are passed onto scene objects or not.\n"
-              "@return Whether input events are passed onto scene objects or not..")
+/*! Gets whether input events are passed onto scene objects or not.
+    @return Whether input events are passed onto scene objects or not..
+*/
+ConsoleMethodWithDocs(SceneWindow, getUseObjectInputEvents, ConsoleBool, 2, 2, ())
 {
     return object->getUseObjectInputEvents();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setObjectInputEventGroupFilter, void, 3, 2 + MASK_BITCOUNT, "(groups$) Sets the input events group filter.\n"
-              "@param List of groups to filter input events with.\n"
-              "@return No return value.")
+/*! Sets the input events group filter.
+    @param List of groups to filter input events with.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setObjectInputEventGroupFilter, ConsoleVoid, 3, 2 + MASK_BITCOUNT, (groups$))
 {
    // The mask.
    U32 mask = 0;
@@ -1067,9 +1180,11 @@ ConsoleMethod(SceneWindow, setObjectInputEventGroupFilter, void, 3, 2 + MASK_BIT
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setObjectInputEventLayerFilter, void, 3, 2 + MASK_BITCOUNT, "(layers$) Sets the input events layer filter."
-              "@param The list of layers to filter input events with.\n"
-              "@return No return value.")
+/*! Sets the input events layer filter.
+    @param The list of layers to filter input events with.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setObjectInputEventLayerFilter, ConsoleVoid, 3, 2 + MASK_BITCOUNT, (layers$))
 {
    // The mask.
    U32 mask = 0;
@@ -1128,7 +1243,9 @@ ConsoleMethod(SceneWindow, setObjectInputEventLayerFilter, void, 3, 2 + MASK_BIT
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setObjectInputEventFilter, void, 4, 5, "(groupMask, layerMask, [useInvisibleFilter?]) Sets input filter for input events.")
+/*! Sets input filter for input events.
+*/
+ConsoleMethodWithDocs(SceneWindow, setObjectInputEventFilter, ConsoleVoid, 4, 5, (groupMask, layerMask, [useInvisibleFilter?]))
 {
     // Calculate Use Invisible Flag.
     bool useInvisible = argc >= 5 ? dAtob(argv[4]) : true;
@@ -1139,16 +1256,20 @@ ConsoleMethod(SceneWindow, setObjectInputEventFilter, void, 4, 5, "(groupMask, l
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setObjectInputEventInvisibleFilter, void, 3, 3, "(bool useInvisibleFilter) Sets whether invisible objects should be filtered for input events or not.")
+/*! Sets whether invisible objects should be filtered for input events or not.
+*/
+ConsoleMethodWithDocs(SceneWindow, setObjectInputEventInvisibleFilter, ConsoleVoid, 3, 3, (bool useInvisibleFilter))
 {
    object->setObjectInputEventInvisibleFilter(dAtob(argv[2]));
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, addInputListener, bool, 3, 3,    "(inputListener) Adds an object as an input listener.\n"
-                                                            "@param inputListener The object to add as an input listener.\n"
-                                                            "@return Whether the object was added as an input event listener or not.")
+/*! Adds an object as an input listener.
+    @param inputListener The object to add as an input listener.
+    @return Whether the object was added as an input event listener or not.
+*/
+ConsoleMethodWithDocs(SceneWindow, addInputListener, ConsoleBool, 3, 3, (inputListener))
 {
     // Find the SimObject
     SimObject* pSimObject = Sim::findObject( argv[2] );
@@ -1169,9 +1290,11 @@ ConsoleMethod(SceneWindow, addInputListener, bool, 3, 3,    "(inputListener) Add
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, removeInputListener, bool, 3, 3, "(inputListener) Removes an object from being an input listener.\n"
-                                                            "@param inputListener The object to remove as an input listener.\n"
-                                                            "@return Whether the object was removed as an input event listener or not.")
+/*! Removes an object from being an input listener.
+    @param inputListener The object to remove as an input listener.
+    @return Whether the object was removed as an input event listener or not.
+*/
+ConsoleMethodWithDocs(SceneWindow, removeInputListener, ConsoleBool, 3, 3, (inputListener))
 {
     // Find the SimObject
     SimObject* pSimObject = Sim::findObject( argv[2] );
@@ -1192,8 +1315,10 @@ ConsoleMethod(SceneWindow, removeInputListener, bool, 3, 3, "(inputListener) Rem
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setLockMouse, void, 3, 3, "(bool lockSet) Sets the window mouse-lock status."
-              "@return No return value.")
+/*! Sets the window mouse-lock status.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneWindow, setLockMouse, ConsoleVoid, 3, 3, (bool lockSet))
 {
     // Set Lock Mouse.
     object->setLockMouse( dAtob(argv[2]) );
@@ -1201,7 +1326,9 @@ ConsoleMethod(SceneWindow, setLockMouse, void, 3, 3, "(bool lockSet) Sets the wi
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getLockMouse, bool, 2, 2, "() Gets the window mouse-lock status.")
+/*! Gets the window mouse-lock status.
+*/
+ConsoleMethodWithDocs(SceneWindow, getLockMouse, ConsoleBool, 2, 2, ())
 {
     // Get Lock Mouse.
     return object->getLockMouse();
@@ -1209,8 +1336,10 @@ ConsoleMethod(SceneWindow, getLockMouse, bool, 2, 2, "() Gets the window mouse-l
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, setMousePosition, void, 3, 4, "(x/y) Sets Current Mouse Position."
-              "@param x,y The coordinates to set the mouse cursor. Accepts either (x,y) or (\"x y\")")
+/*! Sets Current Mouse Position.
+    @param x,y The coordinates to set the mouse cursor. Accepts either (x,y) or (\x y\
+*/
+ConsoleMethodWithDocs(SceneWindow, setMousePosition, ConsoleVoid, 3, 4, (x/y))
 {
    // The new position.
    Vector2 position;
@@ -1239,8 +1368,10 @@ ConsoleMethod(SceneWindow, setMousePosition, void, 3, 4, "(x/y) Sets Current Mou
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getMousePosition, const char*, 2, 2, "() Gets Current Mouse Position."
-              "@return Returns a string with the current mouse cursor coordinates formatted as \"x y\"")
+/*! Gets Current Mouse Position.
+    @return Returns a string with the current mouse cursor coordinates formatted as \x y\
+*/
+ConsoleMethodWithDocs(SceneWindow, getMousePosition, ConsoleString, 2, 2, ())
 {
     // Fetch Mouse Position.
     Vector2 worldMousePoint = object->getMousePosition();
@@ -1257,9 +1388,11 @@ ConsoleMethod(SceneWindow, getMousePosition, const char*, 2, 2, "() Gets Current
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getWorldPoint, const char*, 3, 4, "(X / Y) - Returns World coordinate of Window coordinate."
-              "@param x,y The coordinates in window coordinates you wish to convert to world coordinates. Accepts either (x,y) or (\"x y\")"
-              "@return Returns the desired world coordinates as a string formatted as \"x y\"")
+/*! Returns World coordinate of Window coordinate.
+    @param x,y The coordinates in window coordinates you wish to convert to world coordinates. Accepts either (x,y) or (\x y\
+    @return Returns the desired world coordinates as a string formatted as \x y\
+*/
+ConsoleMethodWithDocs(SceneWindow, getWorldPoint, ConsoleString, 3, 4, (X / Y))
 {
    // The new position.
    Vector2 srcPoint;
@@ -1293,9 +1426,11 @@ ConsoleMethod(SceneWindow, getWorldPoint, const char*, 3, 4, "(X / Y) - Returns
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getWindowPoint, const char*, 3, 4, "(X / Y) - Returns Window coordinate of World coordinate."
-              "@param x,y The coordinates in world coordinates you wish to convert to window coordinates. Accepts either (x,y) or (\"x y\")"
-              "@return Returns the desired window coordinates as a string formatted as \"x y\"")
+/*! Returns Window coordinate of World coordinate.
+    @param x,y The coordinates in world coordinates you wish to convert to window coordinates. Accepts either (x,y) or (\x y\
+    @return Returns the desired window coordinates as a string formatted as \x y\
+*/
+ConsoleMethodWithDocs(SceneWindow, getWindowPoint, ConsoleString, 3, 4, (X / Y))
 {
    // The new position.
    Vector2 srcPoint;
@@ -1329,9 +1464,11 @@ ConsoleMethod(SceneWindow, getWindowPoint, const char*, 3, 4, "(X / Y) - Returns
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getCanvasPoint, const char*, 3, 4, "(X / Y) - Returns Canvas coordinate of Window coordinate."
-               "@param x,y The coordinates in world coordinates you wish to convert to window coordinates. Accepts either (x,y) or (\"x y\")"
-              "@return Returns the desired canvas coordinates as a string formatted as \"x y\"")
+/*! Returns Canvas coordinate of Window coordinate.
+    @param x,y The coordinates in world coordinates you wish to convert to window coordinates. Accepts either (x,y) or (\x y\
+    @return Returns the desired canvas coordinates as a string formatted as \x y\
+*/
+ConsoleMethodWithDocs(SceneWindow, getCanvasPoint, ConsoleString, 3, 4, (X / Y))
 {
    // The new position.
    Point2I srcPoint;
@@ -1370,9 +1507,11 @@ ConsoleMethod(SceneWindow, getCanvasPoint, const char*, 3, 4, "(X / Y) - Returns
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneWindow, getIsWindowPoint, bool, 3, 4, "(X / Y) Checks if World coordinate is inside Window."
-               "@param x,y The coordinates in world coordinates you wish to check. Accepts either (x,y) or (\"x y\")"
-              "@return Returns true if the coordinates are within the window, and false otherwise.")
+/*! Checks if World coordinate is inside Window.
+    @param x,y The coordinates in world coordinates you wish to check. Accepts either (x,y) or (\x y\
+    @return Returns true if the coordinates are within the window, and false otherwise.
+*/
+ConsoleMethodWithDocs(SceneWindow, getIsWindowPoint, ConsoleBool, 3, 4, (X / Y))
 {
    // The new position.
    Vector2 srcPoint;
@@ -1403,3 +1542,5 @@ ConsoleMethod(SceneWindow, getIsWindowPoint, bool, 3, 4, "(X / Y) Checks if Worl
     // Check if point is in window bounds.
     return object->mBounds.pointInRect( Point2I( S32(mFloor(dstPoint.x)+object->mBounds.point.x), S32(mFloor(dstPoint.y)+object->mBounds.point.y )) );
 }
+
+ConsoleMethodGroupEndWithDocs(SceneWindow)

+ 25 - 11
engine/source/2d/gui/guiImageButtonCtrl_ScriptBindings.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,41 +20,55 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiImageButtonCtrl, setNormalImage, void, 3, 3,  "(imageAssetId) Sets the asset Id the button \"up\" state.\n"
-                                                                "@return No return value.")
+ConsoleMethodGroupBeginWithDocs(GuiImageButtonCtrl, GuiButtonCtrl)
+
+/*! Sets the asset Id the button \up\ state.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( GuiImageButtonCtrl, setNormalImage, ConsoleVoid, 3, 3, (imageAssetId))
 {
    object->setNormalImage( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiImageButtonCtrl, setHoverImage, void, 3, 3,       "(imageAssetId) Sets the asset Id the button \"hover\" state.\n"
-                                                                    "@return No return value.")
+/*! Sets the asset Id the button \hover\ state.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( GuiImageButtonCtrl, setHoverImage, ConsoleVoid, 3, 3, (imageAssetId))
 {
    object->setHoverImage( argv[2]  );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiImageButtonCtrl, setDownImage, void, 3, 3,   "(imageAssetId) Sets the asset Id the button \"down\" state.\n"
-                                                                    "@return No return value.")
+/*! Sets the asset Id the button \down\ state.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( GuiImageButtonCtrl, setDownImage, ConsoleVoid, 3, 3, (imageAssetId))
 {
    object->setDownImage( argv[2]  );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiImageButtonCtrl, setInactiveImage, void, 3, 3,    "(imageAssetId) Sets the asset Id the button \"inactive\" state.\n"
-                                                                    "@return No return value.")
+/*! Sets the asset Id the button \inactive\ state.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( GuiImageButtonCtrl, setInactiveImage, ConsoleVoid, 3, 3, (imageAssetId))
 {
    object->setInactiveImage( argv[2]  );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiImageButtonCtrl, setActive, void, 3, 3,    "(imageAssetId) Sets the asset Id the button \"inactive\" state.\n"
-                                                                    "@return No return value.")
+/*! Sets the asset Id the button \inactive\ state.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( GuiImageButtonCtrl, setActive, ConsoleVoid, 3, 3, (imageAssetId))
 {
     bool flag = dAtob( argv[2] );
     object->setActive( flag  );
 }
+
+ConsoleMethodGroupEndWithDocs(GuiImageButtonCtrl)

+ 1 - 1
engine/source/2d/gui/guiSceneObjectCtrl.cc

@@ -404,7 +404,7 @@ void GuiSceneObjectCtrl::onRender(Point2I offset, const RectI& updateRect)
       }
 
       // Setup Orthographic Projection for Object Area.
-#ifdef TORQUE_OS_IOS
+#if defined(TORQUE_OS_IOS) || defined(TORQUE_OS_ANDROID)
       glOrthof( x1, x2, y1, y2, 0.0f, MAX_LAYERS_SUPPORTED );
 #else
       glOrtho( x1, x2, y1, y2, 0.0f, MAX_LAYERS_SUPPORTED );

+ 37 - 19
engine/source/2d/gui/guiSpriteCtrl_ScriptBindings.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,25 +20,33 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiSpriteCtrl, isStaticFrameProvider, bool, 2, 2, "() - Gets whether the control is in static or dynamic (animated)mode.\n"
-                                                        "@return Returns whether the control is in static or dynamic (animated)mode.")
+ConsoleMethodGroupBeginWithDocs(GuiSpriteCtrl, GuiControl)
+
+/*! Gets whether the control is in static or dynamic (animated)mode.
+    @return Returns whether the control is in static or dynamic (animated)mode.
+*/
+ConsoleMethodWithDocs( GuiSpriteCtrl, isStaticFrameProvider, ConsoleBool, 2, 2, ())
 {
     return object->isStaticFrameProvider();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiSpriteCtrl, setImage, void, 3, 3, "(imageAssetId) Sets the image asset Id to use as the image.\n"
-                                                    "@param imageAssetId The image asset Id to use as the image.\n"
-                                                    "@return No return value.")
+/*! Sets the image asset Id to use as the image.
+    @param imageAssetId The image asset Id to use as the image.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( GuiSpriteCtrl, setImage, ConsoleVoid, 3, 3, (imageAssetId))
 {
    object->setImage( argv[2] );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod( GuiSpriteCtrl, getImage, const char*, 2, 2,  "() - Gets current image asset Id.\n"
-                                                            "@return (string imageAssetId) The image being displayed.")
+/*! Gets current image asset Id.
+    @return (string imageAssetId) The image being displayed.
+*/
+ConsoleMethodWithDocs( GuiSpriteCtrl, getImage, ConsoleString, 2, 2, ())
 {
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
@@ -54,17 +62,21 @@ ConsoleMethod( GuiSpriteCtrl, getImage, const char*, 2, 2,  "() - Gets current i
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( GuiSpriteCtrl, setImageFrame, void, 3, 3,    "(int imageFrame) Sets the image frame to use as the image.\n"
-                                                            "@param imageFrame The image frame to use as the image.\n"
-                                                            "@return No return value.")
+/*! Sets the image frame to use as the image.
+    @param imageFrame The image frame to use as the image.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( GuiSpriteCtrl, setImageFrame, ConsoleVoid, 3, 3, (int imageFrame))
 {
    object->setImageFrame( dAtoi(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod( GuiSpriteCtrl, getImageFrame, S32, 2, 2, "() - Gets current image Frame.\n"
-                                                        "@return (int frame) The frame currently being displayed.")
+/*! Gets current image Frame.
+    @return (int frame) The frame currently being displayed.
+*/
+ConsoleMethodWithDocs( GuiSpriteCtrl, getImageFrame, ConsoleInt, 2, 2, ())
 {
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
@@ -80,18 +92,22 @@ ConsoleMethod( GuiSpriteCtrl, getImageFrame, S32, 2, 2, "() - Gets current image
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod( GuiSpriteCtrl, setAnimation, void, 3, 3, "(string animationAssetId) - Sets the animation asset Id to display.\n"
-                                                        "@param animationAssetId The animation asset Id to play\n"
-                                                        "@return No return value.")
-{    
+/*! Sets the animation asset Id to display.
+    @param animationAssetId The animation asset Id to play
+    @return No return value.
+*/
+ConsoleMethodWithDocs( GuiSpriteCtrl, setAnimation, ConsoleVoid, 3, 3, (string animationAssetId))
+{
     // Set animation.
     object->setAnimation( argv[2] );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod( GuiSpriteCtrl, getAnimation, const char*, 2, 2,  "() - Gets the current animation asset Id.\n"
-                                                                "@return (string ianimationAssetId) The animation being displayed.")
+/*! Gets the current animation asset Id.
+    @return (string ianimationAssetId) The animation being displayed.
+*/
+ConsoleMethodWithDocs( GuiSpriteCtrl, getAnimation, ConsoleString, 2, 2, ())
 {
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
@@ -104,3 +120,5 @@ ConsoleMethod( GuiSpriteCtrl, getAnimation, const char*, 2, 2,  "() - Gets the c
     // Get animation.
     return DYNAMIC_VOID_CAST_TO(GuiSpriteCtrl, ImageFrameProvider, object)->getAnimation();
 }
+
+ConsoleMethodGroupEndWithDocs(GuiSpriteCtrl)

File diff suppressed because it is too large
+ 355 - 229
engine/source/2d/scene/Scene_ScriptBinding.h


+ 326 - 188
engine/source/2d/sceneobject/CompositeSprite_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,11 +20,15 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, addSprite, S32, 2, 3,    "( [a] [b] [c] [d] [e] [f] ) - Adds a sprite at the specified logical position.\n"
-                                                        "You must specify the correct number of arguments for the selected layout mode.\n"
-                                                        "The created sprite will be automatically selected.\n"
-                                                        "@param a b c d e f Logical positions #1 & #2 and four additional and optional arguments.\n"
-                                                        "@return The batch Id of the added sprite or zero if not successful." )
+ConsoleMethodGroupBeginWithDocs(CompositeSprite, SceneObject)
+
+/*! Adds a sprite at the specified logical position.
+    You must specify the correct number of arguments for the selected layout mode.
+    The created sprite will be automatically selected.
+    @param a b c d e f Logical positions #1 & #2 and four additional and optional arguments.
+    @return The batch Id of the added sprite or zero if not successful.
+*/
+ConsoleMethodWithDocs(CompositeSprite, addSprite, ConsoleInt, 2, 3, ( [a] [b] [c] [d] [e] [f] ))
 {
     if ( argc == 2 )
         return object->addSprite( SpriteBatchItem::LogicalPosition() );
@@ -34,24 +38,30 @@ ConsoleMethod(CompositeSprite, addSprite, S32, 2, 3,    "( [a] [b] [c] [d] [e] [
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, removeSprite, bool, 2, 2,    "() - Removes the selected sprite.\n"
-                                                            "@return Whether the sprite was removed or not." )
+/*! Removes the selected sprite.
+    @return Whether the sprite was removed or not.
+*/
+ConsoleMethodWithDocs(CompositeSprite, removeSprite, ConsoleBool, 2, 2, ())
 {
     return object->removeSprite();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, clearSprites, void, 2, 2,    "() - Removes all sprites.\n"
-                                                            "@return No return value." )
+/*! Removes all sprites.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, clearSprites, ConsoleVoid, 2, 2, ())
 {
     return object->clearSprites();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteCount, S32, 2, 2,   "() - Gets a count of sprites in the composite.\n"
-                                                            "@return The count of sprites in the composite." )
+/*! Gets a count of sprites in the composite.
+    @return The count of sprites in the composite.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteCount, ConsoleInt, 2, 2, ())
 {
     return object->getSpriteCount();
 }
@@ -59,10 +69,12 @@ ConsoleMethod(CompositeSprite, getSpriteCount, S32, 2, 2,   "() - Gets a count o
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setBatchLayout, void, 3, 3,      "(batchLayoutType) - Sets the batch layout type.\n"
-                                                                "The render sort mode is used when isolated batch mode is on.\n"
-                                                                "@param batchLayoutType 'none', 'rect' or 'iso' layout types are valid.\n"
-                                                                "@return No return value." )
+/*! Sets the batch layout type.
+    The render sort mode is used when isolated batch mode is on.
+    @param batchLayoutType 'none', 'rect' or 'iso' layout types are valid.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setBatchLayout, ConsoleVoid, 3, 3, (batchLayoutType))
 {
     // Fetch the batch layout type/
     CompositeSprite::BatchLayoutType batchLayoutType = CompositeSprite::getBatchLayoutTypeEnum( argv[2] );
@@ -80,17 +92,21 @@ ConsoleMethod(CompositeSprite, setBatchLayout, void, 3, 3,      "(batchLayoutTyp
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getBatchLayout, const char*, 2, 2, "() - Gets the batch layout type.\n"
-                                                                    "@return The batch layout type." )
+/*! Gets the batch layout type.
+    @return The batch layout type.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getBatchLayout, ConsoleString, 2, 2, ())
 {
     return CompositeSprite::getBatchLayoutTypeDescription( object->getBatchLayout() );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setBatchIsolated, void, 3, 3,    "(bool batchIsolated) - Sets whether the sprites are rendered, isolated from other renderings as one batch or not.\n"
-                                                                "When in batch isolated mode, the sprites can be optionally sorted.\n"
-                                                                "@return No return value." )
+/*! Sets whether the sprites are rendered, isolated from other renderings as one batch or not.
+    When in batch isolated mode, the sprites can be optionally sorted.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setBatchIsolated, ConsoleVoid, 3, 3, (bool batchIsolated))
 {
     // Fetch batch isolated.
     const bool batchIsolated = dAtob(argv[2]);
@@ -100,18 +116,22 @@ ConsoleMethod(CompositeSprite, setBatchIsolated, void, 3, 3,    "(bool batchIsol
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getBatchIsolated, bool, 2, 2,    "() - Gets whether the sprites are rendered, isolated from other renderings as one batch or not.\n"
-                                                                "@return Whether the sprites are rendered, isolated from other renderings as one batch or not." )
+/*! Gets whether the sprites are rendered, isolated from other renderings as one batch or not.
+    @return Whether the sprites are rendered, isolated from other renderings as one batch or not.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getBatchIsolated, ConsoleBool, 2, 2, ())
 {
     return object->getBatchIsolated();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setBatchCulling, void, 3, 3,     "(bool batchCulling) - Sets whether the sprites are culled.\n"
-                                                                "For sprites that are off-screen this is considerably faster during render at the expense of memory.\n"
-                                                                "For small composites with a few sprites, the overhead is probably not worth it.\n"
-                                                                "@return No return value." )
+/*! Sets whether the sprites are culled.
+    For sprites that are off-screen this is considerably faster during render at the expense of memory.
+    For small composites with a few sprites, the overhead is probably not worth it.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setBatchCulling, ConsoleVoid, 3, 3, (bool batchCulling))
 {
     // Fetch batch culling..
     const bool batchCulling = dAtob(argv[2]);
@@ -121,17 +141,21 @@ ConsoleMethod(CompositeSprite, setBatchCulling, void, 3, 3,     "(bool batchCull
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getBatchCulling, bool, 2, 2,    "() - Gets whether the sprites are render culled or not\n"
-                                                                "@return Whether the sprites are rendered culled or not." )
+/*! Gets whether the sprites are render culled or not
+    @return Whether the sprites are rendered culled or not.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getBatchCulling, ConsoleBool, 2, 2, ())
 {
     return object->getBatchCulling();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setBatchSortMode, void, 3, 3,    "(renderSortMode) - Sets the batch render sort mode.\n"
-                                                                "The render sort mode is used when isolated batch mode is on.\n"
-                                                                "@return No return value." )
+/*! Sets the batch render sort mode.
+    The render sort mode is used when isolated batch mode is on.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setBatchSortMode, ConsoleVoid, 3, 3, (renderSortMode))
 {
     // Fetch render sort mode.
     SceneRenderQueue::RenderSort batchSortMode = SceneRenderQueue::getRenderSortEnum( argv[2] );
@@ -149,18 +173,22 @@ ConsoleMethod(CompositeSprite, setBatchSortMode, void, 3, 3,    "(renderSortMode
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getBatchSortMode, const char*, 2, 2, "() - Gets the batch render sort mode.\n"
-                                                                    "@return The render sort mode." )
+/*! Gets the batch render sort mode.
+    @return The render sort mode.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getBatchSortMode, ConsoleString, 2, 2, ())
 {
     return SceneRenderQueue::getRenderSortDescription( object->getBatchSortMode() );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setDefaultSpriteStride, void, 3, 4,  "(float strideX, [float strideY]]) - Sets the stride which scales the position at which sprites are created.\n"
-                                                                    "@param strideX The default stride of the local X axis.\n"
-                                                                    "@param strideY The default stride of the local Y axis.\n"
-                                                                    "@return No return value.")
+/*! Sets the stride which scales the position at which sprites are created.
+    @param strideX The default stride of the local X axis.
+    @param strideY The default stride of the local Y axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setDefaultSpriteStride, ConsoleVoid, 3, 4, (float strideX, [float strideY]]))
 {
     Vector2 stride;
 
@@ -195,18 +223,22 @@ ConsoleMethod(CompositeSprite, setDefaultSpriteStride, void, 3, 4,  "(float stri
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getDefaultSpriteStride, const char*, 2, 2,   "() - Gets the stride which scales the position at which sprites are created.\n"
-                                                                            "@return (float strideX/float strideY) The stride which scales the position at which sprites are created.")
+/*! Gets the stride which scales the position at which sprites are created.
+    @return (float strideX/float strideY) The stride which scales the position at which sprites are created.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getDefaultSpriteStride, ConsoleString, 2, 2, ())
 {
     return object->getDefaultSpriteStride().scriptThis();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setDefaultSpriteSize, void, 3, 4,    "(float width, [float height]) - Sets the size at which sprites are created.\n"
-                                                                    "@param width The default width of sprites.\n"
-                                                                    "@param height The default height of sprites\n"
-                                                                    "@return No return value.")
+/*! Sets the size at which sprites are created.
+    @param width The default width of sprites.
+    @param height The default height of sprites
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setDefaultSpriteSize, ConsoleVoid, 3, 4, (float width, [float height]))
 {
     Vector2 size;
 
@@ -241,17 +273,21 @@ ConsoleMethod(CompositeSprite, setDefaultSpriteSize, void, 3, 4,    "(float widt
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getDefaultSpriteSize, const char*, 2, 2, "() - Gets the size at which sprites are created.\n"
-                                                                        "@return (float width/float height) The size at which sprites are created.")
+/*! Gets the size at which sprites are created.
+    @return (float width/float height) The size at which sprites are created.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getDefaultSpriteSize, ConsoleString, 2, 2, ())
 {
     return object->getDefaultSpriteSize().scriptThis();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setDefaultSpriteAngle, void, 3, 3,   "(float angle) - Sets the angle at which sprites are created.\n"
-                                                                    "@param angle The angle at which sprites are created.\n"
-                                                                    "@return No return value.")
+/*! Sets the angle at which sprites are created.
+    @param angle The angle at which sprites are created.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setDefaultSpriteAngle, ConsoleVoid, 3, 3, (float angle))
 {
     // Fetch angle.
     const F32 angle = mDegToRad( dAtof(argv[2]) );
@@ -261,35 +297,43 @@ ConsoleMethod(CompositeSprite, setDefaultSpriteAngle, void, 3, 3,   "(float angl
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getDefaultSpriteAngle, F32, 3, 3,   "() - Gets the angle at which sprites are created.\n"
-                                                                    "@return (float angle) The angle at which sprites are created.")
+/*! Gets the angle at which sprites are created.
+    @return (float angle) The angle at which sprites are created.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getDefaultSpriteAngle, ConsoleFloat, 3, 3, ())
 {
     return mRadToDeg( static_cast<SpriteBatch*>(object)->getDefaultSpriteAngle() );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, selectSprite, bool, 3, 3,    "( a b [c] [d] [e] [f] ) - Selects a sprite at the specified logical position.\n"
-                                                            "@param a b c d e f Logical positions #1 & #2 and four additional and optional arguments.\n"
-                                                            "@return Whether the sprite was selected or not." )
+/*! Selects a sprite at the specified logical position.
+    @param a b c d e f Logical positions #1 & #2 and four additional and optional arguments.
+    @return Whether the sprite was selected or not.
+*/
+ConsoleMethodWithDocs(CompositeSprite, selectSprite, ConsoleBool, 3, 3, ( a b [c] [d] [e] [f] ))
 {
     return object->selectSprite( SpriteBatchItem::LogicalPosition(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, selectSpriteId, bool, 3, 3,  "( int batchId ) - Selects a sprite with the specified batch Id.\n"
-                                                            "@param batchId The batch Id of the sprite to select.\n"
-                                                            "@return Whether the sprite was selected or not." )
+/*! Selects a sprite with the specified batch Id.
+    @param batchId The batch Id of the sprite to select.
+    @return Whether the sprite was selected or not.
+*/
+ConsoleMethodWithDocs(CompositeSprite, selectSpriteId, ConsoleBool, 3, 3, ( int batchId ))
 {
     return object->selectSpriteId( dAtoi(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, selectSpriteName, bool, 3, 3,    "( name ) - Selects a sprite with the specified name.\n"
-                                                                "@param name The name of the sprite.\n"
-                                                                "@return Whether the sprite was selected or not." )
+/*! Selects a sprite with the specified name.
+    @param name The name of the sprite.
+    @return Whether the sprite was selected or not.
+*/
+ConsoleMethodWithDocs(CompositeSprite, selectSpriteName, ConsoleBool, 3, 3, ( name ))
 {
     return object->selectSpriteName( argv[2] );
 }
@@ -297,27 +341,33 @@ ConsoleMethod(CompositeSprite, selectSpriteName, bool, 3, 3,    "( name ) - Sele
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, deselectSprite, void, 2, 2,  "() - Deselects any selected sprite.\n"
-                                                            "This is not required but can be used to stop accidental changes to sprites.\n"
-                                                            "@return No return value." )
+/*! Deselects any selected sprite.
+    This is not required but can be used to stop accidental changes to sprites.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, deselectSprite, ConsoleVoid, 2, 2, ())
 {
     return object->deselectSprite();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, isSpriteSelected, bool, 2, 2,    "() - Checks whether a sprite is selected or not.\n"
-                                                                "@return Whether a sprite is selected or not." )
+/*! Checks whether a sprite is selected or not.
+    @return Whether a sprite is selected or not.
+*/
+ConsoleMethodWithDocs(CompositeSprite, isSpriteSelected, ConsoleBool, 2, 2, ())
 {
     return object->isSpriteSelected();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteImage, void, 3, 4,  "(imageAssetId, [int imageFrame]) - Sets the sprite image and optional frame.\n"
-                                                            "@param imageAssetId The image to set the sprite to.\n"
-                                                            "@param imageFrame The image frame of the imageAssetId to set the sprite to.\n"
-                                                            "@return No return value." )
+/*! Sets the sprite image and optional frame.
+    @param imageAssetId The image to set the sprite to.
+    @param imageFrame The image frame of the imageAssetId to set the sprite to.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteImage, ConsoleVoid, 3, 4, (imageAssetId, [int imageFrame]))
 {
     // Fetch frame.
     const U32 frame = argc >=4 ? dAtoi(argv[3]) : 0;
@@ -327,17 +377,21 @@ ConsoleMethod(CompositeSprite, setSpriteImage, void, 3, 4,  "(imageAssetId, [int
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteImage, const char*, 2, 2,   "() - Gets the sprite image.\n"
-                                                                    "@return The sprite image." )
+/*! Gets the sprite image.
+    @return The sprite image.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteImage, ConsoleString, 2, 2, ())
 {
     return object->getSpriteImage();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteImageFrame, void, 3, 3,  "(int imageFrame) - Sets the sprite image frame.\n"
-                                                            "@param imageFrame The image frame to set the sprite to.\n"
-                                                            "@return No return value." )
+/*! Sets the sprite image frame.
+    @param imageFrame The image frame to set the sprite to.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteImageFrame, ConsoleVoid, 3, 3, (int imageFrame))
 {
     // Fetch frame.
     const U32 frame = dAtoi(argv[2]);
@@ -347,42 +401,52 @@ ConsoleMethod(CompositeSprite, setSpriteImageFrame, void, 3, 3,  "(int imageFram
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteImageFrame, S32, 2, 2,  "() - Gets the sprite image frame.\n"
-                                                                "@return The sprite image frame." )
+/*! Gets the sprite image frame.
+    @return The sprite image frame.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteImageFrame, ConsoleInt, 2, 2, ())
 {
     return object->getSpriteImageFrame();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteAnimation, void, 3, 4,  "(animationAssetId) - Sets the sprite animation.\n"
-                                                                "@param imageAssetId The animation to set the sprite to.\n"
-                                                                "@return No return value." )
+/*! Sets the sprite animation.
+    @param imageAssetId The animation to set the sprite to.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteAnimation, ConsoleVoid, 3, 4, (animationAssetId))
 {
     object->setSpriteAnimation( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteAnimation, const char*, 2, 2,   "() - Gets the sprite animation.\n"
-                                                                        "@return The sprite animation." )
+/*! Gets the sprite animation.
+    @return The sprite animation.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteAnimation, ConsoleString, 2, 2, ())
 {
     return object->getSpriteAnimation();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, clearSpriteAsset, void, 2, 2,    "() - Clears any image or animation asset from the sprite.\n"
-                                                                "@return No return value." )
+/*! Clears any image or animation asset from the sprite.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, clearSpriteAsset, ConsoleVoid, 2, 2, ())
 {
     return object->clearSpriteAsset();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteVisible, void, 3, 3,    "(bool visible) - Sets whether the sprite is visible or not.\n"
-                                                                "@param visible Whether the sprite is visible or not.\n"
-                                                                "@return No return value." )
+/*! Sets whether the sprite is visible or not.
+    @param visible Whether the sprite is visible or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteVisible, ConsoleVoid, 3, 3, (bool visible))
 {
     // Fetch visible.
     const bool visible = dAtob(argv[2]);
@@ -393,18 +457,22 @@ ConsoleMethod(CompositeSprite, setSpriteVisible, void, 3, 3,    "(bool visible)
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteVisible, bool, 2, 2,    "() - Gets whether the sprite is visible or not.\n"
-                                                                "@return Whether the sprite is visible or not." )
+/*! Gets whether the sprite is visible or not.
+    @return Whether the sprite is visible or not.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteVisible, ConsoleBool, 2, 2, ())
 {
     return object->getSpriteVisible();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteLocalPosition, void, 3, 4,  "(float localX, float localY) - Sets the sprites local position.\n"
-                                                                    "@param localX The local position X.\n"
-                                                                    "@param localY The local position Y.\n"
-                                                                    "@return No return value." )
+/*! Sets the sprites local position.
+    @param localX The local position X.
+    @param localY The local position Y.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteLocalPosition, ConsoleVoid, 3, 4, (float localX, float localY))
 {
     Vector2 localPosition;
 
@@ -435,17 +503,21 @@ ConsoleMethod(CompositeSprite, setSpriteLocalPosition, void, 3, 4,  "(float loca
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteLocalPosition, const char*, 2, 2,   "() - Gets the sprite local position.\n"
-                                                                            "@return The sprite local position." )
+/*! Gets the sprite local position.
+    @return The sprite local position.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteLocalPosition, ConsoleString, 2, 2, ())
 {
     return object->getSpriteLocalPosition().scriptThis();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteAngle, void, 3, 3,  "(float localAngle) - Sets the sprites local angle.\n"
-                                                            "@param localAngle The sprite local angle.\n"
-                                                            "@return No return value." )
+/*! Sets the sprites local angle.
+    @param localAngle The sprite local angle.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteAngle, ConsoleVoid, 3, 3, (float localAngle))
 {
     // Fetch angle.
     const F32 angle = mDegToRad( dAtof(argv[2]) );
@@ -455,17 +527,21 @@ ConsoleMethod(CompositeSprite, setSpriteAngle, void, 3, 3,  "(float localAngle)
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteAngle, F32, 2, 2,   "() - Gets the sprite local angle.\n"
-                                                            "@return The sprite local angle." )
+/*! Gets the sprite local angle.
+    @return The sprite local angle.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteAngle, ConsoleFloat, 2, 2, ())
 {
     return mRadToDeg( object->getSpriteAngle() );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteDepth, void, 3, 3,  "(float depth) - Sets the sprites depth.\n"
-                                                            "@param depth The sprite depth.\n"
-                                                            "@return No return value." )
+/*! Sets the sprites depth.
+    @param depth The sprite depth.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteDepth, ConsoleVoid, 3, 3, (float depth))
 {
     // Fetch depth.
     const F32 depth = dAtof(argv[2]);
@@ -475,18 +551,22 @@ ConsoleMethod(CompositeSprite, setSpriteDepth, void, 3, 3,  "(float depth) - Set
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteDepth, F32, 2, 2,   "() - Gets the sprite depth.\n"
-                                                            "@return The sprite depth." )
+/*! Gets the sprite depth.
+    @return The sprite depth.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteDepth, ConsoleFloat, 2, 2, ())
 {
     return object->getSpriteDepth();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteSize, void, 3, 4,   "(float width, [float height]) - Sets the sprite size.\n"
-                                                            "@param width The sprite width.\n"
-                                                            "@param height The sprite height\n"
-                                                            "@return No return value.")
+/*! Sets the sprite size.
+    @param width The sprite width.
+    @param height The sprite height
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteSize, ConsoleVoid, 3, 4, (float width, [float height]))
 {
     Vector2 size;
 
@@ -521,17 +601,21 @@ ConsoleMethod(CompositeSprite, setSpriteSize, void, 3, 4,   "(float width, [floa
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteSize, const char*, 2, 2,    "() - Gets the sprite size.\n"
-                                                                    "@return (float width/float height) The sprite size.")
+/*! Gets the sprite size.
+    @return (float width/float height) The sprite size.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteSize, ConsoleString, 2, 2, ())
 {
     return object->getSpriteSize().scriptThis();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteFlipX, void, 3, 3,  "(bool flipX) - Sets whether the sprite is flipped along its local X axis or not.\n"
-                                                            "@param flipX Whether the sprite is flipped along its local X axis or not.\n"
-                                                            "@return No return value." )
+/*! Sets whether the sprite is flipped along its local X axis or not.
+    @param flipX Whether the sprite is flipped along its local X axis or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteFlipX, ConsoleVoid, 3, 3, (bool flipX))
 {
     // Fetch flipX.
     const bool flipX = dAtob(argv[2]);
@@ -541,17 +625,21 @@ ConsoleMethod(CompositeSprite, setSpriteFlipX, void, 3, 3,  "(bool flipX) - Sets
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteFlipX, bool, 2, 2,   "() - Gets whether the sprite is flipped along its local X axis or not.\n"
-                                                            "@return Whether the sprite is flipped along its local X axis or not." )
+/*! Gets whether the sprite is flipped along its local X axis or not.
+    @return Whether the sprite is flipped along its local X axis or not.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteFlipX, ConsoleBool, 2, 2, ())
 {
     return object->getSpriteFlipX();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteFlipY, void, 3, 3,  "(bool flipY) - Sets whether the sprite is flipped along its local Y axis or not.\n"
-                                                            "@param flipY Whether the sprite is flipped along its local Y axis or not.\n"
-                                                            "@return No return value." )
+/*! Sets whether the sprite is flipped along its local Y axis or not.
+    @param flipY Whether the sprite is flipped along its local Y axis or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteFlipY, ConsoleVoid, 3, 3, (bool flipY))
 {
     const bool flipY = dAtob(argv[2]);
 
@@ -560,18 +648,22 @@ ConsoleMethod(CompositeSprite, setSpriteFlipY, void, 3, 3,  "(bool flipY) - Sets
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteFlipY, bool, 2, 2,   "() - Gets whether the sprite is flipped along its local Y axis or not.\n"
-                                                                "@return Whether the sprite is flipped along its local Y axis or not." )
+/*! Gets whether the sprite is flipped along its local Y axis or not.
+    @return Whether the sprite is flipped along its local Y axis or not.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteFlipY, ConsoleBool, 2, 2, ())
 {
     return object->getSpriteFlipY();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteSortPoint, void, 3, 4,  "(float localX, float localY) - Sets the sprites sort point.\n"
-                                                                "@param localX The local sort point X.\n"
-                                                                "@param localY The local sort point Y.\n"
-                                                                "@return No return value." )
+/*! Sets the sprites sort point.
+    @param localX The local sort point X.
+    @param localY The local sort point Y.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteSortPoint, ConsoleVoid, 3, 4, (float localX, float localY))
 {
     Vector2 sortPoint;
 
@@ -602,8 +694,10 @@ ConsoleMethod(CompositeSprite, setSpriteSortPoint, void, 3, 4,  "(float localX,
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteSortPoint, const char*, 2, 2,   "() - Gets the sprite local sort point.\n"
-                                                                        "@return The sprite local sort point." )
+/*! Gets the sprite local sort point.
+    @return The sprite local sort point.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteSortPoint, ConsoleString, 2, 2, ())
 {
     return object->getSpriteSortPoint().scriptThis();
 }
@@ -611,26 +705,32 @@ ConsoleMethod(CompositeSprite, getSpriteSortPoint, const char*, 2, 2,   "() - Ge
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteRenderGroup, void, 3, 3,    "(renderGroup) Sets the name of the render group used to sort the sprite during rendering.\n"
-                                                                    "@param renderGroup The name of the render group to use.  Defaults to nothing.\n"
-                                                                    "@return No return value.")
+/*! Sets the name of the render group used to sort the sprite during rendering.
+    @param renderGroup The name of the render group to use.  Defaults to nothing.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteRenderGroup, ConsoleVoid, 3, 3, (renderGroup))
 {
     object->setSpriteRenderGroup( argv[2] );
 } 
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteRenderGroup, const char*, 2, 2, "() Gets the name of the render group used to sort the sprite during rendering.\n"
-                                                                        "@return The render group used to sort the object during rendering.")
+/*! Gets the name of the render group used to sort the sprite during rendering.
+    @return The render group used to sort the object during rendering.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteRenderGroup, ConsoleString, 2, 2, ())
 {
     return object->getSpriteRenderGroup();
 } 
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteBlendMode, void, 3, 3,   "(bool blendMode) - Sets whether sprite blending is on or not.\n"
-                                                                "@blendMode Whether sprite blending is on or not.\n"
-                                                                "@return No return Value.")
+/*! Sets whether sprite blending is on or not.
+    @blendMode Whether sprite blending is on or not.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteBlendMode, ConsoleVoid, 3, 3, (bool blendMode))
 {
     // Fetch blend mode.
     const bool blendMode = dAtob(argv[2]);
@@ -640,17 +740,21 @@ ConsoleMethod(CompositeSprite, setSpriteBlendMode, void, 3, 3,   "(bool blendMod
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteBlendMode, bool, 2, 2,  "() - Gets whether sprite blending is on or not.\n"
-                                                                "@return (bool blendMode) Whether sprite blending is on or not.")
+/*! Gets whether sprite blending is on or not.
+    @return (bool blendMode) Whether sprite blending is on or not.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteBlendMode, ConsoleBool, 2, 2, ())
 {
    return object->getSpriteBlendMode();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteSrcBlendFactor, void, 3, 3, "(srcBlend) - Sets the sprite source blend factor.\n"
-                                                                    "@param srcBlend The sprite source blend factor.\n"
-                                                                    "@return No return Value.")
+/*! Sets the sprite source blend factor.
+    @param srcBlend The sprite source blend factor.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteSrcBlendFactor, ConsoleVoid, 3, 3, (srcBlend))
 {
     // Fetch source blend factor.
     GLenum blendFactor = SceneObject::getSrcBlendFactorEnum(argv[2]);
@@ -660,17 +764,21 @@ ConsoleMethod(CompositeSprite, setSpriteSrcBlendFactor, void, 3, 3, "(srcBlend)
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteSrcBlendFactor, const char*, 2, 2,  "() - Gets the sprite source blend factor.\n"
-                                                                            "@return (srcBlend) The sprite source blend factor.")
+/*! Gets the sprite source blend factor.
+    @return (srcBlend) The sprite source blend factor.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteSrcBlendFactor, ConsoleString, 2, 2, ())
 {
    return SceneObject::getSrcBlendFactorDescription( object->getSpriteSrcBlendFactor() );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteDstBlendFactor, void, 3, 3, "(dstBlend) - Sets the sprite destination blend factor.\n"
-                                                                    "@param dstBlend The sprite destination blend factor.\n"
-                                                                    "@return No return Value.")
+/*! Sets the sprite destination blend factor.
+    @param dstBlend The sprite destination blend factor.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteDstBlendFactor, ConsoleVoid, 3, 3, (dstBlend))
 {
     // Fetch destination blend factor.
     GLenum blendFactor = SceneObject::getDstBlendFactorEnum(argv[2]);
@@ -680,20 +788,24 @@ ConsoleMethod(CompositeSprite, setSpriteDstBlendFactor, void, 3, 3, "(dstBlend)
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteDstBlendFactor, const char*, 2, 2,  "() - Gets the sprite destination blend factor.\n"
-                                                                            "@return (dstBlend) The sprite destination blend factor.")
+/*! Gets the sprite destination blend factor.
+    @return (dstBlend) The sprite destination blend factor.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteDstBlendFactor, ConsoleString, 2, 2, ())
 {
    return SceneObject::getDstBlendFactorDescription( object->getSpriteDstBlendFactor() );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteBlendColor, void, 3, 6, "(float red, float green, float blue, [float alpha = 1.0]) or ( stockColorName ) - Sets the sprite blend color."
-                                                                "@param red The red value.\n"
-                                                                "@param green The green value.\n"
-                                                                "@param blue The blue value.\n"
-                                                                "@param alpha The alpha value.\n"
-                                                                "@return No return Value.")
+/*! or ( stockColorName ) - Sets the sprite blend color.
+    @param red The red value.
+    @param green The green value.
+    @param blue The blue value.
+    @param alpha The alpha value.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteBlendColor, ConsoleVoid, 3, 6, (float red, float green, float blue, [float alpha = 1.0]))
 {
     // The colors.
     F32 red;
@@ -768,9 +880,11 @@ ConsoleMethod(CompositeSprite, setSpriteBlendColor, void, 3, 6, "(float red, flo
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteBlendColor, const char*, 2, 3,  "(allowColorNames) Gets the sprite blend color\n"
-                                                                        "@param allowColorNames Whether to allow stock color names to be returned or not.  Optional: Defaults to false.\n"
-                                                                        "@return (float red / float green / float blue / float alpha) The sprite blend color.")
+/*! Gets the sprite blend color
+    @param allowColorNames Whether to allow stock color names to be returned or not.  Optional: Defaults to false.
+    @return (float red / float green / float blue / float alpha) The sprite blend color.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteBlendColor, ConsoleString, 2, 3, (allowColorNames))
 {
     // Get Blend color.
     ColorF blendColor = object->getSpriteBlendColor();
@@ -791,79 +905,97 @@ ConsoleMethod(CompositeSprite, getSpriteBlendColor, const char*, 2, 3,  "(allowC
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteBlendAlpha, void, 3, 3, "(float alpha) - Sets the sprite color alpha (transparency).\n"
-                                                                "The alpha value specifies directly the transparency of the image. A value of 1.0 will not affect the object and a value of 0.0 will make the object completely transparent.\n"
-                                                                "@param alpha The alpha value.\n"
-                                                                "@return No return Value.")
+/*! Sets the sprite color alpha (transparency).
+    The alpha value specifies directly the transparency of the image. A value of 1.0 will not affect the object and a value of 0.0 will make the object completely transparent.
+    @param alpha The alpha value.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteBlendAlpha, ConsoleVoid, 3, 3, (float alpha))
 {
     object->setSpriteBlendAlpha( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteBlendAlpha, F32, 2, 2,  "() - Gets the sprite color alpha (transparency).\n"
-                                                                "@return (float alpha) The alpha value, a range from 0.0 to 1.0.  Less than zero if alpha testing is disabled.")
+/*! Gets the sprite color alpha (transparency).
+    @return (float alpha) The alpha value, a range from 0.0 to 1.0.  Less than zero if alpha testing is disabled.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteBlendAlpha, ConsoleFloat, 2, 2, ())
 {
     return object->getSpriteBlendAlpha();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteAlphaTest, void, 3, 3,  "(float alpha) - Set the sprite alpha test.\n"
-                                                                "@param value Numeric value of 0.0 to 1.0 to turn on alpha testing. Less than zero to disable alpha testing."
-                                                                "@return No return Value.")
+/*! Set the sprite alpha test.
+    @param value Numeric value of 0.0 to 1.0 to turn on alpha testing. Less than zero to disable alpha testing.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteAlphaTest, ConsoleVoid, 3, 3, (float alpha))
 {
     object->setSpriteAlphaTest(dAtof(argv[2]));
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteAlphaTest, F32, 2, 2,   "() - Gets the sprite alpha test.\n"
-                                                                "@return (S32) A value of 0 to 255 if alpha testing is enabled. <0 represents disabled alpha testing.")
+/*! Gets the sprite alpha test.
+    @return (S32) A value of 0 to 255 if alpha testing is enabled. <0 represents disabled alpha testing.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteAlphaTest, ConsoleFloat, 2, 2, ())
 {
     return object->getSpriteAlphaTest();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteDataObject, void, 3, 3, "(object) - Set the sprite data object.\n"
-                                                                "NOTE: This object will be persisted alongside the composite sprite.\n"
-                                                                "To clear the object you can pass an empty string.\n"
-                                                                "@return No return Value.")
+/*! Set the sprite data object.
+    NOTE: This object will be persisted alongside the composite sprite.
+    To clear the object you can pass an empty string.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteDataObject, ConsoleVoid, 3, 3, (object))
 {
     object->setSpriteDataObject( Sim::findObject( argv[2] ) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteDataObject, const char*, 2, 2,  "() - Gets the sprite data object.\n"
-                                                                        "@return The sprite data object.")
+/*! Gets the sprite data object.
+    @return The sprite data object.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteDataObject, ConsoleString, 2, 2, ())
 {
     return object->getSpriteDataObject()->getIdString();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, setSpriteName, void, 3, 3,   "(name) - Set the sprite name.\n"
-                                                            "This must be unique within this composite sprite instance.  To clear the name you can pass an empty string.\n"
-                                                            "@return No return Value.")
+/*! Set the sprite name.
+    This must be unique within this composite sprite instance.  To clear the name you can pass an empty string.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(CompositeSprite, setSpriteName, ConsoleVoid, 3, 3, (name))
 {
     object->setSpriteName( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, getSpriteName, const char*, 2, 2,    "() - Gets the sprite name.\n"
-                                                                    "@return The sprite name.")
+/*! Gets the sprite name.
+    @return The sprite name.
+*/
+ConsoleMethodWithDocs(CompositeSprite, getSpriteName, ConsoleString, 2, 2, ())
 {
     return object->getSpriteName();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, pickPoint, const char*, 3, 4,    "(x / y ) Picks sprites intersecting the specified point with optional group/layer masks.\n"
-                                                                "@param x/y The coordinate of the point as either (\"x y\") or (x,y)\n"
-                                                                "@return Returns list of sprite Ids.")
+/*! Picks sprites intersecting the specified point with optional group/layer masks.
+    @param x/y The coordinate of the point as either (\x y\ or (x,y)
+    @return Returns list of sprite Ids.
+*/
+ConsoleMethodWithDocs(CompositeSprite, pickPoint, ConsoleString, 3, 4, (x / y ))
 {
     // Fetch sprite batch query and clear results.
     SpriteBatchQuery* pSpriteBatchQuery = object->getSpriteBatchQuery( true );
@@ -960,10 +1092,12 @@ ConsoleMethod(CompositeSprite, pickPoint, const char*, 3, 4,    "(x / y ) Picks
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, pickArea, const char*, 4, 6, "(startx/y, endx/y ) Picks sprites intersecting the specified area with optional group/layer masks.\n"
-                                                            "@param startx/y The coordinates of the start point as either (\"x y\") or (x,y)\n"
-                                                            "@param endx/y The coordinates of the end point as either (\"x y\") or (x,y)\n"
-                                                            "@return Returns list of sprite Ids.")
+/*! Picks sprites intersecting the specified area with optional group/layer masks.
+    @param startx/y The coordinates of the start point as either (\x y\ or (x,y)
+    @param endx/y The coordinates of the end point as either (\x y\ or (x,y)
+    @return Returns list of sprite Ids.
+*/
+ConsoleMethodWithDocs(CompositeSprite, pickArea, ConsoleString, 4, 6, (startx/y, endx/y ))
 {
     // Fetch sprite batch query and clear results.
     SpriteBatchQuery* pSpriteBatchQuery = object->getSpriteBatchQuery( true );
@@ -1088,10 +1222,12 @@ ConsoleMethod(CompositeSprite, pickArea, const char*, 4, 6, "(startx/y, endx/y )
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(CompositeSprite, pickRay, const char*, 4, 6,  "(startx/y, endx/y) Picks sprites intersecting the specified ray with optional group/layer masks.\n"
-                                                            "@param startx/y The coordinates of the start point as either (\"x y\") or (x,y)\n"
-                                                            "@param endx/y The coordinates of the end point as either (\"x y\") or (x,y)\n"
-                                                            "@return Returns list of sprite Ids")
+/*! Picks sprites intersecting the specified ray with optional group/layer masks.
+    @param startx/y The coordinates of the start point as either (\x y\ or (x,y)
+    @param endx/y The coordinates of the end point as either (\x y\ or (x,y)
+    @return Returns list of sprite Ids
+*/
+ConsoleMethodWithDocs(CompositeSprite, pickRay, ConsoleString, 4, 6, (startx/y, endx/y))
 {
     // Fetch sprite batch query and clear results.
     SpriteBatchQuery* pSpriteBatchQuery = object->getSpriteBatchQuery( true );
@@ -1205,3 +1341,5 @@ ConsoleMethod(CompositeSprite, pickRay, const char*, 4, 6,  "(startx/y, endx/y)
     // Return buffer.
     return pBuffer;
 }
+
+ConsoleMethodGroupEndWithDocs(CompositeSprite)

+ 4 - 4
engine/source/2d/sceneobject/ImageFont.cc

@@ -328,7 +328,7 @@ void ImageFont::setFontSize( const Vector2& size )
 
 //-----------------------------------------------------------------------------
 
-void ImageFont::setFontPadding( const U32 padding )
+void ImageFont::setFontPadding( const F32 padding )
 {
     mFontPadding = padding;
     calculateSpatials();
@@ -349,7 +349,7 @@ void ImageFont::calculateSpatials( void )
     }
 
     // Calculate total font padding.
-    const U32 totalFontPadding = (renderCharacters * mFontPadding) - mFontPadding;
+    const F32 totalFontPadding = (renderCharacters * mFontPadding) - mFontPadding;
 
     // Calculate total character size.
     const Vector2 totalFontSize( renderCharacters * mFontSize.x, mFontSize.y );
@@ -366,14 +366,14 @@ void ImageFont::calculateSpatials( void )
         case ALIGN_LEFT:
             {
                 // Size is twice the padded text width as we're aligning to the left from the position expanding rightwards.
-                setSize( totalPaddedTextSize * 2.0f );
+                setSize( totalPaddedTextSize.x * 2.0f, totalPaddedTextSize.y );
             }
             break;
 
         case ALIGN_RIGHT:
             {
                 // Size is twice the padded text width as we're aligning to the right from the position expanding leftwards.
-                setSize( totalPaddedTextSize * 2.0f );
+                setSize( totalPaddedTextSize.x * 2.0f, totalPaddedTextSize.y );
             }
             break;
 

+ 5 - 5
engine/source/2d/sceneobject/ImageFont.h

@@ -75,7 +75,7 @@ private:
 private:
     AssetPtr<ImageAsset>    mImageAsset;
     StringBuffer            mText;
-    U32                     mFontPadding;
+    F32                     mFontPadding;
     Vector2                 mFontSize;
     TextAlignment           mTextAlignment;
 
@@ -106,8 +106,8 @@ public:
     inline TextAlignment getTextAlignment( void ) const                     { return mTextAlignment; }
     void setFontSize( const Vector2& size );
     inline Vector2 getFontSize( void ) const                                { return mFontSize; }
-    void setFontPadding( const U32 padding );
-    inline U32 getFontPadding( void ) const                                 { return mFontPadding; }
+    void setFontPadding( const F32 padding );
+    inline F32 getFontPadding( void ) const                                 { return mFontPadding; }
 
     static TextAlignment getTextAlignmentEnum(const char* label);
     static const char* getTextAlignmentDescription(const TextAlignment alignment);
@@ -125,8 +125,8 @@ protected:
     static bool setTextAlignment( void* obj, const char* data );
     static bool writeTextAlignment( void* obj, StringTableEntry pFieldName ){return static_cast<ImageFont*>(obj)->getTextAlignment() != ImageFont::ALIGN_CENTER; }
     static bool setFontSize( void* obj, const char* data )                  { static_cast<ImageFont*>( obj )->setFontSize( Utility::mGetStringElementVector(data) ); return false; }
-    static bool writeFontSize( void* obj, StringTableEntry pFieldName )     { return static_cast<ImageFont*>(obj)->getFontSize().isEqual(Vector2::getOne()); }
-    static bool setFontPadding( void* obj, const char* data )               { static_cast<ImageFont*>( obj )->setFontPadding( dAtoi(data) ); return false; }
+	static bool writeFontSize( void* obj, StringTableEntry pFieldName )     { return static_cast<ImageFont*>(obj)->getFontSize().notEqual(Vector2::getOne()); }	
+    static bool setFontPadding( void* obj, const char* data )               { static_cast<ImageFont*>( obj )->setFontPadding( dAtof(data) ); return false; }
     static bool writeFontPadding( void* obj, StringTableEntry pFieldName )  { return static_cast<ImageFont*>(obj)->getFontPadding() != 0; }
 };
 

+ 48 - 24
engine/source/2d/sceneobject/ImageFont_ScriptBinding.h

@@ -20,9 +20,13 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageFont, setImage, bool, 3, 3,  "(imageAssetId) - Sets the image asset to use..\n"
-                                                "@param imageName The image asset to use.\n"
-                                                "@return Returns true on success.")
+ConsoleMethodGroupBeginWithDocs(ImageFont, SceneObject)
+
+/*! Sets the image asset to use..
+    @param imageName The image asset to use.
+    @return Returns true on success.
+*/
+ConsoleMethodWithDocs(ImageFont, setImage, ConsoleBool, 3, 3, (imageAssetId))
 {
     // Set Image.
     return object->setImage( argv[2] );
@@ -30,8 +34,10 @@ ConsoleMethod(ImageFont, setImage, bool, 3, 3,  "(imageAssetId) - Sets the image
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageFont, getImage, const char*, 2, 2,   "() - Gets current image asset..\n"
-                                                        "@return The current image asset.")
+/*! Gets current image asset..
+    @return The current image asset.
+*/
+ConsoleMethodWithDocs(ImageFont, getImage, ConsoleString, 2, 2, ())
 {
     // Get Image.
     return object->getImage();
@@ -39,23 +45,29 @@ ConsoleMethod(ImageFont, getImage, const char*, 2, 2,   "() - Gets current image
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageFont, setText, void, 3, 3,   "(text) - Set the text to render.\n")
+/*! Set the text to render.
+*/
+ConsoleMethodWithDocs(ImageFont, setText, ConsoleVoid, 3, 3, (text))
 {
     object->setText(argv[2]);
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageFont, getText, const char*, 2, 2,    "() - Gets the text being rendered.\n")
+/*! Gets the text being rendered.
+*/
+ConsoleMethodWithDocs(ImageFont, getText, ConsoleString, 2, 2, ())
 {
     return object->getText().getPtr8();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageFont, setTextAlignment, void, 3, 3,  "(alignment) - Set the text alignment to 'left', 'center' or 'right'.\n"
-                                                        "@param alignment The text alignment of 'left', 'center' or 'right'.\n"
-                                                        "@return No return value.")
+/*! Set the text alignment to 'left', 'center' or 'right'.
+    @param alignment The text alignment of 'left', 'center' or 'right'.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageFont, setTextAlignment, ConsoleVoid, 3, 3, (alignment))
 {
 
     object->setTextAlignment( ImageFont::getTextAlignmentEnum(argv[2]) );
@@ -63,18 +75,22 @@ ConsoleMethod(ImageFont, setTextAlignment, void, 3, 3,  "(alignment) - Set the t
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageFont, getTextAlignment, const char*, 2, 2,   "() - Gets the text alignment.\n"
-                                                                "@return The text alignment of 'left', 'center' or 'right'.")
+/*! Gets the text alignment.
+    @return The text alignment of 'left', 'center' or 'right'.
+*/
+ConsoleMethodWithDocs(ImageFont, getTextAlignment, ConsoleString, 2, 2, ())
 {
     return ImageFont::getTextAlignmentDescription(object->getTextAlignment());
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageFont, setFontSize, void, 3, 4,   "(width, height) - Set the size of the font characters.\n"
-                                                    "@param width The width of a font character.\n"
-                                                    "@param height The height of a font character.\n"
-                                                    "@return No return value.")
+/*! Set the size of the font characters.
+    @param width The width of a font character.
+    @param height The height of a font character.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageFont, setFontSize, ConsoleVoid, 3, 4, (width, height))
 {
     F32 width, height;
 
@@ -111,17 +127,21 @@ ConsoleMethod(ImageFont, setFontSize, void, 3, 4,   "(width, height) - Set the s
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageFont, getFontSize, const char*, 2, 2,    "() - Gets the size of the font characters.\n"
-                                                            "@return The size of the font characters.")
+/*! Gets the size of the font characters.
+    @return The size of the font characters.
+*/
+ConsoleMethodWithDocs(ImageFont, getFontSize, ConsoleString, 2, 2, ())
 {
     return object->getFontSize().scriptThis();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageFont, setFontPadding, void, 3, 3,    "(padding) - Set the font padding.\n"
-                                                        "@param padding The space added in-between font characters.\n"
-                                                        "@return No return value.")
+/*! Set the font padding.
+    @param padding The space added in-between font characters.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ImageFont, setFontPadding, ConsoleVoid, 3, 3, (padding))
 {
    // Set character padding.
    object->setFontPadding( dAtoi(argv[2]) );
@@ -130,8 +150,12 @@ ConsoleMethod(ImageFont, setFontPadding, void, 3, 3,    "(padding) - Set the fon
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ImageFont, getFontPadding, S32, 2, 2,     "() - Gets the font padding.\n"
-                                                        "@return The font padding.")
+/*! Gets the font padding.
+    @return The font padding.
+*/
+ConsoleMethodWithDocs(ImageFont, getFontPadding, ConsoleInt, 2, 2, ())
 {
     return object->getFontPadding();
-}
+}
+
+ConsoleMethodGroupEndWithDocs(ImageFont)

+ 8 - 8
engine/source/2d/sceneobject/ParticlePlayer.cc

@@ -401,14 +401,10 @@ void ParticlePlayer::integrateObject( const F32 totalTime, const F32 elapsedTime
     // Fetch the particle life-mode.
     const ParticleAsset::LifeMode lifeMode = pParticleAsset->getLifeMode();
 
-    // Finish if the particle player is in "infinite" mode.
-    if ( lifeMode == ParticleAsset::INFINITE )
-        return;
-
     // Are we waiting for particles and there are non left?
     if ( mWaitingForParticles )
     {
-        // Yes, so are there any particles left?
+		// Yes, so are there any particles left?
         if ( activeParticleCount == 0 )
         {
             // No, so stop the player immediately.
@@ -418,6 +414,10 @@ void ParticlePlayer::integrateObject( const F32 totalTime, const F32 elapsedTime
         return;
     }
 
+	// Finish if the particle player is in "infinite" mode.
+    if ( lifeMode == ParticleAsset::INFINITE )
+        return;
+
     // Fetch the particle lifetime.
     const F32 lifetime = pParticleAsset->getLifetime();
 
@@ -793,7 +793,7 @@ bool ParticlePlayer::play( const bool resetParticles )
     {
         // Fetch the emitter node.
         EmitterNode* pEmitterNode = *emitterItr;
-
+		pEmitterNode->setPaused(false);
         // Reset the time since last generation.
         pEmitterNode->setTimeSinceLastGeneration( 0.0f );
     }
@@ -1432,14 +1432,14 @@ void ParticlePlayer::integrateParticle( EmitterNode* pEmitterNode, ParticleSyste
     if ( pParticleAssetEmitter->getKeepAligned() && pParticleAssetEmitter->getOrientationType() == ParticleAssetEmitter::ALIGNED_ORIENTATION )
     {
         // Yes, so calculate last movement direction.
-        F32 movementAngle = mRadToDeg( mAtan( pParticleNode->mVelocity.x, -pParticleNode->mVelocity.y ) );
+        F32 movementAngle = mRadToDeg( mAtan( pParticleNode->mVelocity.x, pParticleNode->mVelocity.y ) );
 
         // Adjust for negative ArcTan quadrants.
         if ( movementAngle < 0.0f )
             movementAngle += 360.0f;
 
         // Set new Orientation Angle.
-        pParticleNode->mOrientationAngle = -movementAngle - pParticleAssetEmitter->getAlignedAngleOffset();
+        pParticleNode->mOrientationAngle = movementAngle - pParticleAssetEmitter->getAlignedAngleOffset();
 
     }
     else

+ 114 - 62
engine/source/2d/sceneobject/ParticlePlayer_ScriptBinding.h

@@ -20,125 +20,159 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, setParticleAsset, void, 3, 3,     "(particleAssetId?) Sets the particle asset Id to play.\n"
-                                                                "@param particleAssetId The particle asset Id to play.\n"
-                                                                "@return No return value.")
+ConsoleMethodGroupBeginWithDocs(ParticlePlayer, SceneObject)
+
+/*! Sets the particle asset Id to play.
+    @param particleAssetId The particle asset Id to play.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, setParticleAsset, ConsoleVoid, 3, 3, (particleAssetId?))
 {
     object->setParticle( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, getParticleAsset, const char*, 2, 2,  "() Gets the particle asset Id.\n"
-                                                                    "@return The particle asset Id.")
+/*! Gets the particle asset Id.
+    @return The particle asset Id.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getParticleAsset, ConsoleString, 2, 2, ())
 {
     return object->getParticle();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, setCameraIdleDistance, void, 3, 3,    "(idleDistance) Sets the distance from any camera when the particle player will become idle i.e. stop integrating and rendering.\n"
-                                                                    "@param pauseDistance The distance from any camera when the particle player will become idle i.e. stop integrating and rendering.\n"
-                                                                    "@return No return value.")
+/*! Sets the distance from any camera when the particle player will become idle i.e. stop integrating and rendering.
+    @param pauseDistance The distance from any camera when the particle player will become idle i.e. stop integrating and rendering.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, setCameraIdleDistance, ConsoleVoid, 3, 3, (idleDistance))
 {
     object->setCameraIdleDistance( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, getCameraIdleDistance, F32, 2, 2,     "() Gets the distance from any camera when the particle player will become idle i.e. stop integrating and rendering.\n"
-                                                                    "@return The distance from any camera when the particle player will become idle i.e. stop integrating and rendering.")
+/*! Gets the distance from any camera when the particle player will become idle i.e. stop integrating and rendering.
+    @return The distance from any camera when the particle player will become idle i.e. stop integrating and rendering.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getCameraIdleDistance, ConsoleFloat, 2, 2, ())
 {
     return object->getCameraIdleDistance();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, setParticleInterpolation, void, 3, 3,     "(bool status) Sets whether the intermediate world position, rotation, and size data points of particles between ticks are calculated.\n"
-                                                                        "@return No return value.")
+/*! Sets whether the intermediate world position, rotation, and size data points of particles between ticks are calculated.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, setParticleInterpolation, ConsoleVoid, 3, 3, (bool status))
 {
     object->setParticleInterpolation( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, getParticleInterpolation, F32, 2, 2,  "() Gets whether the intermediate world position, rotation, and size data points of particles between ticks are calculated.\n"
-                                                                    "@return (bool status) Whether interpolation is calculated or not.")
+/*! Gets whether the intermediate world position, rotation, and size data points of particles between ticks are calculated.
+    @return (bool status) Whether interpolation is calculated or not.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getParticleInterpolation, ConsoleFloat, 2, 2, ())
 {
     return object->getParticleInterpolation();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, setEmissionRateScale, void, 3, 3,     "(scale) Sets the scale for the particle player emission rate.\n"
-                                                                    "@param scale The scale for the particle player emission rate.\n"
-                                                                    "@return No return value.")
+/*! Sets the scale for the particle player emission rate.
+    @param scale The scale for the particle player emission rate.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, setEmissionRateScale, ConsoleVoid, 3, 3, (scale))
 {
     object->setEmissionRateScale( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, getEmissionRateScale, F32, 2, 2,     "() Gets the scale for the particle player emission rate.\n"
-                                                                    "@return The scale for the particle player emission rate.")
+/*! Gets the scale for the particle player emission rate.
+    @return The scale for the particle player emission rate.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getEmissionRateScale, ConsoleFloat, 2, 2, ())
 {
     return object->getEmissionRateScale();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, setSizeScale, void, 3, 3,     "(scale) Sets the scale for the particle player particle sizes.\n"
-                                                            "@param scale The scale for the particle player particle sizes.\n"
-                                                            "@return No return value.")
+/*! Sets the scale for the particle player particle sizes.
+    @param scale The scale for the particle player particle sizes.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, setSizeScale, ConsoleVoid, 3, 3, (scale))
 {
     object->setSizeScale( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, getSizeScale, F32, 2, 2,      "() Gets the scale for the particle player particle sizes.\n"
-                                                            "@return The scale for the particle player particle sizes.")
+/*! Gets the scale for the particle player particle sizes.
+    @return The scale for the particle player particle sizes.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getSizeScale, ConsoleFloat, 2, 2, ())
 {
     return object->getSizeScale();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, setForceScale, void, 3, 3,    "(scale) Sets the scale for the particle player forces.\n"
-                                                            "@param scale The scale for the particle player forces.\n"
-                                                            "@return No return value.")
+/*! Sets the scale for the particle player forces.
+    @param scale The scale for the particle player forces.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, setForceScale, ConsoleVoid, 3, 3, (scale))
 {
     object->setForceScale( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, getForceScale, F32, 2, 2,     "() Gets the scale for the particle player forces.\n"
-                                                            "@return The scale for the particle player forces.")
+/*! Gets the scale for the particle player forces.
+    @return The scale for the particle player forces.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getForceScale, ConsoleFloat, 2, 2, ())
 {
     return object->getForceScale();
 }
+
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, setTimeScale, void, 3, 3,     "(scale) Sets the scale for the particle player particle lifetimes.\n"
-                                                            "@param scale The scale for the particle player particle lifetimes.\n"
-                                                            "@return No return value.")
+/*! Sets the scale for the particle player lifetimes.
+    @param scale The scale for the particle player lifetimes.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, setTimeScale, void, 3, 3, (scale))
 {
     object->setTimeScale( dAtof(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, getTimeScale, F32, 2, 2,  "() Gets the scale for the particle player particle lifetimes.\n"
-                                                        "@return The scale for the particle player particle lifetimes.")
+/*! Gets the scale for the particle player particle lifetimes.
+    @return The scale for the particle player lifetimes.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getTimeScale, ConsoleFloat, 2, 2, ())
 {
     return object->getTimeScale();
 }
+
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, play, bool, 2, 3, "([resetParticles]) Starts the particle player playing.\n"
-                                                "@param resetParticles Whether to reset any existing particles before starting to play.  Default is true.\n"
-                                                "@return Returns true on success and false otherwise.")
+/*! Starts the particle player playing.
+    @param resetParticles Whether to reset any existing particles before starting to play.  Default is true.
+    @return Returns true on success and false otherwise.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, play, ConsoleBool, 2, 3, ([resetParticles]))
 {
     // Fetch the reset-particle flag.
     const bool resetParticles = argc >= 3 ? dAtob(argv[2]) : true;
@@ -148,10 +182,12 @@ ConsoleMethod(ParticlePlayer, play, bool, 2, 3, "([resetParticles]) Starts the p
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, stop, void, 2, 4, "([waitForParticles?, killEffect?]) - Stops the Particle Effect.\n"
-              "@param waitForParticles Whether or not the effect should wait until all of its particles have run their course, or just stop immediately and delete the particles (default true).\n"
-              "@param killEffect Whether or not the effect should be deleted after it has stopped (default false).\n"
-              "@return No return value.")
+/*! Stops the Particle Effect.
+    @param waitForParticles Whether or not the effect should wait until all of its particles have run their course, or just stop immediately and delete the particles (default true).
+    @param killEffect Whether or not the effect should be deleted after it has stopped (default false).
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, stop, ConsoleVoid, 2, 4, ([waitForParticles?, killEffect?]))
 {
     // Fetch the wait-for-particles flag.
    const bool waitForParticles = argc >= 3 ? dAtob(argv[2]) : true;
@@ -165,63 +201,79 @@ ConsoleMethod(ParticlePlayer, stop, void, 2, 4, "([waitForParticles?, killEffect
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, getIsPlaying, bool, 2, 2, "() Gets whether the particle player is playing or not.\n"
-                                                        "@return Whether the particle player is playing or not." )
+/*! Gets whether the particle player is playing or not.
+    @return Whether the particle player is playing or not.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getIsPlaying, ConsoleBool, 2, 2, ())
 {
    return object->getIsPlaying();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, setPaused, void, 3, 3,    "(paused?) Sets whether the particle player is paused or not.\n"
-                                                        "@param paused Whether the particle player is paused or not.\n"
-                                                        "@return No return value.")
+/*! Sets whether the particle player is paused or not.
+    @param paused Whether the particle player is paused or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, setPaused, ConsoleVoid, 3, 3, (paused?))
 {
     object->setPaused( dAtob(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, getPaused, bool, 2, 2,    "() Gets whether the particle player is paused or not.\n"
-                                                        "@return Whether the particle player is paused or not.")
+/*! Gets whether the particle player is paused or not.
+    @return Whether the particle player is paused or not.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getPaused, ConsoleBool, 2, 2, ())
 {
     return object->getPaused();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, setEmitterPaused, void, 4, 4, "(paused, emitterIndex) Sets whether the specified particle emitter is paused or not.\n"
-                                                            "@param paused Whether the specified particle emitter is paused or not.\n"
-                                                            "@param emitterIndex The index of the emitter to modify.\n"
-                                                            "@return No return value.")
+/*! Sets whether the specified particle emitter is paused or not.
+    @param paused Whether the specified particle emitter is paused or not.
+    @param emitterIndex The index of the emitter to modify.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, setEmitterPaused, ConsoleVoid, 4, 4, (paused, emitterIndex))
 {
     object->setEmitterPaused( dAtob(argv[2]), dAtoi(argv[3]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, getEmitterPaused, bool, 3, 3, "(emitterIndex) Gets whether the specified particle emitter is paused or not.\n"
-                                                            "@param emitterIndex The index of the emitter to modify.\n"
-                                                            "@return Whether the specified particle emitter is paused or not.")
+/*! Gets whether the specified particle emitter is paused or not.
+    @param emitterIndex The index of the emitter to modify.
+    @return Whether the specified particle emitter is paused or not.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getEmitterPaused, ConsoleBool, 3, 3, (emitterIndex))
 {
     return object->getEmitterPaused( dAtob(argv[2]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, setEmitterVisible, void, 4, 4,    "(visible, emitterIndex) Sets whether the specified particle emitter is visible or not.\n"
-                                                                "@param paused Whether the specified particle emitter is visible or not.\n"
-                                                                "@param emitterIndex The index of the emitter to modify.\n"
-                                                                "@return No return value.")
+/*! Sets whether the specified particle emitter is visible or not.
+    @param paused Whether the specified particle emitter is visible or not.
+    @param emitterIndex The index of the emitter to modify.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, setEmitterVisible, ConsoleVoid, 4, 4, (visible, emitterIndex))
 {
     object->setEmitterVisible( dAtob(argv[2]), dAtoi(argv[3]) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ParticlePlayer, getEmitterVisible, bool, 3, 3,    "(emitterIndex) Gets whether the specified particle emitter is visible or not.\n"
-                                                                "@param emitterIndex The index of the emitter to modify.\n"
-                                                                "@return Whether the specified particle emitter is visible or not.")
+/*! Gets whether the specified particle emitter is visible or not.
+    @param emitterIndex The index of the emitter to modify.
+    @return Whether the specified particle emitter is visible or not.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getEmitterVisible, ConsoleBool, 3, 3, (emitterIndex))
 {
     return object->getEmitterVisible( dAtob(argv[2]) );
 }
+
+ConsoleMethodGroupEndWithDocs(ParticlePlayer)

+ 1 - 1
engine/source/2d/sceneobject/SceneObject.cc

@@ -1656,7 +1656,7 @@ bool SceneObject::rotateTo( const F32 targetAngle, const F32 speed, const bool a
     const F32 relativeAngle = targetAngle - getAngle();
 
     // Calculate delta angle.
-    const F32 deltaAngle = mAtan( mSin( relativeAngle ), mCos( relativeAngle ) );
+    const F32 deltaAngle = mAtan( mCos( relativeAngle ), mSin( relativeAngle ) );
 
     // Set angular velocity.
     setAngularVelocity( deltaAngle > 0.0f ? speed : -speed );

+ 63 - 34
engine/source/2d/sceneobject/SceneObjectSet_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,8 +20,12 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneObjectSet, dumpObjects, void, 2, 2, "() Dumps the object data within the set\n"
-              "@return No return value")
+ConsoleMethodGroupBeginWithDocs(SceneObjectSet, SimObject)
+
+/*! Dumps the object data within the set
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneObjectSet, dumpObjects, ConsoleVoid, 2, 2, ())
 {
    SceneObjectSet::iterator itr;
    for(itr = object->begin(); itr != object->end(); itr++)
@@ -38,9 +42,11 @@ ConsoleMethod(SceneObjectSet, dumpObjects, void, 2, 2, "() Dumps the object data
    }
 }
 
-ConsoleMethod(SceneObjectSet, add, void, 3, 0, "(obj1,...) Adds given list of objects to the SceneObjectSet.\n"
-              "@param obj_i (i is unilimited) Variable list of objects to add\n"
-              "@return No return value")
+/*! Adds given list of objects to the SceneObjectSet.
+    @param obj_i (i is unilimited) Variable list of objects to add
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneObjectSet, add, ConsoleVoid, 3, 0, (obj1,...))
 {
    for(S32 i = 2; i < argc; i++)
    {
@@ -52,9 +58,11 @@ ConsoleMethod(SceneObjectSet, add, void, 3, 0, "(obj1,...) Adds given list of ob
    }
 }
 
-ConsoleMethod(SceneObjectSet, remove, void, 3, 0, "(obj1,...) Removes given listy of objects from the SceneObjectSet.\n"
-              "@param obj_i (i is unilimited) Variable list of objects to remove\n"
-              "@return No return value")
+/*! Removes given listy of objects from the SceneObjectSet.
+    @param obj_i (i is unilimited) Variable list of objects to remove
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneObjectSet, remove, ConsoleVoid, 3, 0, (obj1,...))
 {
    for(S32 i = 2; i < argc; i++)
    {
@@ -68,38 +76,45 @@ ConsoleMethod(SceneObjectSet, remove, void, 3, 0, "(obj1,...) Removes given list
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneObjectSet, deleteObjects, void, 2, 2,    "() Deletes all the objects in the SceneObjectSet.\n"
-                                                    "@return No return value")
+/*! Deletes all the objects in the SceneObjectSet.
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneObjectSet, deleteObjects, ConsoleVoid, 2, 2, ())
 {
     object->deleteObjects();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneObjectSet, clear, void, 2, 2, "() Clears the SceneObjectSet\n"
-              "@return No return value")
+/*! Clears the SceneObjectSet
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneObjectSet, clear, ConsoleVoid, 2, 2, ())
 {
    object->clear();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( SceneObjectSet, callOnChildren, void, 3, 0,
-   "( string method, string args... ) Call a method on all objects contained in the set.\n\n"
-   "@param method The name of the method to call.\n"
-   "@param args The arguments to the method.\n\n"
-   "@note This method recurses into all SimSets that are children to the set.\n\n"
-   "@see callOnChildrenNoRecurse" )
+/*! Call a method on all objects contained in the set.
+   @param method The name of the method to call.
+   @param args The arguments to the method.
+   @note This method recurses into all SimSets that are children to the set.
+   @see callOnChildrenNoRecurse
+*/
+ConsoleMethodWithDocs( SceneObjectSet, callOnChildren, ConsoleVoid, 3, 0, ( string method, string args... ))
 {
    object->callOnChildren( argv[2], argc - 3, argv + 3 );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneObjectSet, reorderChild, void, 4,4," (child1, child2) Uses SceneObjectSet reorder to push child 1 before child 2 - both must already be child controls of this control\n"
-              "@param child1 The child you wish to set first\n"
-              "@param child2 The child you wish to set after child1\n"
-              "@return No return value.")
+/*! Uses SceneObjectSet reorder to push child 1 before child 2 - both must already be child controls of this control
+    @param child1 The child you wish to set first
+    @param child2 The child you wish to set after child1
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneObjectSet, reorderChild, ConsoleVoid, 4,4,  (child1, child2))
 {
    SceneObject* pObject = Sim::findObject<SceneObject>(argv[2]);
    SceneObject* pTarget	 = Sim::findObject<SceneObject>(argv[3]);
@@ -112,14 +127,18 @@ ConsoleMethod(SceneObjectSet, reorderChild, void, 4,4," (child1, child2) Uses Sc
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneObjectSet, getCount, S32, 2, 2, "() @return Returns the number of objects in the SceneObjectSet")
+/*! @return Returns the number of objects in the SceneObjectSet
+*/
+ConsoleMethodWithDocs(SceneObjectSet, getCount, ConsoleInt, 2, 2, ())
 {
    return object->size();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneObjectSet, getObject, S32, 3, 3, "(objIndex) @return Returns the ID of the desired object or -1 on failure")
+/*! @return Returns the ID of the desired object or -1 on failure
+*/
+ConsoleMethodWithDocs(SceneObjectSet, getObject, ConsoleInt, 3, 3, (objIndex))
 {
    S32 objectIndex = dAtoi(argv[2]);
    if(objectIndex < 0 || objectIndex >= S32(object->size()))
@@ -132,7 +151,9 @@ ConsoleMethod(SceneObjectSet, getObject, S32, 3, 3, "(objIndex) @return Returns
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneObjectSet, isMember, bool, 3, 3, "(object) @return Returns true if specified object is a member of the set, and false otherwise")
+/*! @return Returns true if specified object is a member of the set, and false otherwise
+*/
+ConsoleMethodWithDocs(SceneObjectSet, isMember, ConsoleBool, 3, 3, (object))
 {
    SceneObject *testObject = Sim::findObject<SceneObject>(argv[2]);
    if(!testObject)
@@ -154,10 +175,12 @@ ConsoleMethod(SceneObjectSet, isMember, bool, 3, 3, "(object) @return Returns tr
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( SceneObjectSet, findObjectByInternalName, S32, 3, 4, "(string name, [bool searchChildren]) Returns the object with given internal name\n"
-              "@param name The internal name of the object you wish to find\n"
-              "@param searchChildren Set this true if you wish to search all children as well.\n"
-              "@return Returns the ID of the object.")
+/*! Returns the object with given internal name
+    @param name The internal name of the object you wish to find
+    @param searchChildren Set this true if you wish to search all children as well.
+    @return Returns the ID of the object.
+*/
+ConsoleMethodWithDocs( SceneObjectSet, findObjectByInternalName, ConsoleInt, 3, 4, (string name, [bool searchChildren]))
 {
 
    StringTableEntry pcName = StringTable->insert(argv[2]);
@@ -173,8 +196,10 @@ ConsoleMethod( SceneObjectSet, findObjectByInternalName, S32, 3, 4, "(string nam
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneObjectSet, bringToFront, void, 3, 3, "(object) Brings object to front of set.\n"
-              "@return No return value.")
+/*! Brings object to front of set.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneObjectSet, bringToFront, ConsoleVoid, 3, 3, (object))
 {
    SceneObject *obj = Sim::findObject<SceneObject>(argv[2]);
    if(!obj)
@@ -184,11 +209,15 @@ ConsoleMethod(SceneObjectSet, bringToFront, void, 3, 3, "(object) Brings object
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(SceneObjectSet, pushToBack, void, 3, 3, "(object) Sends item to back of set.\n"
-              "@return No return value.")
+/*! Sends item to back of set.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(SceneObjectSet, pushToBack, ConsoleVoid, 3, 3, (object))
 {
    SceneObject *obj = Sim::findObject<SceneObject>(argv[2]);
    if(!obj)
       return;
    object->pushObjectToBack(obj);
 }
+
+ConsoleMethodGroupEndWithDocs(SceneObjectSet)

File diff suppressed because it is too large
+ 338 - 192
engine/source/2d/sceneobject/SceneObject_ScriptBinding.h


+ 24 - 8
engine/source/2d/sceneobject/Scroller.cc

@@ -321,14 +321,27 @@ void Scroller::sceneRender( const SceneRenderState* pSceneRenderState, const Sce
     GLdouble right[4] = {-1, 0, 0, renderOOBB1.x};
     GLdouble top[4] = {0, -1, 0, renderOOBB3.y};
     GLdouble bottom[4] = {0, 1, 0, -renderOOBB0.y};
+
+    //This is to prevent some android devices from throwing opengl errors. For instance the tegra 3 only supports 1
+    int maxClip = 4;
+    glGetIntegerv(GL_MAX_CLIP_PLANES, &maxClip);
+
     glClipPlane(GL_CLIP_PLANE0, left);
-    glClipPlane(GL_CLIP_PLANE1, right);
-    glClipPlane(GL_CLIP_PLANE2, top);
+
+    if (maxClip > 1)
+    	glClipPlane(GL_CLIP_PLANE1, right);
+    if (maxClip > 2)
+    	glClipPlane(GL_CLIP_PLANE2, top);
+    if (maxClip > 3)
     glClipPlane(GL_CLIP_PLANE3, bottom);
+
     glEnable(GL_CLIP_PLANE0);
-    glEnable(GL_CLIP_PLANE1);
-    glEnable(GL_CLIP_PLANE2);
-    glEnable(GL_CLIP_PLANE3);
+    if (maxClip > 1)
+    	glEnable(GL_CLIP_PLANE1);
+    if (maxClip > 2)
+    	glEnable(GL_CLIP_PLANE2);
+    if (maxClip > 3)
+    	glEnable(GL_CLIP_PLANE3);
 
     // Render repeat Y.
     for ( S32 repeatIndexY = 0; repeatIndexY < wholeRegionY; ++repeatIndexY )
@@ -374,9 +387,12 @@ void Scroller::sceneRender( const SceneRenderState* pSceneRenderState, const Sce
 
     // Disable the OOBB clip-planes.
     glDisable(GL_CLIP_PLANE0);
-    glDisable(GL_CLIP_PLANE1);
-    glDisable(GL_CLIP_PLANE2);
-    glDisable(GL_CLIP_PLANE3);
+    if (maxClip > 1)
+    	glDisable(GL_CLIP_PLANE1);
+    if (maxClip > 2)
+    	glDisable(GL_CLIP_PLANE2);
+    if (maxClip > 3)
+    	glDisable(GL_CLIP_PLANE3);
 }
 
 //------------------------------------------------------------------------------

+ 68 - 33
engine/source/2d/sceneobject/Scroller_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,99 +20,127 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, setRepeatX, void, 3, 3, "(repeatX) Sets the number of times to repeat the texture over x direction\n"
-              "@return No return value.")
+ConsoleMethodGroupBeginWithDocs(Scroller, SpriteBase)
+
+/*! Sets the number of times to repeat the texture over x direction
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Scroller, setRepeatX, ConsoleVoid, 3, 3, (repeatX))
 {
    object->setRepeatX( dAtof(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, setRepeatY, void, 3, 3, "(repeatY) Sets the number of times to repeat the texture in y direction.\n"
-              "@return No return value.")
+/*! Sets the number of times to repeat the texture in y direction.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Scroller, setRepeatY, ConsoleVoid, 3, 3, (repeatY))
 {
    object->setRepeatY( dAtof(argv[2]) );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, getRepeatX, F32, 2, 2, "() \n @return Returns repeat X value")
+/*!  @return Returns repeat X value
+*/
+ConsoleMethodWithDocs(Scroller, getRepeatX, ConsoleFloat, 2, 2, ())
 {
    return object->getRepeatX();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, getRepeatY, F32, 2, 2, "() \n @return Returns repeat Y value")
+/*!  @return Returns repeat Y value
+*/
+ConsoleMethodWithDocs(Scroller, getRepeatY, ConsoleFloat, 2, 2, ())
 {
    return object->getRepeatY();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, setScrollX, void, 3, 3, "(ScrollX) Sets the scroll speed in x direction\n"
-              "@return No return value.")
+/*! Sets the scroll speed in x direction
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Scroller, setScrollX, ConsoleVoid, 3, 3, (ScrollX))
 {
    object->setScroll(dAtof(argv[2]), object->getScrollY());
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, setScrollY, void, 3, 3, "(ScrollY) Sets the scroll speed in the Y direction\n"
-              "@return No return value.")
+/*! Sets the scroll speed in the Y direction
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Scroller, setScrollY, ConsoleVoid, 3, 3, (ScrollY))
 {
    object->setScroll(object->getScrollX(), dAtof(argv[2]));
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, getScrollX, F32, 2, 2, "() \n @return Returns Scroll speed in x direction.")
+/*!  @return Returns Scroll speed in x direction.
+*/
+ConsoleMethodWithDocs(Scroller, getScrollX, ConsoleFloat, 2, 2, ())
 {
    return object->getScrollX();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, getScrollY, F32, 2, 2, "() \n @return Returns Scroll speed in y direction.")
+/*!  @return Returns Scroll speed in y direction.
+*/
+ConsoleMethodWithDocs(Scroller, getScrollY, ConsoleFloat, 2, 2, ())
 {
    return object->getScrollY();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, setScrollPositionX, void, 3, 3, "(ScrollPositionX) Set the texture's position in x direction\n"
-              "@return No return value.")
+/*! Set the texture's position in x direction
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Scroller, setScrollPositionX, ConsoleVoid, 3, 3, (ScrollPositionX))
 {
    object->setScrollPosition(dAtof(argv[2]), object->getScrollPositionY());
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, setScrollPositionY, void, 3, 3, "(ScrollPositionY) Set the texture's position in y direction\n"
-              "@return No return value.")
+/*! Set the texture's position in y direction
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Scroller, setScrollPositionY, ConsoleVoid, 3, 3, (ScrollPositionY))
 {
    object->setScrollPosition(object->getScrollPositionX(), dAtof(argv[2]));
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, getScrollPositionX, F32, 2, 2, "() \nReturns  texture's position in x direction")
+/*! Returns  texture's position in x direction
+*/
+ConsoleMethodWithDocs(Scroller, getScrollPositionX, ConsoleFloat, 2, 2, ())
 {
    return object->getScrollPositionX();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, getScrollPositionY, F32, 2, 2, "() \nReturns texture's position in y direction")
+/*! Returns texture's position in y direction
+*/
+ConsoleMethodWithDocs(Scroller, getScrollPositionY, ConsoleFloat, 2, 2, ())
 {
    return object->getScrollPositionY();
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, setRepeat, void, 3, 4, "(float repeatX / float repeatY) Sets the Repeat X/Y repetition in each direction.\n"
-                                                  "@param repeatX/Y The number of times to repeat in each direction as either (\"x y\") or (x, y)\n"
-                                                  "@return No return value.")
+/*! Sets the Repeat X/Y repetition in each direction.
+    @param repeatX/Y The number of times to repeat in each direction as either (\x y\ or (x, y)
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Scroller, setRepeat, ConsoleVoid, 3, 4, (float repeatX / float repeatY))
 {
    // The new position.
    F32 repeatX;
@@ -148,9 +176,11 @@ ConsoleMethod(Scroller, setRepeat, void, 3, 4, "(float repeatX / float repeatY)
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, setScroll, void, 3, 4, "(offsetX / offsetY) Sets the Scroll speed."
-              "@param offsetX/Y The scroll speed in each direction as either (\"x y\") or (x, y)\n"
-              "@return No return value.")
+/*! Sets the Scroll speed.
+    @param offsetX/Y The scroll speed in each direction as either (\x y\ or (x, y)
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Scroller, setScroll, ConsoleVoid, 3, 4, (offsetX / offsetY))
 {
    // The new position.
    F32 scrollX;
@@ -186,10 +216,12 @@ ConsoleMethod(Scroller, setScroll, void, 3, 4, "(offsetX / offsetY) Sets the Scr
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, setScrollPolar, void, 4, 4, "(angle, scrollSpeed) Sets Auto-Pan Polarwise.\n"
-              "@param angle Polar angle.\n"
-              "@param scrollSpeed Speed as polar magnitude\n"
-              "@return No return value.")
+/*! Sets Auto-Pan Polarwise.
+    @param angle Polar angle.
+    @param scrollSpeed Speed as polar magnitude
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Scroller, setScrollPolar, ConsoleVoid, 4, 4, (angle, scrollSpeed))
 {
     // Renormalise Angle.
     F32 angle = mFmod(dAtof(argv[2]), 360.0f);
@@ -197,14 +229,16 @@ ConsoleMethod(Scroller, setScrollPolar, void, 4, 4, "(angle, scrollSpeed) Sets A
     F32 scrollSpeed = dAtof(argv[3]);
 
     // Set Scroll.
-    object->setScroll( mSin(mDegToRad(angle))*scrollSpeed, -mCos(mDegToRad(angle))*scrollSpeed );
+    object->setScroll( mCos(mDegToRad(angle))*scrollSpeed, mSin(mDegToRad(angle))*scrollSpeed );
 }
 
 //------------------------------------------------------------------------------
 
-ConsoleMethod(Scroller, setScrollPosition, void, 3, 4, "(positionX / positionY) Sets the Scroll position X/Y."
-              "@param positionX/Y The scroll texture position as either (\"x y\") or (x, y)\n"
-              "@return No return value.")
+/*! Sets the Scroll position X/Y.
+    @param positionX/Y The scroll texture position as either (\x y\ or (x, y)
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Scroller, setScrollPosition, ConsoleVoid, 3, 4, (positionX / positionY))
 {
    // The new position.
    F32 scrollX;
@@ -238,3 +272,4 @@ ConsoleMethod(Scroller, setScrollPosition, void, 3, 4, "(positionX / positionY)
    object->setScrollPosition(scrollX, scrollY);
 }
 
+ConsoleMethodGroupEndWithDocs(Scroller)

+ 1 - 1
engine/source/2d/sceneobject/ShapeVector.cc

@@ -213,7 +213,7 @@ void ShapeVector::renderCircleShape(Vector2 position, F32 radius)
 
 void ShapeVector::renderPolygonShape(U32 vertexCount)
 {
-#ifdef TORQUE_OS_IOS
+#if defined(TORQUE_OS_IOS) || defined(TORQUE_OS_ANDROID)
     // Fill Mode?
     if ( mFillMode )
     {

+ 1 - 1
engine/source/2d/sceneobject/ShapeVector.h

@@ -117,7 +117,7 @@ protected:
     static bool writeFillColor( void* obj, StringTableEntry pFieldName ) { return static_cast<ShapeVector*>(obj)->mFillColor != ColorF(0.5f,0.5f,0.5f,1.0f); }
     static bool writeFillMode( void* obj, StringTableEntry pFieldName ) { return static_cast<ShapeVector*>(obj)->mFillMode == true; }
     static bool writeIsCircle( void* obj, StringTableEntry pFieldName ) { return static_cast<ShapeVector*>(obj)->mIsCircle == true; }
-    static bool writeCircleRadius( void* obj, StringTableEntry pFieldName ) { return static_cast<ShapeVector*>(obj)->mIsCircle != 1; }
+    static bool writeCircleRadius( void* obj, StringTableEntry pFieldName ) { return static_cast<ShapeVector*>(obj)->mCircleRadius != 1; }
 };
 
 #endif // _SHAPE_VECTOR_H_

+ 121 - 67
engine/source/2d/sceneobject/ShapeVector_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,9 +20,13 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setPolyScale, void, 3, 3, "(widthScale / [heightScale]) - Sets the polygon scale.\n"
-              "@param width/heightScale The scale values of the given polygon. If no height is specified, the widthScale value is repeated.\n"
-              "@return No return value.")
+ConsoleMethodGroupBeginWithDocs(ShapeVector, SceneObject)
+
+/*! Sets the polygon scale.
+    @param width/heightScale The scale values of the given polygon. If no height is specified, the widthScale value is repeated.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setPolyScale, ConsoleVoid, 3, 3, (widthScale / [heightScale]))
 {
     // Calculate Element Count.
     const U32 elementCount = Utility::mGetStringElementCount( argv[2] );
@@ -55,8 +59,10 @@ ConsoleMethod(ShapeVector, setPolyScale, void, 3, 3, "(widthScale / [heightScale
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setPolyPrimitive, void, 3, 3, "(vertexCount) Sets a regular polygon primitive.\n"
-              "@return No return value.")
+/*! Sets a regular polygon primitive.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setPolyPrimitive, ConsoleVoid, 3, 3, (vertexCount))
 {
     // Set Polygon Primitive.
     object->setPolyPrimitive( dAtoi(argv[2]) );
@@ -64,8 +70,10 @@ ConsoleMethod(ShapeVector, setPolyPrimitive, void, 3, 3, "(vertexCount) Sets a r
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setPolyCustom, void, 4, 4, "(poly-count, poly-Definition$) Sets Custom Polygon.\n"
-              "@return No return value.")
+/*! Sets Custom Polygon.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setPolyCustom, ConsoleVoid, 4, 4, (poly-count, poly-Definition$))
 {
     // Set Collision Poly Custom.
     object->setPolyCustom( dAtoi(argv[2]), argv[3] );
@@ -73,8 +81,10 @@ ConsoleMethod(ShapeVector, setPolyCustom, void, 4, 4, "(poly-count, poly-Definit
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getPoly, const char*, 2, 2, "() Gets Polygon.\n"
-                                                          "@return (poly-Definition) The vertices of the polygon in object space.")
+/*! Gets Polygon.
+    @return (poly-Definition) The vertices of the polygon in object space.
+*/
+ConsoleMethodWithDocs(ShapeVector, getPoly, ConsoleString, 2, 2, ())
 {
    // Get Collision Poly Count.
     
@@ -83,8 +93,10 @@ ConsoleMethod(ShapeVector, getPoly, const char*, 2, 2, "() Gets Polygon.\n"
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getWorldPoly, const char*, 2, 2, "() Gets Polygon points in world space.\n"
-                                                          "@return (poly-Definition) The vertices of the polygon in world space.")
+/*! Gets Polygon points in world space.
+    @return (poly-Definition) The vertices of the polygon in world space.
+*/
+ConsoleMethodWithDocs(ShapeVector, getWorldPoly, ConsoleString, 2, 2, ())
 {
    // Get Collision Poly Count.
     
@@ -93,12 +105,14 @@ ConsoleMethod(ShapeVector, getWorldPoly, const char*, 2, 2, "() Gets Polygon poi
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setLineColor, void, 3, 6,    "(float red, float green, float blue, [float alpha = 1.0]) or ( stockColorName ) - Sets the line color."
-                                                        "@param red The red value.\n"
-                                                        "@param green The green value.\n"
-                                                        "@param blue The blue value.\n"
-                                                        "@param alpha The alpha value.\n"
-                                                        "@return No return Value.")
+/*! or ( stockColorName ) - Sets the line color.
+    @param red The red value.
+    @param green The green value.
+    @param blue The blue value.
+    @param alpha The alpha value.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setLineColor, ConsoleVoid, 3, 6, (float red, float green, float blue, [float alpha = 1.0]))
 {
     // The colors.
     F32 red;
@@ -165,9 +179,11 @@ ConsoleMethod(ShapeVector, setLineColor, void, 3, 6,    "(float red, float green
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getLineColor, const char*, 2, 3,     "(allowColorNames) Gets the fill color.\n"
-                                                                "@param allowColorNames Whether to allow stock color names to be returned or not.  Optional: Defaults to false.\n"
-                                                                "@return (float red / float green / float blue / float alpha) The sprite blend color.")
+/*! Gets the fill color.
+    @param allowColorNames Whether to allow stock color names to be returned or not.  Optional: Defaults to false.
+    @return (float red / float green / float blue / float alpha) The sprite blend color.
+*/
+ConsoleMethodWithDocs(ShapeVector, getLineColor, ConsoleString, 2, 3, (allowColorNames))
 {
     // Get line color.
     ColorF color = object->getLineColor();
@@ -188,9 +204,11 @@ ConsoleMethod(ShapeVector, getLineColor, const char*, 2, 3,     "(allowColorName
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setLineAlpha, void, 3, 3, "(alpha) Sets the Rendering Line Alpha (transparency).\n"
-              "@param alpha The alpha value.\n"
-              "@return No return value.")
+/*! Sets the Rendering Line Alpha (transparency).
+    @param alpha The alpha value.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setLineAlpha, ConsoleVoid, 3, 3, (alpha))
 {
     // Set Line Alpha.
     object->setLineAlpha( dAtof(argv[2]) );
@@ -198,12 +216,14 @@ ConsoleMethod(ShapeVector, setLineAlpha, void, 3, 3, "(alpha) Sets the Rendering
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setFillColor, void, 3, 3,    "(float red, float green, float blue, [float alpha = 1.0]) or ( stockColorName ) - Sets the fill color."
-                                                        "@param red The red value.\n"
-                                                        "@param green The green value.\n"
-                                                        "@param blue The blue value.\n"
-                                                        "@param alpha The alpha value.\n"
-                                                        "@return No return Value.")
+/*! or ( stockColorName ) - Sets the fill color.
+    @param red The red value.
+    @param green The green value.
+    @param blue The blue value.
+    @param alpha The alpha value.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setFillColor, ConsoleVoid, 3, 3, (float red, float green, float blue, [float alpha = 1.0]))
 {
     // The colors.
     F32 red;
@@ -270,9 +290,11 @@ ConsoleMethod(ShapeVector, setFillColor, void, 3, 3,    "(float red, float green
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getFillColor, const char*, 2, 3,     "(allowColorNames) Gets the fill color.\n"
-                                                                "@param allowColorNames Whether to allow stock color names to be returned or not.  Optional: Defaults to false.\n"
-                                                                "@return (float red / float green / float blue / float alpha) The sprite blend color.")
+/*! Gets the fill color.
+    @param allowColorNames Whether to allow stock color names to be returned or not.  Optional: Defaults to false.
+    @return (float red / float green / float blue / float alpha) The sprite blend color.
+*/
+ConsoleMethodWithDocs(ShapeVector, getFillColor, ConsoleString, 2, 3, (allowColorNames))
 {
     // Get line color.
     ColorF color = object->getFillColor();
@@ -293,9 +315,11 @@ ConsoleMethod(ShapeVector, getFillColor, const char*, 2, 3,     "(allowColorName
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setFillAlpha, void, 3, 3, "(alpha) Sets the Rendering Fill Alpha (transparency).\n"
-              "@param alpha The alpha value.\n"
-              "@return No return value.")
+/*! Sets the Rendering Fill Alpha (transparency).
+    @param alpha The alpha value.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setFillAlpha, ConsoleVoid, 3, 3, (alpha))
 {
     // Set Fill Alpha.
     object->setFillAlpha( dAtof(argv[2]) );
@@ -303,8 +327,10 @@ ConsoleMethod(ShapeVector, setFillAlpha, void, 3, 3, "(alpha) Sets the Rendering
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setFillMode, void, 3, 3, "(fillMode?) Sets the Rendering Fill Mode.\n"
-              "@return No return value.")
+/*! Sets the Rendering Fill Mode.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setFillMode, ConsoleVoid, 3, 3, (fillMode?))
 {
     // Set Fill Mode.
     object->setFillMode( dAtob(argv[2]) );
@@ -312,54 +338,68 @@ ConsoleMethod(ShapeVector, setFillMode, void, 3, 3, "(fillMode?) Sets the Render
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getFillMode, bool, 2, 2, "() Gets the Rendering Fill Mode.\n"
-              "@return The fill mode as a boolean value.")
+/*! Gets the Rendering Fill Mode.
+    @return The fill mode as a boolean value.
+*/
+ConsoleMethodWithDocs(ShapeVector, getFillMode, ConsoleBool, 2, 2, ())
 {
     return object->getFillMode();
 }
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setIsCircle, void, 3, 3, "(isCircle?) Sets whether this shape is a circle or not.\n"
-              "@return The fill mode as a boolean value.")
+/*! Sets whether this shape is a circle or not.
+    @return The fill mode as a boolean value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setIsCircle, ConsoleVoid, 3, 3, (isCircle?))
 {
     object->setIsCircle(dAtob(argv[2]));
 }
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getIsCircle, bool, 2, 2, "() Returns whether this shape is a circle or not.\n"
-              "@return The fill mode as a boolean value.")
+/*! Returns whether this shape is a circle or not.
+    @return The fill mode as a boolean value.
+*/
+ConsoleMethodWithDocs(ShapeVector, getIsCircle, ConsoleBool, 2, 2, ())
 {
     return object->getIsCircle();
 }
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getCircleRadius, bool, 2, 2, "() Returns the radius of the shape if it is a circle.\n"
-              "@return The fill mode as a boolean value.")
+/*! Returns the radius of the shape if it is a circle.
+    @return The fill mode as a boolean value.
+*/
+ConsoleMethodWithDocs(ShapeVector, getCircleRadius, ConsoleBool, 2, 2, ())
 {
     return object->getCircleRadius();
 }
 
 //----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setCircleRadius, void, 3, 3, "(radius) Changes the radius of the shape if it is a circle.\n"
-              "@return The fill mode as a boolean value.")
+/*! Changes the radius of the shape if it is a circle.
+    @return The fill mode as a boolean value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setCircleRadius, ConsoleVoid, 3, 3, (radius))
 {
     object->setCircleRadius(dAtof(argv[2]));
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getVertexCount, S32, 2, 2, "() Get the number of vertices on a polygon shape.\n")
+/*! Get the number of vertices on a polygon shape.
+*/
+ConsoleMethodWithDocs(ShapeVector, getVertexCount, ConsoleInt, 2, 2, ())
 {
     return object->getPolyVertexCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getBoxFromPoints, const char*, 2, 2, "() Get a box (\"width height\") that wraps around the poly vertices")
+/*! Get a box (\width height\ that wraps around the poly vertices
+*/
+ConsoleMethodWithDocs(ShapeVector, getBoxFromPoints, ConsoleString, 2, 2, ())
 {
     Vector2 box = object->getBoxFromPoints();
 
@@ -375,10 +415,12 @@ ConsoleMethod(ShapeVector, getBoxFromPoints, const char*, 2, 2, "() Get a box (\
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setFlip, void, 4, 4,  "(bool flipX, bool flipY) Sets shape flipping for each axis.\n"
-                                                "@param flipX Whether or not to flip the shape along the x (horizontal) axis.\n"
-                                                "@param flipY Whether or not to flip the shape along the y (vertical) axis.\n"
-                                                "@return No return value.")
+/*! Sets shape flipping for each axis.
+    @param flipX Whether or not to flip the shape along the x (horizontal) axis.
+    @param flipY Whether or not to flip the shape along the y (vertical) axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setFlip, ConsoleVoid, 4, 4, (bool flipX, bool flipY))
 {
     // Set Flip.
     object->setFlip( dAtob(argv[2]), dAtob(argv[3]) );
@@ -386,8 +428,10 @@ ConsoleMethod(ShapeVector, setFlip, void, 4, 4,  "(bool flipX, bool flipY) Sets
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getFlip, const char*, 2, 2,   "() Gets the flip for each axis.\n"
-                                                        "@return (bool flipX/bool flipY) Whether or not the shape is flipped along the x and y axis.")
+/*! Gets the flip for each axis.
+    @return (bool flipX/bool flipY) Whether or not the shape is flipped along the x and y axis.
+*/
+ConsoleMethodWithDocs(ShapeVector, getFlip, ConsoleString, 2, 2, ())
 {
     // Create Returnable Buffer.
     char* pBuffer = Con::getReturnBuffer(32);
@@ -401,9 +445,11 @@ ConsoleMethod(ShapeVector, getFlip, const char*, 2, 2,   "() Gets the flip for e
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setFlipX, void, 3, 3,     "(bool flipX) Sets whether or not the shape is flipped horizontally.\n"
-                                                    "@param flipX Whether or not to flip the shape along the x (horizontal) axis."
-                                                    "@return No return value.")
+/*! Sets whether or not the shape is flipped horizontally.
+    @param flipX Whether or not to flip the shape along the x (horizontal) axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setFlipX, ConsoleVoid, 3, 3, (bool flipX))
 {
     // Set Flip.
     object->setFlipX( dAtob(argv[2]) );
@@ -411,9 +457,11 @@ ConsoleMethod(ShapeVector, setFlipX, void, 3, 3,     "(bool flipX) Sets whether
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, setFlipY, void, 3, 3,     "(bool flipY) Sets whether or not the shape is flipped vertically.\n"
-                                                    "@param flipY Whether or not to flip the shape along the y (vertical) axis."
-                                                    "@return No return value.")
+/*! Sets whether or not the shape is flipped vertically.
+    @param flipY Whether or not to flip the shape along the y (vertical) axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(ShapeVector, setFlipY, ConsoleVoid, 3, 3, (bool flipY))
 {
     // Set Flip.
     object->setFlipY( dAtob(argv[2]) );
@@ -421,16 +469,22 @@ ConsoleMethod(ShapeVector, setFlipY, void, 3, 3,     "(bool flipY) Sets whether
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getFlipX, bool, 2, 2,     "() Gets whether or not the shape is flipped horizontally.\n"
-                                                    "@return (bool flipX) Whether or not the shape is flipped along the x axis.")
+/*! Gets whether or not the shape is flipped horizontally.
+    @return (bool flipX) Whether or not the shape is flipped along the x axis.
+*/
+ConsoleMethodWithDocs(ShapeVector, getFlipX, ConsoleBool, 2, 2, ())
 {
    return object->getFlipX();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(ShapeVector, getFlipY, bool, 2, 2,     "() Gets whether or not the shape is flipped vertically."
-                                                    "@return (bool flipY) Whether or not the shape is flipped along the y axis.")
+/*! Gets whether or not the shape is flipped vertically.
+    @return (bool flipY) Whether or not the shape is flipped along the y axis.
+*/
+ConsoleMethodWithDocs(ShapeVector, getFlipY, ConsoleBool, 2, 2, ())
 {
    return object->getFlipY();
-}
+}
+
+ConsoleMethodGroupEndWithDocs(ShapeVector)

+ 33 - 18
engine/source/2d/sceneobject/Sprite_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,11 +20,14 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
+ConsoleMethodGroupBeginWithDocs(Sprite, SpriteBase)
 
-ConsoleMethod(Sprite, setFlip, void, 4, 4,  "(bool flipX, bool flipY) Sets the sprite texture flipping for each axis.\n"
-                                                "@param flipX Whether or not to flip the texture along the x (horizontal) axis.\n"
-                                                "@param flipY Whether or not to flip the texture along the y (vertical) axis.\n"
-                                                "@return No return value.")
+/*! Sets the sprite texture flipping for each axis.
+    @param flipX Whether or not to flip the texture along the x (horizontal) axis.
+    @param flipY Whether or not to flip the texture along the y (vertical) axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Sprite, setFlip, ConsoleVoid, 4, 4, (bool flipX, bool flipY))
 {
     // Set Flip.
     object->setFlip( dAtob(argv[2]), dAtob(argv[3]) );
@@ -32,8 +35,10 @@ ConsoleMethod(Sprite, setFlip, void, 4, 4,  "(bool flipX, bool flipY) Sets the s
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Sprite, getFlip, const char*, 2, 2,   "() Gets the flip for each axis.\n"
-                                                        "@return (bool flipX/bool flipY) Whether or not the texture is flipped along the x and y axis.")
+/*! Gets the flip for each axis.
+    @return (bool flipX/bool flipY) Whether or not the texture is flipped along the x and y axis.
+*/
+ConsoleMethodWithDocs(Sprite, getFlip, ConsoleString, 2, 2, ())
 {
     // Create Returnable Buffer.
     char* pBuffer = Con::getReturnBuffer(32);
@@ -47,9 +52,11 @@ ConsoleMethod(Sprite, getFlip, const char*, 2, 2,   "() Gets the flip for each a
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Sprite, setFlipX, void, 3, 3,     "(bool flipX) Sets whether or not the texture is flipped horizontally.\n"
-                                                    "@param flipX Whether or not to flip the texture along the x (horizontal) axis."
-                                                    "@return No return value.")
+/*! Sets whether or not the texture is flipped horizontally.
+    @param flipX Whether or not to flip the texture along the x (horizontal) axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Sprite, setFlipX, ConsoleVoid, 3, 3, (bool flipX))
 {
     // Set Flip.
     object->setFlipX( dAtob(argv[2]) );
@@ -57,9 +64,11 @@ ConsoleMethod(Sprite, setFlipX, void, 3, 3,     "(bool flipX) Sets whether or no
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Sprite, setFlipY, void, 3, 3,     "(bool flipY) Sets whether or not the texture is flipped vertically.\n"
-                                                    "@param flipY Whether or not to flip the texture along the y (vertical) axis."
-                                                    "@return No return value.")
+/*! Sets whether or not the texture is flipped vertically.
+    @param flipY Whether or not to flip the texture along the y (vertical) axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Sprite, setFlipY, ConsoleVoid, 3, 3, (bool flipY))
 {
     // Set Flip.
     object->setFlipY( dAtob(argv[2]) );
@@ -67,16 +76,22 @@ ConsoleMethod(Sprite, setFlipY, void, 3, 3,     "(bool flipY) Sets whether or no
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Sprite, getFlipX, bool, 2, 2,     "() Gets whether or not the texture is flipped horizontally.\n"
-                                                    "@return (bool flipX) Whether or not the texture is flipped along the x axis.")
+/*! Gets whether or not the texture is flipped horizontally.
+    @return (bool flipX) Whether or not the texture is flipped along the x axis.
+*/
+ConsoleMethodWithDocs(Sprite, getFlipX, ConsoleBool, 2, 2, ())
 {
    return object->getFlipX();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Sprite, getFlipY, bool, 2, 2,     "() Gets whether or not the texture is flipped vertically."
-                                                    "@return (bool flipY) Whether or not the texture is flipped along the y axis.")
+/*! Gets whether or not the texture is flipped vertically.
+    @return (bool flipY) Whether or not the texture is flipped along the y axis.
+*/
+ConsoleMethodWithDocs(Sprite, getFlipY, ConsoleBool, 2, 2, ())
 {
    return object->getFlipY();
-}
+}
+
+ConsoleMethodGroupEndWithDocs(Sprite)

+ 34 - 12
engine/source/2d/sceneobject/Trigger_ScriptBinding.h

@@ -20,9 +20,15 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Trigger, setEnterCallback, void, 2, 3, "([setting]) Set whether trigger checks onEnter events\n"
-              "@param setting Default is true.\n"
-              "@return No return value.")
+class Trigger;
+
+ConsoleMethodGroupBeginWithDocs(Trigger, SceneObject)
+
+/*! Set whether trigger checks onEnter events
+	@param setting Default is true.
+	@return No return value.
+*/
+ConsoleMethodWithDocs(Trigger, setEnterCallback, ConsoleVoid, 2, 3, ([setting]?))
 {
    // If the value isn't specified, the default is true.
    bool callback = true;
@@ -34,9 +40,11 @@ ConsoleMethod(Trigger, setEnterCallback, void, 2, 3, "([setting]) Set whether tr
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Trigger, setStayCallback, void, 2, 3, "([setting]) Set whether trigger checks onStay events\n"
-              "@param setting Default is true.\n"
-              "@return No return value.")
+/*! Set whether trigger checks onStay events
+	@param setting Default is true.
+	@return No return value.
+*/
+ConsoleMethodWithDocs(Trigger, setStayCallback, ConsoleVoid, 2, 3, ([setting]?))
 {
    // If the value isn't specified, the default is true.
    bool callback = true;
@@ -48,9 +56,11 @@ ConsoleMethod(Trigger, setStayCallback, void, 2, 3, "([setting]) Set whether tri
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Trigger, setLeaveCallback, void, 2, 3, "([setting]) Set whether trigger checks onLeave events\n"
-              "@param setting Default is true.\n"
-              "@return No return value.")
+/*! Set whether trigger checks onLeave events
+    @param setting Default is true.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Trigger, setLeaveCallback, ConsoleVoid, 2, 3, ([setting]?))
 {
    // If the value isn't specified, the default is true.
    bool callback = true;
@@ -62,22 +72,34 @@ ConsoleMethod(Trigger, setLeaveCallback, void, 2, 3, "([setting]) Set whether tr
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Trigger, getEnterCallback, bool, 2, 2, "() \n @return Returns whether trigger checks onEnter events")
+/*!
+	@return Returns whether trigger checks onEnter events
+*/
+ConsoleMethodWithDocs(Trigger, getEnterCallback, ConsoleBool, 2, 2, ())
 {
    return object->getEnterCallback();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Trigger, getStayCallback, bool, 2, 2, "() \n @return Returns whether trigger checks onStay events")
+/*!
+	@return Returns whether trigger checks onStay events
+*/
+ConsoleMethodWithDocs(Trigger, getStayCallback, ConsoleBool, 2, 2, ())
 {
    return object->getStayCallback();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(Trigger, getLeaveCallback, bool, 2, 2, "() \n @return Returns whether trigger checks onLeave events")
+/*!
+	@return Returns whether trigger checks onLeave events
+*/
+ConsoleMethodWithDocs(Trigger, getLeaveCallback, ConsoleBool, 2, 2, ())
 {
    return object->getLeaveCallback();
 }
 
+//-----------------------------------------------------------------------------
+
+ConsoleMethodGroupEndWithDocs(Trigger)

+ 14 - 6
engine/source/assets/assetBase_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,16 +20,24 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetBase, refreshAsset, void, 2, 2,        "() Refresh the asset.\n"
-                                                                "@return No return value.")
+ConsoleMethodGroupBeginWithDocs(AssetBase, SimObject)
+
+/*! Refresh the asset.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( AssetBase, refreshAsset, ConsoleVoid, 2, 2, ())
 {
     object->refreshAsset();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetBase, getAssetId, const char*, 2, 2,   "() - Gets the assets' Asset Id.  This is only available if the asset was acquired from the asset manager.\n"
-                                                                "@return The assets' Asset Id.")
+/*! Gets the assets' Asset Id.  This is only available if the asset was acquired from the asset manager.
+    @return The assets' Asset Id.
+*/
+ConsoleMethodWithDocs( AssetBase, getAssetId, ConsoleString, 2, 2, ())
 {
     return object->getAssetId();
-}
+}
+
+ConsoleMethodGroupEndWithDocs(AssetBase)

+ 268 - 166
engine/source/assets/assetManager_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,9 +20,13 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, compileReferencedAssets, bool, 3, 3,  "(moduleDefinition) - Compile the referenced assets determined by the specified module definition.\n"
-                                                                    "@param moduleDefinition The module definition specifies the asset manifest.\n"
-                                                                    "@return Whether the compilation was successful or not." )
+ConsoleMethodGroupBeginWithDocs(AssetManager, SimObject)
+
+/*! Compile the referenced assets determined by the specified module definition.
+    @param moduleDefinition The module definition specifies the asset manifest.
+    @return Whether the compilation was successful or not.
+*/
+ConsoleMethodWithDocs( AssetManager, compileReferencedAssets, ConsoleBool, 3, 3, (moduleDefinition))
 {
     // Fetch module definition.
     ModuleDefinition* pModuleDefinition = Sim::findObject<ModuleDefinition>( argv[2] );
@@ -41,9 +45,11 @@ ConsoleMethod( AssetManager, compileReferencedAssets, bool, 3, 3,  "(moduleDefin
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, addModuleDeclaredAssets, bool, 3, 3,   "(moduleDefinition) - Add any the declared assets specified by the module definition.\n"
-                                                                    "@param moduleDefinition The module definition specifies the asset manifest.\n"
-                                                                    "@return Whether adding declared assets was successful or not." )
+/*! Add any the declared assets specified by the module definition.
+    @param moduleDefinition The module definition specifies the asset manifest.
+    @return Whether adding declared assets was successful or not.
+*/
+ConsoleMethodWithDocs( AssetManager, addModuleDeclaredAssets, ConsoleBool, 3, 3, (moduleDefinition))
 {
     // Fetch module definition.
     ModuleDefinition* pModuleDefinition = Sim::findObject<ModuleDefinition>( argv[2] );
@@ -62,9 +68,11 @@ ConsoleMethod( AssetManager, addModuleDeclaredAssets, bool, 3, 3,   "(moduleDefi
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, addDeclaredAsset, bool, 4, 4,  "(moduleDefinition, assetFilePath) - Add the specified asset against the specified module definition.\n"
-                                                            "@param moduleDefinition The module definition that may contain declared assets.\n"
-                                                            "@return Whether adding declared assets was successful or not." )
+/*! Add the specified asset against the specified module definition.
+    @param moduleDefinition The module definition that may contain declared assets.
+    @return Whether adding declared assets was successful or not.
+*/
+ConsoleMethodWithDocs( AssetManager, addDeclaredAsset, ConsoleBool, 4, 4, (moduleDefinition, assetFilePath))
 {
     // Fetch module definition.
     ModuleDefinition* pModuleDefinition = Sim::findObject<ModuleDefinition>( argv[2] );
@@ -86,9 +94,11 @@ ConsoleMethod( AssetManager, addDeclaredAsset, bool, 4, 4,  "(moduleDefinition,
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, addPrivateAsset, const char*, 3, 3,    "(assetObject) - Adds a private asset object.\n"
-                                                                    "@param assetObject The asset object to add as a private asset.\n"
-                                                                    "@return The allocated private asset Id." )
+/*! Adds a private asset object.
+    @param assetObject The asset object to add as a private asset.
+    @return The allocated private asset Id.
+*/
+ConsoleMethodWithDocs( AssetManager, addPrivateAsset, ConsoleString, 3, 3, (assetObject))
 {
     // Fetch asset.
     AssetBase* pAssetBase = Sim::findObject<AssetBase>( argv[2] );
@@ -107,9 +117,11 @@ ConsoleMethod( AssetManager, addPrivateAsset, const char*, 3, 3,    "(assetObjec
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, removeDeclaredAssets, bool, 3, 3,  "(moduleDefinition) - Remove any the declared assets specified by the module definition.\n"
-                                                                "@param moduleDefinition The module definition that may contain declared assets.\n"
-                                                                "@return Whether removing declared assets was successful or not." )
+/*! Remove any the declared assets specified by the module definition.
+    @param moduleDefinition The module definition that may contain declared assets.
+    @return Whether removing declared assets was successful or not.
+*/
+ConsoleMethodWithDocs( AssetManager, removeDeclaredAssets, ConsoleBool, 3, 3, (moduleDefinition))
 {
     // Fetch module definition.
     ModuleDefinition* pModuleDefinition = Sim::findObject<ModuleDefinition>( argv[2] );
@@ -128,9 +140,11 @@ ConsoleMethod( AssetManager, removeDeclaredAssets, bool, 3, 3,  "(moduleDefiniti
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, removeDeclaredAsset, bool, 3, 3,   "(assetId) - Remove the specified declared asset Id.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return Whether removing the declared asset was successful or not." )
+/*! Remove the specified declared asset Id.
+    @param assetId The selected asset Id.
+    @return Whether removing the declared asset was successful or not.
+*/
+ConsoleMethodWithDocs( AssetManager, removeDeclaredAsset, ConsoleBool, 3, 3, (assetId))
 {
     // Remove the declared asset Id.
     return object->removeDeclaredAsset( argv[2] );
@@ -138,63 +152,77 @@ ConsoleMethod( AssetManager, removeDeclaredAsset, bool, 3, 3,   "(assetId) - Rem
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getAssetName, const char*, 3, 3,   "(assetId) - Gets the asset name from the specified asset Id.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return The asset name from the specified asset Id.")
+/*! Gets the asset name from the specified asset Id.
+    @param assetId The selected asset Id.
+    @return The asset name from the specified asset Id.
+*/
+ConsoleMethodWithDocs( AssetManager, getAssetName, ConsoleString, 3, 3, (assetId))
 {
     return object->getAssetName( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getAssetDescription, const char*, 3, 3,    "(assetId) - Gets the asset description from the specified asset Id.\n"
-                                                                        "@param assetId The selected asset Id.\n"
-                                                                        "@return The asset description from the specified asset Id.")
+/*! Gets the asset description from the specified asset Id.
+    @param assetId The selected asset Id.
+    @return The asset description from the specified asset Id.
+*/
+ConsoleMethodWithDocs( AssetManager, getAssetDescription, ConsoleString, 3, 3, (assetId))
 {
     return object->getAssetDescription( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getAssetCategory, const char*, 3, 3,       "(assetId) - Gets the asset category from the specified asset Id.\n"
-                                                                        "@param assetId The selected asset Id.\n"
-                                                                        "@return The asset category from the specified asset Id.")
+/*! Gets the asset category from the specified asset Id.
+    @param assetId The selected asset Id.
+    @return The asset category from the specified asset Id.
+*/
+ConsoleMethodWithDocs( AssetManager, getAssetCategory, ConsoleString, 3, 3, (assetId))
 {
     return object->getAssetCategory( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getAssetType, const char*, 3, 3,   "(assetId) - Gets the asset type from the specified asset Id.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return The asset type from the specified asset Id.")
+/*! Gets the asset type from the specified asset Id.
+    @param assetId The selected asset Id.
+    @return The asset type from the specified asset Id.
+*/
+ConsoleMethodWithDocs( AssetManager, getAssetType, ConsoleString, 3, 3, (assetId))
 {
     return object->getAssetType( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getAssetFilePath, const char*, 3, 3,   "(assetId) - Gets the asset file-path from the specified asset Id.\n"
-                                                                    "@param assetId The selected asset Id.\n"
-                                                                    "@return The asset file-path from the specified asset Id.")
+/*! Gets the asset file-path from the specified asset Id.
+    @param assetId The selected asset Id.
+    @return The asset file-path from the specified asset Id.
+*/
+ConsoleMethodWithDocs( AssetManager, getAssetFilePath, ConsoleString, 3, 3, (assetId))
 {
     return object->getAssetFilePath( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getAssetPath, const char*, 3, 3,       "(assetId) - Gets the asset path (not including the asset file) from the specified asset Id.\n"
-                                                                    "@param assetId The selected asset Id.\n"
-                                                                    "@return The asset path (not including the asset file) from the specified asset Id.")
+/*! Gets the asset path (not including the asset file) from the specified asset Id.
+    @param assetId The selected asset Id.
+    @return The asset path (not including the asset file) from the specified asset Id.
+*/
+ConsoleMethodWithDocs( AssetManager, getAssetPath, ConsoleString, 3, 3, (assetId))
 {
     return object->getAssetPath( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getAssetModule, const char*, 3, 3, "(assetId) - Gets the module definition where the the specified asset Id is located.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return The module definition where the the specified asset Id is located")
+/*! Gets the module definition where the the specified asset Id is located.
+    @param assetId The selected asset Id.
+    @return The module definition where the the specified asset Id is located
+*/
+ConsoleMethodWithDocs( AssetManager, getAssetModule, ConsoleString, 3, 3, (assetId))
 {
     // Fetch module definition.
     ModuleDefinition* pModuleDefinition = object->getAssetModuleDefinition( argv[2] );
@@ -204,85 +232,103 @@ ConsoleMethod( AssetManager, getAssetModule, const char*, 3, 3, "(assetId) - Get
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, isAssetInternal, bool, 3, 3,       "(assetId) - Check whether the specified asset Id is internal or not.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return Whether the specified asset Id is internal or not.")
+/*! Check whether the specified asset Id is internal or not.
+    @param assetId The selected asset Id.
+    @return Whether the specified asset Id is internal or not.
+*/
+ConsoleMethodWithDocs( AssetManager, isAssetInternal, ConsoleBool, 3, 3, (assetId))
 {
     return object->isAssetInternal( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, isAssetPrivate, bool, 3, 3,       "(assetId) - Check whether the specified asset Id is private or not.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return Whether the specified asset Id is private or not.")
+/*! Check whether the specified asset Id is private or not.
+    @param assetId The selected asset Id.
+    @return Whether the specified asset Id is private or not.
+*/
+ConsoleMethodWithDocs( AssetManager, isAssetPrivate, ConsoleBool, 3, 3, (assetId))
 {
     return object->isAssetPrivate( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, isAssetAutoUnload, bool, 3, 3,    "(assetId) - Check whether the specified asset Id is auto-unload or not.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return Whether the specified asset Id is auto-unload or not.")
+/*! Check whether the specified asset Id is auto-unload or not.
+    @param assetId The selected asset Id.
+    @return Whether the specified asset Id is auto-unload or not.
+*/
+ConsoleMethodWithDocs( AssetManager, isAssetAutoUnload, ConsoleBool, 3, 3, (assetId))
 {
     return object->isAssetAutoUnload( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, isAssetLoaded, bool, 3, 3,         "(assetId) - Check whether the specified asset Id is loaded or not.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return Whether the specified asset Id is loaded or not.")
+/*! Check whether the specified asset Id is loaded or not.
+    @param assetId The selected asset Id.
+    @return Whether the specified asset Id is loaded or not.
+*/
+ConsoleMethodWithDocs( AssetManager, isAssetLoaded, ConsoleBool, 3, 3, (assetId))
 {
     return object->isAssetLoaded( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, isDeclaredAsset, bool, 3, 3,       "(assetId) - Check whether the specified asset Id is declared or not.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return Whether the specified asset Id is declared or not.")
+/*! Check whether the specified asset Id is declared or not.
+    @param assetId The selected asset Id.
+    @return Whether the specified asset Id is declared or not.
+*/
+ConsoleMethodWithDocs( AssetManager, isDeclaredAsset, ConsoleBool, 3, 3, (assetId))
 {
     return object->isDeclaredAsset( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, isReferencedAsset, bool, 3, 3,     "(assetId) - Check whether the specified asset Id is referenced or not.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return Whether the specified asset Id is referenced or not.")
+/*! Check whether the specified asset Id is referenced or not.
+    @param assetId The selected asset Id.
+    @return Whether the specified asset Id is referenced or not.
+*/
+ConsoleMethodWithDocs( AssetManager, isReferencedAsset, ConsoleBool, 3, 3, (assetId))
 {
     return object->isReferencedAsset( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, renameDeclaredAsset, bool, 4, 4,   "(assetIdFrom, assetIdTo) - Rename declared asset Id.\n"
-                                                                "@param assetIdFrom The selected asset Id to rename from.\n"
-                                                                "@param assetIdFrom The selected asset Id to rename to.\n"
-                                                                "@return Whether the rename was successful or not.")
+/*! Rename declared asset Id.
+    @param assetIdFrom The selected asset Id to rename from.
+    @param assetIdFrom The selected asset Id to rename to.
+    @return Whether the rename was successful or not.
+*/
+ConsoleMethodWithDocs( AssetManager, renameDeclaredAsset, ConsoleBool, 4, 4, (assetIdFrom, assetIdTo))
 {
     return object->renameDeclaredAsset( argv[2], argv[3] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, renameReferencedAsset, bool, 4, 4,     "(assetIdFrom, assetIdTo) - Rename referenced asset Id.\n" 
-                                                                    "@param assetIdFrom The selected asset Id to rename from.\n"
-                                                                    "@param assetIdFrom The selected asset Id to rename to.\n"
-                                                                    "@return Whether the rename was successful or not.")
+/*! Rename referenced asset Id. 
+    @param assetIdFrom The selected asset Id to rename from.
+    @param assetIdFrom The selected asset Id to rename to.
+    @return Whether the rename was successful or not.
+*/
+ConsoleMethodWithDocs( AssetManager, renameReferencedAsset, ConsoleBool, 4, 4, (assetIdFrom, assetIdTo))
 {
     return object->renameReferencedAsset( argv[2], argv[3] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, acquireAsset, const char*, 3, 4,   "(assetId, [asPrivate?]) - Acquire the specified asset Id.\n"
-                                                                "You must release the asset once you're finish with it using 'releaseAsset'.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@param asPrivate Whether to acquire the asset Id as a private asset.\n"
-                                                                "@return The acquired asset or NULL if not acquired.")
+/*! Acquire the specified asset Id.
+    You must release the asset once you're finish with it using 'releaseAsset'.
+    @param assetId The selected asset Id.
+    @param asPrivate Whether to acquire the asset Id as a private asset.
+    @return The acquired asset or NULL if not acquired.
+*/
+ConsoleMethodWithDocs( AssetManager, acquireAsset, ConsoleString, 3, 4, (assetId, [asPrivate?]))
 {
     // Fetch asset Id.
     const char* pAssetId = argv[2];
@@ -310,10 +356,12 @@ ConsoleMethod( AssetManager, acquireAsset, const char*, 3, 4,   "(assetId, [asPr
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, releaseAsset, bool, 3, 3,          "(assetId) - Release the specified asset Id.\n"
-                                                                "The asset should have been acquired using 'acquireAsset'.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return Whether the asset was released or not.")
+/*! Release the specified asset Id.
+    The asset should have been acquired using 'acquireAsset'.
+    @param assetId The selected asset Id.
+    @return Whether the asset was released or not.
+*/
+ConsoleMethodWithDocs( AssetManager, releaseAsset, ConsoleBool, 3, 3, (assetId))
 {
     // Release asset.
     return object->releaseAsset( argv[2] );
@@ -321,9 +369,11 @@ ConsoleMethod( AssetManager, releaseAsset, bool, 3, 3,          "(assetId) - Rel
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, purgeAssets, void, 2, 2,           "() - Purge all assets that are not referenced even if they are set to not auto-unload.\n"
-                                                                "Assets can be in this state because they are either set to not auto-unload or the asset manager has/is disabling auto-unload.\n"
-                                                                "@return No return value.")
+/*! Purge all assets that are not referenced even if they are set to not auto-unload.
+    Assets can be in this state because they are either set to not auto-unload or the asset manager has/is disabling auto-unload.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( AssetManager, purgeAssets, ConsoleVoid, 2, 2, ())
 {
     // Purge assets.
     object->purgeAssets();
@@ -331,11 +381,13 @@ ConsoleMethod( AssetManager, purgeAssets, void, 2, 2,           "() - Purge all
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, deleteAsset, bool, 5, 5,   "(assetId, deleteLooseFiles, deleteDependencies) Deletes the specified asset Id and optionally its loose files and asset dependencies.\n"
-                                                        "@param assetId The selected asset Id.\n"
-                                                        "@param deleteLooseFiles Whether to delete an assets loose files or not.\n"
-                                                        "@param deleteDependencies Whether to delete assets that depend on this asset or not.\n"
-                                                        "@return Whether the asset deletion was successful or not.  A failure only indicates that the specified asset was not deleted but dependent assets and their loose files may have being deleted.\n" )
+/*! Deletes the specified asset Id and optionally its loose files and asset dependencies.
+    @param assetId The selected asset Id.
+    @param deleteLooseFiles Whether to delete an assets loose files or not.
+    @param deleteDependencies Whether to delete assets that depend on this asset or not.
+    @return Whether the asset deletion was successful or not.  A failure only indicates that the specified asset was not deleted but dependent assets and their loose files may have being deleted.
+*/
+ConsoleMethodWithDocs( AssetManager, deleteAsset, ConsoleBool, 5, 5, (assetId, deleteLooseFiles, deleteDependencies))
 {
     // Fetch asset Id.
     const char* pAssetId = argv[2];
@@ -352,19 +404,23 @@ ConsoleMethod( AssetManager, deleteAsset, bool, 5, 5,   "(assetId, deleteLooseFi
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, refreshAsset, void, 3, 3,          "(assetId) Refresh the specified asset Id.\n"
-                                                                "@param assetId The selected asset Id.\n"
-                                                                "@return No return value.")
+/*! Refresh the specified asset Id.
+    @param assetId The selected asset Id.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( AssetManager, refreshAsset, ConsoleVoid, 3, 3, (assetId))
 {
     object->refreshAsset( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, refreshAllAssets, void, 2, 3,      "([bool includeUnloaded]) Refresh all declared assets.\n"
-                                                                "@param Whether to include currently unloaded assets in the refresh or not.  Optional: Defaults to false.\n"
-                                                                "Refreshing all assets can be an expensive (time-consuming) operation to perform.\n"
-                                                                "@return No return value.")
+/*! Refresh all declared assets.
+    @param Whether to include currently unloaded assets in the refresh or not.  Optional: Defaults to false.
+    Refreshing all assets can be an expensive (time-consuming) operation to perform.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( AssetManager, refreshAllAssets, ConsoleVoid, 2, 3, ([bool includeUnloaded]))
 {
     // Refresh assets without flag.
     if ( argc == 2 )
@@ -376,8 +432,10 @@ ConsoleMethod( AssetManager, refreshAllAssets, void, 2, 3,      "([bool includeU
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, saveAssetTags, bool, 2, 2,         "() - Save the currently loaded asset tags manifest.\n"
-                                                                "@return Whether the save was successful or not." )
+/*! Save the currently loaded asset tags manifest.
+    @return Whether the save was successful or not.
+*/
+ConsoleMethodWithDocs( AssetManager, saveAssetTags, ConsoleBool, 2, 2, ())
 {
     // Save asset tags.
     return object->saveAssetTags();
@@ -385,8 +443,10 @@ ConsoleMethod( AssetManager, saveAssetTags, bool, 2, 2,         "() - Save the c
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, restoreAssetTags, bool, 2, 2,      "() - Restore the currently loaded asset tags manifest from disk (replace anything in memory).\n"
-                                                                "@return Whether the restore was successful or not." )
+/*! Restore the currently loaded asset tags manifest from disk (replace anything in memory).
+    @return Whether the restore was successful or not.
+*/
+ConsoleMethodWithDocs( AssetManager, restoreAssetTags, ConsoleBool, 2, 2, ())
 {
     // Restore asset tags.
     return object->restoreAssetTags();
@@ -394,8 +454,10 @@ ConsoleMethod( AssetManager, restoreAssetTags, bool, 2, 2,      "() - Restore th
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getAssetTags, S32, 2, 2,   "() - Gets the currently loaded asset tags manifest.\n"
-                                                        "@return The currently loaded asset tags manifest or zero if not loaded." )
+/*! Gets the currently loaded asset tags manifest.
+    @return The currently loaded asset tags manifest or zero if not loaded.
+*/
+ConsoleMethodWithDocs( AssetManager, getAssetTags, ConsoleInt, 2, 2, ())
 {
     // Fetch the asset tags manifest.
     AssetTagsManifest* pAssetTagsManifest = object->getAssetTags();
@@ -405,11 +467,13 @@ ConsoleMethod( AssetManager, getAssetTags, S32, 2, 2,   "() - Gets the currently
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findAllAssets, S32, 3, 5,      "(assetQuery, [ignoreInternal?], [ignorePrivate?]) - Performs an asset query searching for all assets optionally ignoring internal assets.\n"
-                                                            "@param assetQuery The asset query object that will be populated with the results.\n"
-                                                            "@param ignoreInternal Whether to ignore internal assets or not.  Optional: Defaults to true."
-                                                            "@param ignorePrivate Whether to ignore private assets or not.  Optional: Defaults to true."
-                                                            "@return The number of asset Ids found or (-1) if an error occurred.")
+/*! Performs an asset query searching for all assets optionally ignoring internal assets.
+    @param assetQuery The asset query object that will be populated with the results.
+    @param ignoreInternal Whether to ignore internal assets or not.  Optional: Defaults to true.
+    @param ignorePrivate Whether to ignore private assets or not.  Optional: Defaults to true.
+    @return The number of asset Ids found or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findAllAssets, ConsoleInt, 3, 5, (assetQuery, [ignoreInternal?], [ignorePrivate?]))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -442,11 +506,13 @@ ConsoleMethod( AssetManager, findAllAssets, S32, 3, 5,      "(assetQuery, [ignor
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findAssetName, S32, 4, 5,          "(assetQuery, assetName, [partialName?]) - Performs an asset query searching for the specified asset name.\n"
-                                                                "@param assetQuery The asset query object that will be populated with the results.\n"
-                                                                "@param assetName The asset name to search for.  This may be a partial name if 'partialName' is true.\n"
-                                                                "@param partialName Whether the asset name is to be used as a partial name or not.  Optional: Defaults to false.\n"
-                                                                "@return The number of asset Ids found or (-1) if an error occurred.")
+/*! Performs an asset query searching for the specified asset name.
+    @param assetQuery The asset query object that will be populated with the results.
+    @param assetName The asset name to search for.  This may be a partial name if 'partialName' is true.
+    @param partialName Whether the asset name is to be used as a partial name or not.  Optional: Defaults to false.
+    @return The number of asset Ids found or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findAssetName, ConsoleInt, 4, 5, (assetQuery, assetName, [partialName?]))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -475,11 +541,13 @@ ConsoleMethod( AssetManager, findAssetName, S32, 4, 5,          "(assetQuery, as
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findAssetCategory, S32, 4, 5,      "(assetQuery, assetCategory, [assetQueryAsSource?]) - Performs an asset query searching for the specified asset category.\n"
-                                                                "@param assetQuery The asset query object that will be populated with the results.\n"
-                                                                "@param assetCategory The asset category to search for."
-                                                                "@param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.\n"
-                                                                "@return The number of asset Ids found or (-1) if an error occurred.")
+/*! Performs an asset query searching for the specified asset category.
+    @param assetQuery The asset query object that will be populated with the results.
+    @param assetCategory The asset category to search for.
+    @param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.
+    @return The number of asset Ids found or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findAssetCategory, ConsoleInt, 4, 5, (assetQuery, assetCategory, [assetQueryAsSource?]))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -511,11 +579,13 @@ ConsoleMethod( AssetManager, findAssetCategory, S32, 4, 5,      "(assetQuery, as
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findAssetAutoUnload, S32, 4, 5,    "(assetQuery, assetAutoUnload, [assetQueryAsSource?]) - Performs an asset query searching for the specified asset auto-unload flag.\n"
-                                                                "@param assetQuery The asset query object that will be populated with the results.\n"
-                                                                "@param assetInternal The asset internal flag to search for."
-                                                                "@param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.\n"
-                                                                "@return The number of asset Ids found or (-1) if an error occurred.")
+/*! Performs an asset query searching for the specified asset auto-unload flag.
+    @param assetQuery The asset query object that will be populated with the results.
+    @param assetInternal The asset internal flag to search for.
+    @param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.
+    @return The number of asset Ids found or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findAssetAutoUnload, ConsoleInt, 4, 5, (assetQuery, assetAutoUnload, [assetQueryAsSource?]))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -547,11 +617,13 @@ ConsoleMethod( AssetManager, findAssetAutoUnload, S32, 4, 5,    "(assetQuery, as
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findAssetInternal, S32, 4, 5,      "(assetQuery, assetInternal, [assetQueryAsSource?]) - Performs an asset query searching for the specified asset internal flag.\n"
-                                                                "@param assetQuery The asset query object that will be populated with the results.\n"
-                                                                "@param assetInternal The asset internal flag to search for."
-                                                                "@param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.\n"
-                                                                "@return The number of asset Ids found or (-1) if an error occurred.")
+/*! Performs an asset query searching for the specified asset internal flag.
+    @param assetQuery The asset query object that will be populated with the results.
+    @param assetInternal The asset internal flag to search for.
+    @param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.
+    @return The number of asset Ids found or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findAssetInternal, ConsoleInt, 4, 5, (assetQuery, assetInternal, [assetQueryAsSource?]))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -583,11 +655,13 @@ ConsoleMethod( AssetManager, findAssetInternal, S32, 4, 5,      "(assetQuery, as
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findAssetPrivate, S32, 4, 5,       "(assetQuery, assetPrivate, [assetQueryAsSource?]) - Performs an asset query searching for the specified asset private flag.\n"
-                                                                "@param assetQuery The asset query object that will be populated with the results.\n"
-                                                                "@param assetPrivate The asset private flag to search for."
-                                                                "@param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.\n"
-                                                                "@return The number of asset Ids found or (-1) if an error occurred.")
+/*! Performs an asset query searching for the specified asset private flag.
+    @param assetQuery The asset query object that will be populated with the results.
+    @param assetPrivate The asset private flag to search for.
+    @param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.
+    @return The number of asset Ids found or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findAssetPrivate, ConsoleInt, 4, 5, (assetQuery, assetPrivate, [assetQueryAsSource?]))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -619,11 +693,13 @@ ConsoleMethod( AssetManager, findAssetPrivate, S32, 4, 5,       "(assetQuery, as
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findAssetType, S32, 4, 5,          "(assetQuery, assetType, [assetQueryAsSource?]) - Performs an asset query searching for the specified asset type.\n"
-                                                                "@param assetQuery The asset query object that will be populated with the results.\n"
-                                                                "@param assetType The asset type to search for."
-                                                                "@param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.\n"
-                                                                "@return The number of asset Ids found or (-1) if an error occurred.")
+/*! Performs an asset query searching for the specified asset type.
+    @param assetQuery The asset query object that will be populated with the results.
+    @param assetType The asset type to search for.
+    @param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.
+    @return The number of asset Ids found or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findAssetType, ConsoleInt, 4, 5, (assetQuery, assetType, [assetQueryAsSource?]))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -655,10 +731,12 @@ ConsoleMethod( AssetManager, findAssetType, S32, 4, 5,          "(assetQuery, as
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findAssetDependsOn, S32, 4, 4,     "(assetQuery, assetId) - Performs an asset query searching for asset Ids that the specified asset Id depends on.\n"
-                                                                "@param assetQuery The asset query object that will be populated with the results.\n"
-                                                                "@param assetId The asset Id to query for any asset Ids that it depends on."
-                                                                "@return The number of asset Ids found or (-1) if an error occurred.")
+/*! Performs an asset query searching for asset Ids that the specified asset Id depends on.
+    @param assetQuery The asset query object that will be populated with the results.
+    @param assetId The asset Id to query for any asset Ids that it depends on.
+    @return The number of asset Ids found or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findAssetDependsOn, ConsoleInt, 4, 4, (assetQuery, assetId))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -680,10 +758,12 @@ ConsoleMethod( AssetManager, findAssetDependsOn, S32, 4, 4,     "(assetQuery, as
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findAssetIsDependedOn, S32, 4, 4,  "(assetQuery, assetId) - Performs an asset query searching for asset Ids that depend on the specified asset Id.\n"
-                                                                "@param assetQuery The asset query object that will be populated with the results.\n"
-                                                                "@param assetId The asset Id to query for any asset Ids that may depend on it."
-                                                                "@return The number of asset Ids found or (-1) if an error occurred.")
+/*! Performs an asset query searching for asset Ids that depend on the specified asset Id.
+    @param assetQuery The asset query object that will be populated with the results.
+    @param assetId The asset Id to query for any asset Ids that may depend on it.
+    @return The number of asset Ids found or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findAssetIsDependedOn, ConsoleInt, 4, 4, (assetQuery, assetId))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -705,9 +785,11 @@ ConsoleMethod( AssetManager, findAssetIsDependedOn, S32, 4, 4,  "(assetQuery, as
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findInvalidAssetReferences, S32, 3, 3, "(assetQuery) - Performs an asset query searching for invalid asset references.\n"
-                                                                    "@param assetQuery The asset query object that will be populated with the results.\n"
-                                                                    "@return The number of asset Ids found that are invalid or (-1) if an error occurred.")
+/*! Performs an asset query searching for invalid asset references.
+    @param assetQuery The asset query object that will be populated with the results.
+    @return The number of asset Ids found that are invalid or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findInvalidAssetReferences, ConsoleInt, 3, 3, (assetQuery))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -726,11 +808,13 @@ ConsoleMethod( AssetManager, findInvalidAssetReferences, S32, 3, 3, "(assetQuery
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findTaggedAssets, S32, 4, 5,       "(assetQuery, assetTagNames, [assetQueryAsSource?]) - Performs an asset query searching for the specified asset tag name(s).\n"
-                                                                "@param assetQuery The asset query object that will be populated with the results.\n"
-                                                                "@param assetTagNames The asset tag name or names to search for.  Multiple names can be specified using comma, space, tab or newline separation.  Tags use an OR operation i.e. only assets tagged with ANY of the specified tags will be returned.\n"
-                                                                "@param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.\n"
-                                                                "@return The number of asset Ids found or (-1) if an error occurred.")
+/*! Performs an asset query searching for the specified asset tag name(s).
+    @param assetQuery The asset query object that will be populated with the results.
+    @param assetTagNames The asset tag name or names to search for.  Multiple names can be specified using comma, space, tab or newline separation.  Tags use an OR operation i.e. only assets tagged with ANY of the specified tags will be returned.
+    @param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.
+    @return The number of asset Ids found or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findTaggedAssets, ConsoleInt, 4, 5, (assetQuery, assetTagNames, [assetQueryAsSource?]))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -759,11 +843,13 @@ ConsoleMethod( AssetManager, findTaggedAssets, S32, 4, 5,       "(assetQuery, as
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, findAssetLooseFile, S32, 4, 5, "(assetQuery, assetLooseFile, [assetQueryAsSource?]) - Performs an asset query searching for the specified loose file.\n"
-        "@param assetQuery The asset query object that will be populated with the results.\n"
-        "@param assetLooseFile The loose-file used by the asset to search for."
-        "@param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.\n"
-        "@return The number of asset Ids found or (-1) if an error occurred.")
+/*! Performs an asset query searching for the specified loose file.
+    @param assetQuery The asset query object that will be populated with the results.
+    @param assetLooseFile The loose-file used by the asset to search for.
+    @param assetQueryAsSource Whether to use the asset query as the data-source rather than the asset managers database or not.  Doing this effectively filters the asset query.  Optional: Defaults to false.
+    @return The number of asset Ids found or (-1) if an error occurred.
+*/
+ConsoleMethodWithDocs( AssetManager, findAssetLooseFile, ConsoleInt, 4, 5, (assetQuery, assetLooseFile, [assetQueryAsSource?]))
 {
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -795,56 +881,72 @@ ConsoleMethod( AssetManager, findAssetLooseFile, S32, 4, 5, "(assetQuery, assetL
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getDeclaredAssetCount, bool, 2, 2,     "() - Gets the number of declared assets.\n"
-                                                                    "@return Returns the number of declared assets.")
+/*! Gets the number of declared assets.
+    @return Returns the number of declared assets.
+*/
+ConsoleMethodWithDocs( AssetManager, getDeclaredAssetCount, ConsoleBool, 2, 2, ())
 {
     return object->getDeclaredAssetCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getReferencedAssetCount, bool, 2, 2,   "() - Gets the number of asset referenced.\n"
-                                                                    "@return Returns the number of asset references.")
+/*! Gets the number of asset referenced.
+    @return Returns the number of asset references.
+*/
+ConsoleMethodWithDocs( AssetManager, getReferencedAssetCount, ConsoleBool, 2, 2, ())
 {
     return object->getReferencedAssetCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getLoadedInternalAssetCount, bool, 2, 2,   "() - Gets the number of loaded internal assets.\n"
-                                                                        "@return Returns the number of loaded internal assets.")
+/*! Gets the number of loaded internal assets.
+    @return Returns the number of loaded internal assets.
+*/
+ConsoleMethodWithDocs( AssetManager, getLoadedInternalAssetCount, ConsoleBool, 2, 2, ())
 {
     return object->getLoadedInternalAssetCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getMaxLoadedInternalAssetCount, bool, 2, 2,    "() - Gets the maximum number of loaded internal assets.\n"
-                                                                            "@return Returns the maximum number of loaded internal assets.")
+/*! Gets the maximum number of loaded internal assets.
+    @return Returns the maximum number of loaded internal assets.
+*/
+ConsoleMethodWithDocs( AssetManager, getMaxLoadedInternalAssetCount, ConsoleBool, 2, 2, ())
 {
     return object->getMaxLoadedInternalAssetCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getLoadedExternalAssetCount, bool, 2, 2,   "() - Gets the number of loaded external assets.\n"
-                                                                        "@return Returns the number of loaded external assets.")
+/*! Gets the number of loaded external assets.
+    @return Returns the number of loaded external assets.
+*/
+ConsoleMethodWithDocs( AssetManager, getLoadedExternalAssetCount, ConsoleBool, 2, 2, ())
 {
     return object->getLoadedExternalAssetCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, getMaxLoadedExternalAssetCount, bool, 2, 2,    "() - Gets the maximum number of loaded external assets.\n"
-                                                                            "@return Returns the maximum number of loaded external assets.")
+/*! Gets the maximum number of loaded external assets.
+    @return Returns the maximum number of loaded external assets.
+*/
+ConsoleMethodWithDocs( AssetManager, getMaxLoadedExternalAssetCount, ConsoleBool, 2, 2, ())
 {
     return object->getMaxLoadedExternalAssetCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetManager, dumpDeclaredAssets, void, 2, 2,     "() - Dumps a breakdown of all declared assets.\n"
-                                                                "@return No return value.")
+/*! Dumps a breakdown of all declared assets.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( AssetManager, dumpDeclaredAssets, ConsoleVoid, 2, 2, ())
 {
     return object->dumpDeclaredAssets();
 }
+
+ConsoleMethodGroupEndWithDocs(AssetManager)

+ 23 - 11
engine/source/assets/assetQuery_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,17 +20,23 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AssetQuery, clear, void, 2, 2,    "() - Clears all asset Id results.\n"
-                                                "@return () No return value.")
+ConsoleMethodGroupBeginWithDocs(AssetQuery, SimObject)
+
+/*! Clears all asset Id results.
+    @return () No return value.
+*/
+ConsoleMethodWithDocs(AssetQuery, clear, ConsoleVoid, 2, 2, ())
 {
     object->clear();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AssetQuery, set, bool, 3, 3,  "(assetQuery) Sets the asset query to a copy of the specified asset query.\n"
-                                            "@param assetQuery The asset query to copy.\n"
-                                            "@return Whether the operation succeeded or not." )
+/*! Sets the asset query to a copy of the specified asset query.
+    @param assetQuery The asset query to copy.
+    @return Whether the operation succeeded or not.
+*/
+ConsoleMethodWithDocs(AssetQuery, set, ConsoleBool, 3, 3, (assetQuery))
 {
     // Find asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
@@ -51,17 +57,21 @@ ConsoleMethod(AssetQuery, set, bool, 3, 3,  "(assetQuery) Sets the asset query t
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AssetQuery, getCount, S32, 2, 2,  "() - Gets the count of asset Id results.\n"
-                                                "@return (int) The count of asset Id results.")
+/*! Gets the count of asset Id results.
+    @return (int) The count of asset Id results.
+*/
+ConsoleMethodWithDocs(AssetQuery, getCount, ConsoleInt, 2, 2, ())
 {
     return object->size();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(AssetQuery, getAsset, const char*, 3, 3,  "(int resultIndex) - Gets the asset Id at the specified query result index.\n"
-                                                        "@param resultIndex The query result index to use.\n"
-                                                        "@return (assetId) The asset Id at the specified index or NULL if not valid.")
+/*! Gets the asset Id at the specified query result index.
+    @param resultIndex The query result index to use.
+    @return (assetId) The asset Id at the specified index or NULL if not valid.
+*/
+ConsoleMethodWithDocs(AssetQuery, getAsset, ConsoleString, 3, 3, (int resultIndex))
 {
     // Fetch result index.
     const S32 resultIndex = dAtoi(argv[2]);
@@ -76,3 +86,5 @@ ConsoleMethod(AssetQuery, getAsset, const char*, 3, 3,  "(int resultIndex) - Get
 
     return object->at(resultIndex);
 }
+
+ConsoleMethodGroupEndWithDocs(AssetQuery)

+ 65 - 39
engine/source/assets/assetTagsManifest_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,54 +20,68 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetTagsManifest, createTag, void, 3, 3,    "(tagName) Creates an asset tag.\n"
-                                                            "@param tagName The tag name to create.\n"
-                                                            "@return No return value." )
+ConsoleMethodGroupBeginWithDocs(AssetTagsManifest, SimObject)
+
+/*! Creates an asset tag.
+    @param tagName The tag name to create.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( AssetTagsManifest, createTag, ConsoleVoid, 3, 3, (tagName))
 {
     object->createTag( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetTagsManifest, renameTag, bool, 4, 4,    "(oldTagName, newTagName) Renames an existing asset tag.\n"
-                                                            "@param tagName The tag name to rename.\n"
-                                                            "@param newTagName The new tag name to assign.\n"
-                                                            "@return Whether the asset tag was renamed or not." )
+/*! Renames an existing asset tag.
+    @param tagName The tag name to rename.
+    @param newTagName The new tag name to assign.
+    @return Whether the asset tag was renamed or not.
+*/
+ConsoleMethodWithDocs( AssetTagsManifest, renameTag, ConsoleBool, 4, 4, (oldTagName, newTagName))
 {
     return object->renameTag( argv[2], argv[3] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetTagsManifest, deleteTag, bool, 3, 3,    "(tagName) Deletes an asset tag.\n"
-                                                            "@param tagName The tag name to delete.\n"
-                                                            "@return Whether the asset tag was deleted or not." )
+/*! Deletes an asset tag.
+    @param tagName The tag name to delete.
+    @return Whether the asset tag was deleted or not.
+*/
+ConsoleMethodWithDocs( AssetTagsManifest, deleteTag, ConsoleBool, 3, 3, (tagName))
 {
     return object->deleteTag( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetTagsManifest, isTag, bool, 3, 3,        "(tagName) Checks whether the specified asset tag exists or not.\n"
-                                                            "@param tagName The tag name to check.\n"
-                                                            "@return Whether the specified asset tag exists or not." )
+/*! Checks whether the specified asset tag exists or not.
+    @param tagName The tag name to check.
+    @return Whether the specified asset tag exists or not.
+*/
+ConsoleMethodWithDocs( AssetTagsManifest, isTag, ConsoleBool, 3, 3, (tagName))
 {
     return object->isTag( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetTagsManifest, getTagCount, S32, 2, 2,   "() Gets the total asset tag count.\n"
-                                                            "@return The total asset tag count.")
+/*! Gets the total asset tag count.
+    @return The total asset tag count.
+*/
+ConsoleMethodWithDocs( AssetTagsManifest, getTagCount, ConsoleInt, 2, 2, ())
 {
     return object->getTagCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetTagsManifest, getTag, const char*, 3, 3,    "(int tagIndex) Gets the asset tag at the specified index.\n"
-                                                                "@param tagIndex The asset tag index.  This must be 0 to the asset tag count less one.\n"
-                                                                "@return The asset tag at the specified index or NULL if invalid.")
+/*! Gets the asset tag at the specified index.
+    @param tagIndex The asset tag index.  This must be 0 to the asset tag count less one.
+    @return The asset tag at the specified index or NULL if invalid.
+*/
+ConsoleMethodWithDocs( AssetTagsManifest, getTag, ConsoleString, 3, 3, (int tagIndex))
 {
     // Fetch tag index.
     const U32 tagIndex = dAtoi(argv[2]);
@@ -85,19 +99,23 @@ ConsoleMethod( AssetTagsManifest, getTag, const char*, 3, 3,    "(int tagIndex)
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetTagsManifest, getAssetTagCount, S32, 3, 3,  "(assetId) Gets the asset tag count on the specified asset Id.\n"
-                                                                "@param assetId The asset Id to count tags on.\n"
-                                                                "@return The asset tag count on the specified asset Id.")
+/*! Gets the asset tag count on the specified asset Id.
+    @param assetId The asset Id to count tags on.
+    @return The asset tag count on the specified asset Id.
+*/
+ConsoleMethodWithDocs( AssetTagsManifest, getAssetTagCount, ConsoleInt, 3, 3, (assetId))
 {
     return object->getAssetTagCount( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetTagsManifest, getAssetTag, const char*, 4, 4,   "(assetId, int tagIndex) Gets the asset tag on the specified asset Id at the specified index.\n"
-                                                                    "@param assetId The asset Id to count tags on.\n"
-                                                                    "@param tagIndex The asset tag index.  This must be 0 to the asset tag count less one.\n"
-                                                                    "@return The asset tag on the specified asset Id at the specified index or NULL if invalid.")
+/*! Gets the asset tag on the specified asset Id at the specified index.
+    @param assetId The asset Id to count tags on.
+    @param tagIndex The asset tag index.  This must be 0 to the asset tag count less one.
+    @return The asset tag on the specified asset Id at the specified index or NULL if invalid.
+*/
+ConsoleMethodWithDocs( AssetTagsManifest, getAssetTag, ConsoleString, 4, 4, (assetId, int tagIndex))
 {
     // Fetch asset Id.
     const char* pAssetId = argv[2];
@@ -118,30 +136,38 @@ ConsoleMethod( AssetTagsManifest, getAssetTag, const char*, 4, 4,   "(assetId, i
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetTagsManifest, tag, bool, 4, 4,          "(assetId, tagName) Tags the asset Id with the specified asset tag.\n"
-                                                            "@param assetId The asset Id to tag.\n"
-                                                            "@param tagName The tag name to assign.\n"
-                                                            "@return Whether the tag operation was successful or not." )
+/*! Tags the asset Id with the specified asset tag.
+    @param assetId The asset Id to tag.
+    @param tagName The tag name to assign.
+    @return Whether the tag operation was successful or not.
+*/
+ConsoleMethodWithDocs( AssetTagsManifest, tag, ConsoleBool, 4, 4, (assetId, tagName))
 {
     return object->tag( argv[2], argv[3] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetTagsManifest, untag, bool, 4, 4,        "(assetId, tagName) Un-tags the asset Id from the specified asset tag.\n"
-                                                            "@param assetId The asset Id to un-tag.\n"
-                                                            "@param tagName The tag name to un-assign.\n"
-                                                            "@return Whether the un-tag operation was successful or not." )
+/*! Un-tags the asset Id from the specified asset tag.
+    @param assetId The asset Id to un-tag.
+    @param tagName The tag name to un-assign.
+    @return Whether the un-tag operation was successful or not.
+*/
+ConsoleMethodWithDocs( AssetTagsManifest, untag, ConsoleBool, 4, 4, (assetId, tagName))
 {
     return object->untag( argv[2], argv[3] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( AssetTagsManifest, hasTag, bool, 4, 4,       "(assetId, tagName) Checks whether the asset Id is tagged with the specified asset tag.\n"
-                                                            "@param assetId The asset Id to check.\n"
-                                                            "@param tagName The tag name to check.\n"
-                                                            "@return Whether the asset Id is tagged with the specified asset tag or not." )
+/*! Checks whether the asset Id is tagged with the specified asset tag.
+    @param assetId The asset Id to check.
+    @param tagName The tag name to check.
+    @return Whether the asset Id is tagged with the specified asset tag or not.
+*/
+ConsoleMethodWithDocs( AssetTagsManifest, hasTag, ConsoleBool, 4, 4, (assetId, tagName))
 {
     return object->hasTag( argv[2], argv[3] );
-}
+}
+
+ConsoleMethodGroupEndWithDocs(AssetTagsManifest)

+ 95 - 30
engine/source/audio/audio.cc

@@ -102,6 +102,7 @@ struct LoopingImage
 static F32 mMasterVolume = 1.f;           // traped from AL_LISTENER gain (miles has difficulties with 3d sources)
 
 static ALuint                 mSource[MAX_AUDIOSOURCES];                   // ALSources
+static ALint                  mResumePosition[MAX_AUDIOSOURCES];           // Ensures Pause resumes from the correct position
 static AUDIOHANDLE            mHandle[MAX_AUDIOSOURCES];                   // unique handles
 static Resource<AudioBuffer>  mBuffer[MAX_AUDIOSOURCES];                   // each of the playing buffers (needed for AudioThread)
 static F32                    mScore[MAX_AUDIOSOURCES];                    // for figuring out which sources to cull/uncull
@@ -580,6 +581,8 @@ static void alxSourcePlay(AudioStreamSource *streamSource)
    ALuint source = streamSource->mSource;
    Audio::Description& desc = streamSource->mDescription;
 
+   streamSource->initStream();
+
    alSourcef(source, AL_GAIN, Audio::linearToDB(desc.mVolume * mAudioChannelVolumes[desc.mVolumeChannel] * mMasterVolume));
 //   alSourcei(source, AL_LOOPING, AL_FALSE);
    alSourcef(source, AL_PITCH, 1.f);
@@ -965,30 +968,17 @@ bool alxPause( AUDIOHANDLE handle )
 
     alSourcePause( mSource[index] );
 
-    ALenum error = 0;
-    if ( (error = alGetError()) == AL_NO_ERROR)
-        return true;
-    switch (error)
-    {
-        case AL_INVALID_NAME:
-            Con::errorf("alxPause - OpenAL AL_INVALID_NAME error code returned");
-            break;
-        case AL_INVALID_ENUM:
-            Con::errorf("alxPause - OpenAL AL_INVALID_ENUM error code returned");
-            break;
-        case AL_INVALID_VALUE:
-            Con::errorf("alxPause - OpenAL AL_INVALID_VALUE error code returned");
-            break;
-        case AL_INVALID_OPERATION:
-            Con::errorf("alxPause - OpenAL AL_INVALID_OPERATION error code returned");
-            break;
-        case AL_OUT_OF_MEMORY:
-            Con::errorf("alxPause - OpenAL AL_OUT_OF_MEMORY error code returned");
-            break;
-        default:
-            Con::errorf("alxPause - OpenAL has encountered a problem and won't tell us what it is.");
-    };
-    return false;
+    ALint state;
+	alGetSourcei(mSource[index], AL_SOURCE_STATE, &state);
+
+	if( state==AL_PAUSED)
+	{
+		mResumePosition[index] = -1;
+		return true;
+	}
+
+	alGetSourcei(mSource[index], AL_SAMPLE_OFFSET, &mResumePosition[index]);
+	return alxCheckError("alxPause()","alGetSourcei");
 }
 
 void alxUnPause( AUDIOHANDLE handle )
@@ -996,7 +986,18 @@ void alxUnPause( AUDIOHANDLE handle )
     if(handle == NULL_AUDIOHANDLE)
         return;
     
-    alxPlay( handle );
+	U32 index = alxFindIndex(handle);
+	ALuint source = mSource[index];
+
+	if( mResumePosition[index] != -1 )
+	{
+		alSourcei( source, AL_SAMPLE_OFFSET, mResumePosition[index]);
+		mResumePosition[index] = -1;
+	}
+	alxCheckError("alxUnPause()","alSourcei");
+
+	alSourcePlay( source );
+	alxCheckError("alxUnPause()","alSourcePlay");
 }
 //--------------------------------------------------------------------------
 void alxStop(AUDIOHANDLE handle)
@@ -1920,7 +1921,7 @@ void alxCloseHandles()
 
       ALint state = 0;
       alGetSourcei(mSource[i], AL_SOURCE_STATE, &state);
-      if(state == AL_PLAYING)
+      if(state == AL_PLAYING || state == AL_PAUSED)
          continue;
 
       if(!(mHandle[i] & AUDIOHANDLE_INACTIVE_BIT))
@@ -1979,6 +1980,11 @@ void alxUpdateScores(bool sourcesOnly)
          continue;
       }
 
+	  ALint state = 0;
+	  alGetSourcei(mSource[i], AL_SOURCE_STATE, &state);
+	  if(state==AL_PAUSED)
+		  continue;
+
       // grab the volume.. (not attenuated by master for score)
       F32 volume = mSourceVolume[i] * mAudioChannelVolumes[mType[i]];
 
@@ -2159,6 +2165,36 @@ ALuint alxGetWaveLen(ALuint buffer)
    return(len);
 }
 
+bool alxCheckError(const char* sourceFuncName, const char* alFuncName)
+{
+  ALenum errorVal = alGetError();
+  switch (errorVal)
+  {
+    case AL_NO_ERROR:
+      break;
+    case AL_INVALID_NAME:
+      Con::errorf("%s - %s OpenAL AL_INVALID_NAME error code returned", sourceFuncName, alFuncName);
+      break;
+    case AL_INVALID_ENUM:
+      Con::errorf("%s - %s OpenAL AL_INVALID_ENUM error code returned", sourceFuncName, alFuncName);
+      break;
+    case AL_INVALID_VALUE:
+      Con::errorf("%s - %s OpenAL AL_INVALID_VALUE error code returned", sourceFuncName, alFuncName);
+      break;
+    case AL_INVALID_OPERATION:
+      Con::errorf("%s - %s OpenAL AL_INVALID_OPERATION error code returned", sourceFuncName, alFuncName);
+      break;
+    case AL_OUT_OF_MEMORY:
+      Con::errorf("%s - %s OpenAL AL_OUT_OF_MEMORY error code returned", sourceFuncName, alFuncName);
+      break;
+    default:
+      Con::errorf("%s - %s OpenAL has encountered a problem and won't tell us what it is. %d", errorVal, sourceFuncName, alFuncName);
+  };
+  if (errorVal == AL_NO_ERROR)
+    return true;
+  else
+    return false;
+}
 
 //--------------------------------------------------------------------------
 // Environment:
@@ -2438,6 +2474,8 @@ bool OpenALInit()
 
 #elif defined(TORQUE_OS_OSX)
    mDevice = alcOpenDevice((const ALCchar*)NULL);
+#elif defined(TORQUE_OS_ANDROID)
+   mDevice = alcOpenDevice("openal-soft");
 #else
    mDevice = (ALCvoid *)alcOpenDevice((const ALCchar*)NULL);
 #endif
@@ -2462,6 +2500,8 @@ bool OpenALInit()
       0
    };
    mContext = alcCreateContext(mDevice,attrlist);
+#elif TORQUE_OS_ANDROID
+   mContext = alcCreateContext((ALCdevice*)mDevice, NULL);
 #else
    mContext = alcCreateContext(mDevice,NULL);
 #endif
@@ -2469,8 +2509,11 @@ bool OpenALInit()
       return false;
 
    // Make this context the active context
+#ifdef TORQUE_OS_ANDROID
+   alcMakeContextCurrent((ALCcontext*)mContext);
+#else
    alcMakeContextCurrent(mContext);
-
+#endif
    ALenum err = alGetError();
    mRequestSources = MAX_AUDIOSOURCES;	
    while(true)
@@ -2531,20 +2574,42 @@ void OpenALShutdown()
       delete mLoopingFreeList.last();
       mLoopingFreeList.pop_back();
    }
+   
+   //clear error buffer
+   alGetError();
 
    for(U32 i = 0; i < MAX_AUDIOSOURCES; i++)
-      mBuffer[i] = 0;
+   {
+	   ALint tempbuff = 0;
+	   alGetSourcei( mSource[i], AL_BUFFER, &tempbuff);
+
+	   if (alIsBuffer(tempbuff) && tempbuff !=0)
+	   {
+		   ALuint buffer = tempbuff;
+		   alSourceUnqueueBuffers( mSource[i], 1, &buffer);
+		   alxCheckError("OpenALShutdown()","alSourceUnqueueBuffers");
+	   }
+   }
 
    alDeleteSources(mNumSources, mSource);
 
    if (mContext)
    {
-      alcDestroyContext(mContext);
+#ifdef TORQUE_OS_ANDROID
+	   alcDestroyContext((ALCcontext*)mContext);
+#else
+	   alcDestroyContext(mContext);
+#endif
+
       mContext = NULL;
    }
    if (mDevice)
    {
-      alcCloseDevice(mDevice);
+#ifdef TORQUE_OS_ANDROID
+	   alcCloseDevice((ALCdevice*)mDevice);
+#else
+	   alcCloseDevice(mDevice);
+#endif
       mDevice = NULL;
    }
 

+ 2 - 0
engine/source/audio/audio.h

@@ -38,5 +38,7 @@
 //-Mat default sample rate, change as needed
 #define DEFAULT_SOUND_OUTPUT_RATE		44100
 
+bool alxCheckError(const char*, const char*);
+
 
 #endif  // _H_AUDIO_

+ 31 - 8
engine/source/audio/audioBuffer.cc

@@ -110,14 +110,37 @@ AudioBuffer::AudioBuffer(StringTableEntry filename)
 
 AudioBuffer::~AudioBuffer()
 {
-   if( malBuffer != 0 ) 
-   {
-     alGetError();
-     alDeleteBuffers( 1, &malBuffer );
-     ALenum error;
-     error = alGetError();
-     AssertWarn( error == AL_NO_ERROR, "AudioBuffer::~AudioBuffer() - failed to release buffer" );
-   }
+   if( alIsBuffer(malBuffer) )
+  {
+    alGetError();
+    alDeleteBuffers( 1, &malBuffer );
+
+    ALenum error;
+    error = alGetError();
+    AssertWarn( error == AL_NO_ERROR, "AudioBuffer::~AudioBuffer() - failed to release buffer" );
+    switch (error)
+    {
+      case AL_NO_ERROR:
+        break;
+      case AL_INVALID_NAME:
+        Con::errorf("AudioBuffer::~AudioBuffer() - alDeleteBuffers OpenAL AL_INVALID_NAME error code returned");
+        break;
+      case AL_INVALID_ENUM:
+        Con::errorf("AudioBuffer::~AudioBuffer() - alDeleteBuffers OpenAL AL_INVALID_ENUM error code returned");
+        break;
+      case AL_INVALID_VALUE:
+        Con::errorf("AudioBuffer::~AudioBuffer() - alDeleteBuffers OpenAL AL_INVALID_VALUE error code returned");
+        break;
+      case AL_INVALID_OPERATION:
+        Con::errorf("AudioBuffer::~AudioBuffer() - alDeleteBuffers OpenAL AL_INVALID_OPERATION error code returned");
+        break;
+      case AL_OUT_OF_MEMORY:
+        Con::errorf("AudioBuffer::~AudioBuffer() - alDeleteBuffers OpenAL AL_OUT_OF_MEMORY error code returned");
+        break;
+      default:
+        Con::errorf("AudioBuffer::~AudioBuffer() - alDeleteBuffers OpenAL has encountered a problem and won't tell us what it is. %d", error);
+    };
+  }
 }
 
 //--------------------------------------

+ 5 - 5
engine/source/audio/audioDataBlock.cc

@@ -58,7 +58,7 @@ IMPLEMENT_CO_DATABLOCK_V1(AudioEnvironment);
 AudioEnvironment::AudioEnvironment()
 {
    mUseRoom = true;
-#if !defined(TORQUE_OS_IOS)
+#if !defined(TORQUE_OS_IOS) && !defined(TORQUE_OS_ANDROID)
    mRoom = EAX_ENVIRONMENT_GENERIC;
 #endif
    mRoomHF = 0;
@@ -78,7 +78,7 @@ AudioEnvironment::AudioEnvironment()
    mFlags = 0;
 }
 
-#if !defined(TORQUE_OS_IOS)
+#if !defined(TORQUE_OS_IOS) && !defined(TORQUE_OS_ANDROID)
 static EnumTable::Enums roomEnums[] =
 {
    { EAX_ENVIRONMENT_GENERIC,           "GENERIC" },               // 0
@@ -121,7 +121,7 @@ void AudioEnvironment::initPersistFields()
    Parent::initPersistFields();
 
    addField("useRoom",              TypeBool,   Offset(mUseRoom, AudioEnvironment));
-#if !defined(TORQUE_OS_IOS)
+#if !defined(TORQUE_OS_IOS) && !defined(TORQUE_OS_ANDROID)
    addField("room",                 TypeEnum,   Offset(mRoom, AudioEnvironment), 1, &gAudioEnvironmentRoomTypes);
 #endif
    addField("roomHF",               TypeS32,    Offset(mRoomHF, AudioEnvironment));
@@ -145,7 +145,7 @@ void AudioEnvironment::initPersistFields()
 void AudioEnvironment::packData(BitStream* stream)
 {
    Parent::packData(stream);
-#if !defined(TORQUE_OS_IOS)
+#if !defined(TORQUE_OS_IOS)  && !defined(TORQUE_OS_ANDROID)
    if(stream->writeFlag(mUseRoom))
       stream->writeRangedU32(mRoom, EAX_ENVIRONMENT_GENERIC, EAX_ENVIRONMENT_COUNT);
    else
@@ -173,7 +173,7 @@ void AudioEnvironment::unpackData(BitStream* stream)
 {
    Parent::unpackData(stream);
    mUseRoom = stream->readFlag();
-#if !defined(TORQUE_OS_IOS)
+#if !defined(TORQUE_OS_IOS)  && !defined(TORQUE_OS_ANDROID)
    if(mUseRoom)
       mRoom = stream->readRangedU32(EAX_ENVIRONMENT_GENERIC, EAX_ENVIRONMENT_COUNT);
    else

+ 0 - 745
engine/source/audio/audioFunctions.cc

@@ -1,745 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) 2013 GarageGames, LLC
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-// IN THE SOFTWARE.
-//-----------------------------------------------------------------------------
-
-#ifndef _ASSET_MANAGER_H_
-#include "assets/assetManager.h"
-#endif
-
-#include "platform/platform.h"
-
-#ifndef _PLATFORMAUDIO_H_
-#include "platform/platformAudio.h"
-#endif
-
-#ifndef _SIMBASE_H_
-#include "sim/simBase.h"
-#endif
-
-#ifndef _AUDIODATABLOCK_H_
-#include "audio/audioDataBlock.h"
-#endif
-
-#ifndef _AUDIO_ASSET_H_
-#include "audio/audioAsset.h"
-#endif
-
-#ifdef TORQUE_OS_IOS
-#include "platformiOS/iOSStreamSource.h"
-#endif
-
-
-extern ALuint alxGetWaveLen(ALuint buffer);
-
-extern F32 mAudioChannelVolumes[Audio::AudioVolumeChannels];
-
-//--------------------------------------------------------------------------
-// Expose all al get/set methods...
-//--------------------------------------------------------------------------
-enum AL_GetSetBits{
-   Source      =  BIT(0),
-   Listener    =  BIT(1),
-   Context     =  BIT(2),
-   Environment =  BIT(3),
-   Get         =  BIT(4),
-   Set         =  BIT(5),
-   Int         =  BIT(6),
-   Float       =  BIT(7),
-   Float3      =  BIT(8),
-   Float6      =  BIT(9)
-};
-
-static ALenum getEnum(const char * name, U32 flags)
-{
-   AssertFatal(name, "Audio getEnum: bad param");
-
-   static struct {
-      const char *   mName;
-      ALenum   mAlenum;
-      U32      mFlags;
-   } table[] = {
-      //-----------------------------------------------------------------------------------------------------------------
-      // "name"                           ENUM                             Flags
-      //-----------------------------------------------------------------------------------------------------------------
-      { "AL_GAIN",                        AL_GAIN,                         (Source|Listener|Get|Set|Float) },
-      { "AL_GAIN_LINEAR",                 AL_GAIN_LINEAR,                  (Source|Listener|Get|Set|Float) },
-      { "AL_PITCH",                       AL_PITCH,                        (Source|Get|Set|Float) },
-      { "AL_REFERENCE_DISTANCE",          AL_REFERENCE_DISTANCE,           (Source|Get|Set|Float) },
-      { "AL_MAX_DISTANCE",                AL_MAX_DISTANCE,                 (Source|Get|Set|Float) },
-      { "AL_CONE_OUTER_GAIN",             AL_CONE_OUTER_GAIN,              (Source|Get|Set|Float) },
-      { "AL_POSITION",                    AL_POSITION,                     (Source|Listener|Get|Set|Float3) },
-      { "AL_DIRECTION",                   AL_DIRECTION,                    (Source|Get|Set|Float3) },
-      { "AL_VELOCITY",                    AL_VELOCITY,                     (Source|Listener|Get|Set|Float3) },
-      { "AL_ORIENTATION",                 AL_ORIENTATION,                  (Listener|Set|Float6) },
-      { "AL_CONE_INNER_ANGLE",            AL_CONE_INNER_ANGLE,             (Source|Get|Set|Int) },
-      { "AL_CONE_OUTER_ANGLE",            AL_CONE_OUTER_ANGLE,             (Source|Get|Set|Int) },
-      { "AL_LOOPING",                     AL_LOOPING,                      (Source|Get|Set|Int) },
-      //{ "AL_STREAMING",                   AL_STREAMING,                    (Source|Get|Set|Int) },
-      //{ "AL_BUFFER",                      AL_BUFFER,                       (Source|Get|Set|Int) },
-
-      { "AL_VENDOR",                      AL_VENDOR,                       (Context|Get) },
-      { "AL_VERSION",                     AL_VERSION,                      (Context|Get) },
-      { "AL_RENDERER",                    AL_RENDERER,                     (Context|Get) },
-      { "AL_EXTENSIONS",                  AL_EXTENSIONS,                   (Context|Get) },
-
-      /*
-      // environment
-      { "AL_ENV_ROOM_IASIG",                       AL_ENV_ROOM_IASIG,                        (Environment|Get|Set|Int) },
-      { "AL_ENV_ROOM_HIGH_FREQUENCY_IASIG",        AL_ENV_ROOM_HIGH_FREQUENCY_IASIG,         (Environment|Get|Set|Int) },
-      { "AL_ENV_REFLECTIONS_IASIG",                AL_ENV_REFLECTIONS_IASIG,                 (Environment|Get|Set|Int) },
-      { "AL_ENV_REVERB_IASIG",                     AL_ENV_REVERB_IASIG,                      (Environment|Get|Set|Int) },
-      { "AL_ENV_ROOM_ROLLOFF_FACTOR_IASIG",        AL_ENV_ROOM_ROLLOFF_FACTOR_IASIG,         (Environment|Get|Set|Float) },
-      { "AL_ENV_DECAY_TIME_IASIG",                 AL_ENV_DECAY_TIME_IASIG,                  (Environment|Get|Set|Float) },
-      { "AL_ENV_DECAY_HIGH_FREQUENCY_RATIO_IASIG", AL_ENV_DECAY_HIGH_FREQUENCY_RATIO_IASIG,  (Environment|Get|Set|Float) },
-      { "AL_ENV_REFLECTIONS_DELAY_IASIG",          AL_ENV_REFLECTIONS_DELAY_IASIG,           (Environment|Get|Set|Float) },
-      { "AL_ENV_REVERB_DELAY_IASIG",               AL_ENV_REVERB_DELAY_IASIG,                (Environment|Get|Set|Float) },
-      { "AL_ENV_DIFFUSION_IASIG",                  AL_ENV_DIFFUSION_IASIG,                   (Environment|Get|Set|Float) },
-      { "AL_ENV_DENSITY_IASIG",                    AL_ENV_DENSITY_IASIG,                     (Environment|Get|Set|Float) },
-      { "AL_ENV_HIGH_FREQUENCY_REFERENCE_IASIG",   AL_ENV_HIGH_FREQUENCY_REFERENCE_IASIG,    (Environment|Get|Set|Float) },
-
-      { "AL_ENV_ROOM_VOLUME_EXT",                  AL_ENV_ROOM_VOLUME_EXT,                   (Environment|Get|Set|Int) },
-      { "AL_ENV_FLAGS_EXT",                        AL_ENV_FLAGS_EXT,                         (Environment|Get|Set|Int) },
-      { "AL_ENV_EFFECT_VOLUME_EXT",                AL_ENV_EFFECT_VOLUME_EXT,                 (Environment|Get|Set|Float) },
-      { "AL_ENV_DAMPING_EXT",                      AL_ENV_DAMPING_EXT,                       (Environment|Get|Set|Float) },
-      { "AL_ENV_ENVIRONMENT_SIZE_EXT",             AL_ENV_ENVIRONMENT_SIZE_EXT,              (Environment|Get|Set|Float) },
-
-      // sample environment
-      { "AL_ENV_SAMPLE_DIRECT_EXT",                AL_ENV_SAMPLE_DIRECT_EXT,                 (Source|Get|Set|Int) },
-      { "AL_ENV_SAMPLE_DIRECT_HF_EXT",             AL_ENV_SAMPLE_DIRECT_HF_EXT,              (Source|Get|Set|Int) },
-      { "AL_ENV_SAMPLE_ROOM_EXT",                  AL_ENV_SAMPLE_ROOM_EXT,                   (Source|Get|Set|Int) },
-      { "AL_ENV_SAMPLE_ROOM_HF_EXT",               AL_ENV_SAMPLE_ROOM_HF_EXT,                (Source|Get|Set|Int) },
-      { "AL_ENV_SAMPLE_OUTSIDE_VOLUME_HF_EXT",     AL_ENV_SAMPLE_OUTSIDE_VOLUME_HF_EXT,      (Source|Get|Set|Int) },
-      { "AL_ENV_SAMPLE_FLAGS_EXT",                 AL_ENV_SAMPLE_FLAGS_EXT,                  (Source|Get|Set|Int) },
-
-      { "AL_ENV_SAMPLE_REVERB_MIX_EXT",            AL_ENV_SAMPLE_REVERB_MIX_EXT,             (Source|Get|Set|Float) },
-      { "AL_ENV_SAMPLE_OBSTRUCTION_EXT",           AL_ENV_SAMPLE_OBSTRUCTION_EXT,            (Source|Get|Set|Float) },
-      { "AL_ENV_SAMPLE_OBSTRUCTION_LF_RATIO_EXT",  AL_ENV_SAMPLE_OBSTRUCTION_LF_RATIO_EXT,   (Source|Get|Set|Float) },
-      { "AL_ENV_SAMPLE_OCCLUSION_EXT",             AL_ENV_SAMPLE_OCCLUSION_EXT,              (Source|Get|Set|Float) },
-      { "AL_ENV_SAMPLE_OCCLUSION_LF_RATIO_EXT",    AL_ENV_SAMPLE_OCCLUSION_LF_RATIO_EXT,     (Source|Get|Set|Float) },
-      { "AL_ENV_SAMPLE_OCCLUSION_ROOM_RATIO_EXT",  AL_ENV_SAMPLE_OCCLUSION_ROOM_RATIO_EXT,   (Source|Get|Set|Float) },
-      { "AL_ENV_SAMPLE_ROOM_ROLLOFF_EXT",          AL_ENV_SAMPLE_ROOM_ROLLOFF_EXT,           (Source|Get|Set|Float) },
-      { "AL_ENV_SAMPLE_AIR_ABSORPTION_EXT",        AL_ENV_SAMPLE_AIR_ABSORPTION_EXT,         (Source|Get|Set|Float) },
-   */
-   };
-   for(U32 i = 0; i < (sizeof(table) / sizeof(table[0])); i++)
-   {
-      if((table[i].mFlags & flags) != flags)
-         continue;
-
-      if(dStricmp(table[i].mName, name) == 0)
-         return(table[i].mAlenum);
-   }
-
-   return(AL_INVALID);
-}
-
-
-//-----------------------------------------------
-ConsoleFunctionGroupBegin(Audio, "Functions dealing with the OpenAL audio layer.\n\n"
-                          "@see www.OpenAL.org for what these functions do. Variances from posted"
-                          "     behaviour is described below.");
-
-ConsoleFunction(OpenALInitDriver, bool, 1, 1, "() Use the OpenALInitDriver function to initialize the OpenAL driver.\n"
-                                                                "This must be done before all other OpenAL operations.\n"
-                                                                "@return Returns true on successful initialization, false otherwise.\n"
-                                                                "@sa OpenALShutdownDriver")
-{
-   if (Audio::OpenALInit())
-   {
-      static bool registered = false;
-      if (!registered) {
-         ResourceManager->registerExtension(".wav", AudioBuffer::construct);
-      }
-      registered = true;
-      return true;
-   }
-   return false;
-}
-
-//-----------------------------------------------
-ConsoleFunction(OpenALShutdownDriver, void, 1, 1, "() Use the OpenALShutdownDriver function to stop/shut down the OpenAL driver.\n"
-                                                                "After this is called, you must restart the driver with OpenALInitDriver to execute any new sound operations.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa OpenALInitDriver")
-{
-   Audio::OpenALShutdown();
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(OpenALRegisterExtensions, void, 1, 1, "OpenALRegisterExtensions()"
-                "@note Currently does nothing (possibly deprecated)")
-{
-}
-
-//-----------------------------------------------
-ConsoleFunction(alGetString, const char *, 2, 2, "( ALEnum ) Use the alGetString function to get the string equivalent to the specified OpenAL enumerated value.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.\n"
-                                                                "@return Returns a string corresponding to the passed ALEnum")
-{
-   ALenum e = getEnum(argv[1], (Context|Get));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "alGetString: invalid enum name '%s'", argv[1]);
-      return "";
-   }
-
-   return (const char*)alGetString(e);
-}
-
-
-//--------------------------------------------------------------------------
-// Soundfile
-//--------------------------------------------------------------------------
-ConsoleFunction(alxGetAudioLength, S32, 2, 2,   "( audio-assetId ) Use the alxGetAudioLength function to get the play-length of a specified resource sound file in milliseconds.\n"
-                                            "@param audio-assetId  The asset Id that specifies the audio file to check.\n"
-                                            "@return Returns play-length of the audio file specified by audio-assetId in milliseconds.\n"
-                                            "@sa alxGetStreamDuration, alxGetStreamPosition")
-{
-    // Fetch asset Id.
-    const char* pAssetId = argv[1];
-
-    // Acquire audio asset.
-    AudioAsset* pAudioAsset = AssetDatabase.acquireAsset<AudioAsset>( pAssetId );
-
-    // Did we get the audio asset?
-    if ( pAudioAsset == NULL )
-    {
-        // No, so warn.
-        Con::warnf( "alxGetAudioLength() - Could not find audio asset '%s'.", pAssetId );
-        return 0;
-    }
-
-    Resource<AudioBuffer> buffer = AudioBuffer::find( pAudioAsset->getAudioFile() );
-
-    if ( !buffer.isNull() )
-    {
-        ALuint alBuffer = buffer->getALBuffer();
-        return alxGetWaveLen( alBuffer );
-    }
-
-    // Warn.
-    Con::warnf( "alxGetAudioLength() - Could not find audio file '%s' for asset '%s'.", pAudioAsset->getAudioFile(), pAssetId );
-
-    return 0;
-}
-
-//--------------------------------------------------------------------------
-// Source
-//--------------------------------------------------------------------------
-ConsoleFunction(alxCreateSource, S32, 2, 2, "(audio-assetId) - Create a source from the specified asset Id.\n"
-                                            "@param audio-assetId The asset Id to create the source from.\n"
-                                            "@return The handle of the created source or 0 on error." )
-{
-    // Fetch asset Id.
-    const char* pAssetId = argv[1];
-
-    // Acquire audio asset.
-    AudioAsset* pAudioAsset = AssetDatabase.acquireAsset<AudioAsset>( pAssetId );
-
-    // Did we get the audio asset?
-    if ( pAudioAsset == NULL )
-    {
-        // No, so warn.
-        Con::warnf( "alxCreateSource() - Could not find audio asset '%s'.", pAssetId );
-        return NULL_AUDIOHANDLE;
-    }
-
-    // Fetch audio handle.
-    AUDIOHANDLE handle = alxCreateSource( pAudioAsset );
-
-    // Release asset.
-    AssetDatabase.releaseAsset( pAssetId );
-
-    return handle;
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(alxSourcef, void, 4, 4, "( handle , ALEnum , value ) Use the alxSource* function to set a source parameter(s) as specified by the OpenAL enumerated type ALEnum.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.\n"
-                                                                "@param value An ALEnum type specific value corresponding to the new value for this enumerated parameters.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa alxGetSource*, al*Listener*")
-{
-   ALenum e = getEnum(argv[2], (Source|Set|Float));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "cAudio_alxSourcef: invalid enum name '%s'", argv[2]);
-      return;
-   }
-
-   alxSourcef(dAtoi(argv[1]), e, dAtof(argv[3]));
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(alxSource3f, void, 3, 6, "( handle , ALEnum , x , y , z ) Use the alxSource* function to set a source parameter(s) as specified by the OpenAL enumerated type ALEnum.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.\n"
-                                                                "@param x,y,z XYZ floating-point coordinates.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa alxGetSource*, al*Listener*")
-{
-   ALenum e = getEnum(argv[2], (Source|Set|Float3));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "cAudio_alxSource3f: invalid enum name '%s'", argv[2]);
-      return;
-   }
-
-   if((argc != 4 && argc != 6))
-   {
-      Con::errorf(ConsoleLogEntry::General, "cAudio_alxSource3f: wrong number of args");
-      return;
-   }
-
-   Point3F pos;
-   if(argc == 4)
-      dSscanf(argv[3], "%g %g %g", &pos.x, &pos.y, &pos.z);
-   else
-   {
-      pos.x = dAtof(argv[3]);
-      pos.y = dAtof(argv[4]);
-      pos.z = dAtof(argv[5]);
-   }
-
-   alxSource3f(dAtoi(argv[1]), e, pos.x, pos.y, pos.z);
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(alxSourcei, void, 4, 4, "( handle , ALEnum , value ) Use the alxSource* function to set a source parameter(s) as specified by the OpenAL enumerated type ALEnum.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.\n"
-                                                                "@param value An ALEnum type specific value corresponding to the new value for this enumerated parameters.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa alxGetSource*, al*Listener*")
-{
-   ALenum e = getEnum(argv[2], (Source|Set|Int));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "cAudio_alxSourcei: invalid enum name '%s'", argv[2]);
-      return;
-   }
-
-   alxSourcei(dAtoi(argv[1]), e, dAtoi(argv[3]));
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(alxGetSourcef, F32, 3, 3, "( handle , ALEnum ) Use the alxGetSource* function to get the current value of a source parameter, as specified by ALEnum.\n"
-                                                                "Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of alxGetSource*.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.\n"
-                                                                "@return Returns current value of parameter specified by ALEnum for source identified by handle.\n"
-                                                                "@sa alxSource*, al*GetListener*")
-{
-   ALenum e = getEnum(argv[2], (Source|Get|Float));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "cAudio_alxGetSourcef: invalid enum name '%s'", argv[2]);
-      return(0.f);
-   }
-
-   F32 value;
-   alxGetSourcef(dAtoi(argv[1]), e, &value);
-   return(value);
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(alxGetSource3f, const char *, 3, 3, "( handle , ALEnum ) Use the alxGetSource* function to get the current value of a source parameter, as specified by ALEnum.\n"
-                                                                "Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of alxGetSource*.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name.\n"
-                                                                "@return Returns current value of parameter specified by ALEnum for source identified by handle.\n"
-                                                                "@sa alxSource*, al*GetListener*")
-{
-   ALenum e = getEnum(argv[2], (Source|Get|Float));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "cAudio_alxGetSource3f: invalid enum name '%s'", argv[2]);
-      return("0 0 0");
-   }
-
-   F32 value1, value2, value3;
-   alxGetSource3f(dAtoi(argv[1]), e, &value1, &value2, &value3);
-
-   char * ret = Con::getReturnBuffer(64);
-   dSprintf(ret, 64, "%7.3f %7.3 %7.3", value1, value2, value3);
-   return(ret);
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(alxGetSourcei, S32, 3, 3, "( handle , ALEnum ) Use the alxGetSource* function to get the current value of a source parameter, as specified by ALEnum.\n"
-                                                                "Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of alxGetSource*.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.\n"
-                                                                "@return Returns current value of parameter specified by ALEnum for source identified by handle.\n"
-                                                                "@sa alxSource*, al*GetListener*")
-{
-   ALenum e = getEnum(argv[2], (Source|Get|Int));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "cAudio_alxGetSourcei: invalid enum name '%s'", argv[2]);
-      return(0);
-   }
-
-   S32 value;
-   alxGetSourcei(dAtoi(argv[1]), e, &value);
-   return(value);
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(alxPlay, S32, 2, 2, "(audio-assetId) - Play the audio asset Id.\n"
-                                    "@param audio-assetId The asset Id to play.\n"
-                                    "@return The handle to the playing audio asset Id or 0 on error." )
-{
-    // Fetch asset Id.
-    const char* pAssetId = argv[1];
-
-    // Acquire audio asset.
-    AudioAsset* pAudioAsset = AssetDatabase.acquireAsset<AudioAsset>( pAssetId );
-
-    // Did we get the audio asset?
-    if ( pAudioAsset == NULL )
-    {
-        // No, so warn.
-        Con::warnf( "alxPlay() - Could not find audio asset '%s'.", pAssetId );
-        return NULL_AUDIOHANDLE;
-    }
-
-    // Fetch audio handle.
-    AUDIOHANDLE handle = alxPlay( pAudioAsset );
-
-    // Release asset.
-    AssetDatabase.releaseAsset( pAssetId );
-
-    return handle;
-}
-
-ConsoleFunction(alxPause, bool, 2, 2, "( handle ) Use the alxPause function to pause a currently playing sound as specified by handle.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa alxIsPlaying, alxPlay, alxStopAll")
-{
-   AUDIOHANDLE handle = dAtoi(argv[1]);
-   if(handle == NULL_AUDIOHANDLE)
-      return false;
-   return alxPause( handle );
-}
-
-ConsoleFunction(alxUnpause, void, 2, 2, "( handle ) Use the alxUnpause function to resume playing a currently paused sound as specified by handle.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa alxIsPlaying, alxPlay, alxStopAll")
-{
-   AUDIOHANDLE handle = dAtoi(argv[1]);
-   if(handle == NULL_AUDIOHANDLE)
-      return;
-   alxUnPause( handle );
-}
-
-//-----------------------------------------------
-ConsoleFunction(alxStop, void, 2, 2, "( handle ) Use the alxStop function to stop a currently playing sound as specified by handle.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa alxIsPlaying, alxPlay, alxStopAll")
-{
-   AUDIOHANDLE handle = dAtoi(argv[1]);
-   if(handle == NULL_AUDIOHANDLE)
-      return;
-   alxStop(handle);
-}
-
-//-----------------------------------------------
-ConsoleFunction(alxStopAll, void, 1, 1, "() Use the alxStopAll function to stop all currently playing sounds associated with registered handles.\n"
-                                                                "@return No return.\n"
-                                                                "@sa alxIsPlaying, alxPlay, alxStop")
-{
-   alxStopAll();
-}
-
-//-----------------------------------------------
-ConsoleFunction(alxIsPlaying, bool, 2, 5, "( handle ) Use the alxIsPlaying function to determine if the sound associated with a previously set-up sound handle is playing or not.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@return Returns 1 if specified handle is being played, 0 otherwise.\n"
-                                                                "@sa alxPlay, alxStop, alxStopAll")
-{
-   AUDIOHANDLE handle = dAtoi(argv[1]);
-   if(handle == NULL_AUDIOHANDLE)
-      return false;
-   return alxIsPlaying(handle);
-}
-
-
-//--------------------------------------------------------------------------
-// Listener
-//--------------------------------------------------------------------------
-ConsoleFunction(alxListenerf, void, 3, 3, "( AlEnum , value ) Use the al*Listener* function to set a listener parameter(s) as specified by the OpenAL enumerated type ALEnum.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.\n"
-                                                                "@param value An ALEnum type specific value corresponding to the new value for this enumerated parameters.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa al*GetListener*, alxSource*")
-{
-   ALenum e = getEnum(argv[1], (Listener|Set|Float));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "alxListenerf: invalid enum name '%s'", argv[1]);
-      return;
-   }
-
-   alxListenerf(e, dAtof(argv[2]));
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(alListener3f, void, 3, 5, "( ALEnum , x , y , z) Use the al*Listener* function to set a listener parameter(s) as specified by the OpenAL enumerated type ALEnum.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.\n"
-                                                                "@param x,y,z XYZ floating-point coordinates.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa al*GetListener*, alxSource*")
-{
-   ALenum e = getEnum(argv[1], (Listener|Set|Float3));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "alListener3f: invalid enum name '%s'", argv[1]);
-      return;
-   }
-
-   if(argc != 3 && argc != 5)
-   {
-      Con::errorf(ConsoleLogEntry::General, "alListener3f: wrong number of arguments");
-      return;
-   }
-
-   Point3F pos;
-   if(argc == 3)
-      dSscanf(argv[2], "%g %g %g", &pos.x, &pos.y, &pos.z);
-   else
-   {
-      pos.x = dAtof(argv[2]);
-      pos.y = dAtof(argv[3]);
-      pos.z = dAtof(argv[4]);
-   }
-
-   alListener3f(e, pos.x, pos.y, pos.z);
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(alxGetListenerf, F32, 2, 2, "( ALEnum ) Use the al*GetListener* function to get the current value of a listener parameter, as specified by ALEnum.\n"
-                                                                "Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of al*GetListener*.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.\n"
-                                                                "@return Returns a float (alxGetListenerf), a vector of three floats (alGetListener3f), or an integer value respectively (alGetListeneri).\n"
-                                                                "@sa alxGetSource*")
-{
-   ALenum e = getEnum(argv[1], (Source|Get|Float));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "alxGetListenerf: invalid enum name '%s'", argv[1]);
-      return(0.f);
-   }
-
-   F32 value;
-   alxGetListenerf(e, &value);
-   return(value);
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(alGetListener3f, const char *, 2, 2, "( ALEnum ) Use the al*GetListener* function to get the current value of a listener parameter, as specified by ALEnum.\n"
-                                                                "Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of al*GetListener*.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.\n"
-                                                                "@return Returns a float (alxGetListenerf), a vector of three floats (alGetListener3f), or an integer value respectively (alGetListeneri).\n"
-                                                                "@sa alxGetSource*")
-{
-   ALenum e = getEnum(argv[2], (Source|Get|Float));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "alGetListener3f: invalid enum name '%s'", argv[1]);
-      return("0 0 0");
-   }
-
-   F32 value1, value2, value3;
-   alGetListener3f(e, &value1, &value2, &value3);
-
-   char * ret = Con::getReturnBuffer(64);
-   dSprintf(ret, 64, "%7.3f %7.3 %7.3", value1, value2, value3);
-   return(ret);
-}
-
-
-//-----------------------------------------------
-ConsoleFunction(alGetListeneri, S32, 2, 2, "( ALEnum ) Use the al*GetListener* function to get the current value of a listener parameter, as specified by ALEnum.\n"
-                                                                "Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of al*GetListener*.\n"
-                                                                "@param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.\n"
-                                                                "@return Returns a float (alxGetListenerf), a vector of three floats (alGetListener3f), or an integer value respectively (alGetListeneri).\n"
-                                                                "@sa alxGetSource*")
-{
-   ALenum e = getEnum(argv[1], (Source|Get|Int));
-   if(e == AL_INVALID)
-   {
-      Con::errorf(ConsoleLogEntry::General, "alGetListeneri: invalid enum name '%s'", argv[1]);
-      return(0);
-   }
-
-   S32 value;
-   alGetListeneri(e, &value);
-   return(value);
-}
-
-
-//--------------------------------------------------------------------------
-// Channel Volumes
-//--------------------------------------------------------------------------
-ConsoleFunction(alxGetChannelVolume, F32, 2, 2, "( channelID ) Use the alxGetChannelVolume function to get the volume setting for a specified channel.\n"
-                                                                "@param channelID An integer value, equal to or greater than 0, corresponding to a valid audio channel.\n"
-                                                                "@return Returns volume [ 0.0, 1.0 ] for channel specified by channelID.\n"
-                                                                "@sa alxSetChannelVolume")
-{
-   U32 channel = dAtoi(argv[1]);
-   if(channel >= Audio::AudioVolumeChannels)
-   {
-      Con::errorf(ConsoleLogEntry::General, "alxGetChannelVolume: invalid channel '%d'", dAtoi(argv[1]));
-      return(0.f);
-   }
-
-   return(mAudioChannelVolumes[channel]);
-}
-
-//-----------------------------------------------
-ConsoleFunction(alxSetChannelVolume, bool, 3, 3, "( channelD , volume ) Use the alxSetChannelVolume function to set a volume [ 0.0, 1.0 ] for the channel specified by channelID.\n"
-                                                                "@param channelID An integer value, equal to or greater than 0, corresponding to a valid audio channel.\n"
-                                                                "@param volume A value between 0.0 and 1.0 specifying the new volume for the specified channel.\n"
-                                                                "@return Returns true on success and false on failure.\n"
-                                                                "@sa alxGetChannelVolume")
-{
-   U32 channel = dAtoi(argv[1]);
-   F32 volume = mClampF(dAtof(argv[2]), 0.f, 1.f);
-
-   if(channel >= Audio::AudioVolumeChannels)
-   {
-      Con::errorf(ConsoleLogEntry::General, "alxSetChannelVolume: channel '%d' out of range [0, %d]", channel, Audio::AudioVolumeChannels);
-      return false;
-   }
-
-   mAudioChannelVolumes[channel] = volume;
-   alxUpdateTypeGain(channel);
-   return true;
-}
-
-//-----------------------------------------------
-ConsoleFunction(alxGetStreamPosition, F32, 2, 2, "( handle ) Use the alxGetStreamPosition function to get the current play position for a playing sound. Note, this value is a percentage equivalent to the percent of the sound that as already played.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@return Returns -1 for invalid handle, and 0.0 to 1.0 for valid handle indicating what percentage of the sound file has been played.\n"
-                                                                "@sa alxGetStreamDuration")
-{
-   AUDIOHANDLE handle = dAtoi(argv[1]);
-
-   if(handle == NULL_AUDIOHANDLE)
-      return -1;
-
-   return alxGetStreamPosition( handle );
-}
-
-//-----------------------------------------------
-ConsoleFunction(alxGetStreamDuration, F32, 2, 2, "( handle ) Use the alxGetStreamDuration function to determine the length of a previously set up sound in seconds.\n"
-                                                                "@param handle The ID (a non-negative integer) corresponding to a previously set up sound source.\n"
-                                                                "@return Returns -1 for invalid handle, and 0.0 to N.M for valid handle indicating length of scheduled sound in seconds.\n"
-                                                                "@sa alxGetStreamPosition")
-{
-   AUDIOHANDLE handle = dAtoi(argv[1]);
-
-   if(handle == NULL_AUDIOHANDLE)
-      return -1;
-
-   return alxGetStreamDuration( handle );
-}
-
-#ifdef TORQUE_OS_IOS
-ConsoleFunction(startiOSAudioStream, S32, 2, 2,  "(audio-assetId) - Play the audio asset Id.\n"
-                                                    "@param audio-assetId The asset Id to play.  This *must* be an MP3 to work correctly.\n"
-                                                    "@return The playing stream Id." )
-{
-    // Fetch asset Id.
-    const char* pAssetId = argv[1];
-
-    // Acquire audio asset.
-    AudioAsset* pAudioAsset = AssetDatabase.acquireAsset<AudioAsset>( pAssetId );
-
-    // Did we get the audio asset?
-    if ( pAudioAsset == NULL )
-    {
-        // No, so warn.
-        Con::warnf( "startiOSAudioStream() - Could not find audio asset '%s'.", pAssetId );
-        return 0;
-    }
-
-    // Fetch the audio filename,
-    char fileName[1024];
-    Con::expandPath( fileName, sizeof(fileName), pAudioAsset->getAudioFile() );
-    iOSStreamSource* pStream = new iOSStreamSource( fileName );
-    pStream->start( pAudioAsset->getLooping() );
-
-    // Release asset.
-    AssetDatabase.releaseAsset( pAssetId );
-
-    return pStream->getId();
-}
-
-//-----------------------------------------------
-ConsoleFunction(stopiOSAudioStream, void, 2, 2, "( streamId ) - Stops playing the audio stream Id." )
-{
-    SimObjectId streamId = dAtoi( argv[1] );
-    iOSStreamSource* pStream = Sim::findObject<iOSStreamSource>( streamId );
-
-    if( pStream != NULL )
-    {
-        if( pStream->isPlaying() )
-        {
-            pStream->stop();
-        }
-        pStream->deleteObject();
-    }
-}
-
-ConsoleFunction(setiOSAudioStreamVolume, void, 3, 3, "setiPhoneAudioVolume( Stream ID, float volume )" )
-{
-    SimObjectId streamId = dAtoi( argv[1] );
-    iOSStreamSource* pStream = Sim::findObject<iOSStreamSource>( streamId );
-    
-    F32 volume = dAtof( argv[2] );
-    
-    if( pStream ) {
-        if( pStream->isPlaying() ) {
-            pStream->setVolume(volume);
-        }
-    }
-}
-#endif
-
-
-ConsoleFunctionGroupEnd(Audio);

+ 63 - 38
engine/source/collection/nameTags_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -29,19 +29,25 @@
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(NameTags, createTag, S32, 3, 3,           "(tagName) Creates a tag.\n"
-                                                        "@param tagName The tag name to create.\n"
-                                                        "@return The tag Id created." )
+ConsoleMethodGroupBeginWithDocs(NameTags, SimSet)
+
+/*! Creates a tag.
+    @param tagName The tag name to create.
+    @return The tag Id created.
+*/
+ConsoleMethodWithDocs(NameTags, createTag, ConsoleInt, 3, 3, (tagName))
 {
     return object->createTag( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(NameTags, renameTag, S32, 4, 4,           "(tagId, newTagName) Renames an existing tag.\n"
-                                                        "@param tagId The tag Id to use.\n"
-                                                        "@param newTagName The new tag name to assign.\n"
-                                                        "@return The tag Id confirms the rename else 0 indicates an error." )
+/*! Renames an existing tag.
+    @param tagId The tag Id to use.
+    @param newTagName The new tag name to assign.
+    @return The tag Id confirms the rename else 0 indicates an error.
+*/
+ConsoleMethodWithDocs(NameTags, renameTag, ConsoleInt, 4, 4, (tagId, newTagName))
 {
     // Fetch tag Id.
     const NameTags::TagId tagId = dAtoi(argv[2]);
@@ -61,9 +67,11 @@ ConsoleMethod(NameTags, renameTag, S32, 4, 4,           "(tagId, newTagName) Ren
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(NameTags, deleteTag, S32, 3, 3,           "(tagId) Deletes a tag.\n"
-                                                        "@param tagId The tag Id to use.\n"
-                                                        "@return The tag Id confirms the delete else 0 indicates an error." )
+/*! Deletes a tag.
+    @param tagId The tag Id to use.
+    @return The tag Id confirms the delete else 0 indicates an error.
+*/
+ConsoleMethodWithDocs(NameTags, deleteTag, ConsoleInt, 3, 3, (tagId))
 {
     // Fetch tag Id.
     const NameTags::TagId tagId = dAtoi(argv[2]);
@@ -80,17 +88,21 @@ ConsoleMethod(NameTags, deleteTag, S32, 3, 3,           "(tagId) Deletes a tag.\
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(NameTags, getTagCount, S32, 2, 2,         "() Gets the total tag count.\n"
-                                                        "@return No return value.")
+/*! Gets the total tag count.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(NameTags, getTagCount, ConsoleInt, 2, 2, ())
 {
     return object->getTagCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(NameTags, getTagName, const char*, 3, 3,  "(tagId) Gets the tag name associated with the tag Id.\n"
-                                                        "@param tagId The tag Id to use.\n"
-                                                        "@return The tag name associated with the tag Id or empty string if the tag Id was not found." )
+/*! Gets the tag name associated with the tag Id.
+    @param tagId The tag Id to use.
+    @return The tag name associated with the tag Id or empty string if the tag Id was not found.
+*/
+ConsoleMethodWithDocs(NameTags, getTagName, ConsoleString, 3, 3, (tagId))
 {
     // Fetch tag Id.
     const NameTags::TagId tagId = dAtoi(argv[2]);
@@ -107,17 +119,21 @@ ConsoleMethod(NameTags, getTagName, const char*, 3, 3,  "(tagId) Gets the tag na
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(NameTags, getTagId, S32, 3, 3,            "(tagName) Gets the tag Id associated with the tag name.\n"
-                                                        "@param tagName The tag name to associated with the tag Id.\n"
-                                                        "@return The tag Id associated with the tag name or 0 if the tag name was not found." )
+/*! Gets the tag Id associated with the tag name.
+    @param tagName The tag name to associated with the tag Id.
+    @return The tag Id associated with the tag name or 0 if the tag name was not found.
+*/
+ConsoleMethodWithDocs(NameTags, getTagId, ConsoleInt, 3, 3, (tagName))
 {
     return object->getTagId( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(NameTags, getAllTags, const char*, 2, 2,  "() Gets all the tag Id / tag name pairs.\n"
-                                                        "@return [tag Id / tag Name] pairs")
+/*! Gets all the tag Id / tag name pairs.
+    @return [tag Id / tag Name] pairs
+*/
+ConsoleMethodWithDocs(NameTags, getAllTags, ConsoleString, 2, 2, ())
 {
     // Get buffer.
     const U32 bufferLength = 4096;
@@ -137,10 +153,12 @@ ConsoleMethod(NameTags, getAllTags, const char*, 2, 2,  "() Gets all the tag Id
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(NameTags, tag, bool, 4, 4,            "(object, tagIds) Adds the tag Id(s) to the object.\n"
-                                                    "@param object The object to use.\n"
-                                                    "@param tagIds The tag Id(s) to use.\n"
-                                                    "@return Whether the tag operation was successful or not." )
+/*! Adds the tag Id(s) to the object.
+    @param object The object to use.
+    @param tagIds The tag Id(s) to use.
+    @return Whether the tag operation was successful or not.
+*/
+ConsoleMethodWithDocs(NameTags, tag, ConsoleBool, 4, 4, (object, tagIds))
 {
     // Fetch object Id.
     const SimObjectId objectId = (SimObjectId)dAtoi(argv[2]);
@@ -171,10 +189,12 @@ ConsoleMethod(NameTags, tag, bool, 4, 4,            "(object, tagIds) Adds the t
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(NameTags, untag, bool, 4, 4,          "(object, tagIds) Removes the tag Id(s) from the object.\n"
-                                                    "@param object The object to use.\n"
-                                                    "@param tagIds The tag Id(s) to use.\n"
-                                                    "@return Whether the un-tag operation was successful or not." )
+/*! Removes the tag Id(s) from the object.
+    @param object The object to use.
+    @param tagIds The tag Id(s) to use.
+    @return Whether the un-tag operation was successful or not.
+*/
+ConsoleMethodWithDocs(NameTags, untag, ConsoleBool, 4, 4, (object, tagIds))
 {
     // Fetch object Id.
     const SimObjectId objectId = (SimObjectId)dAtoi(argv[2]);
@@ -205,10 +225,12 @@ ConsoleMethod(NameTags, untag, bool, 4, 4,          "(object, tagIds) Removes th
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(NameTags, hasTag, bool, 4, 4,         "(object, tagId) Checks whether the object is tagged with any of the tag Ids or not.\n"
-                                                    "@param object The object to use.\n"
-                                                    "@param tagId The tag Id(s) to use.\n"
-                                                    "@return Whether the object is tagged with any of the tag Ids or not." )
+/*! Checks whether the object is tagged with any of the tag Ids or not.
+    @param object The object to use.
+    @param tagId The tag Id(s) to use.
+    @return Whether the object is tagged with any of the tag Ids or not.
+*/
+ConsoleMethodWithDocs(NameTags, hasTag, ConsoleBool, 4, 4, (object, tagId))
 {
     // Fetch object Id.
     const SimObjectId objectId = (SimObjectId)dAtoi(argv[2]);
@@ -239,10 +261,12 @@ ConsoleMethod(NameTags, hasTag, bool, 4, 4,         "(object, tagId) Checks whet
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(NameTags, queryTags, const char*, 3, 4,   "(tagIds, [excluded]) Finds any objects added to this instance that are tagged with any of the specified tag(s).\n"                                            
-                                                        "@param tagId The tag Id to use.\n"
-                                                        "@param excluded Optionally inverts the query resulting in objects that are excluded i.e. objects that are NOT tagged with any of the specified tag(s).\n"
-                                                        "@return Any objects added to this instance that are tagged with any of the specified tag(s)." )
+/*! Finds any objects added to this instance that are tagged with any of the specified tag(s).    
+    @param tagId The tag Id to use.
+    @param excluded Optionally inverts the query resulting in objects that are excluded i.e. objects that are NOT tagged with any of the specified tag(s).
+    @return Any objects added to this instance that are tagged with any of the specified tag(s).
+*/
+ConsoleMethodWithDocs(NameTags, queryTags, ConsoleString, 3, 4, (tagIds, [excluded]))
 {
     // Fetch tag Id.
     const NameTags::TagId tagId = dAtoi(argv[2]);
@@ -284,5 +308,6 @@ ConsoleMethod(NameTags, queryTags, const char*, 3, 4,   "(tagIds, [excluded]) Fi
     return pReturnBuffer;
 }
 
+ConsoleMethodGroupEndWithDocs(NameTags)
 
-#endif // _NAMETAGS_SCRIPTBINDING_H_
+#endif // _NAMETAGS_SCRIPTBINDING_H_

+ 7 - 88
engine/source/collection/undo.cc

@@ -25,6 +25,8 @@
 #include "console/console.h"
 #include "console/consoleTypes.h"
 
+#include "undo_ScriptBinding.h"
+
 //-----------------------------------------------------------------------------
 // UndoAction
 //-----------------------------------------------------------------------------
@@ -37,6 +39,11 @@ UndoAction::UndoAction( const UTF8* actionName)
    mUndoManager = NULL;
 }
 
+S32 UndoManager::getRedoCount()
+{
+   return mRedoStack.size();
+}
+
 // Modified to clean up quiet sub actions [KNM | 08/10/11 | ITGB-152]
 UndoAction::~UndoAction()
 {
@@ -141,12 +148,6 @@ UndoManager& UndoManager::getDefaultManager()
    return *defaultMan;
 }
 
-ConsoleMethod(UndoManager, clearAll, void, 2, 2, "Clears the undo manager."
-              "@return No Return Value")
-{
-   object->clearAll();
-}
-
 void UndoManager::clearAll()
 {
    clearStack(mUndoStack); clearStack(mRedoStack);
@@ -263,23 +264,11 @@ void UndoManager::redo()
    (*react).redo();
 }
 
-ConsoleMethod(UndoManager, getUndoCount, S32, 2, 2, "() \n @return Returns the number of UndoActions stored as an integer")
-{
-   return object->getUndoCount();
-}
-
 S32 UndoManager::getUndoCount()
 {
    return mUndoStack.size();
 }
 
-ConsoleMethod(UndoManager, getUndoName, const char*, 3, 3, "( S32 index ) Gets the name of the UndoAction at given index.\n "
-              "@param index An integer index value for the desired undo\n"
-              "@return The name as a string")
-{
-   return object->getUndoName(dAtoi(argv[2]));
-}
-
 StringTableEntry UndoManager::getUndoName(S32 index)
 {
    if ((index < getUndoCount()) && (index >= 0))
@@ -288,23 +277,6 @@ StringTableEntry UndoManager::getUndoName(S32 index)
    return NULL;
 }
 
-ConsoleMethod(UndoManager, getRedoCount, S32, 2, 2, "() \n @return Returns the number of redo Actions stored as an integer")
-{
-   return object->getRedoCount();
-}
-
-S32 UndoManager::getRedoCount()
-{
-   return mRedoStack.size();
-}
-
-ConsoleMethod(UndoManager, getRedoName, const char*, 3, 3, "( S32 index ) Gets the name of the Action at given index.\n "
-              "@param index An integer index value for the desired redo\n"
-              "@return The name as a string")
-{
-   return object->getRedoName(dAtoi(argv[2]));
-}
-
 StringTableEntry UndoManager::getRedoName(S32 index)
 {
    if ((index < getRedoCount()) && (index >= 0))
@@ -346,56 +318,3 @@ void UndoManager::addAction(UndoAction* action)
    // clear the redo stack
    clearStack(mRedoStack);
 }
-
-//-----------------------------------------------------------------------------
-ConsoleMethod(UndoAction, addToManager, void, 2, 3, "action.addToManager([undoManager]) Adds an UndoAction to the manager"
-              "@param undoManager The manager to add the object to (default NULL)\n"
-              "@return No Return Value")
-{
-   UndoManager *theMan = NULL;
-   if(argc == 3)
-   {
-      SimObject *obj = Sim::findObject(argv[2]);
-      if(obj)
-         theMan = dynamic_cast<UndoManager*> (obj);
-   }
-   object->addToManager(theMan);
-}
-
-//-----------------------------------------------------------------------------
-ConsoleMethod(UndoManager, undo, void, 2, 2, "UndoManager.undo(); Pops the top undo action off the stack, resolves it, "
-                                            "and then pushes it onto the redo stack")
-{
-   object->undo();
-}
-
-//-----------------------------------------------------------------------------
-ConsoleMethod(UndoManager, redo, void, 2, 2, "UndoManager.redo(); Pops the top redo action off the stack, resolves it, "
-                                            "and then pushes it onto the undo stack")
-{
-   object->redo();
-}
-
-//-----------------------------------------------------------------------------
-ConsoleMethod(UndoManager, getNextUndoName, const char *, 2, 2, "UndoManager.getNextUndoName(); Gets the name of the action at the top of the undo stack\n"
-              "@return The name of the top action on the undo stack")
-{
-   StringTableEntry name = object->getNextUndoName();
-   if(!name)
-      return NULL;
-   char *ret = Con::getReturnBuffer(dStrlen(name) + 1);
-   dStrcpy(ret, name);
-   return ret;
-}
-
-//-----------------------------------------------------------------------------
-ConsoleMethod(UndoManager, getNextRedoName, const char *, 2, 2, "UndoManager.getNextRedoName(); Gets the name of the action at the top of the undo stack\n"
-              "@return The name of the top action on the redo stack")
-{
-   StringTableEntry name = object->getNextRedoName();
-   if(!name)
-      return NULL;
-   char *ret = Con::getReturnBuffer(dStrlen(name) + 1);
-   dStrcpy(ret, name);
-   return ret;
-}

+ 78 - 49
engine/source/component/behaviors/behaviorComponent_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -26,7 +26,9 @@
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction( copyBehaviorToComponent, bool, 3, 3, "(behavior, component) Copies a behaviors values to a component" )
+/*! Copies a behaviors values to a component
+*/
+ConsoleFunctionWithDocs( copyBehaviorToComponent, ConsoleBool, 3, 3, (behavior, component))
 {
     // Fetch behavior/component Ids.
     const S32 behaviorId  = dAtoi( argv[1] );
@@ -79,19 +81,25 @@ ConsoleFunction( copyBehaviorToComponent, bool, 3, 3, "(behavior, component) Cop
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, addBehavior, bool, 3, 3, "(BehaviorInstance bi) - Add a behavior to the object\n"
-                                                           "@param bi The behavior instance to add"
-                                                           "@return (bool success) Whether or not the behavior was successfully added")
+ConsoleMethodGroupBeginWithDocs(BehaviorComponent, DynamicConsoleMethodComponent)
+
+/*! Add a behavior to the object
+    @param bi The behavior instance to add
+    @return (bool success) Whether or not the behavior was successfully added
+*/
+ConsoleMethodWithDocs( BehaviorComponent, addBehavior, ConsoleBool, 3, 3, (BehaviorInstance bi))
 {
    return object->addBehavior( dynamic_cast<BehaviorInstance *>( Sim::findObject( argv[2] ) ) );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, removeBehavior, bool, 3, 4, "(BehaviorInstance bi, [bool deleteBehavior = true])\n"
-                                                              "@param bi The behavior instance to remove\n"
-                                                              "@param deleteBehavior Whether or not to delete the behavior\n"
-                                                              "@return (bool success) Whether the behavior was successfully removed")
+/*! 
+    @param bi The behavior instance to remove
+    @param deleteBehavior Whether or not to delete the behavior
+    @return (bool success) Whether the behavior was successfully removed
+*/
+ConsoleMethodWithDocs( BehaviorComponent, removeBehavior, ConsoleBool, 3, 4, (BehaviorInstance bi, [bool deleteBehavior = true]))
 {
    bool deleteBehavior = true;
    if (argc > 3)
@@ -102,25 +110,31 @@ ConsoleMethod( BehaviorComponent, removeBehavior, bool, 3, 4, "(BehaviorInstance
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, clearBehaviors, void, 2, 2, "() - Clear all behavior instances\n"
-              "@return No return value")
+/*! Clear all behavior instances
+    @return No return value
+*/
+ConsoleMethodWithDocs( BehaviorComponent, clearBehaviors, ConsoleVoid, 2, 2, ())
 {
    object->clearBehaviors();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, getBehaviorCount, S32, 2, 2, "() - Get the count of behaviors on an object\n"
-                                                               "@return (int count) The number of behaviors on an object")
+/*! Get the count of behaviors on an object
+    @return (int count) The number of behaviors on an object
+*/
+ConsoleMethodWithDocs( BehaviorComponent, getBehaviorCount, ConsoleInt, 2, 2, ())
 {
    return object->getBehaviorCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, getBehavior, S32, 3, 3, "(string BehaviorTemplateName) - gets a behavior\n"
-                                                          "@param BehaviorTemplateName The name of the template of the behavior instance you want\n"
-                                                          "@return (BehaviorInstance bi) The behavior instance you requested")
+/*! gets a behavior
+    @param BehaviorTemplateName The name of the template of the behavior instance you want
+    @return (BehaviorInstance bi) The behavior instance you requested
+*/
+ConsoleMethodWithDocs( BehaviorComponent, getBehavior, ConsoleInt, 3, 3, (string BehaviorTemplateName))
 {
    BehaviorInstance* pBehaviorInstance = object->getBehavior( StringTable->insert( argv[2] ) );
 
@@ -129,9 +143,11 @@ ConsoleMethod( BehaviorComponent, getBehavior, S32, 3, 3, "(string BehaviorTempl
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, getBehaviorByIndex, S32, 3, 3, "(int index) - Gets a particular behavior\n"
-                                                                 "@param index The index of the behavior to get\n"
-                                                                 "@return (BehaviorInstance bi) The behavior instance you requested")
+/*! Gets a particular behavior
+    @param index The index of the behavior to get
+    @return (BehaviorInstance bi) The behavior instance you requested
+*/
+ConsoleMethodWithDocs( BehaviorComponent, getBehaviorByIndex, ConsoleInt, 3, 3, (int index))
 {
    BehaviorInstance *bInstance = object->getBehavior( dAtoi(argv[2]) );
 
@@ -140,10 +156,12 @@ ConsoleMethod( BehaviorComponent, getBehaviorByIndex, S32, 3, 3, "(int index) -
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, reOrder, bool, 3, 3, "(BehaviorInstance inst, [int desiredIndex = 0])\n"
-                                                       "@param inst The behavior instance you want to reorder\n"
-                                                       "@param desiredIndex The index you want the behavior instance to be reordered to\n"
-                                                       "@return (bool success) Whether or not the behavior instance was successfully reordered" )
+/*! 
+    @param inst The behavior instance you want to reorder
+    @param desiredIndex The index you want the behavior instance to be reordered to
+    @return (bool success) Whether or not the behavior instance was successfully reordered
+*/
+ConsoleMethodWithDocs( BehaviorComponent, reOrder, ConsoleBool, 3, 3, (BehaviorInstance inst, [int desiredIndex = 0]))
 {
    BehaviorInstance *inst = dynamic_cast<BehaviorInstance *>( Sim::findObject( argv[1] ) );
 
@@ -159,12 +177,14 @@ ConsoleMethod( BehaviorComponent, reOrder, bool, 3, 3, "(BehaviorInstance inst,
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, connect, bool, 6, 6,  "(outputBehavior, inputBehavior, outputName, inputName) - Connects a behavior output to a behavior input.\n"
-                                                        "@param outputBehavior The behavior that owns the output.\n"
-                                                        "@param inputBehavior The behavior that owns the input.\n"
-                                                        "@param outputName The output name owned by the output behavior.\n"
-                                                        "@param inputName The input name owned by the input behavior.\n"
-                                                        "@return (bool success) Whether the connection was successful or not.\n")
+/*! Connects a behavior output to a behavior input.
+    @param outputBehavior The behavior that owns the output.
+    @param inputBehavior The behavior that owns the input.
+    @param outputName The output name owned by the output behavior.
+    @param inputName The input name owned by the input behavior.
+    @return (bool success) Whether the connection was successful or not.
+*/
+ConsoleMethodWithDocs( BehaviorComponent, connect, ConsoleBool, 6, 6, (outputBehavior, inputBehavior, outputName, inputName))
 {
     // Find output behavior.
     BehaviorInstance* pOutputBehavior = dynamic_cast<BehaviorInstance*>( Sim::findObject( argv[2] ) );
@@ -198,12 +218,14 @@ ConsoleMethod( BehaviorComponent, connect, bool, 6, 6,  "(outputBehavior, inputB
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, disconnect, bool, 6, 6,   "(outputBehavior, inputBehavior, outputName, inputName) - Connects a behavior output to a behavior input.\n"
-                                                            "@param outputBehavior The behavior that owns the output.\n"
-                                                            "@param inputBehavior The behavior that owns the input.\n"
-                                                            "@param outputName The output name owned by the output behavior.\n"
-                                                            "@param inputName The input name owned by the input behavior.\n"
-                                                            "@return (bool success) Whether the disconnection was successful or not.\n")
+/*! Connects a behavior output to a behavior input.
+    @param outputBehavior The behavior that owns the output.
+    @param inputBehavior The behavior that owns the input.
+    @param outputName The output name owned by the output behavior.
+    @param inputName The input name owned by the input behavior.
+    @return (bool success) Whether the disconnection was successful or not.
+*/
+ConsoleMethodWithDocs( BehaviorComponent, disconnect, ConsoleBool, 6, 6, (outputBehavior, inputBehavior, outputName, inputName))
 {
     // Find output behavior.
     BehaviorInstance* pOutputBehavior = dynamic_cast<BehaviorInstance*>( Sim::findObject( argv[2] ) );
@@ -237,11 +259,13 @@ ConsoleMethod( BehaviorComponent, disconnect, bool, 6, 6,   "(outputBehavior, in
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, raise, bool, 4, 5,    "(outputBehavior, outputName, [deltaTime]) - Raise a signal on the behavior output on the specified behavior.\n"
-                                                        "@param outputBehavior The behavior that owns the output.\n"
-                                                        "@param outputName The output name owned by the output behavior.\n"
-                                                        "@param [deltaTime] Optional time-delta (ms) when the raise should occur.\n"
-                                                        "@return (bool success) Whether the signal raise was successful or not.\n")
+/*! Raise a signal on the behavior output on the specified behavior.
+    @param outputBehavior The behavior that owns the output.
+    @param outputName The output name owned by the output behavior.
+    @param [deltaTime] Optional time-delta (ms) when the raise should occur.
+    @return (bool success) Whether the signal raise was successful or not.
+*/
+ConsoleMethodWithDocs( BehaviorComponent, raise, ConsoleBool, 4, 5, (outputBehavior, outputName, [deltaTime]))
 {
     // Find output behavior.
     BehaviorInstance* pOutputBehavior = dynamic_cast<BehaviorInstance*>( Sim::findObject( argv[2] ) );
@@ -273,10 +297,12 @@ ConsoleMethod( BehaviorComponent, raise, bool, 4, 5,    "(outputBehavior, output
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, getBehaviorConnectionCount, S32, 4, 4,    "(outputBehavior, outputName) - Gets the number of connections on the behavior output on the specified behavior.\n"
-                                                                            "@param outputBehavior The behavior that owns the output.\n"
-                                                                            "@param outputName The output name owned by the output behavior.\n"
-                                                                            "@return The number of connections on the behavior output on the specified behavior.\n")
+/*! Gets the number of connections on the behavior output on the specified behavior.
+    @param outputBehavior The behavior that owns the output.
+    @param outputName The output name owned by the output behavior.
+    @return The number of connections on the behavior output on the specified behavior.
+*/
+ConsoleMethodWithDocs( BehaviorComponent, getBehaviorConnectionCount, ConsoleInt, 4, 4, (outputBehavior, outputName))
 {
     // Find output behavior.
     BehaviorInstance* pOutputBehavior = dynamic_cast<BehaviorInstance*>( Sim::findObject( argv[2] ) );
@@ -298,11 +324,13 @@ ConsoleMethod( BehaviorComponent, getBehaviorConnectionCount, S32, 4, 4,    "(ou
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( BehaviorComponent, getBehaviorConnection, const char*, 5, 5,    "(outputBehavior, outputName, connectionIndex) - Gets a comma-delimited list of connections on the behavior output on the specified behavior.\n"
-                                                                                "@param outputBehavior The behavior that owns the output.\n"
-                                                                                "@param outputName The output name owned by the output behavior.\n"
-                                                                                "@param connectionIndex The connection index.\n"
-                                                                                "@return Returns a comma-delimited list of connections on the behavior output on the specified behavior of the format <OutputBehavior>,<InputBehavior>,<OutputName>,<InputName>.\n")
+/*! Gets a comma-delimited list of connections on the behavior output on the specified behavior.
+    @param outputBehavior The behavior that owns the output.
+    @param outputName The output name owned by the output behavior.
+    @param connectionIndex The connection index.
+    @return Returns a comma-delimited list of connections on the behavior output on the specified behavior of the format <OutputBehavior>,<InputBehavior>,<OutputName>,<InputName>.
+*/
+ConsoleMethodWithDocs( BehaviorComponent, getBehaviorConnection, ConsoleString, 5, 5, (outputBehavior, outputName, connectionIndex))
 {
     // Find output behavior.
     BehaviorInstance* pOutputBehavior = dynamic_cast<BehaviorInstance*>( Sim::findObject( argv[2] ) );
@@ -338,3 +366,4 @@ ConsoleMethod( BehaviorComponent, getBehaviorConnection, const char*, 5, 5,    "
     return pBuffer;
 }
 
+ConsoleMethodGroupEndWithDocs(BehaviorComponent)

+ 9 - 3
engine/source/component/behaviors/behaviorInstance_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,9 +20,15 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorInstance, getTemplateName, const char *, 2, 2, "() - Get the template name of this behavior\n"
-                                                                     "@return (string name) The name of the template this behavior was created from")
+ConsoleMethodGroupBeginWithDocs(BehaviorInstance, SimObject)
+
+/*! Get the template name of this behavior
+    @return (string name) The name of the template this behavior was created from
+*/
+ConsoleMethodWithDocs(BehaviorInstance, getTemplateName, ConsoleString, 2, 2, ())
 {
    const char* pName = object->getTemplateName();
    return pName ? pName : StringTable->EmptyString;
 }
+
+ConsoleMethodGroupEndWithDocs(BehaviorInstance)

+ 81 - 50
engine/source/component/behaviors/behaviorTemplate_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,8 +20,12 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, createInstance, S32, 2, 2, "() - Create an instance of this behavior.\n"
-              "@return (BehaviorInstance inst) The behavior instance created")
+ConsoleMethodGroupBeginWithDocs(BehaviorTemplate, SimObject)
+
+/*! Create an instance of this behavior.
+    @return (BehaviorInstance inst) The behavior instance created
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, createInstance, ConsoleInt, 2, 2, ())
 {
    BehaviorInstance *inst = object->createInstance();
    return inst ? inst->getId() : 0;
@@ -29,16 +33,18 @@ ConsoleMethod(BehaviorTemplate, createInstance, S32, 2, 2, "() - Create an insta
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, addBehaviorField, bool, 5, 7, "(fieldName, desc, type, [defaultValue, userData])\n"
-              "Adds a named BehaviorField to a Behavior Template\n"
-              "@param fieldName The name of this field\n"
-              "@param desc The Description of this field\n"
-              "@param type The DataType for this field (default, int, float, Point2F, bool, enum, Object, keybind, color)\n"
-              "@param defaultValue The Default value for this field\n"
-              "@param userData An extra data field that can be used for custom data on a per-field basis<br>Usage for default types<br>"
-              "-enum: a TAB separated list of possible values<br>"
-              "-object: the scene-object type that are valid choices for the field.  The object types observe inheritance, so if you have a SceneObject field you will be able to choose t2dStaticSrpites, t2dAnimatedSprites, etc.\n"
-              "@return Whether the field was added or not.\n")
+/*! 
+    Adds a named BehaviorField to a Behavior Template
+    @param fieldName The name of this field
+    @param desc The Description of this field
+    @param type The DataType for this field (default, int, float, Point2F, bool, enum, Object, keybind, color)
+    @param defaultValue The Default value for this field
+    @param userData An extra data field that can be used for custom data on a per-field basis<br>Usage for default types<br>
+    -enum: a TAB separated list of possible values<br>
+    -object: the scene-object type that are valid choices for the field.  The object types observe inheritance, so if you have a SceneObject field you will be able to choose t2dStaticSrpites, t2dAnimatedSprites, etc.
+    @return Whether the field was added or not.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, addBehaviorField, ConsoleBool, 5, 7, (fieldName, desc, type, [defaultValue, userData]))
 {
     const char *defValue = argc > 5 ? argv[5] : NULL;
     const char *typeInfo = argc > 6 ? argv[6] : NULL;
@@ -48,17 +54,21 @@ ConsoleMethod(BehaviorTemplate, addBehaviorField, bool, 5, 7, "(fieldName, desc,
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, getBehaviorFieldCount, S32, 2, 2,   "() - Get the number of behavior fields.\n"
-                                                                    "@return Returns the number of behavior fields.\n")
+/*! Get the number of behavior fields.
+    @return Returns the number of behavior fields.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, getBehaviorFieldCount, ConsoleInt, 2, 2, ())
 {
     return object->getBehaviorFieldCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, getBehaviorField, const char *, 3, 3,   "(int fieldIndex) - Gets a tab-delimited description of the behavior field.\n"
-                                                                        "@param fieldIndex The index of the behavior field.\n"
-                                                                        "@return A tab-delimited description of the behavior field of the format <Name><Type><DefaultValue> or an empty string if behavior field is not found.\n")
+/*! Gets a tab-delimited description of the behavior field.
+    @param fieldIndex The index of the behavior field.
+    @return A tab-delimited description of the behavior field of the format <Name><Type><DefaultValue> or an empty string if behavior field is not found.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, getBehaviorField, ConsoleString, 3, 3, (int fieldIndex))
 {
 
     // Fetch behavior field.
@@ -80,9 +90,11 @@ ConsoleMethod(BehaviorTemplate, getBehaviorField, const char *, 3, 3,   "(int fi
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, getBehaviorFieldUserData, const char *, 3, 3,   "(int fieldIndex) - Gets the UserData associated with a field by index in the field list\n"
-                                                                                "@param fieldIndex The index of the behavior field.\n"
-                                                                                "@return Returns a string representing the user data of this field\n")
+/*! Gets the UserData associated with a field by index in the field list
+    @param fieldIndex The index of the behavior field.
+    @return Returns a string representing the user data of this field
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, getBehaviorFieldUserData, ConsoleString, 3, 3, (int fieldIndex))
 {
     // Fetch behavior field.
     BehaviorTemplate::BehaviorField* pField = object->getBehaviorField( dAtoi(argv[2]) );
@@ -100,9 +112,11 @@ ConsoleMethod(BehaviorTemplate, getBehaviorFieldUserData, const char *, 3, 3,
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, getBehaviorFieldDescription, const char *, 3, 3,    "(int fieldIndex) - Gets the description of the field.\n"
-                                                                                    "@param fieldIndex The index of the behavior field.\n"
-                                                                                    "@return Returns the field description.\n")
+/*! Gets the description of the field.
+    @param fieldIndex The index of the behavior field.
+    @return Returns the field description.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, getBehaviorFieldDescription, ConsoleString, 3, 3, (int fieldIndex))
 {
     // Fetch behavior field.
     BehaviorTemplate::BehaviorField* pField = object->getBehaviorField( dAtoi(argv[2]) );
@@ -119,11 +133,13 @@ ConsoleMethod(BehaviorTemplate, getBehaviorFieldDescription, const char *, 3, 3,
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, addBehaviorOutput, bool, 5, 5,  "(outputName, label, description) - Adds a behavior output.\n"
-                                                                "@param outputName The output name to use.\n"
-                                                                "@param label The short label name to show in the editor.\n"
-                                                                "@param description The long description to show in the editor.\n"
-                                                                "@return Whether the output was added or not.\n")
+/*! Adds a behavior output.
+    @param outputName The output name to use.
+    @param label The short label name to show in the editor.
+    @param description The long description to show in the editor.
+    @return Whether the output was added or not.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, addBehaviorOutput, ConsoleBool, 5, 5, (outputName, label, description))
 {
     // Add behavior output.
     return object->addBehaviorOutput( argv[2], argv[3], argv[4] );
@@ -131,17 +147,21 @@ ConsoleMethod(BehaviorTemplate, addBehaviorOutput, bool, 5, 5,  "(outputName, la
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, getBehaviorOutputCount, S32, 2, 2,  "() - Get the number of behavior outputs.\n"
-                                                                    "@return Returns the number of behavior outputs.\n")
+/*! Get the number of behavior outputs.
+    @return Returns the number of behavior outputs.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, getBehaviorOutputCount, ConsoleInt, 2, 2, ())
 {
     return object->getBehaviorOutputCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, getBehaviorOutput, const char *, 3, 3,  "(int outputIndex) - Gets a comma-delimited description of the behavior output.\n"
-                                                                        "@param outputIndex The index of the behavior output.\n"
-                                                                        "@return A comma-delimited description of the behavior output of the format <Name>,<Label><,Description> or an empty string if behavior output is not found.\n")
+/*! Gets a comma-delimited description of the behavior output.
+    @param outputIndex The index of the behavior output.
+    @return A comma-delimited description of the behavior output of the format <Name>,<Label><,Description> or an empty string if behavior output is not found.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, getBehaviorOutput, ConsoleString, 3, 3, (int outputIndex))
 {
 
     // Fetch behavior output.
@@ -163,20 +183,24 @@ ConsoleMethod(BehaviorTemplate, getBehaviorOutput, const char *, 3, 3,  "(int ou
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, hasBehaviorOutput, bool, 3, 3,  "(outputName) - Gets whether the behavior has the behavior output or not.\n"
-                                                                "@param outputName The output name to check.\n"
-                                                                "@return Whether the behavior has the behavior output or not.\n")
+/*! Gets whether the behavior has the behavior output or not.
+    @param outputName The output name to check.
+    @return Whether the behavior has the behavior output or not.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, hasBehaviorOutput, ConsoleBool, 3, 3, (outputName))
 {
     return object->hasBehaviorOutput( argv[2] );
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, addBehaviorInput, bool, 5, 5,   "(inputName, label, description) - Adds a behavior input.\n"
-                                                                "@param inputName The input name to use.\n"
-                                                                "@param label The short label name to show in the editor.\n"
-                                                                "@param description The long description to show in the editor.\n"
-                                                                "@return Whether the input was added or not.\n")
+/*! Adds a behavior input.
+    @param inputName The input name to use.
+    @param label The short label name to show in the editor.
+    @param description The long description to show in the editor.
+    @return Whether the input was added or not.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, addBehaviorInput, ConsoleBool, 5, 5, (inputName, label, description))
 {
     // Add behavior input.
     return object->addBehaviorInput( argv[2], argv[3], argv[4] );
@@ -184,17 +208,21 @@ ConsoleMethod(BehaviorTemplate, addBehaviorInput, bool, 5, 5,   "(inputName, lab
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, getBehaviorInputCount, S32, 2, 2,   "() - Get the number of behavior inputs.\n"
-                                                                    "@return Returns the number of behavior inputs.\n")
+/*! Get the number of behavior inputs.
+    @return Returns the number of behavior inputs.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, getBehaviorInputCount, ConsoleInt, 2, 2, ())
 {
     return object->getBehaviorInputCount();
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, getBehaviorInput, const char *, 3, 3,   "(int inputIndex) - Gets a comma-delimited description of the behavior input.\n"
-                                                                        "@param inputIndex The index of the behavior input.\n"
-                                                                        "@return A comma-delimited description of the behavior input of the format <Name>,<Label><,Description> or an empty string if behavior input is not found.\n")
+/*! Gets a comma-delimited description of the behavior input.
+    @param inputIndex The index of the behavior input.
+    @return A comma-delimited description of the behavior input of the format <Name>,<Label><,Description> or an empty string if behavior input is not found.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, getBehaviorInput, ConsoleString, 3, 3, (int inputIndex))
 {
 
     // Fetch behavior input.
@@ -216,10 +244,13 @@ ConsoleMethod(BehaviorTemplate, getBehaviorInput, const char *, 3, 3,   "(int in
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod(BehaviorTemplate, hasBehaviorInput, bool, 3, 3,  "(inputName) - Gets whether the behavior has the behavior input or not.\n"
-                                                                "@param inputName The input name to check.\n"
-                                                                "@return Whether the behavior has the behavior input or not.\n")
+/*! Gets whether the behavior has the behavior input or not.
+    @param inputName The input name to check.
+    @return Whether the behavior has the behavior input or not.
+*/
+ConsoleMethodWithDocs(BehaviorTemplate, hasBehaviorInput, ConsoleBool, 3, 3, (inputName))
 {
     return object->hasBehaviorInput( argv[2] );
 }
 
+ConsoleMethodGroupEndWithDocs(BehaviorTemplate)

+ 2 - 19
engine/source/component/dynamicConsoleMethodComponent.cpp

@@ -22,6 +22,8 @@
 
 #include "component/dynamicConsoleMethodComponent.h"
 
+#include "dynamicConsoleMethodComponent_ScriptBinding.h"
+
 IMPLEMENT_CONOBJECT(DynamicConsoleMethodComponent);
 
 //-----------------------------------------------------------
@@ -161,22 +163,3 @@ const char *DynamicConsoleMethodComponent::callOnBehaviors( U32 argc, const char
 
    return result;
 }
-
-ConsoleMethod( DynamicConsoleMethodComponent, callOnBehaviors, const char*, 3, 64 , 
-   "(methodName, argi) Calls script defined method on first behavior that defines it.\n"
-   "Example: %obj.callOnBehaviors( %methodName, %arg1, %arg2, ... );\n"
-   "@param methodName The method's name as a string\n"
-   "@param argi Any arguments to pass to the method\n"
-   "@return Any returned value from the behavior that handles the method, or the string 'ERR_CALL_NOT_HANDLED' if "
-   "no behavior can handle the method.\n" )
-
-{
-   // Put this in the correct form of: [method, caller, args...]
-   // We do this by just copying the third argument (the method we want to call)
-   // over the second (originally the caller ID).
-   argv[1] = argv[2];
-   return object->callOnBehaviors( argc - 1, argv + 1 );
-}
-
-//////////////////////////////////////////////////////////////////////////
-

+ 2 - 72
engine/source/component/simComponent.cpp

@@ -27,6 +27,8 @@
 #include "io/stream.h"
 #include "behaviors/behaviorTemplate.h"
 
+#include "simComponent_ScriptBinding.h"
+
 SimComponent::SimComponent() : mOwner( NULL )
 {
    mComponentList.clear();
@@ -310,75 +312,3 @@ bool SimComponent::callMethodOnComponents( U32 argc, const char* argv[], const c
 
    return false;
 }
-
-//////////////////////////////////////////////////////////////////////////
-// Console Methods
-//////////////////////////////////////////////////////////////////////////
-
-ConsoleMethod( SimComponent, addComponents, bool, 3, 64, "%obj.addComponents( %compObjName, %compObjName2, ... );\n"
-              "Adds additional components to current list.\n"
-              "@param Up to 62 component names\n"
-              "@return Returns true on success, false otherwise.")
-{
-   for(S32 i = 2; i < argc; i++)
-   {
-      SimComponent *obj = dynamic_cast<SimComponent*> (Sim::findObject(argv[i]) );
-      if(obj)
-         object->addComponent(obj);
-      else
-         Con::printf("SimComponent::addComponents - Invalid Component Object \"%s\"", argv[i]);
-   }
-   return true;
-}
-
-ConsoleMethod( SimComponent, removeComponents, bool, 3, 64, "%obj.removeComponents( %compObjName, %compObjName2, ... );\n"
-              "Removes components by name from current list.\n"
-              "@param objNamex Up to 62 component names\n"
-              "@return Returns true on success, false otherwise.")
-{
-   for(S32 i = 2; i < argc; i++)
-   {
-      SimComponent *obj = dynamic_cast<SimComponent*> (Sim::findObject(argv[i]) );
-      if(obj)
-         object->removeComponent(obj);
-      else
-         Con::printf("SimComponent::removeComponents - Invalid Component Object \"%s\"", argv[i]);
-   }
-   return true;
-}
-
-ConsoleMethod( SimComponent, getComponentCount, S32, 2, 2, "() 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"
-              "@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 >= (S32)object->getComponentCount())
-   {
-      Con::errorf("SimComponent::getComponent - Invalid index %d", idx);
-      return 0;
-   }
-
-   SimComponent *c = object->getComponent(idx);
-   return c ? c->getId() : 0;
-}
-
-ConsoleMethod(SimComponent, setEnabled, void, 3, 3, "(enabled) Sets or unsets the enabled flag\n"
-              "@param enabled Boolean value\n"
-              "@return No return value")
-{
-   object->setEnabled(dAtob(argv[2]));
-}
-
-ConsoleMethod(SimComponent, isEnabled, bool, 2, 2, "() Check whether SimComponent is currently enabled\n"
-              "@return true if enabled and false if not")
-{
-   return object->isEnabled();
-}
-
-

+ 25 - 124
engine/source/console/console.cc

@@ -19,6 +19,7 @@
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
+
 #include "platform/platform.h"
 #include "platform/platformTLS.h"
 #include "platform/threads/thread.h"
@@ -38,6 +39,9 @@
 #include "memory/safeDelete.h"
 #include <stdarg.h>
 
+#include "output_ScriptBinding.h"
+#include "expando_ScriptBinding.h"
+
 #ifndef _HASHTABLE_H
 #include "collection/hashTable.h"
 #endif
@@ -185,10 +189,6 @@ ConsoleConstructor::ConsoleConstructor(const char* className, const char* usage)
    ns = true;
 }
 
-// We comment out the implementation of the Con namespace when doxygenizing because
-// otherwise Doxygen decides to ignore our docs in console.h
-#ifndef DOXYGENIZING
-
 namespace Con
 {
 
@@ -225,34 +225,6 @@ StringTableEntry gCurrentFile;
 StringTableEntry gCurrentRoot;
 /// @}
 
-ConsoleFunctionGroupBegin( Clipboard, "Miscellaneous functions to control the clipboard and clear the console.");
-
-ConsoleFunction( cls, void, 1, 1, "() Use the cls function to clear the console output.\n"
-                                                                "@return No return value")
-{
-   if(consoleLogLocked)
-      return;
-   consoleLogChunker.freeBlocks();
-   consoleLog.setSize(0);
-};
-
-ConsoleFunction( getClipboard, const char*, 1, 1, "() Use the getClipboard function to get the contents of the GUI clipboard.\n"
-                                                                "@return Returns a string equal to the current contents of the copy the clipboard, or a NULL strain if the copy clipboard is empty.\n"
-                                                                "@sa setClipboard")
-{
-    return Platform::getClipboard();
-};
-
-ConsoleFunction( setClipboard, bool, 2, 2, "( string ) Use the setClipboard function to Set value on clipboard to string.\n"
-                                                                "@param string The new value to place in the GUI clipboard.\n"
-                                                                "@return Returns true if successful, false otherwise.\n"
-                                                                "@sa getClipoard")
-{
-    return Platform::setClipboard(argv[1]);
-};
-
-ConsoleFunctionGroupEnd( Clipboard );
-
 void init()
 {
    AssertFatal(active == false, "Con::init should only be called once.");
@@ -515,6 +487,16 @@ static void log(const char *string)
 
 //------------------------------------------------------------------------------
 
+void cls( void )
+{
+   if(consoleLogLocked)
+      return;
+   consoleLogChunker.freeBlocks();
+   consoleLog.setSize(0);
+};
+
+//------------------------------------------------------------------------------
+
 #if defined( _MSC_VER )  
 #include <windows.h>  
 
@@ -1553,7 +1535,16 @@ bool expandPath( char* pDstPath, U32 size, const char* pSrcPath, const char* pWo
     }
 
     // All else.
-    Platform::makeFullPathName( pSrcPath, pathBuffer, sizeof(pathBuffer), pWorkingDirectoryHint );
+
+    //Using a special case here because the code below barfs on trying to build a full path for apk reading
+ #ifdef TORQUE_OS_ANDROID
+    	if (leadingToken == '/' || strstr(pSrcPath, "/") == NULL)
+    		Platform::makeFullPathName( pSrcPath, pathBuffer, sizeof(pathBuffer), pWorkingDirectoryHint );
+    	else
+    		dSprintf(pathBuffer, sizeof(pathBuffer), "/%s", pSrcPath);
+#else
+ 	  Platform::makeFullPathName( pSrcPath, pathBuffer, sizeof(pathBuffer), pWorkingDirectoryHint );
+#endif
 
     // Are we ensuring the trailing slash?
     if ( ensureTrailingSlash )
@@ -1717,95 +1708,5 @@ bool stripRepeatSlashes( char* pDstPath, const char* pSrcPath, S32 dstSize )
     return false;
 }
 
-//-----------------------------------------------------------------------------
-
-ConsoleFunction(expandPath, const char*, 2, 2, "(string path) - Expands an expando or relative path into a full path.")
-{
-    char* ret = Con::getReturnBuffer( 1024 );
-    expandPath(ret, 1024, argv[1]);
-    return ret;
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleFunction(collapsePath, const char*, 2, 2, "(string path) - Collapses a path into either an expando path or a relative path.")
-{
-    char* ret = Con::getReturnBuffer( 1024 );
-    Con::collapsePath(ret, 1024, argv[1]);
-    return ret;
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleFunction(addPathExpando, void, 3, 3, "(string expando, string path) - Adds the expando to the path.  If it already exists then it is replaced.")
-{
-    addPathExpando(argv[1], argv[2]);
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleFunction(removePathExpando, void, 2, 2, "(string expando) - Removes the specified path expando.")
-{
-    removePathExpando(argv[1]);
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleFunction(isPathExpando, bool, 2, 2, "(string expando) - Checks whether the specified path expando is current set or not.")
-{
-    return isPathExpando(argv[1]);
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleFunction(getPathExpandoCount, S32, 1, 1, "() - Gets the expando path count.")
-{
-    return getPathExpandoCount();
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleFunction(getPathExpandoKey, const char*, 2, 2, "(int expandoIndex) - Gets the path expando key (the expando name) at the specified index.")
-{
-    // Fetch expando index.
-    const S32 expandoIndex = dAtoi(argv[1]);
-
-    // Is the expando index in range?
-    if ( expandoIndex < 0 || expandoIndex >= (S32)getPathExpandoCount() )
-    {
-        // No, so warn.
-        Con::warnf("getPathExpandoKey() - Expando index of '%d' is out of bounds.  Current expando count is '%d'.",
-            expandoIndex,
-            getPathExpandoCount() );
-        return StringTable->EmptyString;
-    }
-
-    // Fetch path expando key.
-    return getPathExpandoKey( expandoIndex );
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleFunction(getPathExpandoValue, const char*, 2, 2, "(int expandoIndex) - Gets the path expando value (the expando path) at the specified index.")
-{
-    // Fetch expando index.
-    const S32 expandoIndex = dAtoi(argv[1]);
-
-    // Is the expando index in range?
-    if ( expandoIndex < 0 || expandoIndex >= (S32)getPathExpandoCount() )
-    {
-        // No, so warn.
-        Con::warnf("getPathExpandoValue() - Expando index of '%d' is out of bounds.  Current expando count is '%d'.",
-            expandoIndex,
-            getPathExpandoCount() );
-        return StringTable->EmptyString;
-    }
-
-    // Fetch path expando value.
-    return getPathExpandoValue( expandoIndex );
-}
-
-
 } // end of Console namespace
-
-#endif
+

+ 58 - 7
engine/source/console/console.h

@@ -129,7 +129,11 @@ struct EnumTable
 
 typedef const char *StringTableEntry;
 
+/// @defgroup tsScripting TorqueScript Bindings
+/// TorqueScrit bindings
+
 /// @defgroup console_callbacks Scripting Engine Callbacks
+/// @ingroup tsScripting
 ///
 /// The scripting engine makes heavy use of callbacks to represent
 /// function exposed to the scripting language. StringCallback,
@@ -157,6 +161,7 @@ typedef void (*ConsumerCallback)(ConsoleLogEntry::Level level, const char *conso
 /// @}
 
 /// @defgroup console_types Scripting Engine Type Functions
+/// @ingroup tsScripting
 ///
 /// @see Con::registerType
 /// @{
@@ -508,6 +513,9 @@ namespace Con
    /// @see Con::errorf()
    void errorf(ConsoleLogEntry::Type type, const char *_format, ...);
 
+   /// clear the console log
+   void cls( void );
+
    /// Prints a separator to the console.
    inline void printSeparator( void ) { printf("--------------------------------------------------------------------------------"); }
 
@@ -778,9 +786,21 @@ public:
 #define conmethod_nullify(val)
 #define conmethod_return_void               conmethod_nullify(void
 #define conmethod_return_bool               return (bool
+#define conmethod_return_ConsoleInt         conmethod_return_S32
+#define conmethod_return_ConsoleFloat       conmethod_return_F32
+#define conmethod_return_ConsoleVoid        conmethod_return_void
+#define conmethod_return_ConsoleBool        conmethod_return_bool
+#define conmethod_return_ConsoleString		conmethod_return_const char*
 
 #if !defined(TORQUE_SHIPPING)
 
+// Console function return types
+#define ConsoleString	const char*
+#define ConsoleInt		S32
+#define ConsoleFloat	F32
+#define ConsoleVoid		void
+#define ConsoleBool		bool
+
 // Console function macros
 #  define ConsoleFunctionGroupBegin(groupName, usage) \
       static ConsoleConstructor gConsoleFunctionGroup##groupName##__GroupBegin(NULL,#groupName,usage);
@@ -790,6 +810,11 @@ public:
       static ConsoleConstructor g##name##obj(NULL,#name,c##name,usage1,minArgs,maxArgs);  \
       static returnType c##name(SimObject *, S32 argc, const char **argv)
 
+#  define ConsoleFunctionWithDocs(name,returnType,minArgs,maxArgs,argString)              \
+      static returnType c##name(SimObject *, S32, const char **argv);                     \
+	  static ConsoleConstructor g##name##obj(NULL,#name,c##name,#argString,minArgs,maxArgs);      \
+      static returnType c##name(SimObject *, S32 argc, const char **argv)
+
 #  define ConsoleFunctionGroupEnd(groupName) \
       static ConsoleConstructor gConsoleFunctionGroup##groupName##__GroupEnd(NULL,#groupName,NULL);
 
@@ -800,27 +825,53 @@ public:
 #  define ConsoleMethodGroupBegin(className, groupName, usage) \
       static ConsoleConstructor className##groupName##__GroupBegin(#className,#groupName,usage);
 
-#  define ConsoleMethod(className,name,returnType,minArgs,maxArgs,usage1)                             \
-      static inline returnType c##className##name(className *, S32, const char **argv);               \
-      static returnType c##className##name##caster(SimObject *object, S32 argc, const char **argv) {  \
-         AssertFatal( dynamic_cast<className*>( object ), "Object passed to " #name " is not a " #className "!" ); \
-         conmethod_return_##returnType ) c##className##name(static_cast<className*>(object),argc,argv);              \
-      };                                                                                              \
+// note: we would want to expand the following macro into (Doxygen) comments!
+// we can not do that with a macro.  these are here just as a reminder until completion
+#  define ConsoleMethodRootGroupBeginWithDocs(className)
+#  define ConsoleMethodGroupBeginWithDocs(className, superclassName)
+
+#  define ConsoleMethod(className,name,returnType,minArgs,maxArgs,usage1)                                                 \
+      static inline returnType c##className##name(className *, S32, const char **argv);                                   \
+      static returnType c##className##name##caster(SimObject *object, S32 argc, const char **argv) {                      \
+         AssertFatal( dynamic_cast<className*>( object ), "Object passed to " #name " is not a " #className "!" );        \
+         conmethod_return_##returnType ) c##className##name(static_cast<className*>(object),argc,argv);                   \
+      };                                                                                                                  \
       static ConsoleConstructor className##name##obj(#className,#name,c##className##name##caster,usage1,minArgs,maxArgs); \
       static inline returnType c##className##name(className *object, S32 argc, const char **argv)
 
+#  define ConsoleMethodWithDocs(className,name,returnType,minArgs,maxArgs,argString)                                  \
+      static inline returnType c##className##name(className *, S32, const char **argv);                               \
+      static returnType c##className##name##caster(SimObject *object, S32 argc, const char **argv) {                  \
+         AssertFatal( dynamic_cast<className*>( object ), "Object passed to " #name " is not a " #className "!" );    \
+         conmethod_return_##returnType ) c##className##name(static_cast<className*>(object),argc,argv);               \
+      };                                                                                                              \
+	  static ConsoleConstructor className##name##obj(#className,#name,c##className##name##caster,#argString,minArgs,maxArgs); \
+      static inline returnType c##className##name(className *object, S32 argc, const char **argv)
+
 #  define ConsoleStaticMethod(className,name,returnType,minArgs,maxArgs,usage1)                       \
       static inline returnType c##className##name(S32, const char **);                                \
       static returnType c##className##name##caster(SimObject *object, S32 argc, const char **argv) {  \
-         conmethod_return_##returnType ) c##className##name(argc,argv);                                \
+         conmethod_return_##returnType ) c##className##name(argc,argv);                               \
       };                                                                                              \
       static ConsoleConstructor                                                                       \
          className##name##obj(#className,#name,c##className##name##caster,usage1,minArgs,maxArgs);    \
       static inline returnType c##className##name(S32 argc, const char **argv)
 
+#  define ConsoleStaticMethodWithDocs(className,name,returnType,minArgs,maxArgs,argString)            \
+      static inline returnType c##className##name(S32, const char **);                                \
+      static returnType c##className##name##caster(SimObject *object, S32 argc, const char **argv) {  \
+         conmethod_return_##returnType ) c##className##name(argc,argv);                               \
+      };                                                                                              \
+      static ConsoleConstructor                                                                       \
+	  className##name##obj(#className,#name,c##className##name##caster,#argString,minArgs,maxArgs);        \
+      static inline returnType c##className##name(S32 argc, const char **argv)
+
 #  define ConsoleMethodGroupEnd(className, groupName) \
       static ConsoleConstructor className##groupName##__GroupEnd(#className,#groupName,NULL);
 
+#  define ConsoleMethodRootGroupEndWithDocs(className)
+#  define ConsoleMethodGroupEndWithDocs(className)
+
 #else
 
 // These do nothing if we don't want doc information.

+ 2 - 37
engine/source/console/consoleDoc.cc

@@ -34,48 +34,13 @@
 #include "console/compiler.h"
 #include "memory/frameAllocator.h"
 
+#include "consoleDoc_ScriptBinding.h"
+
 //--- Information pertaining to this page... ------------------
 /// @file
 ///
 /// For specifics on using the consoleDoc functionality, see @ref console_autodoc
 
-ConsoleFunctionGroupBegin(ConsoleDoc, "Console self-documentation functions. These output psuedo C++ suitable for feeeding through Doxygen or another auto documentation tool.");
-
-ConsoleFunction(dumpConsoleClasses, void, 1, 3, "(bool dumpScript = true, bool dumpEngine = true) dumps all declared console classes to the console.\n"
-																"This will dump all classes and methods that were registered from within the engine, AND from the console via scripts.\n"
-                "@param dumpScript Specifies whether or not classes defined in script should be dumped.\n"
-                "@param dumpEngine Specifies whether or not classes defined in the engine should be dumped.")
-{
-   bool dumpScript = true;
-   if( argc > 1 )
-      dumpScript = dAtob( argv[1] );
-   
-   bool dumpEngine = true;
-   if( argc > 2 )
-      dumpEngine = dAtob( argv[2] );
-
-   Namespace::dumpClasses( dumpScript, dumpEngine );
-}
-
-ConsoleFunction(dumpConsoleFunctions, void, 1, 3, "(bool dumpScript = true, bool dumpEngine = true) Dumps all declared console functions to the console.\n"
-				"This will dump all funtions that were registered from within the engine, AND from the console via scripts.\n"
-                "@param dumpScript Specifies whether or not functions defined in script should be dumped.\n"
-                "@param dumpEngine Specifies whether or not functions defined in the engine should be dumped."
-				"@sa dumpConsoleMethods")
-{
-   bool dumpScript = true;
-   if( argc > 1 )
-      dumpScript = dAtob( argv[1] );
-   
-   bool dumpEngine = true;
-   if( argc > 2 )
-      dumpEngine = dAtob( argv[2] );
-
-   Namespace::dumpFunctions( dumpScript, dumpEngine );
-}
-
-ConsoleFunctionGroupEnd(ConsoleDoc);
-
 /// Helper table to convert type ids to human readable names.
 const char *typeNames[] = 
 {

+ 2 - 28
engine/source/console/consoleExprEvalState.cc

@@ -34,6 +34,8 @@
 #include "io/fileStream.h"
 #include "console/compiler.h"
 
+#include "consoleExprEvalState_ScriptBinding.h"
+
 extern ExprEvalState gEvalState;
 
 void ExprEvalState::pushFrame(StringTableEntry frameName, Namespace *ns)
@@ -71,31 +73,3 @@ ExprEvalState::~ExprEvalState()
    while(stack.size())
       popFrame();
 }
-
-ConsoleFunction(backtrace, void, 1, 1, "() Use the backtrace function to print the current callstack to the console. This is used to trace functions called from withing functions and can help discover what functions were called (and not yet exited) before the current point in your scripts.\n"
-                                                                "@return No return value")
-{
-   U32 totalSize = 1;
-
-   for(U32 i = 0; i < (U32)gEvalState.stack.size(); i++)
-   {
-      totalSize += dStrlen(gEvalState.stack[i]->scopeName) + 3;
-      if(gEvalState.stack[i]->scopeNamespace && gEvalState.stack[i]->scopeNamespace->mName)
-         totalSize += dStrlen(gEvalState.stack[i]->scopeNamespace->mName) + 2;
-   }
-
-   char *buf = Con::getReturnBuffer(totalSize);
-   buf[0] = 0;
-   for(U32 i = 0; i < (U32)gEvalState.stack.size(); i++)
-   {
-      dStrcat(buf, "->");
-      if(gEvalState.stack[i]->scopeNamespace && gEvalState.stack[i]->scopeNamespace->mName)
-      {
-         dStrcat(buf, gEvalState.stack[i]->scopeNamespace->mName);
-         dStrcat(buf, "::");
-      }
-      dStrcat(buf, gEvalState.stack[i]->scopeName);
-   }
-   Con::printf("BackTrace: %s", buf);
-
-}

File diff suppressed because it is too large
+ 3 - 1569
engine/source/console/consoleFunctions.cc


+ 2 - 16
engine/source/console/consoleLogger.cc

@@ -22,6 +22,8 @@
 #include "console/consoleLogger.h"
 #include "console/consoleTypes.h"
 
+#include "consoleLogger_ScriptBinding.h"
+
 Vector<ConsoleLogger *> ConsoleLogger::mActiveLoggers;
 bool ConsoleLogger::smInitialized = false;
 
@@ -218,19 +220,3 @@ void ConsoleLogger::log( const char *consoleLine )
 }
 
 //-----------------------------------------------------------------------------
-
-ConsoleMethod( ConsoleLogger, attach, bool, 2, 2, "() Attaches this object to the console and begins logging\n"
-			  "@return Returns true on success, and false on failure.")
-{
-   ConsoleLogger *logger = static_cast<ConsoleLogger *>( object );
-   return logger->attach();
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod( ConsoleLogger, detach, bool, 2, 2, "() Detaches this object from the console and stops logging\n" 
-			  "@return Returns true on success, and false on failure.")
-{
-   ConsoleLogger *logger = static_cast<ConsoleLogger *>( object );
-   return logger->detach();
-}

+ 3 - 34
engine/source/console/consoleNamespace.cc

@@ -34,6 +34,8 @@
 #include "io/fileStream.h"
 #include "console/compiler.h"
 
+#include "consoleNamespace_ScriptBinding.h"
+
 U32 Namespace::mCacheSequence = 0;
 DataChunker Namespace::mCacheAllocator;
 DataChunker Namespace::mAllocator;
@@ -159,8 +161,8 @@ bool Namespace::unlinkClass(Namespace *parent)
       return false;
    }
 
+   AssertFatal(mRefCountToParent > 0, "Namespace::unlinkClass - reference count to parent is less than 0");
    mRefCountToParent--;
-   AssertFatal(mRefCountToParent >= 0, "Namespace::unlinkClass - reference count to parent is less than 0");
 
    if(mRefCountToParent == 0)
       walk->mParent = NULL;
@@ -619,36 +621,3 @@ void Namespace::relinkPackages()
    for(U32 i = 0; i < mOldNumActivePackages; i++)
       activatePackage(mActivePackages[i]);
 }
-
-ConsoleFunctionGroupBegin( Packages, "Functions relating to the control of packages.");
-
-ConsoleFunction(isPackage,bool,2,2,"( packageName ) Use the isPackage function to check if the name or ID specified in packageName is a valid package.\n"
-                                                                "@param packagename The name or ID of an existing package.\n"
-                                                                "@return Returns true if packageName is a valid package, false otherwise.\n"
-                                                                "@sa activatePackage, deactivatePackage")
-{
-   StringTableEntry packageName = StringTable->insert(argv[1]);
-   return Namespace::isPackage(packageName);
-}
-
-ConsoleFunction(activatePackage, void,2,2,"( packageName ) Use the activatePackage function to activate a package definition and to re-define all functions named within this package with the definitions provided in the package body.\n"
-                                                                "This pushes the newly activated package onto the top of the package stack.\n"
-                                                                "@param packagename The name or ID of an existing package.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa deactivatePackage, isPackage")
-{
-   StringTableEntry packageName = StringTable->insert(argv[1]);
-   Namespace::activatePackage(packageName);
-}
-
-ConsoleFunction(deactivatePackage, void,2,2,"( packageName ) Use the deactivatePackage function to deactivate a package definition and to pop any definitions from this package off the package stack.\n"
-                                                                "This also causes any subsequently stacked packages to be popped. i.e. If any packages were activated after the one specified in packageName, they too will be deactivated and popped.\n"
-                                                                "@param packagename The name or ID of an existing package.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa activatePackage, isPackage")
-{
-   StringTableEntry packageName = StringTable->insert(argv[1]);
-   Namespace::deactivatePackage(packageName);
-}
-
-ConsoleFunctionGroupEnd( Packages );

+ 1 - 38
engine/source/console/consoleObject.cc

@@ -158,7 +158,7 @@ ConsoleObject* AbstractClassRep::create(const U32 groupId, const U32 typeId, con
 
 //--------------------------------------
 
-static S32 QSORT_CALLBACK ACRCompare(const void *aptr, const void *bptr)
+S32 QSORT_CALLBACK ACRCompare(const void *aptr, const void *bptr)
 {
    const AbstractClassRep *a = *((const AbstractClassRep **) aptr);
    const AbstractClassRep *b = *((const AbstractClassRep **) bptr);
@@ -581,40 +581,3 @@ AbstractClassRep* ConsoleObject::getClassRep() const
 {
    return NULL;
 }
-
-ConsoleFunction( enumerateConsoleClasses, const char*, 1, 2, "enumerateConsoleClasses(<\"base class\">);")
-{
-   AbstractClassRep *base = NULL;    
-   if(argc > 1)
-   {
-      base = AbstractClassRep::findClassRep(argv[1]);
-      if(!base)
-         return "";
-   }
-   
-   Vector<AbstractClassRep*> classes;
-   U32 bufSize = 0;
-   for(AbstractClassRep *rep = AbstractClassRep::getClassList(); rep; rep = rep->getNextClass())
-   {
-      if( !base || rep->isClass(base))
-      {
-         classes.push_back(rep);
-         bufSize += dStrlen(rep->getClassName()) + 1;
-      }
-   }
-   
-   if(!classes.size())
-      return "";
-
-   dQsort(classes.address(), classes.size(), sizeof(AbstractClassRep*), ACRCompare);
-
-   char* ret = Con::getReturnBuffer(bufSize);
-   dStrcpy( ret, classes[0]->getClassName());
-   for( U32 i=0; i< (U32)classes.size(); i++)
-   {
-      dStrcat( ret, "\t" );
-      dStrcat( ret, classes[i]->getClassName() );
-   }
-   
-   return ret;
-}

+ 2 - 40
engine/source/debug/profiler.cc

@@ -30,6 +30,8 @@
 #include "io/fileStream.h"
 #include "platform/threads/thread.h"
 
+#include "profiler_ScriptBinding.h"
+
 #ifdef TORQUE_ENABLE_PROFILER
 ProfilerRootData *ProfilerRootData::sRootList = NULL;
 Profiler *gProfiler = NULL;
@@ -609,44 +611,4 @@ void Profiler::enableMarker(const char *marker, bool enable)
    }
 }
 
-ConsoleFunctionGroupBegin( Profiler, "Profiler functionality.");
-
-ConsoleFunction(profilerMarkerEnable, void, 3, 3, "(string markerName, bool enable) Enables (or disables) a marker for the profiler\n"
-                "@param markerName The name of the marker to (un)set\n"
-                "@param enable Boolean value. Set if true, unset if false\n"
-                "@return No Return Value")
-{
-   if(gProfiler)
-      gProfiler->enableMarker(argv[1], dAtob(argv[2]));
-}
-
-ConsoleFunction(profilerEnable, void, 2, 2, "( enable ) Use the profileEnable function to enable (or disable) engine profiling.\n"
-                                                                "@param enable A boolean value. If set to true and the engine was compiled with DEBUG specified, engine profiling is enabled, otherwise it is disabled.\n"
-                                                                "@return No return value.")
-{
-   if(gProfiler)
-      gProfiler->enable(dAtob(argv[1]));
-}
-
-ConsoleFunction(profilerDump, void, 1, 1, "() Use the profilerDump function to dump engine profile statistics to the console.\n"
-                                                                "@return No return value")
-{
-   if(gProfiler)
-      gProfiler->dumpToConsole();
-}
-
-ConsoleFunction(profilerDumpToFile, void, 2, 2, "(string filename) Dump profiling stats to a file.")
-{
-   if(gProfiler)
-      gProfiler->dumpToFile(argv[1]);
-}
-
-ConsoleFunction(profilerReset, void, 1, 1, "Resets the profiler, clearing all of its data.")
-{
-   if(gProfiler)
-      gProfiler->reset();
-}
-
-ConsoleFunctionGroupEnd( Profiler );
-
 #endif

+ 11 - 5
engine/source/debug/remote/RemoteDebugger1_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,9 +20,12 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
+ConsoleMethodGroupBeginWithDocs(RemoteDebugger1, RemoteDebuggerBase)
 
-ConsoleMethod( RemoteDebugger1, getCodeFiles, const char*, 2, 2,    "() - Get the count of active code files.\n"
-                                                                    "@return A count of the active count files." )
+/*! Get the count of active code files.
+    @return A count of the active count files.
+*/
+ConsoleMethodWithDocs( RemoteDebugger1, getCodeFiles, ConsoleString, 2, 2, ())
 {
     // Fetch a return buffer.  This may be excessive but it avoids reallocation code.
     S32 bufferSize = 1024 * 65;
@@ -42,8 +45,10 @@ ConsoleMethod( RemoteDebugger1, getCodeFiles, const char*, 2, 2,    "() - Get th
 
 //-----------------------------------------------------------------------------
 
-ConsoleMethod( RemoteDebugger1, setNextStatementBreak, void, 3, 3,  "(bool enabled) - Set whether to break on next statement or not.\n"
-                                                                    "@return No return value." )
+/*! Set whether to break on next statement or not.
+    @return No return value.
+*/
+ConsoleMethodWithDocs( RemoteDebugger1, setNextStatementBreak, ConsoleVoid, 3, 3, (bool enabled))
 {
     // Fetch enabled flag.
     const bool enabled = dAtob(argv[2]);
@@ -51,3 +56,4 @@ ConsoleMethod( RemoteDebugger1, setNextStatementBreak, void, 3, 3,  "(bool enabl
     object->setNextStatementBreak( enabled );
 }
 
+ConsoleMethodGroupEndWithDocs(RemoteDebugger1)

+ 6 - 1
engine/source/debug/remote/RemoteDebuggerBase_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -19,3 +19,8 @@
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
+
+ConsoleMethodGroupBeginWithDocs(RemoteDebuggerBase, SimObject)
+
+ConsoleMethodGroupEndWithDocs(RemoteDebuggerBase)
+

+ 8 - 6
engine/source/debug/remote/RemoteDebuggerBridge_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,11 +20,13 @@
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 
-ConsoleFunction( OpenRemoteDebugger, bool, 4, 4,    "( int debuggerVersion, int port, string password ) - Open the remote debugger.\n"
-                                                    "@param debuggerVersion The debugger version required.\n"
-                                                    "@param port The port the remote debugger should be listening for a debugging session on.\n"
-                                                    "@param password The optional password the remote debugger should use for a debugging session authentication.\n"
-                                                    "@return Whether the remote debugger was opened or not." )
+/*! Open the remote debugger.
+    @param debuggerVersion The debugger version required.
+    @param port The port the remote debugger should be listening for a debugging session on.
+    @param password The optional password the remote debugger should use for a debugging session authentication.
+    @return Whether the remote debugger was opened or not.
+*/
+ConsoleFunctionWithDocs( OpenRemoteDebugger, ConsoleBool, 4, 4, ( int debuggerVersion, int port, string password ))
 {
     // Fetch debugger version.
     const S32 debuggerVersion = dAtoi(argv[1]);

+ 1 - 26
engine/source/debug/telnetDebugger.cc

@@ -31,6 +31,7 @@
 #include "console/compiler.h"
 #include "game/gameInterface.h"
 
+#include "telnetDebugger_ScriptBinding.h"
 
 //
 // Enhanced TelnetDebugger for Torsion
@@ -97,32 +98,6 @@
 // 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)"
-                "Open a debug server port on the specified port, requiring the specified password, "
-                "and optionally waiting for the debug client to connect."
-            "@param port The IP port to set the password on.\n"
-        "@param password The password for this port. Set this to a NULL string to clear the password for the port.\n"
-        "@return No return value")
-{
-   if (TelDebugger)
-       TelDebugger->setDebugParameters(dAtoi(argv[1]), argv[2], argc > 3 ? dAtob(argv[3]) : false );
-}
-
-ConsoleFunction( dbgIsConnected, bool, 1, 1, "()\n"
-                "@return Returns true if a script debugging client is connected else return false.")
-{
-   return TelDebugger && TelDebugger->isConnected();
-}
-
-ConsoleFunction( dbgDisconnect, void, 1, 1, "()"
-                "Forcibly disconnects any attached script debugging client.\n"
-                "@return No Return Value")
-{
-   if (TelDebugger)
-       TelDebugger->disconnect();
-}
-
 static void debuggerConsumer(ConsoleLogEntry::Level level, const char *line)
 {
    if (TelDebugger)

+ 51 - 2
engine/source/game/defaultGame.cc

@@ -126,7 +126,7 @@ bool initializeLibraries()
     // Create the stock colors.
     StockColor::create();
     
-#ifdef TORQUE_OS_IOS
+#if defined(TORQUE_OS_IOS) || defined(TORQUE_OS_ANDROID)
    //3MB default is way too big for iPhone!!!
 #ifdef	TORQUE_SHIPPING
     FrameAllocator::init(256 * 1024);	//256KB for now... but let's test and see!
@@ -272,7 +272,7 @@ bool initializeGame(int argc, const char **argv)
     if (useDefaultScript)
     {
         bool success = false;
-            success = scriptFileStream.open(defaultScriptName, FileStream::Read);
+        success = scriptFileStream.open(defaultScriptName, FileStream::Read);
 
         if( !success )
         {
@@ -380,6 +380,21 @@ bool DefaultGame::mainInitialize(int argc, const char **argv)
 #ifdef TORQUE_OS_IOS_PROFILE
     iPhoneProfilerProfilerInit();
 #endif
+
+    #endif
+
+#ifdef TORQUE_OS_ANDROID
+
+      //-Mat this is a bit of a hack, but if we don't want the network, we shut it off now.
+    // We can't do it until we've run the entry script, otherwise the script variable will not have ben loaded
+    bool usesNet = false; //dAtob( Con::getVariable( "$pref::iOS::UseNetwork" ) );
+    if( !usesNet ) {
+        Net::shutdown();
+    }
+
+#ifdef TORQUE_OS_ANDROID_PROFILE
+    AndroidProfilerProfilerInit();
+#endif
     #endif
 
    return true;
@@ -434,6 +449,9 @@ void DefaultGame::mainLoop( void )
 #ifdef TORQUE_OS_IOS_PROFILE
     iPhoneProfilerStart("MAIN_LOOP");
 #endif	
+#ifdef TORQUE_OS_ANDROID_PROFILE
+    AndroidProfilerStart("MAIN_LOOP");
+#endif
          PROFILE_START(MainLoop);
 #ifdef TORQUE_ALLOW_JOURNALING
          PROFILE_START(JournalMain);
@@ -467,6 +485,13 @@ void DefaultGame::mainLoop( void )
         iPhoneProfilerProfilerInit();
     }
 #endif
+#ifdef TORQUE_OS_ANDROID_PROFILE
+    AndroidProfilerEnd("MAIN_LOOP");
+    if(AndroidProfilerGetCount() >= 60){
+        AndroidProfilerPrintAllResults();
+        AndroidProfilerProfilerInit();
+    }
+#endif
 }
 
 //-----------------------------------------------------------------------------
@@ -572,9 +597,15 @@ void DefaultGame::processTimeEvent(TimeEvent *event)
 #ifdef TORQUE_OS_IOS_PROFILE
 iPhoneProfilerStart("SERVER_PROC");
 #endif    
+#ifdef TORQUE_OS_ANDROID_PROFILE
+AndroidProfilerStart("SERVER_PROC");
+#endif
     tickPass = gServerProcessList.advanceTime(elapsedTime);
 #ifdef TORQUE_OS_IOS_PROFILE
     iPhoneProfilerEnd("SERVER_PROC");
+#endif
+#ifdef TORQUE_OS_ANDROID_PROFILE
+    AndroidProfilerEnd("SERVER_PROC");
 #endif
     PROFILE_END();	
 
@@ -587,10 +618,16 @@ iPhoneProfilerStart("SERVER_PROC");
    PROFILE_START(SimAdvanceTime);
 #ifdef TORQUE_OS_IOS_PROFILE
     iPhoneProfilerStart("SIM_TIME");
+#endif
+#ifdef TORQUE_OS_ANDROID_PROFILE
+    AndroidProfilerStart("SIM_TIME");
 #endif
     Sim::advanceTime(elapsedTime);
 #ifdef TORQUE_OS_IOS_PROFILE
     iPhoneProfilerEnd("SIM_TIME");
+#endif
+#ifdef TORQUE_OS_ANDROID_PROFILE
+    AndroidProfilerEnd("SIM_TIME");
 #endif
     PROFILE_END();
 
@@ -598,6 +635,9 @@ iPhoneProfilerStart("SERVER_PROC");
 #ifdef TORQUE_OS_IOS_PROFILE
     iPhoneProfilerStart("CLIENT_PROC");
 #endif
+#ifdef TORQUE_OS_ANDROID_PROFILE
+    AndroidProfilerStart("CLIENT_PROC");
+#endif
 
    PROFILE_START(TickableAdvanceTime);
    Tickable::advanceTime(elapsedTime);	
@@ -622,6 +662,9 @@ iPhoneProfilerStart("SERVER_PROC");
 
 #ifdef TORQUE_OS_IOS_PROFILE
     iPhoneProfilerEnd("CLIENT_PROC");
+#endif
+#ifdef TORQUE_OS_ANDROID_PROFILE
+    AndroidProfilerEnd("CLIENT_PROC");
 #endif
     PROFILE_END();
    PROFILE_START(ClientNetProcess);
@@ -632,6 +675,9 @@ iPhoneProfilerStart("SERVER_PROC");
    {
 #ifdef TORQUE_OS_IOS_PROFILE	   
 iPhoneProfilerStart("GL_RENDER");
+#endif
+#ifdef TORQUE_OS_ANDROID_PROFILE
+AndroidProfilerStart("GL_RENDER");
 #endif
       bool preRenderOnly = false;
       if(gFrameSkip && gFrameCount % gFrameSkip)
@@ -643,6 +689,9 @@ iPhoneProfilerStart("GL_RENDER");
       gFrameCount++;
 #ifdef TORQUE_OS_IOS_PROFILE
 iPhoneProfilerEnd("GL_RENDER");
+#endif
+#ifdef TORQUE_OS_ANDROID_PROFILE
+AndroidProfilerEnd("GL_RENDER");
 #endif
    }
    GNet->checkTimeouts();

+ 2 - 64
engine/source/game/gameConnection.cc

@@ -28,6 +28,8 @@
 #include "game/gameConnection.h"
 #include "io/resource/resourceManager.h"
 
+#include "gameConnection_ScriptBinding.h"
+
 //----------------------------------------------------------------------------
 #define MAX_MOVE_PACKET_SENDS 4
 
@@ -86,24 +88,6 @@ void GameConnection::setJoinPassword(const char *password)
    mJoinPassword = dStrdup(password);
 }
 
-ConsoleMethod(GameConnection, setJoinPassword, void, 3, 3, "( password ) Use the setJoinPassword method to set the password required to connect to this server-side GameConnection.\n"
-                                                                "Pass a NULL string to clear the password.\n"
-                                                                "@param password A string representing the case insensitive password to use for this server-side GameConnection.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa setConnectArgs")
-{
-   object->setJoinPassword(argv[2]);
-}
-
-ConsoleMethod(GameConnection, setConnectArgs, void, 3, 17, "( name [ , arg1 , ... , arg15 ] ) Use the setConnectArgs method to set the connection arguments for this client-side GameConnection. These values will be passed to the server upon establishing a connection.\n"
-                                                                "@param name Generally, the first argument is the name of the player.\n"
-                                                                "@param arg1 ... , arg15 - 15 additional arguments may be passed.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa setJoinPassword")
-{
-   object->setConnectArgs(argc - 2, argv + 2);
-}
-
 void GameConnection::onTimedOut()
 {
    if(isConnectionToServer())
@@ -423,54 +407,8 @@ void GameConnection::handleConnectionMessage(U32 message, U32 sequence, U32 ghos
    Parent::handleConnectionMessage(message, sequence, ghostCount);
 }
 
-//----------------------------------------------------------------------------
-
-
-ConsoleMethod( GameConnection, activateGhosting, void, 2, 2, "() Use the activateGhosting method to GameConnection instance to start ghosting objects to the client.\n"
-                                                                "This is called on each client connection by the server.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa resetGhosting")
-{
-   object->activateGhosting();
-}
-
-ConsoleMethod( GameConnection, resetGhosting, void, 2, 2, "() Use the resetGhosting method to reset ghosting. This in effect tells the server to resend each ghost to insure that all objects which should be ghosts and are in fact ghosted.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa activateGhosting")
-{
-   object->resetGhosting();
-}
-
-
-ConsoleMethod( GameConnection, delete, void, 2, 3, "( [ reason ] ) Use the delete method to destroy and disconnect the current connection, giving an optional reason. If reason is specified, it will be transmitted to the client/server on the other end of the connection.\n"
-                                                                "@param reason A string explaining while the connection is being severed.\n"
-                                                                "@return No return value")
-{
-   if (argc == 3)
-      object->setDisconnectReason(argv[2]);
-   object->deleteObject();
-}
-
-
 //--------------------------------------------------------------------------
 void GameConnection::consoleInit()
 {
    Con::addVariable("Pref::Net::LagThreshold", TypeS32, &mLagThresholdMS);
 }
-
-ConsoleStaticMethod(GameConnection, getServerConnection, S32, 2, 2, "() Get the server connection if any.")
-{
-   if(GameConnection::getConnectionToServer())
-      return GameConnection::getConnectionToServer()->getId();
-   else
-   {
-      Con::errorf("GameConnection::getServerConnection - no connection available.");
-      return -1;
-   }
-}
-
-//added for a lack of a better place
-ConsoleFunction( purgeResources, void, 1, 1, "() Purge resources from the resource manager.")
-{
-   ResourceManager->purge();
-}

+ 18 - 12
engine/source/game/gameInterface_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -21,22 +21,28 @@
 //-----------------------------------------------------------------------------
 
 #ifdef TORQUE_ALLOW_JOURNALING
-ConsoleFunction( saveJournal, void, 2, 2, "( namedFile ) Use the saveJournal function to save a new journal of the current game.\n"
-                                                                "@param namedFile A full path specifying the file to save this journal to. Usually, journal names end with the extension .jrn.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa playJournal")
+
+/*! Use the saveJournal function to save a new journal of the current game.
+    @param namedFile A full path specifying the file to save this journal to. Usually, journal names end with the extension .jrn.
+    @return No return value.
+    @sa playJournal
+*/
+ConsoleFunctionWithDocs( saveJournal, ConsoleVoid, 2, 2, ( namedFile ))
 {
    Game->saveJournal(argv[1]);
 }
 
-ConsoleFunction( playJournal, void, 2, 3, "( namedFile , doBreak ) Use the playJournal function to play back a journal from namedFile and to optionally break (into an active debugger) after loading the Journal. This allow us to debug engine bugs by reproducing them consistently repeatedly.\n"
-                                                                "The journaling system is a vital tool for debugging complex or hard to reproduce engine and script bugs.\n"
-                                                                "@param namedFile A full path to a valid journal file. Usually, journal names end with the extension .jrn.\n"
-                                                                "@param doBreak A boolean value. If true, the engine will load the journal and then assert a break (to break into an active debugger). If not true, the engine will play back the journal with no break.\n"
-                                                                "@return No return value.\n"
-                                                                "@sa saveJournal")
+/*! Use the playJournal function to play back a journal from namedFile and to optionally break (into an active debugger) after loading the Journal. This allow us to debug engine bugs by reproducing them consistently repeatedly.
+    The journaling system is a vital tool for debugging complex or hard to reproduce engine and script bugs.
+    @param namedFile A full path to a valid journal file. Usually, journal names end with the extension .jrn.
+    @param doBreak A boolean value. If true, the engine will load the journal and then assert a break (to break into an active debugger). If not true, the engine will play back the journal with no break.
+    @return No return value.
+    @sa saveJournal
+*/
+ConsoleFunctionWithDocs( playJournal, ConsoleVoid, 2, 3, ( namedFile , doBreak ))
 {
    bool jBreak = (argc > 2)? dAtob(argv[2]): false;
    Game->playJournal(argv[1],jBreak);
 }
-#endif //TORQUE_ALLOW_JOURNALING
+
+#endif //TORQUE_ALLOW_JOURNALING

+ 13 - 56
engine/source/game/version.cc

@@ -26,6 +26,8 @@
 #include "string/stringTable.h"
 #include "io/resource/resourceManager.h"
 
+#include "version_ScriptBinding.h"
+
 //-----------------------------------------------------------------------------
 
 static const U32 csgVersionNumber = TORQUE_GAME_ENGINE;
@@ -52,78 +54,33 @@ const char* getCompileTimeString()
 {
    return __DATE__ " at " __TIME__;
 }
-//----------------------------------------------------------------
 
-ConsoleFunction(isDebugBuild, bool, 1, 1, "() Use the isDebugBuild function to determine if this is a debug build.\n"
-                                                                "@return Returns true if this is a debug build, otherwise false.\n"
-                                                                "@sa getBuildString, getCompileTimeString, getVersionNumber, getVersionString")
-{
-#ifdef TORQUE_DEBUG
-   return true;
-#else
-   return false;
-#endif
-}
-
-ConsoleFunction( getVersionNumber, S32, 1, 1, "() Use the getVersionNumber function to get the version number of the currently executing engine.\n"
-                                                                "@return Returns an integer representing the engine's version number.\n"
-                                                                "@sa getBuildString, getCompileTimeString, getVersionString, isDebugBuild")
-{
-   return getVersionNumber();
-}
-
-ConsoleFunction( getVersionString, const char*, 1, 1, "() Use the getVersionString function to get the version name and number for the currently executing engine.\n"
-                                                                "@return Returns a string containing a name and an integer representing the engine's version type and version number.\n"
-                                                                "@sa getBuildString, getCompileTimeString, getVersionNumber, isDebugBuild")
-{
-   return getVersionString();
-}
-
-ConsoleFunction( getCompileTimeString, const char*, 1, 1, "() Use the getCompileTimeString function to determine when the currently running engine was built.\n"
-                                                                "@return Returns a string containing \"Month Day Year at Hour:Minute:Second\" showing when this executable was built.\n"
-                                                                "@sa getBuildString, getVersionNumber, getVersionString, isDebugBuild")
-{
-   return getCompileTimeString();
-}
+//-----------------------------------------------------------------------------
 
-ConsoleFunction( getBuildString, const char*, 1, 1, "() Use the getBuildString function to determine if this build is a \"Debug\" release, or a \"Release\" build.\n"
-                                                                "@return Returns a string, either \"Debug\" for a debug build, or \"Release\" for a release build.\n"
-                                                                "@sa getCompileTimeString, getVersionNumber, getVersionString, isDebugBuild")
+const char* getCompanyName()
 {
-#ifdef TORQUE_DEBUG
-   return "Debug";
-#else
-   return "Release";
-#endif
+	return sgCompanyName;
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction( getEngineVersion, const char*, 1, 1, "() - Gets the engine version.")
+const char* getProductName()
 {
-    return T2D_ENGINE_VERSION;
+	return sgProductName;
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction( getiPhoneToolsVersion, const char*, 1, 1, "Returns iPhone Tools Version")
+void setCompanyName(StringTableEntry companyName)
 {
-    return T2D_IPHONETOOLS_VERSION;
+	sgCompanyName = companyName;
 }
 
 //-----------------------------------------------------------------------------
 
-ConsoleFunction(setCompanyAndProduct, void, 3, 3, "(company, product) Sets the company and product information.")
-{
-   sgCompanyName = StringTable->insert(argv[1]);
-   sgProductName = StringTable->insert(argv[2]);
-
-   Con::setVariable("$Game::CompanyName", sgCompanyName);
-   Con::setVariable("$Game::ProductName", sgProductName);
-
-   char appDataPath[1024];
-   dSprintf(appDataPath, sizeof(appDataPath), "%s/%s/%s", Platform::getUserDataDirectory(), sgCompanyName, sgProductName);
-   
-   ResourceManager->addPath(appDataPath);
+void setProductName(StringTableEntry productName)
+{
+	sgProductName = productName;
 }
 
+//-----------------------------------------------------------------------------

+ 6 - 0
engine/source/game/version.h

@@ -36,4 +36,10 @@ const char* getVersionString();
 /// Gets the compile date and time
 const char* getCompileTimeString();
 
+const char* getCompanyName();
+const char* getProductName();
+
+void setCompanyName(StringTableEntry companyName);
+void setProductName(StringTableEntry productName);
+
 #endif // _ENGINE_VERSION_H_

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