Browse Source

Merge pull request #7 from GarageGames/torqueScriptDocs

Torque script docs
Mike Lilligreen 12 years ago
parent
commit
e418778b6f
100 changed files with 19135 additions and 14412 deletions
  1. 6 0
      README.md
  2. 1216 1120
      engine/compilers/VisualStudio 2010/Torque 2D.vcxproj
  3. 2999 2696
      engine/compilers/VisualStudio 2010/Torque 2D.vcxproj.filters
  4. 46 46
      engine/compilers/VisualStudio 2012/Torque 2D.sln
  5. 1220 1126
      engine/compilers/VisualStudio 2012/Torque 2D.vcxproj
  6. 2990 2693
      engine/compilers/VisualStudio 2012/Torque 2D.vcxproj.filters
  7. 285 58
      engine/compilers/Xcode/Torque2D.xcodeproj/project.pbxproj
  8. 1 1
      engine/compilers/Xcode/Torque2D.xcodeproj/xcshareddata/xcschemes/Torque2D.xcscheme
  9. 280 52
      engine/compilers/Xcode_iOS/Torque2D.xcodeproj/project.pbxproj
  10. 47 25
      engine/source/2d/assets/AnimationAsset_ScriptBinding.h
  11. 168 94
      engine/source/2d/assets/ImageAsset_ScriptBinding.h
  12. 826 682
      engine/source/2d/assets/ParticleAssetEmitter_ScriptBinding.h
  13. 471 401
      engine/source/2d/assets/ParticleAsset_ScriptBinding.h
  14. 66 59
      engine/source/2d/controllers/AmbientForceController_ScriptBinding.h
  15. 25 23
      engine/source/2d/controllers/BuoyancyController_ScriptBinding.h
  16. 200 169
      engine/source/2d/controllers/PointForceController_ScriptBinding.h
  17. 199 187
      engine/source/2d/controllers/core/PickingSceneController_ScriptBinding.h
  18. 255 136
      engine/source/2d/core/BatchRender.cc
  19. 82 35
      engine/source/2d/core/BatchRender.h
  20. 70 37
      engine/source/2d/core/RenderProxy_ScriptBinding.h
  21. 71 37
      engine/source/2d/core/SpriteBase_ScriptBinding.h
  22. 2 58
      engine/source/2d/core/Utility.cc
  23. 88 0
      engine/source/2d/core/Utility_ScriptBinding.h
  24. 105 53
      engine/source/2d/core/Vector2_ScriptBinding.h
  25. 3 0
      engine/source/2d/experimental/composites/WaveComposite_ScriptBinding.h
  26. 2 3
      engine/source/2d/gui/SceneWindow.cc
  27. 317 176
      engine/source/2d/gui/SceneWindow_ScriptBinding.h
  28. 25 11
      engine/source/2d/gui/guiImageButtonCtrl_ScriptBindings.h
  29. 37 19
      engine/source/2d/gui/guiSpriteCtrl_ScriptBindings.h
  30. 5 12
      engine/source/2d/scene/DebugStats.h
  31. 1 2
      engine/source/2d/scene/Scene.cc
  32. 355 229
      engine/source/2d/scene/Scene_ScriptBinding.h
  33. 326 188
      engine/source/2d/sceneobject/CompositeSprite_ScriptBinding.h
  34. 161 137
      engine/source/2d/sceneobject/ImageFont_ScriptBinding.h
  35. 237 195
      engine/source/2d/sceneobject/ParticlePlayer_ScriptBinding.h
  36. 223 194
      engine/source/2d/sceneobject/SceneObjectSet_ScriptBinding.h
  37. 338 192
      engine/source/2d/sceneobject/SceneObject_ScriptBinding.h
  38. 67 32
      engine/source/2d/sceneobject/Scroller_ScriptBinding.h
  39. 121 67
      engine/source/2d/sceneobject/ShapeVector_ScriptBinding.h
  40. 33 18
      engine/source/2d/sceneobject/Sprite_ScriptBinding.h
  41. 34 12
      engine/source/2d/sceneobject/Trigger_ScriptBinding.h
  42. 16 7
      engine/source/assets/assetBase.cc
  43. 13 6
      engine/source/assets/assetBase.h
  44. 14 6
      engine/source/assets/assetBase_ScriptBinding.h
  45. 5 0
      engine/source/assets/assetFieldTypes.cc
  46. 5 0
      engine/source/assets/assetFieldTypes.h
  47. 6 6
      engine/source/assets/assetManager.cc
  48. 268 166
      engine/source/assets/assetManager_ScriptBinding.h
  49. 23 11
      engine/source/assets/assetQuery_ScriptBinding.h
  50. 65 39
      engine/source/assets/assetTagsManifest_ScriptBinding.h
  51. 39 65
      engine/source/assets/tamlAssetDeclaredUpdateVisitor.h
  52. 78 130
      engine/source/assets/tamlAssetDeclaredVisitor.h
  53. 48 50
      engine/source/assets/tamlAssetReferencedUpdateVisitor.h
  54. 35 36
      engine/source/assets/tamlAssetReferencedVisitor.h
  55. 193 128
      engine/source/audio/audio_ScriptBinding.cc
  56. 63 38
      engine/source/collection/nameTags_ScriptBinding.h
  57. 7 88
      engine/source/collection/undo.cc
  58. 124 0
      engine/source/collection/undo_ScriptBinding.h
  59. 78 49
      engine/source/component/behaviors/behaviorComponent_ScriptBinding.h
  60. 9 3
      engine/source/component/behaviors/behaviorInstance_ScriptBinding.h
  61. 81 50
      engine/source/component/behaviors/behaviorTemplate_ScriptBinding.h
  62. 2 19
      engine/source/component/dynamicConsoleMethodComponent.cpp
  63. 41 0
      engine/source/component/dynamicConsoleMethodComponent_ScriptBinding.h
  64. 2 72
      engine/source/component/simComponent.cpp
  65. 101 0
      engine/source/component/simComponent_ScriptBinding.h
  66. 14 123
      engine/source/console/console.cc
  67. 58 7
      engine/source/console/console.h
  68. 2 37
      engine/source/console/consoleDoc.cc
  69. 70 0
      engine/source/console/consoleDoc_ScriptBinding.h
  70. 2 28
      engine/source/console/consoleExprEvalState.cc
  71. 61 0
      engine/source/console/consoleExprEvalState_ScriptBinding.h
  72. 2 1568
      engine/source/console/consoleFunctions.cc
  73. 2 16
      engine/source/console/consoleLogger.cc
  74. 45 0
      engine/source/console/consoleLogger_ScriptBinding.h
  75. 2 33
      engine/source/console/consoleNamespace.cc
  76. 67 0
      engine/source/console/consoleNamespace_ScriptBinding.h
  77. 1 38
      engine/source/console/consoleObject.cc
  78. 317 0
      engine/source/console/core_ScriptBinding.dox
  79. 371 0
      engine/source/console/documenting_ScriptPage.md
  80. 129 0
      engine/source/console/expando_ScriptBinding.h
  81. 57 0
      engine/source/console/inputManagement_ScriptBinding.h
  82. 845 0
      engine/source/console/metaScripting_ScriptBinding.cc
  83. 223 0
      engine/source/console/output_ScriptBinding.h
  84. 941 0
      engine/source/console/syntax_ScriptPage.md
  85. 84 0
      engine/source/console/taggedStrings_ScriptBinding.h
  86. 2 40
      engine/source/debug/profiler.cc
  87. 84 0
      engine/source/debug/profiler_ScriptBinding.h
  88. 11 5
      engine/source/debug/remote/RemoteDebugger1_ScriptBinding.h
  89. 6 1
      engine/source/debug/remote/RemoteDebuggerBase_ScriptBinding.h
  90. 8 6
      engine/source/debug/remote/RemoteDebuggerBridge_ScriptBinding.h
  91. 1 26
      engine/source/debug/telnetDebugger.cc
  92. 59 0
      engine/source/debug/telnetDebugger_ScriptBinding.h
  93. 2 64
      engine/source/game/gameConnection.cc
  94. 101 0
      engine/source/game/gameConnection_ScriptBinding.h
  95. 18 12
      engine/source/game/gameInterface_ScriptBinding.h
  96. 12 55
      engine/source/game/version.cc
  97. 6 0
      engine/source/game/version.h
  98. 117 0
      engine/source/game/version_ScriptBinding.h
  99. 2 109
      engine/source/graphics/PNGImage.cpp
  100. 94 0
      engine/source/graphics/PNGImage_ScriptBinding.h

+ 6 - 0
README.md

@@ -0,0 +1,6 @@
+Torque2D
+========
+
+MIT Licensed Open Source version of Torque 2D from GarageGames.
+
+You can find the main Wiki page [here](https://github.com/GarageGames/Torque2D/wiki)

+ 1216 - 1120
engine/compilers/VisualStudio 2010/Torque 2D.vcxproj

@@ -1,1121 +1,1217 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Shipping|Win32">
-      <Configuration>Shipping</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}</ProjectGuid>
-    <RootNamespace>TorqueGame</RootNamespace>
-    <ProjectName>Torque2D</ProjectName>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../Link/VC2010.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    </LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">../../../</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../Link/VC2010.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">../../Link/VC2010.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">false</LinkIncremental>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Torque2D_DEBUG</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Torque2D</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">Torque2D</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../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>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
-      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
-      <BrowseInformation>false</BrowseInformation>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <WarningLevel>Level3</WarningLevel>
-      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-    <Link>
-      <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/unicode;../../lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <IgnoreSpecificDefaultLibraries>LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../source/testing/googleTest;../../source/testing/googleTest/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>UNICODE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
-      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
-      <BrowseInformation>false</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-    <Link>
-      <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;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <EnableUAC>false</EnableUAC>
-      <UACExecutionLevel>HighestAvailable</UACExecutionLevel>
-    </Link>
-    <CustomBuildStep>
-      <Command>
-      </Command>
-    </CustomBuildStep>
-    <CustomBuildStep />
-    <CustomBuildStep>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">
-    <Midl>
-      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>TORQUE_SHIPPING;UNICODE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
-      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
-      <BrowseInformation>false</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-    <Link>
-      <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;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <EnableUAC>false</EnableUAC>
-      <UACExecutionLevel>HighestAvailable</UACExecutionLevel>
-    </Link>
-    <CustomBuildStep>
-      <Command>
-      </Command>
-    </CustomBuildStep>
-    <CustomBuildStep />
-    <CustomBuildStep>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ResourceCompile Include="Torque 2D.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\source\2d\assets\AnimationAsset.cc" />
-    <ClCompile Include="..\..\source\2d\assets\ImageAsset.cc" />
-    <ClCompile Include="..\..\source\2d\assets\ParticleAsset.cc" />
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetEmitter.cc" />
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetField.cc" />
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetFieldCollection.cc" />
-    <ClCompile Include="..\..\source\2d\controllers\AmbientForceController.cc" />
-    <ClCompile Include="..\..\source\2d\controllers\BuoyancyController.cc" />
-    <ClCompile Include="..\..\source\2d\controllers\core\GroupedSceneController.cc" />
-    <ClCompile Include="..\..\source\2d\controllers\core\PickingSceneController.cc" />
-    <ClCompile Include="..\..\source\2d\controllers\PointForceController.cc" />
-    <ClCompile Include="..\..\source\2d\core\BatchRender.cc" />
-    <ClCompile Include="..\..\source\2d\core\CoreMath.cc" />
-    <ClCompile Include="..\..\source\2d\core\ImageFrameProvider.cc" />
-    <ClCompile Include="..\..\source\2d\core\ImageFrameProviderCore.cc" />
-    <ClCompile Include="..\..\source\2d\core\ParticleSystem.cc" />
-    <ClCompile Include="..\..\source\2d\core\RenderProxy.cc" />
-    <ClCompile Include="..\..\source\2d\core\SpriteBase.cc" />
-    <ClCompile Include="..\..\source\2d\core\SpriteBatch.cc" />
-    <ClCompile Include="..\..\source\2d\core\SpriteBatchItem.cc" />
-    <ClCompile Include="..\..\source\2d\core\SpriteBatchQuery.cc" />
-    <ClCompile Include="..\..\source\2d\core\Utility.cc" />
-    <ClCompile Include="..\..\source\2d\core\Vector2.cc" />
-    <ClCompile Include="..\..\source\2d\experimental\composites\WaveComposite.cc" />
-    <ClCompile Include="..\..\source\2d\gui\guiImageButtonCtrl.cc" />
-    <ClCompile Include="..\..\source\2d\gui\guiSceneObjectCtrl.cc" />
-    <ClCompile Include="..\..\source\2d\gui\guiSpriteCtrl.cc" />
-    <ClCompile Include="..\..\source\2d\gui\SceneWindow.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\CompositeSprite.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\ImageFont.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\ParticlePlayer.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObject.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectList.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectSet.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\Scroller.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\ShapeVector.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\Sprite.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\Trigger.cc" />
-    <ClCompile Include="..\..\source\2d\scene\ContactFilter.cc" />
-    <ClCompile Include="..\..\source\2d\scene\DebugDraw.cc" />
-    <ClCompile Include="..\..\source\2d\scene\Scene.cc" />
-    <ClCompile Include="..\..\source\2d\scene\SceneRenderFactories.cpp" />
-    <ClCompile Include="..\..\source\2d\scene\SceneRenderQueue.cpp" />
-    <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc" />
-    <ClCompile Include="..\..\source\algorithm\crc.cc" />
-    <ClCompile Include="..\..\source\algorithm\hashFunction.cc" />
-    <ClCompile Include="..\..\source\assets\assetBase.cc" />
-    <ClCompile Include="..\..\source\assets\assetFieldTypes.cc" />
-    <ClCompile Include="..\..\source\assets\assetManager.cc" />
-    <ClCompile Include="..\..\source\assets\assetQuery.cc" />
-    <ClCompile Include="..\..\source\assets\assetTagsManifest.cc" />
-    <ClCompile Include="..\..\source\assets\declaredAssets.cc" />
-    <ClCompile Include="..\..\source\assets\referencedAssets.cc" />
-    <ClCompile Include="..\..\source\audio\AudioAsset.cc" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2BroadPhase.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollideCircle.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollideEdge.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollidePolygon.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2Collision.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2Distance.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2DynamicTree.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2TimeOfImpact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2BlockAllocator.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2Draw.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2Math.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2Settings.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2StackAllocator.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2Timer.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Body.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2ContactManager.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Fixture.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Island.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2World.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2Joint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Rope\b2Rope.cpp" />
-    <ClCompile Include="..\..\source\collection\bitTables.cc" />
-    <ClCompile Include="..\..\source\collection\hashTable.cc" />
-    <ClCompile Include="..\..\source\collection\nameTags.cpp" />
-    <ClCompile Include="..\..\source\collection\undo.cc" />
-    <ClCompile Include="..\..\source\collection\vector.cc" />
-    <ClCompile Include="..\..\source\console\consoleBaseType.cc" />
-    <ClCompile Include="..\..\source\console\consoleDictionary.cc" />
-    <ClCompile Include="..\..\source\console\consoleExprEvalState.cc" />
-    <ClCompile Include="..\..\source\console\consoleNamespace.cc" />
-    <ClCompile Include="..\..\source\console\ConsoleTypeValidators.cc" />
-    <ClCompile Include="..\..\source\debug\profiler.cc" />
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc" />
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc" />
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBridge.cc" />
-    <ClCompile Include="..\..\source\debug\telnetDebugger.cc" />
-    <ClCompile Include="..\..\source\delegates\delegateSignal.cpp" />
-    <ClCompile Include="..\..\source\game\defaultGame.cc" />
-    <ClCompile Include="..\..\source\game\gameInterface.cc" />
-    <ClCompile Include="..\..\source\graphics\bitmapBmp.cc" />
-    <ClCompile Include="..\..\source\graphics\bitmapJpeg.cc" />
-    <ClCompile Include="..\..\source\graphics\bitmapPng.cc" />
-    <ClCompile Include="..\..\source\graphics\color.cc" />
-    <ClCompile Include="..\..\source\graphics\dgl.cc" />
-    <ClCompile Include="..\..\source\graphics\dglMatrix.cc" />
-    <ClCompile Include="..\..\source\graphics\DynamicTexture.cc" />
-    <ClCompile Include="..\..\source\graphics\gBitmap.cc" />
-    <ClCompile Include="..\..\source\graphics\gFont.cc" />
-    <ClCompile Include="..\..\source\graphics\gPalette.cc" />
-    <ClCompile Include="..\..\source\graphics\PNGImage.cpp" />
-    <ClCompile Include="..\..\source\graphics\splineUtil.cc" />
-    <ClCompile Include="..\..\source\graphics\TextureDictionary.cc" />
-    <ClCompile Include="..\..\source\graphics\TextureHandle.cc" />
-    <ClCompile Include="..\..\source\graphics\TextureManager.cc" />
-    <ClCompile Include="..\..\source\gui\guiArrayCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiBackgroundCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiBitmapBorderCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiBitmapCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiBubbleTextCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiCanvas.cc" />
-    <ClCompile Include="..\..\source\gui\guiColorPicker.cc" />
-    <ClCompile Include="..\..\source\gui\guiConsole.cc" />
-    <ClCompile Include="..\..\source\gui\guiConsoleEditCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiConsoleTextCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiControl.cc" />
-    <ClCompile Include="..\..\source\gui\guiDefaultControlRender.cc" />
-    <ClCompile Include="..\..\source\gui\guiFadeinBitmapCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiInputCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiListBoxCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiMessageVectorCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiMLTextCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiMLTextEditCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiMouseEventCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiPopUpCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiPopUpCtrlEx.cc" />
-    <ClCompile Include="..\..\source\gui\guiProgressCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiScriptNotifyControl.cc" />
-    <ClCompile Include="..\..\source\gui\guiSliderCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTabPageCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTextCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTextEditCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTextEditSliderCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTextListCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTickCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTreeViewCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTypes.cc" />
-    <ClCompile Include="..\..\source\gui\language\lang.cc" />
-    <ClCompile Include="..\..\source\gui\messageVector.cc" />
-    <ClCompile Include="..\..\source\input\actionMap.cc" />
-    <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\filterStream.cc" />
-    <ClCompile Include="..\..\source\io\memStream.cc" />
-    <ClCompile Include="..\..\source\io\nStream.cc" />
-    <ClCompile Include="..\..\source\io\resizeStream.cc" />
-    <ClCompile Include="..\..\source\io\resource\resourceDictionary.cc" />
-    <ClCompile Include="..\..\source\io\resource\resourceManager.cc" />
-    <ClCompile Include="..\..\source\io\streamObject.cc" />
-    <ClCompile Include="..\..\source\io\zip\centralDir.cc" />
-    <ClCompile Include="..\..\source\io\zip\compressor.cc" />
-    <ClCompile Include="..\..\source\io\zip\deflate.cc" />
-    <ClCompile Include="..\..\source\io\zip\extraField.cc" />
-    <ClCompile Include="..\..\source\io\zip\fileHeader.cc" />
-    <ClCompile Include="..\..\source\io\zip\stored.cc" />
-    <ClCompile Include="..\..\source\io\zip\zipArchive.cc" />
-    <ClCompile Include="..\..\source\io\zip\zipCryptStream.cc" />
-    <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\rectClipper.cpp" />
-    <ClCompile Include="..\..\source\memory\dataChunker.cc" />
-    <ClCompile Include="..\..\source\memory\frameAllocator.cc" />
-    <ClCompile Include="..\..\source\messaging\dispatcher.cc" />
-    <ClCompile Include="..\..\source\messaging\eventManager.cc" />
-    <ClCompile Include="..\..\source\messaging\message.cc" />
-    <ClCompile Include="..\..\source\messaging\messageForwarder.cc" />
-    <ClCompile Include="..\..\source\messaging\scriptMsgListener.cc" />
-    <ClCompile Include="..\..\source\module\moduleDefinition.cc" />
-    <ClCompile Include="..\..\source\module\moduleManager.cc" />
-    <ClCompile Include="..\..\source\module\moduleMergeDefinition.cc" />
-    <ClCompile Include="..\..\source\network\connectionProtocol.cc" />
-    <ClCompile Include="..\..\source\network\connectionStringTable.cc" />
-    <ClCompile Include="..\..\source\network\httpObject.cc" />
-    <ClCompile Include="..\..\source\network\netConnection.cc" />
-    <ClCompile Include="..\..\source\network\netDownload.cc" />
-    <ClCompile Include="..\..\source\network\netEvent.cc" />
-    <ClCompile Include="..\..\source\network\netGhost.cc" />
-    <ClCompile Include="..\..\source\network\netInterface.cc" />
-    <ClCompile Include="..\..\source\network\netObject.cc" />
-    <ClCompile Include="..\..\source\network\netStringTable.cc" />
-    <ClCompile Include="..\..\source\network\netTest.cc" />
-    <ClCompile Include="..\..\source\network\networkProcessList.cc" />
-    <ClCompile Include="..\..\source\network\RemoteCommandEvent.cc" />
-    <ClCompile Include="..\..\source\network\serverQuery.cc" />
-    <ClCompile Include="..\..\source\network\tcpObject.cc" />
-    <ClCompile Include="..\..\source\network\telnetConsole.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\taml.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryReader.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryWriter.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlCustom.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlWriteNode.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlParser.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlReader.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlWriter.cc" />
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinystr.cpp" />
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxml.cpp" />
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlerror.cpp" />
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlparser.cpp" />
-    <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" />
-    <ClCompile Include="..\..\source\component\simComponent.cpp" />
-    <ClCompile Include="..\..\source\component\behaviors\behaviorComponent.cpp" />
-    <ClCompile Include="..\..\source\component\behaviors\behaviorInstance.cpp" />
-    <ClCompile Include="..\..\source\component\behaviors\behaviorTemplate.cpp" />
-    <ClCompile Include="..\..\source\console\astAlloc.cc" />
-    <ClCompile Include="..\..\source\console\astNodes.cc" />
-    <ClCompile Include="..\..\source\console\cmdgram.cc" />
-    <ClCompile Include="..\..\source\console\CMDscan.cc" />
-    <ClCompile Include="..\..\source\console\codeBlock.cc" />
-    <ClCompile Include="..\..\source\console\compiledEval.cc" />
-    <ClCompile Include="..\..\source\console\compiler.cc" />
-    <ClCompile Include="..\..\source\console\console.cc" />
-    <ClCompile Include="..\..\source\console\consoleDoc.cc" />
-    <ClCompile Include="..\..\source\console\consoleFunctions.cc" />
-    <ClCompile Include="..\..\source\console\consoleLogger.cc" />
-    <ClCompile Include="..\..\source\console\consoleObject.cc" />
-    <ClCompile Include="..\..\source\console\consoleParser.cc" />
-    <ClCompile Include="..\..\source\console\consoleTypes.cc" />
-    <ClCompile Include="..\..\source\game\gameConnection.cc" />
-    <ClCompile Include="..\..\source\game\version.cc" />
-    <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" />
-    <ClCompile Include="..\..\source\math\mMathFn.cc" />
-    <ClCompile Include="..\..\source\math\mMathSSE.cc" />
-    <ClCompile Include="..\..\source\math\mMatrix.cc" />
-    <ClCompile Include="..\..\source\math\mPlaneTransformer.cc" />
-    <ClCompile Include="..\..\source\math\mQuadPatch.cc" />
-    <ClCompile Include="..\..\source\math\mQuat.cc" />
-    <ClCompile Include="..\..\source\math\mRandom.cc" />
-    <ClCompile Include="..\..\source\math\mSolver.cc" />
-    <ClCompile Include="..\..\source\math\mSplinePatch.cc" />
-    <ClCompile Include="..\..\source\persistence\SimXMLDocument.cpp" />
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32FileDialog.cc" />
-    <ClCompile Include="..\..\source\platform\CursorManager.cc" />
-    <ClCompile Include="..\..\source\platform\nativeDialogs\fileDialog.cc" />
-    <ClCompile Include="..\..\source\platform\platform.cc" />
-    <ClCompile Include="..\..\source\platform\platformAssert.cc" />
-    <ClCompile Include="..\..\source\platform\platformCPU.cc" />
-    <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\platformString.cc" />
-    <ClCompile Include="..\..\source\platform\platformVideo.cc" />
-    <ClCompile Include="..\..\source\platform\menus\popupMenu.cc" />
-    <ClCompile Include="..\..\source\platform\nativeDialogs\msgBox.cpp" />
-    <ClCompile Include="..\..\source\platformWin32\cardProfile.cpp" />
-    <ClCompile Include="..\..\source\platformWin32\winAsmBlit.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winConsole.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winCPUInfo.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winDInputDevice.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winDirectInput.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winExec.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winFileio.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winFont.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winGL.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winGLSpecial.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winInput.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winMath.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winMath_ASM.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winMemory.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winNet.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winOGLVideo.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winOpenAL.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winProcessControl.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winSemaphore.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winStrings.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winTime.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winTLS.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winUser.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winVFS.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winVideo.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winWindow.cc" />
-    <ClCompile Include="..\..\source\platformWin32\menus\popupMenuWin32.cc" />
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.cpp" />
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32MsgBox.cpp" />
-    <ClCompile Include="..\..\source\platformWin32\threads\mutex.cc" />
-    <ClCompile Include="..\..\source\platformWin32\threads\thread.cc" />
-    <ClCompile Include="..\..\source\platform\Tickable.cc" />
-    <ClCompile Include="..\..\source\sim\scriptGroup.cc" />
-    <ClCompile Include="..\..\source\sim\scriptObject.cc" />
-    <ClCompile Include="..\..\source\sim\simBase.cc" />
-    <ClCompile Include="..\..\source\sim\simConsoleEvent.cc" />
-    <ClCompile Include="..\..\source\sim\simConsoleThreadExecEvent.cc" />
-    <ClCompile Include="..\..\source\sim\simDatablock.cc" />
-    <ClCompile Include="..\..\source\sim\simDictionary.cc" />
-    <ClCompile Include="..\..\source\sim\simFieldDictionary.cc" />
-    <ClCompile Include="..\..\source\sim\simManager.cc" />
-    <ClCompile Include="..\..\source\sim\simObject.cc" />
-    <ClCompile Include="..\..\source\sim\SimObjectList.cc" />
-    <ClCompile Include="..\..\source\sim\simSerialize.cpp" />
-    <ClCompile Include="..\..\source\sim\simSet.cc" />
-    <ClCompile Include="..\..\source\string\findMatch.cc" />
-    <ClCompile Include="..\..\source\string\stringBuffer.cc" />
-    <ClCompile Include="..\..\source\string\stringStack.cc" />
-    <ClCompile Include="..\..\source\string\stringTable.cc" />
-    <ClCompile Include="..\..\source\string\stringUnit.cpp" />
-    <ClCompile Include="..\..\source\string\unicode.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiBorderButton.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiButtonBaseCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiButtonCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiCheckBoxCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiIconButtonCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiRadioCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiAutoScrollCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiCtrlArrayCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiDragAndDropCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiFormCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiFrameCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiPaneCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiRolloutCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiScrollCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiStackCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiTabBookCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiWindowCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiControlListPopup.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiDebugger.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiEditCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiFilterCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiGraphCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiImageList.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiInspector.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiInspectorTypes.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiMenuBar.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiSeparatorCtrl.cc" />
-    <ClCompile Include="..\..\source\testing\tests\platformFileIoTests.cc" />
-    <ClCompile Include="..\..\source\testing\tests\platformMemoryTests.cc" />
-    <ClCompile Include="..\..\source\testing\tests\platformStringTests.cc" />
-    <ClCompile Include="..\..\source\testing\unitTesting.cc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\source\2d\assets\AnimationAsset.h" />
-    <ClInclude Include="..\..\source\2d\assets\AnimationAsset_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\assets\ImageAsset.h" />
-    <ClInclude Include="..\..\source\2d\assets\ImageAsset_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAsset.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetField.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetFieldCollection.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAsset_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\controllers\core\SceneController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\PointForceController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\PointForceController_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\core\BatchRender.h" />
-    <ClInclude Include="..\..\source\2d\core\CoreMath.h" />
-    <ClInclude Include="..\..\source\2d\core\ImageFrameProvider.h" />
-    <ClInclude Include="..\..\source\2d\core\ImageFrameProviderCore.h" />
-    <ClInclude Include="..\..\source\2d\core\ParticleSystem.h" />
-    <ClInclude Include="..\..\source\2d\core\RenderProxy.h" />
-    <ClInclude Include="..\..\source\2d\core\RenderProxy_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\core\SpriteBase.h" />
-    <ClInclude Include="..\..\source\2d\core\SpriteBase_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\core\SpriteBatch.h" />
-    <ClInclude Include="..\..\source\2d\core\SpriteBatchItem.h" />
-    <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\Vector2.h" />
-    <ClInclude Include="..\..\source\2d\core\Vector2_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite.h" />
-    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl.h" />
-    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl_ScriptBindings.h" />
-    <ClInclude Include="..\..\source\2d\gui\guiSceneObjectCtrl.h" />
-    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl.h" />
-    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl_ScriptBindings.h" />
-    <ClInclude Include="..\..\source\2d\gui\SceneWindow.h" />
-    <ClInclude Include="..\..\source\2d\gui\SceneWindow_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectList.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectMoveToEvent.h" />
-    <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" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\Sprite.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\Sprite_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\Trigger.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\Trigger_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\scene\ContactFilter.h" />
-    <ClInclude Include="..\..\source\2d\scene\DebugDraw.h" />
-    <ClInclude Include="..\..\source\2d\scene\DebugStats.h" />
-    <ClInclude Include="..\..\source\2d\scene\PhysicsProxy.h" />
-    <ClInclude Include="..\..\source\2d\scene\Scene.h" />
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderFactories.h" />
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderObject.h" />
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderQueue.h" />
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderRequest.h" />
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderState.h" />
-    <ClInclude Include="..\..\source\2d\scene\Scene_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\scene\WorldQuery.h" />
-    <ClInclude Include="..\..\source\2d\scene\WorldQueryFilter.h" />
-    <ClInclude Include="..\..\source\2d\scene\WorldQueryResult.h" />
-    <ClInclude Include="..\..\source\algorithm\crc.h" />
-    <ClInclude Include="..\..\source\algorithm\crctab.h" />
-    <ClInclude Include="..\..\source\algorithm\hashFunction.h" />
-    <ClInclude Include="..\..\source\algorithm\md5.h" />
-    <ClInclude Include="..\..\source\assets\assetBase.h" />
-    <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\assets\assetDefinition.h" />
-    <ClInclude Include="..\..\source\assets\assetFieldTypes.h" />
-    <ClInclude Include="..\..\source\assets\assetManager.h" />
-    <ClInclude Include="..\..\source\assets\assetManager_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\assets\assetPtr.h" />
-    <ClInclude Include="..\..\source\assets\assetQuery.h" />
-    <ClInclude Include="..\..\source\assets\assetQuery_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\assets\assetTagsManifest.h" />
-    <ClInclude Include="..\..\source\assets\assetTagsManifest_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\assets\declaredAssets.h" />
-    <ClInclude Include="..\..\source\assets\referencedAssets.h" />
-    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredUpdateVisitor.h" />
-    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredVisitor.h" />
-    <ClInclude Include="..\..\source\assets\tamlAssetReferencedUpdateVisitor.h" />
-    <ClInclude Include="..\..\source\assets\tamlAssetReferencedVisitor.h" />
-    <ClInclude Include="..\..\source\assets\tamlAssetUpdateVisitor.h" />
-    <ClInclude Include="..\..\source\audio\AudioAsset.h" />
-    <ClInclude Include="..\..\source\box2d\Box2D.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\b2BroadPhase.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\b2Collision.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\b2Distance.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\b2DynamicTree.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\b2TimeOfImpact.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2Shape.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2BlockAllocator.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2Draw.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2GrowableStack.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2Math.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2Settings.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2StackAllocator.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2Timer.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Body.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2ContactManager.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Fixture.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Island.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2TimeStep.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2World.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2Joint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Rope\b2Rope.h" />
-    <ClInclude Include="..\..\source\collection\bitMatrix.h" />
-    <ClInclude Include="..\..\source\collection\bitSet.h" />
-    <ClInclude Include="..\..\source\collection\bitTables.h" />
-    <ClInclude Include="..\..\source\collection\bitVector.h" />
-    <ClInclude Include="..\..\source\collection\bitVectorW.h" />
-    <ClInclude Include="..\..\source\collection\findIterator.h" />
-    <ClInclude Include="..\..\source\collection\hashTable.h" />
-    <ClInclude Include="..\..\source\collection\linkedList.h" />
-    <ClInclude Include="..\..\source\collection\nameTags.h" />
-    <ClInclude Include="..\..\source\collection\nameTags_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\collection\simpleHashTable.h" />
-    <ClInclude Include="..\..\source\collection\sparseArray.h" />
-    <ClInclude Include="..\..\source\collection\undo.h" />
-    <ClInclude Include="..\..\source\collection\vector.h" />
-    <ClInclude Include="..\..\source\collection\vector2d.h" />
-    <ClInclude Include="..\..\source\collection\vectorHeap.h" />
-    <ClInclude Include="..\..\source\collection\vectorQueue.h" />
-    <ClInclude Include="..\..\source\component\behaviors\behaviorComponentRaiseEvent.h" />
-    <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\console\consoleBaseType.h" />
-    <ClInclude Include="..\..\source\console\consoleDictionary.h" />
-    <ClInclude Include="..\..\source\console\consoleExprEvalState.h" />
-    <ClInclude Include="..\..\source\console\consoleInternal.h" />
-    <ClInclude Include="..\..\source\console\consoleNamespace.h" />
-    <ClInclude Include="..\..\source\console\ConsoleTypeValidators.h" />
-    <ClInclude Include="..\..\source\debug\profiler.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\debug\telnetDebugger.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\gameInterface.h" />
-    <ClInclude Include="..\..\source\game\gameInterface_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\graphics\color.h" />
-    <ClInclude Include="..\..\source\graphics\dgl.h" />
-    <ClInclude Include="..\..\source\graphics\DynamicTexture.h" />
-    <ClInclude Include="..\..\source\graphics\gBitmap.h" />
-    <ClInclude Include="..\..\source\graphics\gFont.h" />
-    <ClInclude Include="..\..\source\graphics\gPalette.h" />
-    <ClInclude Include="..\..\source\graphics\PNGImage.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\TextureObject.h" />
-    <ClInclude Include="..\..\source\gui\guiArrayCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiBackgroundCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiBitmapCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiBubbleTextCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiCanvas.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\guiDefaultControlRender.h" />
-    <ClInclude Include="..\..\source\gui\guiInputCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiListBoxCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiMessageVectorCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiMLTextCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiMLTextEditCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiMouseEventCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiPopUpCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiPopUpCtrlEx.h" />
-    <ClInclude Include="..\..\source\gui\guiProgressCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiScriptNotifyControl.h" />
-    <ClInclude Include="..\..\source\gui\guiSliderCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTabPageCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTextCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTextEditCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTextEditSliderCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTextListCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTickCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTreeViewCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTypes.h" />
-    <ClInclude Include="..\..\source\gui\language\lang.h" />
-    <ClInclude Include="..\..\source\gui\messageVector.h" />
-    <ClInclude Include="..\..\source\input\actionMap.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\fileStream.h" />
-    <ClInclude Include="..\..\source\io\fileStreamObject.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\stream.h" />
-    <ClInclude Include="..\..\source\io\streamObject.h" />
-    <ClInclude Include="..\..\source\io\zip\centralDir.h" />
-    <ClInclude Include="..\..\source\io\zip\compressor.h" />
-    <ClInclude Include="..\..\source\io\zip\extraField.h" />
-    <ClInclude Include="..\..\source\io\zip\fileHeader.h" />
-    <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\zipStatFilter.h" />
-    <ClInclude Include="..\..\source\io\zip\zipSubStream.h" />
-    <ClInclude Include="..\..\source\io\zip\zipTempStream.h" />
-    <ClInclude Include="..\..\source\math\rectClipper.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\eventManager.h" />
-    <ClInclude Include="..\..\source\messaging\message.h" />
-    <ClInclude Include="..\..\source\messaging\messageForwarder.h" />
-    <ClInclude Include="..\..\source\messaging\scriptMsgListener.h" />
-    <ClInclude Include="..\..\source\module\moduleCallbacks.h" />
-    <ClInclude Include="..\..\source\module\moduleDefinition.h" />
-    <ClInclude Include="..\..\source\module\moduleDefinition_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\module\moduleManager.h" />
-    <ClInclude Include="..\..\source\module\moduleManager_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\module\moduleMergeDefinition.h" />
-    <ClInclude Include="..\..\source\module\tamlModuleIdUpdateVisitor.h" />
-    <ClInclude Include="..\..\source\network\connectionProtocol.h" />
-    <ClInclude Include="..\..\source\network\connectionStringTable.h" />
-    <ClInclude Include="..\..\source\network\httpObject.h" />
-    <ClInclude Include="..\..\source\network\netConnection.h" />
-    <ClInclude Include="..\..\source\network\netInterface.h" />
-    <ClInclude Include="..\..\source\network\netObject.h" />
-    <ClInclude Include="..\..\source\network\netStringTable.h" />
-    <ClInclude Include="..\..\source\network\networkProcessList.h" />
-    <ClInclude Include="..\..\source\network\serverQuery.h" />
-    <ClInclude Include="..\..\source\network\tcpObject.h" />
-    <ClInclude Include="..\..\source\network\telnetConsole.h" />
-    <ClInclude Include="..\..\source\persistence\taml\taml.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryReader.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryWriter.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlCallbacks.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlChildren.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlCustom.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlWriteNode.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlParser.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlReader.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlVisitor.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlWriter.h" />
-    <ClInclude Include="..\..\source\persistence\taml\taml_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\persistence\tinyXML\tinystr.h" />
-    <ClInclude Include="..\..\source\persistence\tinyXML\tinyxml.h" />
-    <ClInclude Include="..\..\source\audio\audio.h" />
-    <ClInclude Include="..\..\source\audio\audioBuffer.h" />
-    <ClInclude Include="..\..\source\audio\audioDataBlock.h" />
-    <ClInclude Include="..\..\source\audio\audioStreamSource.h" />
-    <ClInclude Include="..\..\source\audio\audioStreamSourceFactory.h" />
-    <ClInclude Include="..\..\source\audio\wavStreamSource.h" />
-    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent.h" />
-    <ClInclude Include="..\..\source\component\simComponent.h" />
-    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent.h" />
-    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance.h" />
-    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate.h" />
-    <ClInclude Include="..\..\source\console\ast.h" />
-    <ClInclude Include="..\..\source\console\astNodeSizes.h" />
-    <ClInclude Include="..\..\source\console\cmdgram.h" />
-    <ClInclude Include="..\..\source\console\codeBlock.h" />
-    <ClInclude Include="..\..\source\console\compiler.h" />
-    <ClInclude Include="..\..\source\console\console.h" />
-    <ClInclude Include="..\..\source\console\consoleDoc.h" />
-    <ClInclude Include="..\..\source\console\consoleLogger.h" />
-    <ClInclude Include="..\..\source\console\consoleObject.h" />
-    <ClInclude Include="..\..\source\console\consoleParser.h" />
-    <ClInclude Include="..\..\source\console\consoleTypes.h" />
-    <ClInclude Include="..\..\source\game\gameConnection.h" />
-    <ClInclude Include="..\..\source\game\resource.h" />
-    <ClInclude Include="..\..\source\game\version.h" />
-    <ClInclude Include="..\..\source\math\mathIO.h" />
-    <ClInclude Include="..\..\source\math\mathTypes.h" />
-    <ClInclude Include="..\..\source\math\mathUtils.h" />
-    <ClInclude Include="..\..\source\math\mBox.h" />
-    <ClInclude Include="..\..\source\math\mConstants.h" />
-    <ClInclude Include="..\..\source\math\mMath.h" />
-    <ClInclude Include="..\..\source\math\mMathFn.h" />
-    <ClInclude Include="..\..\source\math\mMatrix.h" />
-    <ClInclude Include="..\..\source\math\mPlane.h" />
-    <ClInclude Include="..\..\source\math\mPlaneTransformer.h" />
-    <ClInclude Include="..\..\source\math\mPoint.h" />
-    <ClInclude Include="..\..\source\math\mQuadPatch.h" />
-    <ClInclude Include="..\..\source\math\mQuat.h" />
-    <ClInclude Include="..\..\source\math\mRandom.h" />
-    <ClInclude Include="..\..\source\math\mRect.h" />
-    <ClInclude Include="..\..\source\math\mSphere.h" />
-    <ClInclude Include="..\..\source\math\mSplinePatch.h" />
-    <ClInclude Include="..\..\source\persistence\SimXMLDocument.h" />
-    <ClInclude Include="..\..\source\platformWin32\winWindow.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\platform.h" />
-    <ClInclude Include="..\..\source\platform\platformAL.h" />
-    <ClInclude Include="..\..\source\platform\platformAssert.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\platformFont.h" />
-    <ClInclude Include="..\..\source\platform\platformGL.h" />
-    <ClInclude Include="..\..\source\platform\platformInput.h" />
-    <ClInclude Include="..\..\source\platform\platformInput_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\platform\platformMath.h" />
-    <ClInclude Include="..\..\source\platform\platformMemory.h" />
-    <ClInclude Include="..\..\source\platform\platformNetwork.h" />
-    <ClInclude Include="..\..\source\platform\platformSemaphore.h" />
-    <ClInclude Include="..\..\source\platform\platformString.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\platform_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\platform\Tickable.h" />
-    <ClInclude Include="..\..\source\platform\types.codewarrior.h" />
-    <ClInclude Include="..\..\source\platform\types.gcc.h" />
-    <ClInclude Include="..\..\source\platform\types.h" />
-    <ClInclude Include="..\..\source\platform\types.posix.h" />
-    <ClInclude Include="..\..\source\platform\types.ppc.h" />
-    <ClInclude Include="..\..\source\platform\types.visualc.h" />
-    <ClInclude Include="..\..\source\platform\types.win32.h" />
-    <ClInclude Include="..\..\source\platform\typesLinux.h" />
-    <ClInclude Include="..\..\source\platform\typesPPC.h" />
-    <ClInclude Include="..\..\source\platform\typesWin32.h" />
-    <ClInclude Include="..\..\source\platform\typesX86UNIX.h" />
-    <ClInclude Include="..\..\source\platform\menus\popupMenu.h" />
-    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog.h" />
-    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox.h" />
-    <ClInclude Include="..\..\source\platform\threads\mutex.h" />
-    <ClInclude Include="..\..\source\platform\threads\semaphore.h" />
-    <ClInclude Include="..\..\source\platform\threads\thread.h" />
-    <ClInclude Include="..\..\source\platformWin32\gl_types.h" />
-    <ClInclude Include="..\..\source\platformWin32\GLWinExtFunc.h" />
-    <ClInclude Include="..\..\source\platformWin32\GLWinFunc.h" />
-    <ClInclude Include="..\..\source\platformWin32\platformGL.h" />
-    <ClInclude Include="..\..\source\platformWin32\platformWin32.h" />
-    <ClInclude Include="..\..\source\platformWin32\VFSRes.h" />
-    <ClInclude Include="..\..\source\platformWin32\win32NPatch.h" />
-    <ClInclude Include="..\..\source\platformWin32\win_common_prefix.h" />
-    <ClInclude Include="..\..\source\platformWin32\win_debug_prefix.h" />
-    <ClInclude Include="..\..\source\platformWin32\win_release_prefix.h" />
-    <ClInclude Include="..\..\source\platformWin32\winConsole.h" />
-    <ClInclude Include="..\..\source\platformWin32\winDInputDevice.h" />
-    <ClInclude Include="..\..\source\platformWin32\winDirectInput.h" />
-    <ClInclude Include="..\..\source\platformWin32\winFont.h" />
-    <ClInclude Include="..\..\source\platformWin32\winOGLVideo.h" />
-    <ClInclude Include="..\..\source\platformWin32\winVideo.h" />
-    <ClInclude Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.h" />
-    <ClInclude Include="..\..\source\sim\scriptGroup.h" />
-    <ClInclude Include="..\..\source\sim\scriptObject.h" />
-    <ClInclude Include="..\..\source\sim\simBase.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\simDictionary.h" />
-    <ClInclude Include="..\..\source\sim\simEvent.h" />
-    <ClInclude Include="..\..\source\sim\simFieldDictionary.h" />
-    <ClInclude Include="..\..\source\sim\simObject.h" />
-    <ClInclude Include="..\..\source\sim\SimObjectList.h" />
-    <ClInclude Include="..\..\source\sim\simObjectPtr.h" />
-    <ClInclude Include="..\..\source\sim\simObjectTimerEvent.h" />
-    <ClInclude Include="..\..\source\sim\simSet.h" />
-    <ClInclude Include="..\..\source\string\findMatch.h" />
-    <ClInclude Include="..\..\source\string\stringBuffer.h" />
-    <ClInclude Include="..\..\source\string\stringStack.h" />
-    <ClInclude Include="..\..\source\string\stringTable.h" />
-    <ClInclude Include="..\..\source\string\stringUnit.h" />
-    <ClInclude Include="..\..\source\string\unicode.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiButtonBaseCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiButtonCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiCheckBoxCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiIconButtonCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiRadioCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiAutoScrollCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiCtrlArrayCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiDragAndDropCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiFormCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiFrameCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiPaneCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiRolloutCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiScrollCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiStackCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiTabBookCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiWindowCtrl.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiDebugger.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiEditCtrl.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiFilterCtrl.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiGraphCtrl.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiImageList.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiInspector.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiInspectorTypes.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiMenuBar.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiSeparatorCtrl.h" />
-    <ClInclude Include="..\..\source\testing\unitTesting.h" />
-    <ClInclude Include="..\..\source\torqueConfig.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuild Include="..\..\source\math\mMath_ASM.asm">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\math\mMathAMD_ASM.asm">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\math\mMathSSE_ASM.asm">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\platform\platformCPUInfo.asm">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-    </CustomBuild>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="ljpeg.vcxproj">
-      <Project>{0b07ba94-aa53-4fd4-adb4-79ec2da53b36}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="lpng.vcxproj">
-      <Project>{af1179e3-a838-46a3-a427-1e62aa4c52f4}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="zlib.vcxproj">
-      <Project>{86cb2525-0cf3-40d3-bf42-a0a95035ee8c}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Shipping|Win32">
+      <Configuration>Shipping</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}</ProjectGuid>
+    <RootNamespace>TorqueGame</RootNamespace>
+    <ProjectName>Torque2D</ProjectName>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../Link/VC2010.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    </LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">../../../</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../Link/VC2010.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">../../Link/VC2010.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">false</LinkIncremental>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Torque2D_DEBUG</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Torque2D</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">Torque2D</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../Source/persistence/rapidjson/include;../../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>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation>false</BrowseInformation>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <WarningLevel>Level3</WarningLevel>
+      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+    <Link>
+      <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/unicode;../../lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../Source/persistence/rapidjson/include;../../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>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation>false</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+    <Link>
+      <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;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <EnableUAC>false</EnableUAC>
+      <UACExecutionLevel>HighestAvailable</UACExecutionLevel>
+    </Link>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+    </CustomBuildStep>
+    <CustomBuildStep />
+    <CustomBuildStep>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">
+    <Midl>
+      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../Source/persistence/rapidjson/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TORQUE_SHIPPING;UNICODE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation>false</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+    <Link>
+      <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;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <EnableUAC>false</EnableUAC>
+      <UACExecutionLevel>HighestAvailable</UACExecutionLevel>
+    </Link>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+    </CustomBuildStep>
+    <CustomBuildStep />
+    <CustomBuildStep>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ResourceCompile Include="Torque 2D.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\source\2d\assets\AnimationAsset.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ImageAsset.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAsset.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetEmitter.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetField.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetFieldCollection.cc" />
+    <ClCompile Include="..\..\source\2d\controllers\AmbientForceController.cc" />
+    <ClCompile Include="..\..\source\2d\controllers\BuoyancyController.cc" />
+    <ClCompile Include="..\..\source\2d\controllers\core\GroupedSceneController.cc" />
+    <ClCompile Include="..\..\source\2d\controllers\core\PickingSceneController.cc" />
+    <ClCompile Include="..\..\source\2d\controllers\PointForceController.cc" />
+    <ClCompile Include="..\..\source\2d\core\BatchRender.cc" />
+    <ClCompile Include="..\..\source\2d\core\CoreMath.cc" />
+    <ClCompile Include="..\..\source\2d\core\ImageFrameProvider.cc" />
+    <ClCompile Include="..\..\source\2d\core\ImageFrameProviderCore.cc" />
+    <ClCompile Include="..\..\source\2d\core\ParticleSystem.cc" />
+    <ClCompile Include="..\..\source\2d\core\RenderProxy.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteBase.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteBatch.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteBatchItem.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteBatchQuery.cc" />
+    <ClCompile Include="..\..\source\2d\core\Utility.cc" />
+    <ClCompile Include="..\..\source\2d\core\Vector2.cc" />
+    <ClCompile Include="..\..\source\2d\experimental\composites\WaveComposite.cc" />
+    <ClCompile Include="..\..\source\2d\gui\guiImageButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\2d\gui\guiSceneObjectCtrl.cc" />
+    <ClCompile Include="..\..\source\2d\gui\guiSpriteCtrl.cc" />
+    <ClCompile Include="..\..\source\2d\gui\SceneWindow.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\CompositeSprite.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\ImageFont.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\ParticlePlayer.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObject.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectList.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectSet.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\Scroller.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\ShapeVector.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\Sprite.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\Trigger.cc" />
+    <ClCompile Include="..\..\source\2d\scene\ContactFilter.cc" />
+    <ClCompile Include="..\..\source\2d\scene\DebugDraw.cc" />
+    <ClCompile Include="..\..\source\2d\scene\Scene.cc" />
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderFactories.cpp" />
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderQueue.cpp" />
+    <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc" />
+    <ClCompile Include="..\..\source\algorithm\crc.cc" />
+    <ClCompile Include="..\..\source\algorithm\hashFunction.cc" />
+    <ClCompile Include="..\..\source\assets\assetBase.cc" />
+    <ClCompile Include="..\..\source\assets\assetFieldTypes.cc" />
+    <ClCompile Include="..\..\source\assets\assetManager.cc" />
+    <ClCompile Include="..\..\source\assets\assetQuery.cc" />
+    <ClCompile Include="..\..\source\assets\assetTagsManifest.cc" />
+    <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" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollidePolygon.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2Collision.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2Distance.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2DynamicTree.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2TimeOfImpact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2BlockAllocator.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Draw.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Math.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Settings.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2StackAllocator.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Timer.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Body.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2ContactManager.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Fixture.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Island.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2World.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2Joint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Rope\b2Rope.cpp" />
+    <ClCompile Include="..\..\source\collection\bitTables.cc" />
+    <ClCompile Include="..\..\source\collection\hashTable.cc" />
+    <ClCompile Include="..\..\source\collection\nameTags.cpp" />
+    <ClCompile Include="..\..\source\collection\undo.cc" />
+    <ClCompile Include="..\..\source\collection\vector.cc" />
+    <ClCompile Include="..\..\source\console\consoleBaseType.cc" />
+    <ClCompile Include="..\..\source\console\consoleDictionary.cc" />
+    <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\debug\profiler.cc" />
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc" />
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc" />
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBridge.cc" />
+    <ClCompile Include="..\..\source\debug\telnetDebugger.cc" />
+    <ClCompile Include="..\..\source\delegates\delegateSignal.cpp" />
+    <ClCompile Include="..\..\source\game\defaultGame.cc" />
+    <ClCompile Include="..\..\source\game\gameInterface.cc" />
+    <ClCompile Include="..\..\source\graphics\bitmapBmp.cc" />
+    <ClCompile Include="..\..\source\graphics\bitmapJpeg.cc" />
+    <ClCompile Include="..\..\source\graphics\bitmapPng.cc" />
+    <ClCompile Include="..\..\source\graphics\color.cc" />
+    <ClCompile Include="..\..\source\graphics\dgl.cc" />
+    <ClCompile Include="..\..\source\graphics\dglMatrix.cc" />
+    <ClCompile Include="..\..\source\graphics\DynamicTexture.cc" />
+    <ClCompile Include="..\..\source\graphics\gBitmap.cc" />
+    <ClCompile Include="..\..\source\graphics\gFont.cc" />
+    <ClCompile Include="..\..\source\graphics\gPalette.cc" />
+    <ClCompile Include="..\..\source\graphics\PNGImage.cpp" />
+    <ClCompile Include="..\..\source\graphics\splineUtil.cc" />
+    <ClCompile Include="..\..\source\graphics\TextureDictionary.cc" />
+    <ClCompile Include="..\..\source\graphics\TextureHandle.cc" />
+    <ClCompile Include="..\..\source\graphics\TextureManager.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiGridCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiArrayCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBackgroundCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBitmapBorderCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBitmapCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBubbleTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiCanvas.cc" />
+    <ClCompile Include="..\..\source\gui\guiColorPicker.cc" />
+    <ClCompile Include="..\..\source\gui\guiConsole.cc" />
+    <ClCompile Include="..\..\source\gui\guiConsoleEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiConsoleTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiControl.cc" />
+    <ClCompile Include="..\..\source\gui\guiDefaultControlRender.cc" />
+    <ClCompile Include="..\..\source\gui\guiFadeinBitmapCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiInputCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiListBoxCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMessageVectorCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMLTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMLTextEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMouseEventCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrlEx.cc" />
+    <ClCompile Include="..\..\source\gui\guiProgressCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiScriptNotifyControl.cc" />
+    <ClCompile Include="..\..\source\gui\guiSliderCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTabPageCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextEditSliderCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextListCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTickCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTreeViewCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTypes.cc" />
+    <ClCompile Include="..\..\source\gui\language\lang.cc" />
+    <ClCompile Include="..\..\source\gui\messageVector.cc" />
+    <ClCompile Include="..\..\source\input\actionMap.cc" />
+    <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\fileSystem_ScriptBinding.cc" />
+    <ClCompile Include="..\..\source\io\filterStream.cc" />
+    <ClCompile Include="..\..\source\io\memStream.cc" />
+    <ClCompile Include="..\..\source\io\nStream.cc" />
+    <ClCompile Include="..\..\source\io\resizeStream.cc" />
+    <ClCompile Include="..\..\source\io\resource\resourceDictionary.cc" />
+    <ClCompile Include="..\..\source\io\resource\resourceManager.cc" />
+    <ClCompile Include="..\..\source\io\streamObject.cc" />
+    <ClCompile Include="..\..\source\io\zip\centralDir.cc" />
+    <ClCompile Include="..\..\source\io\zip\compressor.cc" />
+    <ClCompile Include="..\..\source\io\zip\deflate.cc" />
+    <ClCompile Include="..\..\source\io\zip\extraField.cc" />
+    <ClCompile Include="..\..\source\io\zip\fileHeader.cc" />
+    <ClCompile Include="..\..\source\io\zip\stored.cc" />
+    <ClCompile Include="..\..\source\io\zip\zipArchive.cc" />
+    <ClCompile Include="..\..\source\io\zip\zipCryptStream.cc" />
+    <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_ScriptBinding.cc" />
+    <ClCompile Include="..\..\source\messaging\dispatcher.cc" />
+    <ClCompile Include="..\..\source\messaging\eventManager.cc" />
+    <ClCompile Include="..\..\source\messaging\message.cc" />
+    <ClCompile Include="..\..\source\messaging\messageForwarder.cc" />
+    <ClCompile Include="..\..\source\messaging\scriptMsgListener.cc" />
+    <ClCompile Include="..\..\source\module\moduleDefinition.cc" />
+    <ClCompile Include="..\..\source\module\moduleManager.cc" />
+    <ClCompile Include="..\..\source\module\moduleMergeDefinition.cc" />
+    <ClCompile Include="..\..\source\network\connectionProtocol.cc" />
+    <ClCompile Include="..\..\source\network\connectionStringTable.cc" />
+    <ClCompile Include="..\..\source\network\httpObject.cc" />
+    <ClCompile Include="..\..\source\network\netConnection.cc" />
+    <ClCompile Include="..\..\source\network\netDownload.cc" />
+    <ClCompile Include="..\..\source\network\netEvent.cc" />
+    <ClCompile Include="..\..\source\network\netGhost.cc" />
+    <ClCompile Include="..\..\source\network\netInterface.cc" />
+    <ClCompile Include="..\..\source\network\netObject.cc" />
+    <ClCompile Include="..\..\source\network\netStringTable.cc" />
+    <ClCompile Include="..\..\source\network\netTest.cc" />
+    <ClCompile Include="..\..\source\network\networkProcessList.cc" />
+    <ClCompile Include="..\..\source\network\RemoteCommandEvent.cc" />
+    <ClCompile Include="..\..\source\network\serverQuery.cc" />
+    <ClCompile Include="..\..\source\network\tcpObject.cc" />
+    <ClCompile Include="..\..\source\network\telnetConsole.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\binary\tamlBinaryReader.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\binary\tamlBinaryWriter.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONParser.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONReader.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONWriter.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\taml.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\tamlCustom.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\tamlWriteNode.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlParser.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlReader.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlWriter.cc" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinystr.cpp" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxml.cpp" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlerror.cpp" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlparser.cpp" />
+    <ClCompile Include="..\..\source\audio\audio.cc" />
+    <ClCompile Include="..\..\source\audio\audioBuffer.cc" />
+    <ClCompile Include="..\..\source\audio\audioDataBlock.cc" />
+    <ClCompile Include="..\..\source\audio\audioStreamSourceFactory.cc" />
+    <ClCompile Include="..\..\source\audio\wavStreamSource.cc" />
+    <ClCompile Include="..\..\source\component\dynamicConsoleMethodComponent.cpp" />
+    <ClCompile Include="..\..\source\component\simComponent.cpp" />
+    <ClCompile Include="..\..\source\component\behaviors\behaviorComponent.cpp" />
+    <ClCompile Include="..\..\source\component\behaviors\behaviorInstance.cpp" />
+    <ClCompile Include="..\..\source\component\behaviors\behaviorTemplate.cpp" />
+    <ClCompile Include="..\..\source\console\astAlloc.cc" />
+    <ClCompile Include="..\..\source\console\astNodes.cc" />
+    <ClCompile Include="..\..\source\console\cmdgram.cc" />
+    <ClCompile Include="..\..\source\console\CMDscan.cc" />
+    <ClCompile Include="..\..\source\console\codeBlock.cc" />
+    <ClCompile Include="..\..\source\console\compiledEval.cc" />
+    <ClCompile Include="..\..\source\console\compiler.cc" />
+    <ClCompile Include="..\..\source\console\console.cc" />
+    <ClCompile Include="..\..\source\console\consoleDoc.cc" />
+    <ClCompile Include="..\..\source\console\consoleFunctions.cc" />
+    <ClCompile Include="..\..\source\console\consoleLogger.cc" />
+    <ClCompile Include="..\..\source\console\consoleObject.cc" />
+    <ClCompile Include="..\..\source\console\consoleParser.cc" />
+    <ClCompile Include="..\..\source\console\consoleTypes.cc" />
+    <ClCompile Include="..\..\source\game\gameConnection.cc" />
+    <ClCompile Include="..\..\source\game\version.cc" />
+    <ClCompile Include="..\..\source\math\mathTypes.cc" />
+    <ClCompile Include="..\..\source\math\mathUtils.cc" />
+    <ClCompile Include="..\..\source\math\mBox.cc" />
+    <ClCompile Include="..\..\source\math\mMath_C.cc" />
+    <ClCompile Include="..\..\source\math\mMathAltivec.cc" />
+    <ClCompile Include="..\..\source\math\mMathAMD.cc" />
+    <ClCompile Include="..\..\source\math\mMathFn.cc" />
+    <ClCompile Include="..\..\source\math\mMathSSE.cc" />
+    <ClCompile Include="..\..\source\math\mMatrix.cc" />
+    <ClCompile Include="..\..\source\math\mPlaneTransformer.cc" />
+    <ClCompile Include="..\..\source\math\mQuadPatch.cc" />
+    <ClCompile Include="..\..\source\math\mQuat.cc" />
+    <ClCompile Include="..\..\source\math\mRandom.cc" />
+    <ClCompile Include="..\..\source\math\mSolver.cc" />
+    <ClCompile Include="..\..\source\math\mSplinePatch.cc" />
+    <ClCompile Include="..\..\source\persistence\SimXMLDocument.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32FileDialog.cc" />
+    <ClCompile Include="..\..\source\platform\CursorManager.cc" />
+    <ClCompile Include="..\..\source\platform\nativeDialogs\fileDialog.cc" />
+    <ClCompile Include="..\..\source\platform\platform.cc" />
+    <ClCompile Include="..\..\source\platform\platformAssert.cc" />
+    <ClCompile Include="..\..\source\platform\platformCPU.cc" />
+    <ClCompile Include="..\..\source\platform\platformFileIO.cc" />
+    <ClCompile Include="..\..\source\platform\platformFont.cc" />
+    <ClCompile Include="..\..\source\platform\platformMemory.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" />
+    <ClCompile Include="..\..\source\platform\nativeDialogs\msgBox.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\cardProfile.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\winAsmBlit.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winConsole.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winCPUInfo.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winDInputDevice.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winDirectInput.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winExec.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winFileio.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winFont.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winGL.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winGLSpecial.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winInput.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winMath.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winMath_ASM.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winMemory.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winNet.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winOGLVideo.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winOpenAL.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winProcessControl.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winSemaphore.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winStrings.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winTime.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winTLS.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winUser.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winVFS.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winVideo.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winWindow.cc" />
+    <ClCompile Include="..\..\source\platformWin32\menus\popupMenuWin32.cc" />
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32MsgBox.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\threads\mutex.cc" />
+    <ClCompile Include="..\..\source\platformWin32\threads\thread.cc" />
+    <ClCompile Include="..\..\source\platform\Tickable.cc" />
+    <ClCompile Include="..\..\source\sim\scriptGroup.cc" />
+    <ClCompile Include="..\..\source\sim\scriptObject.cc" />
+    <ClCompile Include="..\..\source\sim\simBase.cc" />
+    <ClCompile Include="..\..\source\sim\simConsoleEvent.cc" />
+    <ClCompile Include="..\..\source\sim\simConsoleThreadExecEvent.cc" />
+    <ClCompile Include="..\..\source\sim\simDatablock.cc" />
+    <ClCompile Include="..\..\source\sim\simDictionary.cc" />
+    <ClCompile Include="..\..\source\sim\simFieldDictionary.cc" />
+    <ClCompile Include="..\..\source\sim\simManager.cc" />
+    <ClCompile Include="..\..\source\sim\simObject.cc" />
+    <ClCompile Include="..\..\source\sim\SimObjectList.cc" />
+    <ClCompile Include="..\..\source\sim\simSerialize.cpp" />
+    <ClCompile Include="..\..\source\sim\simSet.cc" />
+    <ClCompile Include="..\..\source\string\findMatch.cc" />
+    <ClCompile Include="..\..\source\string\stringBuffer.cc" />
+    <ClCompile Include="..\..\source\string\stringStack.cc" />
+    <ClCompile Include="..\..\source\string\stringTable.cc" />
+    <ClCompile Include="..\..\source\string\stringUnit.cpp" />
+    <ClCompile Include="..\..\source\string\unicode.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiBorderButton.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonBaseCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiCheckBoxCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiIconButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiRadioCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiAutoScrollCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiCtrlArrayCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiDragAndDropCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiFormCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiFrameCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiPaneCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiRolloutCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiScrollCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiStackCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiTabBookCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiWindowCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiControlListPopup.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiDebugger.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiFilterCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiGraphCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiImageList.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiInspector.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiInspectorTypes.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiMenuBar.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiSeparatorCtrl.cc" />
+    <ClCompile Include="..\..\source\testing\tests\platformFileIoTests.cc" />
+    <ClCompile Include="..\..\source\testing\tests\platformMemoryTests.cc" />
+    <ClCompile Include="..\..\source\testing\tests\platformStringTests.cc" />
+    <ClCompile Include="..\..\source\testing\unitTesting.cc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset.h" />
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset.h" />
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetField.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetFieldCollection.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\controllers\core\SceneController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\PointForceController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\PointForceController_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\core\BatchRender.h" />
+    <ClInclude Include="..\..\source\2d\core\CoreMath.h" />
+    <ClInclude Include="..\..\source\2d\core\ImageFrameProvider.h" />
+    <ClInclude Include="..\..\source\2d\core\ImageFrameProviderCore.h" />
+    <ClInclude Include="..\..\source\2d\core\ParticleSystem.h" />
+    <ClInclude Include="..\..\source\2d\core\RenderProxy.h" />
+    <ClInclude Include="..\..\source\2d\core\RenderProxy_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBase.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBase_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBatch.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBatchItem.h" />
+    <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" />
+    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl_ScriptBindings.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiSceneObjectCtrl.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl_ScriptBindings.h" />
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow.h" />
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectList.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectMoveToEvent.h" />
+    <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" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\scene\ContactFilter.h" />
+    <ClInclude Include="..\..\source\2d\scene\DebugDraw.h" />
+    <ClInclude Include="..\..\source\2d\scene\DebugStats.h" />
+    <ClInclude Include="..\..\source\2d\scene\PhysicsProxy.h" />
+    <ClInclude Include="..\..\source\2d\scene\Scene.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderFactories.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderObject.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderQueue.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderRequest.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderState.h" />
+    <ClInclude Include="..\..\source\2d\scene\Scene_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\scene\WorldQuery.h" />
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryFilter.h" />
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryResult.h" />
+    <ClInclude Include="..\..\source\algorithm\crc.h" />
+    <ClInclude Include="..\..\source\algorithm\crctab.h" />
+    <ClInclude Include="..\..\source\algorithm\hashFunction.h" />
+    <ClInclude Include="..\..\source\algorithm\md5.h" />
+    <ClInclude Include="..\..\source\assets\assetBase.h" />
+    <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\assetDefinition.h" />
+    <ClInclude Include="..\..\source\assets\assetFieldTypes.h" />
+    <ClInclude Include="..\..\source\assets\assetManager.h" />
+    <ClInclude Include="..\..\source\assets\assetManager_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\assetPtr.h" />
+    <ClInclude Include="..\..\source\assets\assetQuery.h" />
+    <ClInclude Include="..\..\source\assets\assetQuery_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\assetTagsManifest.h" />
+    <ClInclude Include="..\..\source\assets\assetTagsManifest_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\declaredAssets.h" />
+    <ClInclude Include="..\..\source\assets\referencedAssets.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredUpdateVisitor.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredVisitor.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedUpdateVisitor.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedVisitor.h" />
+    <ClInclude Include="..\..\source\audio\AudioAsset.h" />
+    <ClInclude Include="..\..\source\box2d\Box2D.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2BroadPhase.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2Collision.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2Distance.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2DynamicTree.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2TimeOfImpact.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2Shape.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2BlockAllocator.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Draw.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2GrowableStack.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Math.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Settings.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2StackAllocator.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Timer.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Body.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2ContactManager.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Fixture.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Island.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2TimeStep.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2World.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2Joint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Rope\b2Rope.h" />
+    <ClInclude Include="..\..\source\collection\bitMatrix.h" />
+    <ClInclude Include="..\..\source\collection\bitSet.h" />
+    <ClInclude Include="..\..\source\collection\bitTables.h" />
+    <ClInclude Include="..\..\source\collection\bitVector.h" />
+    <ClInclude Include="..\..\source\collection\bitVectorW.h" />
+    <ClInclude Include="..\..\source\collection\findIterator.h" />
+    <ClInclude Include="..\..\source\collection\hashTable.h" />
+    <ClInclude Include="..\..\source\collection\linkedList.h" />
+    <ClInclude Include="..\..\source\collection\nameTags.h" />
+    <ClInclude Include="..\..\source\collection\nameTags_ScriptBinding.h" />
+    <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" />
+    <ClInclude Include="..\..\source\collection\vectorQueue.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponentRaiseEvent.h" />
+    <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\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" />
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase_ScriptBinding.h" />
+    <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" />
+    <ClInclude Include="..\..\source\gui\guiBackgroundCtrl.h" />
+    <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" />
+    <ClInclude Include="..\..\source\gui\guiMessageVectorCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiMLTextCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiMLTextEditCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiMouseEventCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrlEx.h" />
+    <ClInclude Include="..\..\source\gui\guiProgressCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiScriptNotifyControl.h" />
+    <ClInclude Include="..\..\source\gui\guiSliderCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTabPageCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextEditCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextEditSliderCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextListCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTickCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTreeViewCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTypes.h" />
+    <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" />
+    <ClInclude Include="..\..\source\io\zip\fileHeader.h" />
+    <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" />
+    <ClInclude Include="..\..\source\module\moduleDefinition_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\module\moduleManager.h" />
+    <ClInclude Include="..\..\source\module\moduleManager_ScriptBinding.h" />
+    <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" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\encodings.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filereadstream.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filestream.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filewritestream.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\pow10.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\stack.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\strfunc.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\prettywriter.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\rapidjson.h" />
+    <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" />
+    <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONReader.h" />
+    <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONWriter.h" />
+    <ClInclude Include="..\..\source\persistence\taml\taml.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlCallbacks.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlChildren.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlCustom.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlParser.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlVisitor.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlWriteNode.h" />
+    <ClInclude Include="..\..\source\persistence\taml\taml_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlParser.h" />
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlReader.h" />
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlWriter.h" />
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinystr.h" />
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinyxml.h" />
+    <ClInclude Include="..\..\source\audio\audio.h" />
+    <ClInclude Include="..\..\source\audio\audioBuffer.h" />
+    <ClInclude Include="..\..\source\audio\audioDataBlock.h" />
+    <ClInclude Include="..\..\source\audio\audioStreamSource.h" />
+    <ClInclude Include="..\..\source\audio\audioStreamSourceFactory.h" />
+    <ClInclude Include="..\..\source\audio\wavStreamSource.h" />
+    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent.h" />
+    <ClInclude Include="..\..\source\component\simComponent.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate.h" />
+    <ClInclude Include="..\..\source\console\ast.h" />
+    <ClInclude Include="..\..\source\console\astNodeSizes.h" />
+    <ClInclude Include="..\..\source\console\cmdgram.h" />
+    <ClInclude Include="..\..\source\console\codeBlock.h" />
+    <ClInclude Include="..\..\source\console\compiler.h" />
+    <ClInclude Include="..\..\source\console\console.h" />
+    <ClInclude Include="..\..\source\console\consoleDoc.h" />
+    <ClInclude Include="..\..\source\console\consoleLogger.h" />
+    <ClInclude Include="..\..\source\console\consoleObject.h" />
+    <ClInclude Include="..\..\source\console\consoleParser.h" />
+    <ClInclude Include="..\..\source\console\consoleTypes.h" />
+    <ClInclude Include="..\..\source\game\gameConnection.h" />
+    <ClInclude Include="..\..\source\game\resource.h" />
+    <ClInclude Include="..\..\source\game\version.h" />
+    <ClInclude Include="..\..\source\math\mathIO.h" />
+    <ClInclude Include="..\..\source\math\mathTypes.h" />
+    <ClInclude Include="..\..\source\math\mathUtils.h" />
+    <ClInclude Include="..\..\source\math\mBox.h" />
+    <ClInclude Include="..\..\source\math\mConstants.h" />
+    <ClInclude Include="..\..\source\math\mMath.h" />
+    <ClInclude Include="..\..\source\math\mMathFn.h" />
+    <ClInclude Include="..\..\source\math\mMatrix.h" />
+    <ClInclude Include="..\..\source\math\mPlane.h" />
+    <ClInclude Include="..\..\source\math\mPlaneTransformer.h" />
+    <ClInclude Include="..\..\source\math\mPoint.h" />
+    <ClInclude Include="..\..\source\math\mQuadPatch.h" />
+    <ClInclude Include="..\..\source\math\mQuat.h" />
+    <ClInclude Include="..\..\source\math\mRandom.h" />
+    <ClInclude Include="..\..\source\math\mRect.h" />
+    <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" />
+    <ClInclude Include="..\..\source\platform\platformInput_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platform\platformMath.h" />
+    <ClInclude Include="..\..\source\platform\platformMemory.h" />
+    <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" />
+    <ClInclude Include="..\..\source\platform\types.gcc.h" />
+    <ClInclude Include="..\..\source\platform\types.h" />
+    <ClInclude Include="..\..\source\platform\types.posix.h" />
+    <ClInclude Include="..\..\source\platform\types.ppc.h" />
+    <ClInclude Include="..\..\source\platform\types.visualc.h" />
+    <ClInclude Include="..\..\source\platform\types.win32.h" />
+    <ClInclude Include="..\..\source\platform\typesLinux.h" />
+    <ClInclude Include="..\..\source\platform\typesPPC.h" />
+    <ClInclude Include="..\..\source\platform\typesWin32.h" />
+    <ClInclude Include="..\..\source\platform\typesX86UNIX.h" />
+    <ClInclude Include="..\..\source\platform\menus\popupMenu.h" />
+    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog.h" />
+    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox.h" />
+    <ClInclude Include="..\..\source\platform\threads\mutex.h" />
+    <ClInclude Include="..\..\source\platform\threads\semaphore.h" />
+    <ClInclude Include="..\..\source\platform\threads\thread.h" />
+    <ClInclude Include="..\..\source\platformWin32\gl_types.h" />
+    <ClInclude Include="..\..\source\platformWin32\GLWinExtFunc.h" />
+    <ClInclude Include="..\..\source\platformWin32\GLWinFunc.h" />
+    <ClInclude Include="..\..\source\platformWin32\platformGL.h" />
+    <ClInclude Include="..\..\source\platformWin32\platformWin32.h" />
+    <ClInclude Include="..\..\source\platformWin32\VFSRes.h" />
+    <ClInclude Include="..\..\source\platformWin32\win32NPatch.h" />
+    <ClInclude Include="..\..\source\platformWin32\win_common_prefix.h" />
+    <ClInclude Include="..\..\source\platformWin32\win_debug_prefix.h" />
+    <ClInclude Include="..\..\source\platformWin32\win_release_prefix.h" />
+    <ClInclude Include="..\..\source\platformWin32\winConsole.h" />
+    <ClInclude Include="..\..\source\platformWin32\winDInputDevice.h" />
+    <ClInclude Include="..\..\source\platformWin32\winDirectInput.h" />
+    <ClInclude Include="..\..\source\platformWin32\winFont.h" />
+    <ClInclude Include="..\..\source\platformWin32\winOGLVideo.h" />
+    <ClInclude Include="..\..\source\platformWin32\winVideo.h" />
+    <ClInclude Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.h" />
+    <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" />
+    <ClInclude Include="..\..\source\sim\simObject.h" />
+    <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" />
+    <ClInclude Include="..\..\source\gui\buttons\guiButtonCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiCheckBoxCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiIconButtonCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiRadioCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiAutoScrollCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiCtrlArrayCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiDragAndDropCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiFormCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiFrameCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiPaneCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiRolloutCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiScrollCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiStackCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiTabBookCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiWindowCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiDebugger.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiEditCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiFilterCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiGraphCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiImageList.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiInspector.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiInspectorTypes.h" />
+    <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>
+    <CustomBuild Include="..\..\source\math\mMath_ASM.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathAMD_ASM.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathSSE_ASM.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\platform\platformCPUInfo.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="ljpeg.vcxproj">
+      <Project>{0b07ba94-aa53-4fd4-adb4-79ec2da53b36}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="lpng.vcxproj">
+      <Project>{af1179e3-a838-46a3-a427-1e62aa4c52f4}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="zlib.vcxproj">
+      <Project>{86cb2525-0cf3-40d3-bf42-a0a95035ee8c}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
 </Project>

+ 2999 - 2696
engine/compilers/VisualStudio 2010/Torque 2D.vcxproj.filters

@@ -1,2697 +1,3000 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="2d">
-      <UniqueIdentifier>{b90d3c2c-9694-4051-8b22-325c00d37951}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\assets">
-      <UniqueIdentifier>{57099cfd-2f9b-468f-88a5-df769a6235b0}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\sceneobject">
-      <UniqueIdentifier>{8b011278-0d15-4ba9-ba57-24056b918233}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\core">
-      <UniqueIdentifier>{b0a55e16-3a1f-4eb5-8f5b-3396d456be74}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\scene">
-      <UniqueIdentifier>{71933100-a4a2-464e-bb3f-bb04d9f078af}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\gui">
-      <UniqueIdentifier>{7824869e-4359-4413-a615-38c8534d641b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="algorithm">
-      <UniqueIdentifier>{baaa5934-0805-46eb-be6e-ae5643535b4b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="assets">
-      <UniqueIdentifier>{6a14bfc6-1f7c-4527-91d3-ccf897ff4002}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="audio">
-      <UniqueIdentifier>{bfd4849e-66c6-450b-9a01-0873aa28e21a}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d">
-      <UniqueIdentifier>{1f640da6-77a4-4176-a018-9bfad5becf95}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Collision">
-      <UniqueIdentifier>{4faf4110-842d-4178-81ca-0375f3804cac}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Collision\Shapes">
-      <UniqueIdentifier>{2f939a2b-3cd9-4e67-8311-bf751093f2a5}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Common">
-      <UniqueIdentifier>{84907fc2-76e8-4a3b-9df4-76451387d3f9}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Dynamics">
-      <UniqueIdentifier>{e2574a74-ff0d-401d-818d-96e6c155a4b4}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Dynamics\Contacts">
-      <UniqueIdentifier>{18c9fe85-da18-45d5-9573-a71ce9373961}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Dynamics\Joints">
-      <UniqueIdentifier>{4f9157b1-a024-450f-a352-1849cf2bddcc}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Rope">
-      <UniqueIdentifier>{14385fbb-f8af-4849-bdd9-8c8f67d3928e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="collection">
-      <UniqueIdentifier>{9ec04d21-b122-45be-bd70-2869fa9cdd8e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="component">
-      <UniqueIdentifier>{09cd4b77-b9b4-41f4-b17e-3ac25c27beee}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="component\behaviors">
-      <UniqueIdentifier>{47a0d755-122c-490b-b11c-d06a74fe2ab2}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="console">
-      <UniqueIdentifier>{ec2d3f1a-e3d1-49d5-98d6-a3084e37d077}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="debug">
-      <UniqueIdentifier>{b3b96a6a-462f-4c7d-92a5-009cabbe94a3}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="debug\remote">
-      <UniqueIdentifier>{d55ba677-1863-4206-92b7-1df94c48df84}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="delegates">
-      <UniqueIdentifier>{d016b107-aefd-41ac-a04c-6b75caaf114d}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="game">
-      <UniqueIdentifier>{d48f2bd5-39e5-4fdb-8472-79839fcd7e21}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="graphics">
-      <UniqueIdentifier>{187e7671-960f-49a7-898b-a10cf5900751}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="gui">
-      <UniqueIdentifier>{c17330c5-953e-4e71-9acb-1b7806b3c932}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="gui\buttons">
-      <UniqueIdentifier>{92e20c7c-410f-4df4-a9b9-7662dac44699}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="gui\containers">
-      <UniqueIdentifier>{513dc4d3-ba16-414a-8576-16b1dba4f6e8}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="gui\editor">
-      <UniqueIdentifier>{c48781cd-5e6a-4ffe-b866-e64582f00d6d}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="gui\language">
-      <UniqueIdentifier>{eee14c00-6a21-4fa8-9339-572a11819062}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="input">
-      <UniqueIdentifier>{fcfa64cc-dd46-41c1-9ada-8b4a15051285}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="io">
-      <UniqueIdentifier>{fa588b4f-a8dd-4615-beee-dab4db372118}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="io\zip">
-      <UniqueIdentifier>{27eea104-6e41-4cfb-bc50-56f9157081ce}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="io\resource">
-      <UniqueIdentifier>{0688e2d7-d313-4a35-b90d-1df191825361}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="math">
-      <UniqueIdentifier>{04e382a2-a0a9-40c9-b227-a46e345fb032}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="memory">
-      <UniqueIdentifier>{5c7d23f1-7194-4a6f-8bd3-fd5b6a0beb4f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="messaging">
-      <UniqueIdentifier>{66757e8b-c204-4b92-92ab-19278019d17d}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="module">
-      <UniqueIdentifier>{23024162-0d6f-4259-8dac-a3a621d55065}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="network">
-      <UniqueIdentifier>{c1b891be-db08-48e9-b52a-f0cf3bac185e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="persistence">
-      <UniqueIdentifier>{87703b23-784c-4769-b085-57c72b1b536e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="persistence\taml">
-      <UniqueIdentifier>{a2568a68-f396-4b3e-9ed6-bf73656752d3}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="persistence\tinyXML">
-      <UniqueIdentifier>{d13f86bc-f4dd-4329-8337-dd41e2db04a1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platform">
-      <UniqueIdentifier>{f5858e14-ed7e-4887-a22e-4123ab41a6f1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platform\menus">
-      <UniqueIdentifier>{a9dbe516-9ed6-43a6-987e-6f2bc6f59928}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platform\nativeDialogs">
-      <UniqueIdentifier>{d98ec67b-b10a-4c7b-bb2f-a6394a861b67}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platform\threads">
-      <UniqueIdentifier>{04d21b23-41a0-44a7-810e-f31c81fd5c81}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platformWin32">
-      <UniqueIdentifier>{3f7e4a0c-c3da-4972-a9bc-9cb0e0ce622e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platformWin32\menus">
-      <UniqueIdentifier>{d77ee12f-a922-4d39-9e6c-2ad87a5b4a4e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platformWin32\nativeDialogs">
-      <UniqueIdentifier>{9da3da8f-0660-4a53-b5cf-3994c2dca7e3}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platformWin32\threads">
-      <UniqueIdentifier>{78695f15-84c6-4505-a999-716fe79bdabe}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="sim">
-      <UniqueIdentifier>{e706ea06-aa20-4487-a010-e0d00adc658f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="string">
-      <UniqueIdentifier>{fa7e2f20-cd6d-4118-8a74-9f9c95119064}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="testing">
-      <UniqueIdentifier>{7b04617f-42ef-4238-9a98-9d8309b64c93}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="testing\tests">
-      <UniqueIdentifier>{57e1271d-4358-4180-b168-4b9c2cbac907}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\controllers">
-      <UniqueIdentifier>{9f1a4eec-8f4f-46f1-8af0-e442729cc71a}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\controllers\core">
-      <UniqueIdentifier>{6aeaed85-4546-4496-8415-72a392e830ba}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\experimental">
-      <UniqueIdentifier>{de8d0673-dfd7-468d-b793-4b0488132183}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\experimental\composites">
-      <UniqueIdentifier>{b250a30d-b6a9-48b5-9193-2b9bedf765ee}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\source\audio\audio.cc">
-      <Filter>audio</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\audio\audioBuffer.cc">
-      <Filter>audio</Filter>
-    </ClCompile>
-    <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>
-    <ClCompile Include="..\..\source\audio\wavStreamSource.cc">
-      <Filter>audio</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\component\dynamicConsoleMethodComponent.cpp">
-      <Filter>component</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\component\simComponent.cpp">
-      <Filter>component</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\component\behaviors\behaviorComponent.cpp">
-      <Filter>component\behaviors</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\component\behaviors\behaviorInstance.cpp">
-      <Filter>component\behaviors</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\component\behaviors\behaviorTemplate.cpp">
-      <Filter>component\behaviors</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\astAlloc.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\astNodes.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\cmdgram.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\CMDscan.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\codeBlock.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\compiledEval.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\compiler.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\console.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleDoc.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleFunctions.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleLogger.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleObject.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleParser.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleTypes.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\game\gameConnection.cc">
-      <Filter>game</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\game\version.cc">
-      <Filter>game</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mathTypes.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mathUtils.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <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>
-    <ClCompile Include="..\..\source\math\mMathAltivec.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mMathAMD.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mMathFn.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mMathSSE.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mMatrix.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mPlaneTransformer.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mQuadPatch.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mQuat.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mRandom.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mSolver.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mSplinePatch.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\SimXMLDocument.cpp">
-      <Filter>persistence</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\CursorManager.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platform.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformAssert.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformCPU.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformFileIO.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformMemory.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformString.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformVideo.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\menus\popupMenu.cc">
-      <Filter>platform\menus</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\nativeDialogs\msgBox.cpp">
-      <Filter>platform\nativeDialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\cardProfile.cpp">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winAsmBlit.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winConsole.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winCPUInfo.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winDInputDevice.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winDirectInput.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winExec.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winFileio.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winFont.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winGL.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winGLSpecial.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winInput.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winMath.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winMath_ASM.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winMemory.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winNet.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winOGLVideo.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winOpenAL.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winProcessControl.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winSemaphore.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winStrings.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winTime.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winTLS.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winUser.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winVFS.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winVideo.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winWindow.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\menus\popupMenuWin32.cc">
-      <Filter>platformWin32\menus</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.cpp">
-      <Filter>platformWin32\nativeDialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32MsgBox.cpp">
-      <Filter>platformWin32\nativeDialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\threads\mutex.cc">
-      <Filter>platformWin32\threads</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\threads\thread.cc">
-      <Filter>platformWin32\threads</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiBorderButton.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiButtonBaseCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiButtonCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiCheckBoxCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiIconButtonCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiRadioCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiAutoScrollCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiCtrlArrayCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiDragAndDropCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiFormCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiFrameCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiPaneCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiRolloutCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiScrollCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiStackCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiTabBookCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiWindowCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiControlListPopup.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiDebugger.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiEditCtrl.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiFilterCtrl.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiGraphCtrl.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiImageList.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiInspector.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiInspectorTypes.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiMenuBar.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiSeparatorCtrl.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2BroadPhase.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollideCircle.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollideEdge.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollidePolygon.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2Collision.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2Distance.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2DynamicTree.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2TimeOfImpact.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.cpp">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.cpp">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.cpp">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.cpp">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2BlockAllocator.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2Draw.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2Math.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2Settings.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2StackAllocator.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2Timer.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Body.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2ContactManager.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Fixture.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Island.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2World.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2Joint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Rope\b2Rope.cpp">
-      <Filter>box2d\Rope</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\taml.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlWriter.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlReader.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\module\moduleDefinition.cc">
-      <Filter>module</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\module\moduleManager.cc">
-      <Filter>module</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinystr.cpp">
-      <Filter>persistence\tinyXML</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxml.cpp">
-      <Filter>persistence\tinyXML</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlerror.cpp">
-      <Filter>persistence\tinyXML</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlparser.cpp">
-      <Filter>persistence\tinyXML</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryWriter.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryReader.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\module\moduleMergeDefinition.cc">
-      <Filter>module</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\assetManager.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\assetFieldTypes.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlParser.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\assetQuery.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\assetTagsManifest.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\assetBase.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\language\lang.cc">
-      <Filter>gui\language</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\bitmapBmp.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\bitmapJpeg.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\bitmapPng.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\dgl.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\dglMatrix.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\gBitmap.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\gPalette.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\splineUtil.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\messaging\dispatcher.cc">
-      <Filter>messaging</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\messaging\eventManager.cc">
-      <Filter>messaging</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\messaging\message.cc">
-      <Filter>messaging</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\messaging\messageForwarder.cc">
-      <Filter>messaging</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\messaging\scriptMsgListener.cc">
-      <Filter>messaging</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\game\defaultGame.cc">
-      <Filter>game</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\debug\profiler.cc">
-      <Filter>debug</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\rectClipper.cpp">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\input\actionMap.cc">
-      <Filter>input</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiArrayCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiBackgroundCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiBitmapBorderCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiBitmapCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiBubbleTextCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiCanvas.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiColorPicker.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiConsole.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiConsoleEditCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiConsoleTextCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiControl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiDefaultControlRender.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiFadeinBitmapCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiInputCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiListBoxCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiMessageVectorCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiMLTextCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiMLTextEditCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiMouseEventCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiPopUpCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiPopUpCtrlEx.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiProgressCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiScriptNotifyControl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiSliderCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTabPageCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTextCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTextEditCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTextEditSliderCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTextListCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTickCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTreeViewCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTypes.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\messageVector.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\PNGImage.cpp">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\collection\bitTables.cc">
-      <Filter>collection</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\collection\hashTable.cc">
-      <Filter>collection</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\collection\vector.cc">
-      <Filter>collection</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\bitStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\bufferStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\fileObject.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\fileStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\fileStreamObject.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\filterStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\memStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\nStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\resizeStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\streamObject.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\centralDir.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\compressor.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\extraField.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\fileHeader.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\zipArchive.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\zipCryptStream.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\zipObject.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\zipSubStream.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\zipTempStream.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\deflate.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\stored.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <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>
-    <ClCompile Include="..\..\source\algorithm\hashFunction.cc">
-      <Filter>algorithm</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\game\gameInterface.cc">
-      <Filter>game</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simBase.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simDictionary.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simManager.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simSerialize.cpp">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simSet.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\connectionStringTable.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\httpObject.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netConnection.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netDownload.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netEvent.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netGhost.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netInterface.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netObject.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netStringTable.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netTest.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\serverQuery.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <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>
-    <ClCompile Include="..\..\source\string\stringTable.cc">
-      <Filter>string</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\string\unicode.cc">
-      <Filter>string</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\string\findMatch.cc">
-      <Filter>string</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\string\stringUnit.cpp">
-      <Filter>string</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\resource\resourceDictionary.cc">
-      <Filter>io\resource</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\resource\resourceManager.cc">
-      <Filter>io\resource</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\collection\nameTags.cpp">
-      <Filter>collection</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\collection\undo.cc">
-      <Filter>collection</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\Tickable.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\telnetConsole.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\debug\telnetDebugger.cc">
-      <Filter>debug</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\string\stringStack.cc">
-      <Filter>string</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\connectionProtocol.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\RemoteCommandEvent.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\scriptObject.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\scriptGroup.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\SimObjectList.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simObject.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simFieldDictionary.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simConsoleEvent.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simConsoleThreadExecEvent.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simDatablock.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleBaseType.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\ConsoleTypeValidators.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleDictionary.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleExprEvalState.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleNamespace.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\audio\AudioAsset.cc">
-      <Filter>audio</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\TextureManager.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\TextureHandle.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\TextureDictionary.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\DynamicTexture.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlWriteNode.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\delegates\delegateSignal.cpp">
-      <Filter>delegates</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\AnimationAsset.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\ImageAsset.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\CompositeSprite.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObject.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\Scroller.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\ShapeVector.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\Sprite.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\Trigger.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\BatchRender.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\RenderProxy.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\SpriteBase.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\SpriteBatch.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\SpriteBatchItem.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\Utility.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\Vector2.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\ContactFilter.cc">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\DebugDraw.cc">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\Scene.cc">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\gui\guiImageButtonCtrl.cc">
-      <Filter>2d\gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\gui\guiSpriteCtrl.cc">
-      <Filter>2d\gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\gui\guiSceneObjectCtrl.cc">
-      <Filter>2d\gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\CoreMath.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\SceneRenderFactories.cpp">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\SceneRenderQueue.cpp">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\gui\SceneWindow.cc">
-      <Filter>2d\gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc">
-      <Filter>debug\remote</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBridge.cc">
-      <Filter>debug\remote</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc">
-      <Filter>debug\remote</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\gFont.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <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>
-    <ClCompile Include="..\..\source\testing\tests\platformFileIoTests.cc">
-      <Filter>testing\tests</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\testing\unitTesting.cc">
-      <Filter>testing</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\testing\tests\platformStringTests.cc">
-      <Filter>testing\tests</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\testing\tests\platformMemoryTests.cc">
-      <Filter>testing\tests</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\nativeDialogs\fileDialog.cc">
-      <Filter>platform\nativeDialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32FileDialog.cc">
-      <Filter>platformWin32\nativeDialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\color.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\ParticleAsset.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetEmitter.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetField.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetFieldCollection.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\ParticlePlayer.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\ParticleSystem.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\ImageFont.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\declaredAssets.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\referencedAssets.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlCustom.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectList.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectSet.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\controllers\AmbientForceController.cc">
-      <Filter>2d\controllers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\controllers\BuoyancyController.cc">
-      <Filter>2d\controllers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\controllers\PointForceController.cc">
-      <Filter>2d\controllers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\controllers\core\GroupedSceneController.cc">
-      <Filter>2d\controllers\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\controllers\core\PickingSceneController.cc">
-      <Filter>2d\controllers\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\SpriteBatchQuery.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\experimental\composites\WaveComposite.cc">
-      <Filter>2d\experimental\composites</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\ImageFrameProvider.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\ImageFrameProviderCore.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\source\audio\audio.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\audioBuffer.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\audioDataBlock.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\audioStreamSource.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\audioStreamSourceFactory.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\wavStreamSource.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent.h">
-      <Filter>component</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\simComponent.h">
-      <Filter>component</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\ast.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\astNodeSizes.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\cmdgram.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\codeBlock.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\compiler.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\console.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleDoc.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleLogger.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleObject.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleParser.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleTypes.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\gameConnection.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\resource.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\version.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mathIO.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mathTypes.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mathUtils.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mBox.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mConstants.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mMath.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mMathFn.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mMatrix.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mPlane.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mPlaneTransformer.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mPoint.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mQuadPatch.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mQuat.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mRandom.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mRect.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mSphere.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mSplinePatch.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\SimXMLDocument.h">
-      <Filter>persistence</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\event.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\GLCoreFunc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\GLExtFunc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\GLUFunc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platform.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformAL.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformAssert.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformAudio.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformFont.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformGL.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformInput.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformSemaphore.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformTLS.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformVFS.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformVideo.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.codewarrior.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.gcc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.posix.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.ppc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.visualc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.win32.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\typesLinux.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\typesPPC.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\typesWin32.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\typesX86UNIX.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\menus\popupMenu.h">
-      <Filter>platform\menus</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog.h">
-      <Filter>platform\nativeDialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox.h">
-      <Filter>platform\nativeDialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\threads\mutex.h">
-      <Filter>platform\threads</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\threads\semaphore.h">
-      <Filter>platform\threads</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\threads\thread.h">
-      <Filter>platform\threads</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\gl_types.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\GLWinExtFunc.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\GLWinFunc.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\platformGL.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\platformWin32.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\VFSRes.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\win32NPatch.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\win_common_prefix.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\win_debug_prefix.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\win_release_prefix.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winConsole.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winDInputDevice.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winDirectInput.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winFont.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winOGLVideo.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winVideo.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.h">
-      <Filter>platformWin32\nativeDialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiButtonBaseCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiButtonCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiCheckBoxCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiIconButtonCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiRadioCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiAutoScrollCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiCtrlArrayCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiDragAndDropCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiFormCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiFrameCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiPaneCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiRolloutCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiScrollCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiStackCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiTabBookCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiWindowCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiDebugger.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiEditCtrl.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiFilterCtrl.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiGraphCtrl.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiImageList.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiInspector.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiInspectorTypes.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiMenuBar.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiSeparatorCtrl.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Box2D.h">
-      <Filter>box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\b2BroadPhase.h">
-      <Filter>box2d\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\b2Collision.h">
-      <Filter>box2d\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\b2Distance.h">
-      <Filter>box2d\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\b2DynamicTree.h">
-      <Filter>box2d\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\b2TimeOfImpact.h">
-      <Filter>box2d\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.h">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.h">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.h">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.h">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2Shape.h">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2BlockAllocator.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2Draw.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2GrowableStack.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2Math.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2Settings.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2StackAllocator.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2Timer.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Body.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2ContactManager.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Fixture.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Island.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2TimeStep.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2World.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2Joint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Rope\b2Rope.h">
-      <Filter>box2d\Rope</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent_ScriptBinding.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance_ScriptBinding.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate_ScriptBinding.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorComponentRaiseEvent.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\taml.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlCallbacks.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\taml_ScriptBinding.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlWriter.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlReader.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleDefinition.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleManager.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleManager_ScriptBinding.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\tinyXML\tinystr.h">
-      <Filter>persistence\tinyXML</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\tinyXML\tinyxml.h">
-      <Filter>persistence\tinyXML</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryWriter.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryReader.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleDefinition_ScriptBinding.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleMergeDefinition.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetDefinition.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetManager.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetManager_ScriptBinding.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetFieldTypes.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlParser.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlVisitor.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\tamlAssetUpdateVisitor.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredVisitor.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\tamlAssetReferencedVisitor.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredUpdateVisitor.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\tamlAssetReferencedUpdateVisitor.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetQuery.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetQuery_ScriptBinding.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetPtr.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetTagsManifest.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetTagsManifest_ScriptBinding.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\tamlModuleIdUpdateVisitor.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleCallbacks.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetBase.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\language\lang.h">
-      <Filter>gui\language</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\dgl.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\gBitmap.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\gPalette.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\splineUtil.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\messaging\dispatcher.h">
-      <Filter>messaging</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\messaging\eventManager.h">
-      <Filter>messaging</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\messaging\message.h">
-      <Filter>messaging</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\messaging\messageForwarder.h">
-      <Filter>messaging</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\messaging\scriptMsgListener.h">
-      <Filter>messaging</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\defaultGame.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\profiler.h">
-      <Filter>debug</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\rectClipper.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\input\actionMap.h">
-      <Filter>input</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiArrayCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiBackgroundCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiBitmapCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiBubbleTextCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiCanvas.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiColorPicker.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiConsole.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiConsoleEditCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiConsoleTextCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiControl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiDefaultControlRender.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiInputCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiListBoxCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiMessageVectorCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiMLTextCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiMLTextEditCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiMouseEventCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiPopUpCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiPopUpCtrlEx.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiProgressCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiScriptNotifyControl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiSliderCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTabPageCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTextCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTextEditCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTextEditSliderCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTextListCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTickCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTreeViewCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTypes.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\messageVector.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\PNGImage.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\bitTables.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\bitVector.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\bitVectorW.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\hashTable.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\linkedList.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\simpleHashTable.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\sparseArray.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\vector.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\vector2d.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\vectorHeap.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\vectorQueue.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\bitStream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <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>
-    <ClInclude Include="..\..\source\io\fileStream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\fileStreamObject.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\filterStream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\memstream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\resizeStream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\stream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\streamObject.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\centralDir.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\compressor.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\extraField.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\fileHeader.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipArchive.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipCryptStream.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipObject.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipStatFilter.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipSubStream.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipTempStream.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\memory\dataChunker.h">
-      <Filter>memory</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\memory\frameAllocator.h">
-      <Filter>memory</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\findIterator.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\bitSet.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\algorithm\crc.h">
-      <Filter>algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\algorithm\crctab.h">
-      <Filter>algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\algorithm\hashFunction.h">
-      <Filter>algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\color.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\bitMatrix.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\gameInterface.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simBase.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simDictionary.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simSet.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\connectionStringTable.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\httpObject.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\netConnection.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\netInterface.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\netObject.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\netStringTable.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\serverQuery.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\tcpObject.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\stringBuffer.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\stringTable.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\unicode.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\findMatch.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\stringUnit.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\memory\safeDelete.h">
-      <Filter>memory</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\resource\resourceManager.h">
-      <Filter>io\resource</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\memory\factoryCache.h">
-      <Filter>memory</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\nameTags.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\nameTags_ScriptBinding.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\undo.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\Tickable.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\telnetConsole.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\telnetDebugger.h">
-      <Filter>debug</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\stringStack.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\connectionProtocol.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\scriptObject.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\scriptGroup.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\SimObjectList.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simObject.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simFieldDictionary.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simEvent.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simConsoleEvent.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simConsoleThreadExecEvent.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simObjectPtr.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simDatablock.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simDatablockGroup.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleBaseType.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\ConsoleTypeValidators.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleInternal.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleDictionary.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleExprEvalState.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleNamespace.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\AudioAsset.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\TextureManager.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\TextureObject.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\TextureHandle.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\TextureDictionary.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\DynamicTexture.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlWriteNode.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\delegates\delegate.h">
-      <Filter>delegates</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\delegates\FastDelegate.h">
-      <Filter>delegates</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\delegates\delegateSignal.h">
-      <Filter>delegates</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\AnimationAsset.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\AnimationAsset_ScriptBinding.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ImageAsset.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ImageAsset_ScriptBinding.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectMoveToEvent.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <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>
-    <ClInclude Include="..\..\source\2d\sceneobject\Scroller_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\Sprite.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\Sprite_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\Trigger.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\Trigger_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\BatchRender.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\RenderProxy.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\RenderProxy_ScriptBinding.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBase.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBase_ScriptBinding.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBatch.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBatchItem.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\Utility.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\Vector2.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\Vector2_ScriptBinding.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\ContactFilter.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\DebugDraw.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\DebugStats.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\PhysicsProxy.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\Scene.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\Scene_ScriptBinding.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderObject.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderQueue.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderRequest.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderState.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\WorldQuery.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl_ScriptBindings.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl_ScriptBindings.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\guiSceneObjectCtrl.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\CoreMath.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderFactories.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\WorldQueryFilter.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\WorldQueryResult.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\algorithm\md5.h">
-      <Filter>algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\SceneWindow.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\SceneWindow_ScriptBinding.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge_ScriptBinding.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1_ScriptBinding.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase_ScriptBinding.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\gFont.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformEndian.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformCPU.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformString.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformNetwork.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformMemory.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformMath.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformTimeManager.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platform_ScriptBinding.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\gameInterface_ScriptBinding.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\networkProcessList.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\testing\unitTesting.h">
-      <Filter>testing</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformFileIO.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformInput_ScriptBinding.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winWindow.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlChildren.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAsset.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAsset_ScriptBinding.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetField.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetFieldCollection.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter_ScriptBinding.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <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>
-    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\declaredAssets.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\referencedAssets.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlCustom.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simObjectTimerEvent.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectList.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectSet.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectSet_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController_ScriptBinding.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController_ScriptBinding.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\PointForceController.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\PointForceController_ScriptBinding.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController.h">
-      <Filter>2d\controllers\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController_ScriptBinding.h">
-      <Filter>2d\controllers\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController.h">
-      <Filter>2d\controllers\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController_ScriptBinding.h">
-      <Filter>2d\controllers\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\core\SceneController.h">
-      <Filter>2d\controllers\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBatchQuery.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBatchQueryResult.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite.h">
-      <Filter>2d\experimental\composites</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite_ScriptBinding.h">
-      <Filter>2d\experimental\composites</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\ImageFrameProvider.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\ImageFrameProviderCore.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuild Include="..\..\source\math\mMath_ASM.asm">
-      <Filter>math</Filter>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\math\mMathAMD_ASM.asm">
-      <Filter>math</Filter>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\math\mMathSSE_ASM.asm">
-      <Filter>math</Filter>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\platform\platformCPUInfo.asm">
-      <Filter>platform</Filter>
-    </CustomBuild>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="Torque 2D.rc" />
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="2d">
+      <UniqueIdentifier>{b90d3c2c-9694-4051-8b22-325c00d37951}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\assets">
+      <UniqueIdentifier>{57099cfd-2f9b-468f-88a5-df769a6235b0}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\sceneobject">
+      <UniqueIdentifier>{8b011278-0d15-4ba9-ba57-24056b918233}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\core">
+      <UniqueIdentifier>{b0a55e16-3a1f-4eb5-8f5b-3396d456be74}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\scene">
+      <UniqueIdentifier>{71933100-a4a2-464e-bb3f-bb04d9f078af}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\gui">
+      <UniqueIdentifier>{7824869e-4359-4413-a615-38c8534d641b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="algorithm">
+      <UniqueIdentifier>{baaa5934-0805-46eb-be6e-ae5643535b4b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="assets">
+      <UniqueIdentifier>{6a14bfc6-1f7c-4527-91d3-ccf897ff4002}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="audio">
+      <UniqueIdentifier>{bfd4849e-66c6-450b-9a01-0873aa28e21a}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d">
+      <UniqueIdentifier>{1f640da6-77a4-4176-a018-9bfad5becf95}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Collision">
+      <UniqueIdentifier>{4faf4110-842d-4178-81ca-0375f3804cac}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Collision\Shapes">
+      <UniqueIdentifier>{2f939a2b-3cd9-4e67-8311-bf751093f2a5}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Common">
+      <UniqueIdentifier>{84907fc2-76e8-4a3b-9df4-76451387d3f9}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Dynamics">
+      <UniqueIdentifier>{e2574a74-ff0d-401d-818d-96e6c155a4b4}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Dynamics\Contacts">
+      <UniqueIdentifier>{18c9fe85-da18-45d5-9573-a71ce9373961}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Dynamics\Joints">
+      <UniqueIdentifier>{4f9157b1-a024-450f-a352-1849cf2bddcc}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Rope">
+      <UniqueIdentifier>{14385fbb-f8af-4849-bdd9-8c8f67d3928e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="collection">
+      <UniqueIdentifier>{9ec04d21-b122-45be-bd70-2869fa9cdd8e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="component">
+      <UniqueIdentifier>{09cd4b77-b9b4-41f4-b17e-3ac25c27beee}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="component\behaviors">
+      <UniqueIdentifier>{47a0d755-122c-490b-b11c-d06a74fe2ab2}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="console">
+      <UniqueIdentifier>{ec2d3f1a-e3d1-49d5-98d6-a3084e37d077}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="debug">
+      <UniqueIdentifier>{b3b96a6a-462f-4c7d-92a5-009cabbe94a3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="debug\remote">
+      <UniqueIdentifier>{d55ba677-1863-4206-92b7-1df94c48df84}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="delegates">
+      <UniqueIdentifier>{d016b107-aefd-41ac-a04c-6b75caaf114d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="game">
+      <UniqueIdentifier>{d48f2bd5-39e5-4fdb-8472-79839fcd7e21}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="graphics">
+      <UniqueIdentifier>{187e7671-960f-49a7-898b-a10cf5900751}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui">
+      <UniqueIdentifier>{c17330c5-953e-4e71-9acb-1b7806b3c932}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\buttons">
+      <UniqueIdentifier>{92e20c7c-410f-4df4-a9b9-7662dac44699}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\containers">
+      <UniqueIdentifier>{513dc4d3-ba16-414a-8576-16b1dba4f6e8}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\editor">
+      <UniqueIdentifier>{c48781cd-5e6a-4ffe-b866-e64582f00d6d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\language">
+      <UniqueIdentifier>{eee14c00-6a21-4fa8-9339-572a11819062}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="input">
+      <UniqueIdentifier>{fcfa64cc-dd46-41c1-9ada-8b4a15051285}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="io">
+      <UniqueIdentifier>{fa588b4f-a8dd-4615-beee-dab4db372118}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="io\zip">
+      <UniqueIdentifier>{27eea104-6e41-4cfb-bc50-56f9157081ce}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="io\resource">
+      <UniqueIdentifier>{0688e2d7-d313-4a35-b90d-1df191825361}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="math">
+      <UniqueIdentifier>{04e382a2-a0a9-40c9-b227-a46e345fb032}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="memory">
+      <UniqueIdentifier>{5c7d23f1-7194-4a6f-8bd3-fd5b6a0beb4f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="messaging">
+      <UniqueIdentifier>{66757e8b-c204-4b92-92ab-19278019d17d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="module">
+      <UniqueIdentifier>{23024162-0d6f-4259-8dac-a3a621d55065}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="network">
+      <UniqueIdentifier>{c1b891be-db08-48e9-b52a-f0cf3bac185e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence">
+      <UniqueIdentifier>{87703b23-784c-4769-b085-57c72b1b536e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\taml">
+      <UniqueIdentifier>{a2568a68-f396-4b3e-9ed6-bf73656752d3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\tinyXML">
+      <UniqueIdentifier>{d13f86bc-f4dd-4329-8337-dd41e2db04a1}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform">
+      <UniqueIdentifier>{f5858e14-ed7e-4887-a22e-4123ab41a6f1}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform\menus">
+      <UniqueIdentifier>{a9dbe516-9ed6-43a6-987e-6f2bc6f59928}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform\nativeDialogs">
+      <UniqueIdentifier>{d98ec67b-b10a-4c7b-bb2f-a6394a861b67}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform\threads">
+      <UniqueIdentifier>{04d21b23-41a0-44a7-810e-f31c81fd5c81}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32">
+      <UniqueIdentifier>{3f7e4a0c-c3da-4972-a9bc-9cb0e0ce622e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32\menus">
+      <UniqueIdentifier>{d77ee12f-a922-4d39-9e6c-2ad87a5b4a4e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32\nativeDialogs">
+      <UniqueIdentifier>{9da3da8f-0660-4a53-b5cf-3994c2dca7e3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32\threads">
+      <UniqueIdentifier>{78695f15-84c6-4505-a999-716fe79bdabe}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="sim">
+      <UniqueIdentifier>{e706ea06-aa20-4487-a010-e0d00adc658f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="string">
+      <UniqueIdentifier>{fa7e2f20-cd6d-4118-8a74-9f9c95119064}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="testing">
+      <UniqueIdentifier>{7b04617f-42ef-4238-9a98-9d8309b64c93}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="testing\tests">
+      <UniqueIdentifier>{57e1271d-4358-4180-b168-4b9c2cbac907}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\controllers">
+      <UniqueIdentifier>{9f1a4eec-8f4f-46f1-8af0-e442729cc71a}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\controllers\core">
+      <UniqueIdentifier>{6aeaed85-4546-4496-8415-72a392e830ba}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\experimental">
+      <UniqueIdentifier>{de8d0673-dfd7-468d-b793-4b0488132183}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\experimental\composites">
+      <UniqueIdentifier>{b250a30d-b6a9-48b5-9193-2b9bedf765ee}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\rapidjson">
+      <UniqueIdentifier>{3b65e104-5a90-41e6-94d5-8449f4820a4f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\rapidjson\internal">
+      <UniqueIdentifier>{96dd2ca7-b93e-4b3d-8fc2-1b3b96f7df40}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\taml\binary">
+      <UniqueIdentifier>{ef91bcc8-f098-453d-b2ad-a16d85c7c07b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\taml\json">
+      <UniqueIdentifier>{4f1fa44b-dc63-45b7-8aef-37714133ac71}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\taml\xml">
+      <UniqueIdentifier>{e8f11d4b-6a54-4467-ae13-794ed56063f9}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\source\audio\audio.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\audioBuffer.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\audioDataBlock.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\audioStreamSourceFactory.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\wavStreamSource.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\dynamicConsoleMethodComponent.cpp">
+      <Filter>component</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\simComponent.cpp">
+      <Filter>component</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\behaviors\behaviorComponent.cpp">
+      <Filter>component\behaviors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\behaviors\behaviorInstance.cpp">
+      <Filter>component\behaviors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\behaviors\behaviorTemplate.cpp">
+      <Filter>component\behaviors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\astAlloc.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\astNodes.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\cmdgram.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\CMDscan.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\codeBlock.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\compiledEval.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\compiler.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\console.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleDoc.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleFunctions.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleLogger.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleObject.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleParser.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleTypes.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\gameConnection.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\version.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mathTypes.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mathUtils.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mBox.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMath_C.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathAltivec.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathAMD.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathFn.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathSSE.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMatrix.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mPlaneTransformer.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mQuadPatch.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mQuat.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mRandom.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mSolver.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mSplinePatch.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\SimXMLDocument.cpp">
+      <Filter>persistence</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\CursorManager.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platform.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformAssert.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformCPU.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformFileIO.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformMemory.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformString.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformVideo.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\menus\popupMenu.cc">
+      <Filter>platform\menus</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\nativeDialogs\msgBox.cpp">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\cardProfile.cpp">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winAsmBlit.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winConsole.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winCPUInfo.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winDInputDevice.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winDirectInput.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winExec.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winFileio.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winFont.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winGL.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winGLSpecial.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winInput.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winMath.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winMath_ASM.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winMemory.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winNet.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winOGLVideo.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winOpenAL.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winProcessControl.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winSemaphore.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winStrings.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winTime.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winTLS.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winUser.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winVFS.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winVideo.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winWindow.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\menus\popupMenuWin32.cc">
+      <Filter>platformWin32\menus</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.cpp">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32MsgBox.cpp">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\threads\mutex.cc">
+      <Filter>platformWin32\threads</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\threads\thread.cc">
+      <Filter>platformWin32\threads</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiBorderButton.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonBaseCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiCheckBoxCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiIconButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiRadioCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiAutoScrollCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiCtrlArrayCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiDragAndDropCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiFormCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiFrameCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiPaneCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiRolloutCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiScrollCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiStackCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiTabBookCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiWindowCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiControlListPopup.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiDebugger.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiEditCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiFilterCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiGraphCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiImageList.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiInspector.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiInspectorTypes.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiMenuBar.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiSeparatorCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2BroadPhase.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollideCircle.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollideEdge.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollidePolygon.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2Collision.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2Distance.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2DynamicTree.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2TimeOfImpact.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2BlockAllocator.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Draw.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Math.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Settings.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2StackAllocator.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Timer.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Body.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2ContactManager.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Fixture.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Island.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2World.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2Joint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Rope\b2Rope.cpp">
+      <Filter>box2d\Rope</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\taml.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\module\moduleDefinition.cc">
+      <Filter>module</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\module\moduleManager.cc">
+      <Filter>module</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinystr.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxml.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlerror.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlparser.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\module\moduleMergeDefinition.cc">
+      <Filter>module</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetManager.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetFieldTypes.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetQuery.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetTagsManifest.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetBase.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\language\lang.cc">
+      <Filter>gui\language</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\bitmapBmp.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\bitmapJpeg.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\bitmapPng.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\dgl.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\dglMatrix.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\gBitmap.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\gPalette.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\splineUtil.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\dispatcher.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\eventManager.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\message.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\messageForwarder.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\scriptMsgListener.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\defaultGame.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\profiler.cc">
+      <Filter>debug</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\rectClipper.cpp">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\input\actionMap.cc">
+      <Filter>input</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiArrayCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBackgroundCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBitmapBorderCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBitmapCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBubbleTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiCanvas.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiColorPicker.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiConsole.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiConsoleEditCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiConsoleTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiControl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiDefaultControlRender.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiFadeinBitmapCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiInputCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiListBoxCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMessageVectorCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMLTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMLTextEditCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMouseEventCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrlEx.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiProgressCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiScriptNotifyControl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiSliderCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTabPageCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextEditCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextEditSliderCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextListCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTickCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTreeViewCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTypes.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\messageVector.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\PNGImage.cpp">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\bitTables.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\hashTable.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\vector.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\bitStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\bufferStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\fileObject.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\fileStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\fileStreamObject.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\filterStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\memStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\nStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\resizeStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\streamObject.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\centralDir.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\compressor.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\extraField.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\fileHeader.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipArchive.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipCryptStream.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipObject.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipSubStream.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipTempStream.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\deflate.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\stored.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\memory\dataChunker.cc">
+      <Filter>memory</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\algorithm\crc.cc">
+      <Filter>algorithm</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\algorithm\hashFunction.cc">
+      <Filter>algorithm</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\gameInterface.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simBase.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simDictionary.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simManager.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simSerialize.cpp">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simSet.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\connectionStringTable.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\httpObject.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netConnection.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netDownload.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netEvent.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netGhost.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netInterface.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netObject.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netStringTable.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netTest.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\serverQuery.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\tcpObject.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringBuffer.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringTable.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\unicode.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\findMatch.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringUnit.cpp">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\resource\resourceDictionary.cc">
+      <Filter>io\resource</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\resource\resourceManager.cc">
+      <Filter>io\resource</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\nameTags.cpp">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\undo.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\Tickable.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\telnetConsole.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\telnetDebugger.cc">
+      <Filter>debug</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringStack.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\connectionProtocol.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\RemoteCommandEvent.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\scriptObject.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\scriptGroup.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\SimObjectList.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simObject.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simFieldDictionary.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simConsoleEvent.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simConsoleThreadExecEvent.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simDatablock.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleBaseType.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\ConsoleTypeValidators.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleDictionary.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleExprEvalState.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleNamespace.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\AudioAsset.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\TextureManager.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\TextureHandle.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\TextureDictionary.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\DynamicTexture.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\tamlWriteNode.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\delegates\delegateSignal.cpp">
+      <Filter>delegates</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\AnimationAsset.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ImageAsset.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\CompositeSprite.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObject.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\Scroller.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\ShapeVector.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\Sprite.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\Trigger.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\BatchRender.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\RenderProxy.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteBase.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteBatch.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteBatchItem.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\Utility.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\Vector2.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\ContactFilter.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\DebugDraw.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\Scene.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\guiImageButtonCtrl.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\guiSpriteCtrl.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\guiSceneObjectCtrl.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\CoreMath.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderFactories.cpp">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderQueue.cpp">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\SceneWindow.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc">
+      <Filter>debug\remote</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBridge.cc">
+      <Filter>debug\remote</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc">
+      <Filter>debug\remote</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\gFont.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformFont.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\networkProcessList.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\tests\platformFileIoTests.cc">
+      <Filter>testing\tests</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\unitTesting.cc">
+      <Filter>testing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\tests\platformStringTests.cc">
+      <Filter>testing\tests</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\tests\platformMemoryTests.cc">
+      <Filter>testing\tests</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\nativeDialogs\fileDialog.cc">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32FileDialog.cc">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\color.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAsset.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetEmitter.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetField.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetFieldCollection.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\ParticlePlayer.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\ParticleSystem.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\ImageFont.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\declaredAssets.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\referencedAssets.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\tamlCustom.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiGridCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectList.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectSet.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\controllers\AmbientForceController.cc">
+      <Filter>2d\controllers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\controllers\BuoyancyController.cc">
+      <Filter>2d\controllers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\controllers\PointForceController.cc">
+      <Filter>2d\controllers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\controllers\core\GroupedSceneController.cc">
+      <Filter>2d\controllers\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\controllers\core\PickingSceneController.cc">
+      <Filter>2d\controllers\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteBatchQuery.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\experimental\composites\WaveComposite.cc">
+      <Filter>2d\experimental\composites</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\ImageFrameProvider.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\ImageFrameProviderCore.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\binary\tamlBinaryReader.cc">
+      <Filter>persistence\taml\binary</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\binary\tamlBinaryWriter.cc">
+      <Filter>persistence\taml\binary</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONReader.cc">
+      <Filter>persistence\taml\json</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONWriter.cc">
+      <Filter>persistence\taml\json</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlParser.cc">
+      <Filter>persistence\taml\xml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlReader.cc">
+      <Filter>persistence\taml\xml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlWriter.cc">
+      <Filter>persistence\taml\xml</Filter>
+    </ClCompile>
+    <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>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\source\audio\audio.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioBuffer.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioDataBlock.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioStreamSource.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioStreamSourceFactory.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\wavStreamSource.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent.h">
+      <Filter>component</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\simComponent.h">
+      <Filter>component</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\ast.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\astNodeSizes.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\cmdgram.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\codeBlock.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\compiler.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\console.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleDoc.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleLogger.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleObject.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleParser.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleTypes.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\gameConnection.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\resource.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\version.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mathIO.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mathTypes.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mathUtils.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mBox.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mConstants.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mMath.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mMathFn.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mMatrix.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mPlane.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mPlaneTransformer.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mPoint.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mQuadPatch.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mQuat.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mRandom.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mRect.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mSphere.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mSplinePatch.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\SimXMLDocument.h">
+      <Filter>persistence</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\event.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\GLCoreFunc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\GLExtFunc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\GLUFunc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platform.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformAL.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformAssert.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformAudio.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformFont.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformGL.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformInput.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformSemaphore.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformTLS.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformVFS.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformVideo.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.codewarrior.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.gcc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.posix.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.ppc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.visualc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.win32.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesLinux.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesPPC.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesWin32.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesX86UNIX.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\menus\popupMenu.h">
+      <Filter>platform\menus</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog.h">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox.h">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\threads\mutex.h">
+      <Filter>platform\threads</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\threads\semaphore.h">
+      <Filter>platform\threads</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\threads\thread.h">
+      <Filter>platform\threads</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\gl_types.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\GLWinExtFunc.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\GLWinFunc.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\platformGL.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\platformWin32.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\VFSRes.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win32NPatch.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win_common_prefix.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win_debug_prefix.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win_release_prefix.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winConsole.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winDInputDevice.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winDirectInput.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winFont.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winOGLVideo.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winVideo.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.h">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiButtonBaseCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiCheckBoxCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiIconButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiRadioCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiAutoScrollCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiCtrlArrayCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiDragAndDropCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiFormCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiFrameCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiPaneCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiRolloutCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiScrollCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiStackCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiTabBookCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiWindowCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiDebugger.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiEditCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiFilterCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiGraphCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiImageList.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiInspector.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiInspectorTypes.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiMenuBar.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiSeparatorCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Box2D.h">
+      <Filter>box2d</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2BroadPhase.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2Collision.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2Distance.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2DynamicTree.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2TimeOfImpact.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2Shape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2BlockAllocator.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Draw.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2GrowableStack.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Math.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Settings.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2StackAllocator.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Timer.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Body.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2ContactManager.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Fixture.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Island.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2TimeStep.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2World.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2Joint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Rope\b2Rope.h">
+      <Filter>box2d\Rope</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent_ScriptBinding.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance_ScriptBinding.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate_ScriptBinding.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponentRaiseEvent.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\taml.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlCallbacks.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\taml_ScriptBinding.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleDefinition.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleManager.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleManager_ScriptBinding.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinystr.h">
+      <Filter>persistence\tinyXML</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinyxml.h">
+      <Filter>persistence\tinyXML</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleDefinition_ScriptBinding.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleMergeDefinition.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetDefinition.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetManager.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetManager_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetFieldTypes.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredUpdateVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedUpdateVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetQuery.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetQuery_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetPtr.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetTagsManifest.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetTagsManifest_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\tamlModuleIdUpdateVisitor.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleCallbacks.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetBase.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\language\lang.h">
+      <Filter>gui\language</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\dgl.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\gBitmap.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\gPalette.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\splineUtil.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\dispatcher.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\eventManager.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\message.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\messageForwarder.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\scriptMsgListener.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\defaultGame.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\profiler.h">
+      <Filter>debug</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\rectClipper.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\input\actionMap.h">
+      <Filter>input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiArrayCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiBackgroundCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiBitmapCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiBubbleTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiCanvas.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiColorPicker.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiConsole.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiConsoleEditCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiConsoleTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiControl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiDefaultControlRender.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiInputCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiListBoxCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMessageVectorCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMLTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMLTextEditCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMouseEventCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrlEx.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiProgressCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiScriptNotifyControl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiSliderCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTabPageCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextEditCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextEditSliderCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextListCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTickCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTreeViewCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTypes.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\messageVector.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\PNGImage.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitTables.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitVector.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitVectorW.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\hashTable.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\linkedList.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\simpleHashTable.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\sparseArray.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vector.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vector2d.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vectorHeap.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vectorQueue.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\bitStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <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>
+    <ClInclude Include="..\..\source\io\fileStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\fileStreamObject.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\filterStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\memstream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\resizeStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\stream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\streamObject.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\centralDir.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\compressor.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\extraField.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\fileHeader.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipArchive.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipCryptStream.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipObject.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipStatFilter.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipSubStream.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipTempStream.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\dataChunker.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\frameAllocator.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\findIterator.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitSet.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\crc.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\crctab.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\hashFunction.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\color.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitMatrix.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\gameInterface.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simBase.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simDictionary.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simSet.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\connectionStringTable.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\httpObject.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netConnection.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netInterface.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netObject.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netStringTable.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\serverQuery.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\tcpObject.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringBuffer.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringTable.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\unicode.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\findMatch.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringUnit.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\safeDelete.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\resource\resourceManager.h">
+      <Filter>io\resource</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\factoryCache.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\nameTags.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\nameTags_ScriptBinding.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\undo.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\Tickable.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\telnetConsole.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\telnetDebugger.h">
+      <Filter>debug</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringStack.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\connectionProtocol.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\scriptObject.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\scriptGroup.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\SimObjectList.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simObject.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simFieldDictionary.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simEvent.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simConsoleEvent.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simConsoleThreadExecEvent.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simObjectPtr.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simDatablock.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simDatablockGroup.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleBaseType.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\ConsoleTypeValidators.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleInternal.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleDictionary.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleExprEvalState.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleNamespace.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\AudioAsset.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureManager.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureObject.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureHandle.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureDictionary.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\DynamicTexture.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlWriteNode.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\delegates\delegate.h">
+      <Filter>delegates</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\delegates\FastDelegate.h">
+      <Filter>delegates</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\delegates\delegateSignal.h">
+      <Filter>delegates</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectMoveToEvent.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <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>
+    <ClInclude Include="..\..\source\2d\sceneobject\Scroller_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\BatchRender.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\RenderProxy.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\RenderProxy_ScriptBinding.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBase.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBase_ScriptBinding.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBatch.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBatchItem.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\Utility.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\Vector2.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\Vector2_ScriptBinding.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\ContactFilter.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\DebugDraw.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\DebugStats.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\PhysicsProxy.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\Scene.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\Scene_ScriptBinding.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderObject.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderQueue.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderRequest.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderState.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\WorldQuery.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl_ScriptBindings.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl_ScriptBindings.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiSceneObjectCtrl.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\CoreMath.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderFactories.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryFilter.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryResult.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\md5.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow_ScriptBinding.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge_ScriptBinding.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1_ScriptBinding.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase_ScriptBinding.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\gFont.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformEndian.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformCPU.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformString.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformNetwork.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformMemory.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformMath.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformTimeManager.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platform_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\gameInterface_ScriptBinding.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\networkProcessList.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\testing\unitTesting.h">
+      <Filter>testing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformFileIO.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformInput_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winWindow.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlChildren.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetField.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetFieldCollection.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <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>
+    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\declaredAssets.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\referencedAssets.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlCustom.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiGridCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simObjectTimerEvent.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectList.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectSet.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectSet_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController_ScriptBinding.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController_ScriptBinding.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\PointForceController.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\PointForceController_ScriptBinding.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController.h">
+      <Filter>2d\controllers\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController_ScriptBinding.h">
+      <Filter>2d\controllers\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController.h">
+      <Filter>2d\controllers\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController_ScriptBinding.h">
+      <Filter>2d\controllers\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\core\SceneController.h">
+      <Filter>2d\controllers\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBatchQuery.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBatchQueryResult.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite.h">
+      <Filter>2d\experimental\composites</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite_ScriptBinding.h">
+      <Filter>2d\experimental\composites</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\ImageFrameProvider.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\ImageFrameProviderCore.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\allocators.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\document.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\encodedstream.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\encodings.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filereadstream.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filestream.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filewritestream.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\prettywriter.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\rapidjson.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\reader.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\stringbuffer.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\writer.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\pow10.h">
+      <Filter>persistence\rapidjson\internal</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\stack.h">
+      <Filter>persistence\rapidjson\internal</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\strfunc.h">
+      <Filter>persistence\rapidjson\internal</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\binary\tamlBinaryReader.h">
+      <Filter>persistence\taml\binary</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\binary\tamlBinaryWriter.h">
+      <Filter>persistence\taml\binary</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONReader.h">
+      <Filter>persistence\taml\json</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONWriter.h">
+      <Filter>persistence\taml\json</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlParser.h">
+      <Filter>persistence\taml\xml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlReader.h">
+      <Filter>persistence\taml\xml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlWriter.h">
+      <Filter>persistence\taml\xml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlParser.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlVisitor.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <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>
+  </ItemGroup>
+  <ItemGroup>
+    <CustomBuild Include="..\..\source\math\mMath_ASM.asm">
+      <Filter>math</Filter>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathAMD_ASM.asm">
+      <Filter>math</Filter>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathSSE_ASM.asm">
+      <Filter>math</Filter>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\platform\platformCPUInfo.asm">
+      <Filter>platform</Filter>
+    </CustomBuild>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="Torque 2D.rc" />
+  </ItemGroup>
 </Project>
 </Project>

+ 46 - 46
engine/compilers/VisualStudio 2012/Torque 2D.sln

@@ -1,46 +1,46 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Express 2012 for Windows Desktop
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Torque2D", "Torque 2D.vcxproj", "{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ljpeg", "ljpeg.vcxproj", "{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lpng", "lpng.vcxproj", "{AF1179E3-A838-46A3-A427-1E62AA4C52F4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcxproj", "{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
-		Shipping|Win32 = Shipping|Win32
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Debug|Win32.Build.0 = Debug|Win32
-		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Release|Win32.ActiveCfg = Release|Win32
-		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Release|Win32.Build.0 = Release|Win32
-		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Shipping|Win32.ActiveCfg = Shipping|Win32
-		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Shipping|Win32.Build.0 = Shipping|Win32
-		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Debug|Win32.ActiveCfg = Debug|Win32
-		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Debug|Win32.Build.0 = Debug|Win32
-		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Release|Win32.ActiveCfg = Release|Win32
-		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Release|Win32.Build.0 = Release|Win32
-		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Shipping|Win32.ActiveCfg = Shipping|Win32
-		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Shipping|Win32.Build.0 = Shipping|Win32
-		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Debug|Win32.ActiveCfg = Debug|Win32
-		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Debug|Win32.Build.0 = Debug|Win32
-		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Release|Win32.ActiveCfg = Release|Win32
-		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Release|Win32.Build.0 = Release|Win32
-		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Shipping|Win32.ActiveCfg = Shipping|Win32
-		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Shipping|Win32.Build.0 = Shipping|Win32
-		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Debug|Win32.Build.0 = Debug|Win32
-		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Release|Win32.ActiveCfg = Release|Win32
-		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Release|Win32.Build.0 = Release|Win32
-		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Shipping|Win32.ActiveCfg = Shipping|Win32
-		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Shipping|Win32.Build.0 = Shipping|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Express 2012 for Windows Desktop
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Torque2D", "Torque 2D.vcxproj", "{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ljpeg", "ljpeg.vcxproj", "{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lpng", "lpng.vcxproj", "{AF1179E3-A838-46A3-A427-1E62AA4C52F4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcxproj", "{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+		Shipping|Win32 = Shipping|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Debug|Win32.ActiveCfg = Debug|Win32
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Debug|Win32.Build.0 = Debug|Win32
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Release|Win32.ActiveCfg = Release|Win32
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Release|Win32.Build.0 = Release|Win32
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Shipping|Win32.ActiveCfg = Shipping|Win32
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Shipping|Win32.Build.0 = Shipping|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Debug|Win32.Build.0 = Debug|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Release|Win32.ActiveCfg = Release|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Release|Win32.Build.0 = Release|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Shipping|Win32.ActiveCfg = Shipping|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Shipping|Win32.Build.0 = Shipping|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Debug|Win32.Build.0 = Debug|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Release|Win32.ActiveCfg = Release|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Release|Win32.Build.0 = Release|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Shipping|Win32.ActiveCfg = Shipping|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Shipping|Win32.Build.0 = Shipping|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Debug|Win32.Build.0 = Debug|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Release|Win32.ActiveCfg = Release|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Release|Win32.Build.0 = Release|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Shipping|Win32.ActiveCfg = Shipping|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Shipping|Win32.Build.0 = Shipping|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

+ 1220 - 1126
engine/compilers/VisualStudio 2012/Torque 2D.vcxproj

@@ -1,1127 +1,1221 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Shipping|Win32">
-      <Configuration>Shipping</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}</ProjectGuid>
-    <RootNamespace>TorqueGame</RootNamespace>
-    <ProjectName>Torque2D</ProjectName>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v110</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v110</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v110</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../Link/VC2012.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    </LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">../../../</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../Link/VC2012.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">../../Link/VC2012.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">false</LinkIncremental>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Torque2D_DEBUG</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Torque2D</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">Torque2D</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../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>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
-      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
-      <BrowseInformation>false</BrowseInformation>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <WarningLevel>Level3</WarningLevel>
-      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
-      <ShowIncludes>false</ShowIncludes>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-    <Link>
-      <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/unicode;../../lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <IgnoreSpecificDefaultLibraries>LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../source/testing/googleTest;../../source/testing/googleTest/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>UNICODE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
-      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
-      <BrowseInformation>false</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-    <Link>
-      <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;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <EnableUAC>false</EnableUAC>
-      <UACExecutionLevel>HighestAvailable</UACExecutionLevel>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-    <CustomBuildStep>
-      <Command>
-      </Command>
-    </CustomBuildStep>
-    <CustomBuildStep />
-    <CustomBuildStep>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">
-    <Midl>
-      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>TORQUE_SHIPPING;UNICODE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
-      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
-      <BrowseInformation>false</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-    <Link>
-      <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;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <EnableUAC>false</EnableUAC>
-      <UACExecutionLevel>HighestAvailable</UACExecutionLevel>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-    <CustomBuildStep>
-      <Command>
-      </Command>
-    </CustomBuildStep>
-    <CustomBuildStep />
-    <CustomBuildStep>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ResourceCompile Include="Torque 2D.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\source\2d\assets\AnimationAsset.cc" />
-    <ClCompile Include="..\..\source\2d\assets\ImageAsset.cc" />
-    <ClCompile Include="..\..\source\2d\assets\ParticleAsset.cc" />
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetEmitter.cc" />
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetField.cc" />
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetFieldCollection.cc" />
-    <ClCompile Include="..\..\source\2d\controllers\AmbientForceController.cc" />
-    <ClCompile Include="..\..\source\2d\controllers\core\GroupedSceneController.cc" />
-    <ClCompile Include="..\..\source\2d\controllers\core\PickingSceneController.cc" />
-    <ClCompile Include="..\..\source\2d\controllers\PointForceController.cc" />
-    <ClCompile Include="..\..\source\2d\controllers\BuoyancyController.cc" />
-    <ClCompile Include="..\..\source\2d\core\BatchRender.cc" />
-    <ClCompile Include="..\..\source\2d\core\CoreMath.cc" />
-    <ClCompile Include="..\..\source\2d\core\ImageFrameProvider.cc" />
-    <ClCompile Include="..\..\source\2d\core\ImageFrameProviderCore.cc" />
-    <ClCompile Include="..\..\source\2d\core\ParticleSystem.cc" />
-    <ClCompile Include="..\..\source\2d\core\RenderProxy.cc" />
-    <ClCompile Include="..\..\source\2d\core\SpriteBase.cc" />
-    <ClCompile Include="..\..\source\2d\core\SpriteBatch.cc" />
-    <ClCompile Include="..\..\source\2d\core\SpriteBatchItem.cc" />
-    <ClCompile Include="..\..\source\2d\core\SpriteBatchQuery.cc" />
-    <ClCompile Include="..\..\source\2d\core\Utility.cc" />
-    <ClCompile Include="..\..\source\2d\core\Vector2.cc" />
-    <ClCompile Include="..\..\source\2d\experimental\composites\WaveComposite.cc" />
-    <ClCompile Include="..\..\source\2d\gui\guiImageButtonCtrl.cc" />
-    <ClCompile Include="..\..\source\2d\gui\guiSceneObjectCtrl.cc" />
-    <ClCompile Include="..\..\source\2d\gui\guiSpriteCtrl.cc" />
-    <ClCompile Include="..\..\source\2d\gui\SceneWindow.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\CompositeSprite.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\ImageFont.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\ParticlePlayer.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObject.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectList.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectSet.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\Scroller.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\ShapeVector.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\Sprite.cc" />
-    <ClCompile Include="..\..\source\2d\sceneobject\Trigger.cc" />
-    <ClCompile Include="..\..\source\2d\scene\ContactFilter.cc" />
-    <ClCompile Include="..\..\source\2d\scene\DebugDraw.cc" />
-    <ClCompile Include="..\..\source\2d\scene\Scene.cc" />
-    <ClCompile Include="..\..\source\2d\scene\SceneRenderFactories.cpp" />
-    <ClCompile Include="..\..\source\2d\scene\SceneRenderQueue.cpp" />
-    <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc" />
-    <ClCompile Include="..\..\source\algorithm\crc.cc" />
-    <ClCompile Include="..\..\source\algorithm\hashFunction.cc" />
-    <ClCompile Include="..\..\source\assets\assetBase.cc" />
-    <ClCompile Include="..\..\source\assets\assetFieldTypes.cc" />
-    <ClCompile Include="..\..\source\assets\assetManager.cc" />
-    <ClCompile Include="..\..\source\assets\assetQuery.cc" />
-    <ClCompile Include="..\..\source\assets\assetTagsManifest.cc" />
-    <ClCompile Include="..\..\source\assets\declaredAssets.cc" />
-    <ClCompile Include="..\..\source\assets\referencedAssets.cc" />
-    <ClCompile Include="..\..\source\audio\AudioAsset.cc" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2BroadPhase.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollideCircle.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollideEdge.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollidePolygon.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2Collision.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2Distance.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2DynamicTree.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\b2TimeOfImpact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.cpp" />
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2BlockAllocator.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2Draw.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2Math.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2Settings.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2StackAllocator.cpp" />
-    <ClCompile Include="..\..\source\box2d\Common\b2Timer.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Body.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2ContactManager.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Fixture.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Island.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2World.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2Joint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.cpp" />
-    <ClCompile Include="..\..\source\box2d\Rope\b2Rope.cpp" />
-    <ClCompile Include="..\..\source\collection\bitTables.cc" />
-    <ClCompile Include="..\..\source\collection\hashTable.cc" />
-    <ClCompile Include="..\..\source\collection\nameTags.cpp" />
-    <ClCompile Include="..\..\source\collection\undo.cc" />
-    <ClCompile Include="..\..\source\collection\vector.cc" />
-    <ClCompile Include="..\..\source\console\consoleBaseType.cc" />
-    <ClCompile Include="..\..\source\console\consoleDictionary.cc" />
-    <ClCompile Include="..\..\source\console\consoleExprEvalState.cc" />
-    <ClCompile Include="..\..\source\console\consoleNamespace.cc" />
-    <ClCompile Include="..\..\source\console\ConsoleTypeValidators.cc" />
-    <ClCompile Include="..\..\source\debug\profiler.cc" />
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc" />
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc" />
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBridge.cc" />
-    <ClCompile Include="..\..\source\debug\telnetDebugger.cc" />
-    <ClCompile Include="..\..\source\delegates\delegateSignal.cpp" />
-    <ClCompile Include="..\..\source\game\defaultGame.cc" />
-    <ClCompile Include="..\..\source\game\gameInterface.cc" />
-    <ClCompile Include="..\..\source\graphics\bitmapBmp.cc" />
-    <ClCompile Include="..\..\source\graphics\bitmapJpeg.cc" />
-    <ClCompile Include="..\..\source\graphics\bitmapPng.cc" />
-    <ClCompile Include="..\..\source\graphics\color.cc" />
-    <ClCompile Include="..\..\source\graphics\dgl.cc" />
-    <ClCompile Include="..\..\source\graphics\dglMatrix.cc" />
-    <ClCompile Include="..\..\source\graphics\DynamicTexture.cc" />
-    <ClCompile Include="..\..\source\graphics\gBitmap.cc" />
-    <ClCompile Include="..\..\source\graphics\gFont.cc" />
-    <ClCompile Include="..\..\source\graphics\gPalette.cc" />
-    <ClCompile Include="..\..\source\graphics\PNGImage.cpp" />
-    <ClCompile Include="..\..\source\graphics\splineUtil.cc" />
-    <ClCompile Include="..\..\source\graphics\TextureDictionary.cc" />
-    <ClCompile Include="..\..\source\graphics\TextureHandle.cc" />
-    <ClCompile Include="..\..\source\graphics\TextureManager.cc" />
-    <ClCompile Include="..\..\source\gui\guiArrayCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiBackgroundCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiBitmapBorderCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiBitmapCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiBubbleTextCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiCanvas.cc" />
-    <ClCompile Include="..\..\source\gui\guiColorPicker.cc" />
-    <ClCompile Include="..\..\source\gui\guiConsole.cc" />
-    <ClCompile Include="..\..\source\gui\guiConsoleEditCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiConsoleTextCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiControl.cc" />
-    <ClCompile Include="..\..\source\gui\guiDefaultControlRender.cc" />
-    <ClCompile Include="..\..\source\gui\guiFadeinBitmapCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiInputCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiListBoxCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiMessageVectorCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiMLTextCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiMLTextEditCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiMouseEventCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiPopUpCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiPopUpCtrlEx.cc" />
-    <ClCompile Include="..\..\source\gui\guiProgressCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiScriptNotifyControl.cc" />
-    <ClCompile Include="..\..\source\gui\guiSliderCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTabPageCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTextCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTextEditCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTextEditSliderCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTextListCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTickCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTreeViewCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\guiTypes.cc" />
-    <ClCompile Include="..\..\source\gui\language\lang.cc" />
-    <ClCompile Include="..\..\source\gui\messageVector.cc" />
-    <ClCompile Include="..\..\source\input\actionMap.cc" />
-    <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\filterStream.cc" />
-    <ClCompile Include="..\..\source\io\memStream.cc" />
-    <ClCompile Include="..\..\source\io\nStream.cc" />
-    <ClCompile Include="..\..\source\io\resizeStream.cc" />
-    <ClCompile Include="..\..\source\io\resource\resourceDictionary.cc" />
-    <ClCompile Include="..\..\source\io\resource\resourceManager.cc" />
-    <ClCompile Include="..\..\source\io\streamObject.cc" />
-    <ClCompile Include="..\..\source\io\zip\centralDir.cc" />
-    <ClCompile Include="..\..\source\io\zip\compressor.cc" />
-    <ClCompile Include="..\..\source\io\zip\deflate.cc" />
-    <ClCompile Include="..\..\source\io\zip\extraField.cc" />
-    <ClCompile Include="..\..\source\io\zip\fileHeader.cc" />
-    <ClCompile Include="..\..\source\io\zip\stored.cc" />
-    <ClCompile Include="..\..\source\io\zip\zipArchive.cc" />
-    <ClCompile Include="..\..\source\io\zip\zipCryptStream.cc" />
-    <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\rectClipper.cpp" />
-    <ClCompile Include="..\..\source\memory\dataChunker.cc" />
-    <ClCompile Include="..\..\source\memory\frameAllocator.cc" />
-    <ClCompile Include="..\..\source\messaging\dispatcher.cc" />
-    <ClCompile Include="..\..\source\messaging\eventManager.cc" />
-    <ClCompile Include="..\..\source\messaging\message.cc" />
-    <ClCompile Include="..\..\source\messaging\messageForwarder.cc" />
-    <ClCompile Include="..\..\source\messaging\scriptMsgListener.cc" />
-    <ClCompile Include="..\..\source\module\moduleDefinition.cc" />
-    <ClCompile Include="..\..\source\module\moduleManager.cc" />
-    <ClCompile Include="..\..\source\module\moduleMergeDefinition.cc" />
-    <ClCompile Include="..\..\source\network\connectionProtocol.cc" />
-    <ClCompile Include="..\..\source\network\connectionStringTable.cc" />
-    <ClCompile Include="..\..\source\network\httpObject.cc" />
-    <ClCompile Include="..\..\source\network\netConnection.cc" />
-    <ClCompile Include="..\..\source\network\netDownload.cc" />
-    <ClCompile Include="..\..\source\network\netEvent.cc" />
-    <ClCompile Include="..\..\source\network\netGhost.cc" />
-    <ClCompile Include="..\..\source\network\netInterface.cc" />
-    <ClCompile Include="..\..\source\network\netObject.cc" />
-    <ClCompile Include="..\..\source\network\netStringTable.cc" />
-    <ClCompile Include="..\..\source\network\netTest.cc" />
-    <ClCompile Include="..\..\source\network\networkProcessList.cc" />
-    <ClCompile Include="..\..\source\network\RemoteCommandEvent.cc" />
-    <ClCompile Include="..\..\source\network\serverQuery.cc" />
-    <ClCompile Include="..\..\source\network\tcpObject.cc" />
-    <ClCompile Include="..\..\source\network\telnetConsole.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\taml.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryReader.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryWriter.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlCustom.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlWriteNode.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlParser.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlReader.cc" />
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlWriter.cc" />
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinystr.cpp" />
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxml.cpp" />
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlerror.cpp" />
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlparser.cpp" />
-    <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" />
-    <ClCompile Include="..\..\source\component\simComponent.cpp" />
-    <ClCompile Include="..\..\source\component\behaviors\behaviorComponent.cpp" />
-    <ClCompile Include="..\..\source\component\behaviors\behaviorInstance.cpp" />
-    <ClCompile Include="..\..\source\component\behaviors\behaviorTemplate.cpp" />
-    <ClCompile Include="..\..\source\console\astAlloc.cc" />
-    <ClCompile Include="..\..\source\console\astNodes.cc" />
-    <ClCompile Include="..\..\source\console\cmdgram.cc" />
-    <ClCompile Include="..\..\source\console\CMDscan.cc" />
-    <ClCompile Include="..\..\source\console\codeBlock.cc" />
-    <ClCompile Include="..\..\source\console\compiledEval.cc" />
-    <ClCompile Include="..\..\source\console\compiler.cc" />
-    <ClCompile Include="..\..\source\console\console.cc" />
-    <ClCompile Include="..\..\source\console\consoleDoc.cc" />
-    <ClCompile Include="..\..\source\console\consoleFunctions.cc" />
-    <ClCompile Include="..\..\source\console\consoleLogger.cc" />
-    <ClCompile Include="..\..\source\console\consoleObject.cc" />
-    <ClCompile Include="..\..\source\console\consoleParser.cc" />
-    <ClCompile Include="..\..\source\console\consoleTypes.cc" />
-    <ClCompile Include="..\..\source\game\gameConnection.cc" />
-    <ClCompile Include="..\..\source\game\version.cc" />
-    <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" />
-    <ClCompile Include="..\..\source\math\mMathFn.cc" />
-    <ClCompile Include="..\..\source\math\mMathSSE.cc" />
-    <ClCompile Include="..\..\source\math\mMatrix.cc" />
-    <ClCompile Include="..\..\source\math\mPlaneTransformer.cc" />
-    <ClCompile Include="..\..\source\math\mQuadPatch.cc" />
-    <ClCompile Include="..\..\source\math\mQuat.cc" />
-    <ClCompile Include="..\..\source\math\mRandom.cc" />
-    <ClCompile Include="..\..\source\math\mSolver.cc" />
-    <ClCompile Include="..\..\source\math\mSplinePatch.cc" />
-    <ClCompile Include="..\..\source\persistence\SimXMLDocument.cpp" />
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32FileDialog.cc" />
-    <ClCompile Include="..\..\source\platform\CursorManager.cc" />
-    <ClCompile Include="..\..\source\platform\nativeDialogs\fileDialog.cc" />
-    <ClCompile Include="..\..\source\platform\platform.cc" />
-    <ClCompile Include="..\..\source\platform\platformAssert.cc" />
-    <ClCompile Include="..\..\source\platform\platformCPU.cc" />
-    <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\platformString.cc" />
-    <ClCompile Include="..\..\source\platform\platformVideo.cc" />
-    <ClCompile Include="..\..\source\platform\menus\popupMenu.cc" />
-    <ClCompile Include="..\..\source\platform\nativeDialogs\msgBox.cpp" />
-    <ClCompile Include="..\..\source\platformWin32\cardProfile.cpp" />
-    <ClCompile Include="..\..\source\platformWin32\winAsmBlit.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winConsole.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winCPUInfo.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winDInputDevice.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winDirectInput.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winExec.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winFileio.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winFont.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winGL.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winGLSpecial.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winInput.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winMath.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winMath_ASM.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winMemory.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winNet.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winOGLVideo.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winOpenAL.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winProcessControl.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winSemaphore.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winStrings.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winTime.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winTLS.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winUser.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winVFS.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winVideo.cc" />
-    <ClCompile Include="..\..\source\platformWin32\winWindow.cc" />
-    <ClCompile Include="..\..\source\platformWin32\menus\popupMenuWin32.cc" />
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.cpp" />
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32MsgBox.cpp" />
-    <ClCompile Include="..\..\source\platformWin32\threads\mutex.cc" />
-    <ClCompile Include="..\..\source\platformWin32\threads\thread.cc" />
-    <ClCompile Include="..\..\source\platform\Tickable.cc" />
-    <ClCompile Include="..\..\source\sim\scriptGroup.cc" />
-    <ClCompile Include="..\..\source\sim\scriptObject.cc" />
-    <ClCompile Include="..\..\source\sim\simBase.cc" />
-    <ClCompile Include="..\..\source\sim\simConsoleEvent.cc" />
-    <ClCompile Include="..\..\source\sim\simConsoleThreadExecEvent.cc" />
-    <ClCompile Include="..\..\source\sim\simDatablock.cc" />
-    <ClCompile Include="..\..\source\sim\simDictionary.cc" />
-    <ClCompile Include="..\..\source\sim\simFieldDictionary.cc" />
-    <ClCompile Include="..\..\source\sim\simManager.cc" />
-    <ClCompile Include="..\..\source\sim\simObject.cc" />
-    <ClCompile Include="..\..\source\sim\SimObjectList.cc" />
-    <ClCompile Include="..\..\source\sim\simSerialize.cpp" />
-    <ClCompile Include="..\..\source\sim\simSet.cc" />
-    <ClCompile Include="..\..\source\string\findMatch.cc" />
-    <ClCompile Include="..\..\source\string\stringBuffer.cc" />
-    <ClCompile Include="..\..\source\string\stringStack.cc" />
-    <ClCompile Include="..\..\source\string\stringTable.cc" />
-    <ClCompile Include="..\..\source\string\stringUnit.cpp" />
-    <ClCompile Include="..\..\source\string\unicode.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiBorderButton.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiButtonBaseCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiButtonCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiCheckBoxCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiIconButtonCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiRadioCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiAutoScrollCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiCtrlArrayCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiDragAndDropCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiFormCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiFrameCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiPaneCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiRolloutCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiScrollCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiStackCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiTabBookCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\containers\guiWindowCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiControlListPopup.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiDebugger.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiEditCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiFilterCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiGraphCtrl.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiImageList.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiInspector.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiInspectorTypes.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiMenuBar.cc" />
-    <ClCompile Include="..\..\source\gui\editor\guiSeparatorCtrl.cc" />
-    <ClCompile Include="..\..\source\testing\tests\platformFileIoTests.cc" />
-    <ClCompile Include="..\..\source\testing\tests\platformMemoryTests.cc" />
-    <ClCompile Include="..\..\source\testing\tests\platformStringTests.cc" />
-    <ClCompile Include="..\..\source\testing\unitTesting.cc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\source\2d\assets\AnimationAsset.h" />
-    <ClInclude Include="..\..\source\2d\assets\AnimationAsset_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\assets\ImageAsset.h" />
-    <ClInclude Include="..\..\source\2d\assets\ImageAsset_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAsset.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetField.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetFieldCollection.h" />
-    <ClInclude Include="..\..\source\2d\assets\ParticleAsset_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\controllers\core\SceneController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\PointForceController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\PointForceController_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController.h" />
-    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\core\BatchRender.h" />
-    <ClInclude Include="..\..\source\2d\core\CoreMath.h" />
-    <ClInclude Include="..\..\source\2d\core\ImageFrameProvider.h" />
-    <ClInclude Include="..\..\source\2d\core\ImageFrameProviderCore.h" />
-    <ClInclude Include="..\..\source\2d\core\ParticleSystem.h" />
-    <ClInclude Include="..\..\source\2d\core\RenderProxy.h" />
-    <ClInclude Include="..\..\source\2d\core\RenderProxy_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\core\SpriteBase.h" />
-    <ClInclude Include="..\..\source\2d\core\SpriteBase_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\core\SpriteBatch.h" />
-    <ClInclude Include="..\..\source\2d\core\SpriteBatchItem.h" />
-    <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\Vector2.h" />
-    <ClInclude Include="..\..\source\2d\core\Vector2_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite.h" />
-    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl.h" />
-    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl_ScriptBindings.h" />
-    <ClInclude Include="..\..\source\2d\gui\guiSceneObjectCtrl.h" />
-    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl.h" />
-    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl_ScriptBindings.h" />
-    <ClInclude Include="..\..\source\2d\gui\SceneWindow.h" />
-    <ClInclude Include="..\..\source\2d\gui\SceneWindow_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectList.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectMoveToEvent.h" />
-    <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\SceneObject_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\Scroller.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\Scroller_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\Sprite.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\Sprite_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\Trigger.h" />
-    <ClInclude Include="..\..\source\2d\sceneobject\Trigger_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\scene\ContactFilter.h" />
-    <ClInclude Include="..\..\source\2d\scene\DebugDraw.h" />
-    <ClInclude Include="..\..\source\2d\scene\DebugStats.h" />
-    <ClInclude Include="..\..\source\2d\scene\PhysicsProxy.h" />
-    <ClInclude Include="..\..\source\2d\scene\Scene.h" />
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderFactories.h" />
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderObject.h" />
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderQueue.h" />
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderRequest.h" />
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderState.h" />
-    <ClInclude Include="..\..\source\2d\scene\Scene_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\2d\scene\WorldQuery.h" />
-    <ClInclude Include="..\..\source\2d\scene\WorldQueryFilter.h" />
-    <ClInclude Include="..\..\source\2d\scene\WorldQueryResult.h" />
-    <ClInclude Include="..\..\source\algorithm\crc.h" />
-    <ClInclude Include="..\..\source\algorithm\crctab.h" />
-    <ClInclude Include="..\..\source\algorithm\hashFunction.h" />
-    <ClInclude Include="..\..\source\algorithm\md5.h" />
-    <ClInclude Include="..\..\source\assets\assetBase.h" />
-    <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\assets\assetDefinition.h" />
-    <ClInclude Include="..\..\source\assets\assetFieldTypes.h" />
-    <ClInclude Include="..\..\source\assets\assetManager.h" />
-    <ClInclude Include="..\..\source\assets\assetManager_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\assets\assetPtr.h" />
-    <ClInclude Include="..\..\source\assets\assetQuery.h" />
-    <ClInclude Include="..\..\source\assets\assetQuery_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\assets\assetTagsManifest.h" />
-    <ClInclude Include="..\..\source\assets\assetTagsManifest_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\assets\declaredAssets.h" />
-    <ClInclude Include="..\..\source\assets\referencedAssets.h" />
-    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredUpdateVisitor.h" />
-    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredVisitor.h" />
-    <ClInclude Include="..\..\source\assets\tamlAssetReferencedUpdateVisitor.h" />
-    <ClInclude Include="..\..\source\assets\tamlAssetReferencedVisitor.h" />
-    <ClInclude Include="..\..\source\assets\tamlAssetUpdateVisitor.h" />
-    <ClInclude Include="..\..\source\audio\AudioAsset.h" />
-    <ClInclude Include="..\..\source\box2d\Box2D.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\b2BroadPhase.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\b2Collision.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\b2Distance.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\b2DynamicTree.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\b2TimeOfImpact.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.h" />
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2Shape.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2BlockAllocator.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2Draw.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2GrowableStack.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2Math.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2Settings.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2StackAllocator.h" />
-    <ClInclude Include="..\..\source\box2d\Common\b2Timer.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Body.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2ContactManager.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Fixture.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Island.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2TimeStep.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2World.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2Joint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.h" />
-    <ClInclude Include="..\..\source\box2d\Rope\b2Rope.h" />
-    <ClInclude Include="..\..\source\collection\bitMatrix.h" />
-    <ClInclude Include="..\..\source\collection\bitSet.h" />
-    <ClInclude Include="..\..\source\collection\bitTables.h" />
-    <ClInclude Include="..\..\source\collection\bitVector.h" />
-    <ClInclude Include="..\..\source\collection\bitVectorW.h" />
-    <ClInclude Include="..\..\source\collection\findIterator.h" />
-    <ClInclude Include="..\..\source\collection\hashTable.h" />
-    <ClInclude Include="..\..\source\collection\linkedList.h" />
-    <ClInclude Include="..\..\source\collection\nameTags.h" />
-    <ClInclude Include="..\..\source\collection\nameTags_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\collection\simpleHashTable.h" />
-    <ClInclude Include="..\..\source\collection\sparseArray.h" />
-    <ClInclude Include="..\..\source\collection\undo.h" />
-    <ClInclude Include="..\..\source\collection\vector.h" />
-    <ClInclude Include="..\..\source\collection\vector2d.h" />
-    <ClInclude Include="..\..\source\collection\vectorHeap.h" />
-    <ClInclude Include="..\..\source\collection\vectorQueue.h" />
-    <ClInclude Include="..\..\source\component\behaviors\behaviorComponentRaiseEvent.h" />
-    <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\console\consoleBaseType.h" />
-    <ClInclude Include="..\..\source\console\consoleDictionary.h" />
-    <ClInclude Include="..\..\source\console\consoleExprEvalState.h" />
-    <ClInclude Include="..\..\source\console\consoleInternal.h" />
-    <ClInclude Include="..\..\source\console\consoleNamespace.h" />
-    <ClInclude Include="..\..\source\console\ConsoleTypeValidators.h" />
-    <ClInclude Include="..\..\source\debug\profiler.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge.h" />
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\debug\telnetDebugger.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\gameInterface.h" />
-    <ClInclude Include="..\..\source\game\gameInterface_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\graphics\color.h" />
-    <ClInclude Include="..\..\source\graphics\dgl.h" />
-    <ClInclude Include="..\..\source\graphics\DynamicTexture.h" />
-    <ClInclude Include="..\..\source\graphics\gBitmap.h" />
-    <ClInclude Include="..\..\source\graphics\gFont.h" />
-    <ClInclude Include="..\..\source\graphics\gPalette.h" />
-    <ClInclude Include="..\..\source\graphics\PNGImage.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\TextureObject.h" />
-    <ClInclude Include="..\..\source\gui\guiArrayCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiBackgroundCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiBitmapCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiBubbleTextCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiCanvas.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\guiDefaultControlRender.h" />
-    <ClInclude Include="..\..\source\gui\guiInputCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiListBoxCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiMessageVectorCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiMLTextCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiMLTextEditCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiMouseEventCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiPopUpCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiPopUpCtrlEx.h" />
-    <ClInclude Include="..\..\source\gui\guiProgressCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiScriptNotifyControl.h" />
-    <ClInclude Include="..\..\source\gui\guiSliderCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTabPageCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTextCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTextEditCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTextEditSliderCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTextListCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTickCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTreeViewCtrl.h" />
-    <ClInclude Include="..\..\source\gui\guiTypes.h" />
-    <ClInclude Include="..\..\source\gui\language\lang.h" />
-    <ClInclude Include="..\..\source\gui\messageVector.h" />
-    <ClInclude Include="..\..\source\input\actionMap.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\fileStream.h" />
-    <ClInclude Include="..\..\source\io\fileStreamObject.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\stream.h" />
-    <ClInclude Include="..\..\source\io\streamObject.h" />
-    <ClInclude Include="..\..\source\io\zip\centralDir.h" />
-    <ClInclude Include="..\..\source\io\zip\compressor.h" />
-    <ClInclude Include="..\..\source\io\zip\extraField.h" />
-    <ClInclude Include="..\..\source\io\zip\fileHeader.h" />
-    <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\zipStatFilter.h" />
-    <ClInclude Include="..\..\source\io\zip\zipSubStream.h" />
-    <ClInclude Include="..\..\source\io\zip\zipTempStream.h" />
-    <ClInclude Include="..\..\source\math\rectClipper.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\eventManager.h" />
-    <ClInclude Include="..\..\source\messaging\message.h" />
-    <ClInclude Include="..\..\source\messaging\messageForwarder.h" />
-    <ClInclude Include="..\..\source\messaging\scriptMsgListener.h" />
-    <ClInclude Include="..\..\source\module\moduleCallbacks.h" />
-    <ClInclude Include="..\..\source\module\moduleDefinition.h" />
-    <ClInclude Include="..\..\source\module\moduleDefinition_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\module\moduleManager.h" />
-    <ClInclude Include="..\..\source\module\moduleManager_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\module\moduleMergeDefinition.h" />
-    <ClInclude Include="..\..\source\module\tamlModuleIdUpdateVisitor.h" />
-    <ClInclude Include="..\..\source\network\connectionProtocol.h" />
-    <ClInclude Include="..\..\source\network\connectionStringTable.h" />
-    <ClInclude Include="..\..\source\network\httpObject.h" />
-    <ClInclude Include="..\..\source\network\netConnection.h" />
-    <ClInclude Include="..\..\source\network\netInterface.h" />
-    <ClInclude Include="..\..\source\network\netObject.h" />
-    <ClInclude Include="..\..\source\network\netStringTable.h" />
-    <ClInclude Include="..\..\source\network\networkProcessList.h" />
-    <ClInclude Include="..\..\source\network\serverQuery.h" />
-    <ClInclude Include="..\..\source\network\tcpObject.h" />
-    <ClInclude Include="..\..\source\network\telnetConsole.h" />
-    <ClInclude Include="..\..\source\persistence\taml\taml.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryReader.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryWriter.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlCallbacks.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlChildren.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlCustom.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlWriteNode.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlParser.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlReader.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlVisitor.h" />
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlWriter.h" />
-    <ClInclude Include="..\..\source\persistence\taml\taml_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\persistence\tinyXML\tinystr.h" />
-    <ClInclude Include="..\..\source\persistence\tinyXML\tinyxml.h" />
-    <ClInclude Include="..\..\source\audio\audio.h" />
-    <ClInclude Include="..\..\source\audio\audioBuffer.h" />
-    <ClInclude Include="..\..\source\audio\audioDataBlock.h" />
-    <ClInclude Include="..\..\source\audio\audioStreamSource.h" />
-    <ClInclude Include="..\..\source\audio\audioStreamSourceFactory.h" />
-    <ClInclude Include="..\..\source\audio\wavStreamSource.h" />
-    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent.h" />
-    <ClInclude Include="..\..\source\component\simComponent.h" />
-    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent.h" />
-    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance.h" />
-    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate.h" />
-    <ClInclude Include="..\..\source\console\ast.h" />
-    <ClInclude Include="..\..\source\console\astNodeSizes.h" />
-    <ClInclude Include="..\..\source\console\cmdgram.h" />
-    <ClInclude Include="..\..\source\console\codeBlock.h" />
-    <ClInclude Include="..\..\source\console\compiler.h" />
-    <ClInclude Include="..\..\source\console\console.h" />
-    <ClInclude Include="..\..\source\console\consoleDoc.h" />
-    <ClInclude Include="..\..\source\console\consoleLogger.h" />
-    <ClInclude Include="..\..\source\console\consoleObject.h" />
-    <ClInclude Include="..\..\source\console\consoleParser.h" />
-    <ClInclude Include="..\..\source\console\consoleTypes.h" />
-    <ClInclude Include="..\..\source\game\gameConnection.h" />
-    <ClInclude Include="..\..\source\game\resource.h" />
-    <ClInclude Include="..\..\source\game\version.h" />
-    <ClInclude Include="..\..\source\math\mathIO.h" />
-    <ClInclude Include="..\..\source\math\mathTypes.h" />
-    <ClInclude Include="..\..\source\math\mathUtils.h" />
-    <ClInclude Include="..\..\source\math\mBox.h" />
-    <ClInclude Include="..\..\source\math\mConstants.h" />
-    <ClInclude Include="..\..\source\math\mMath.h" />
-    <ClInclude Include="..\..\source\math\mMathFn.h" />
-    <ClInclude Include="..\..\source\math\mMatrix.h" />
-    <ClInclude Include="..\..\source\math\mPlane.h" />
-    <ClInclude Include="..\..\source\math\mPlaneTransformer.h" />
-    <ClInclude Include="..\..\source\math\mPoint.h" />
-    <ClInclude Include="..\..\source\math\mQuadPatch.h" />
-    <ClInclude Include="..\..\source\math\mQuat.h" />
-    <ClInclude Include="..\..\source\math\mRandom.h" />
-    <ClInclude Include="..\..\source\math\mRect.h" />
-    <ClInclude Include="..\..\source\math\mSphere.h" />
-    <ClInclude Include="..\..\source\math\mSplinePatch.h" />
-    <ClInclude Include="..\..\source\persistence\SimXMLDocument.h" />
-    <ClInclude Include="..\..\source\platformWin32\winWindow.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\platform.h" />
-    <ClInclude Include="..\..\source\platform\platformAL.h" />
-    <ClInclude Include="..\..\source\platform\platformAssert.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\platformFont.h" />
-    <ClInclude Include="..\..\source\platform\platformGL.h" />
-    <ClInclude Include="..\..\source\platform\platformInput.h" />
-    <ClInclude Include="..\..\source\platform\platformInput_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\platform\platformMath.h" />
-    <ClInclude Include="..\..\source\platform\platformMemory.h" />
-    <ClInclude Include="..\..\source\platform\platformNetwork.h" />
-    <ClInclude Include="..\..\source\platform\platformSemaphore.h" />
-    <ClInclude Include="..\..\source\platform\platformString.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\platform_ScriptBinding.h" />
-    <ClInclude Include="..\..\source\platform\Tickable.h" />
-    <ClInclude Include="..\..\source\platform\types.codewarrior.h" />
-    <ClInclude Include="..\..\source\platform\types.gcc.h" />
-    <ClInclude Include="..\..\source\platform\types.h" />
-    <ClInclude Include="..\..\source\platform\types.posix.h" />
-    <ClInclude Include="..\..\source\platform\types.ppc.h" />
-    <ClInclude Include="..\..\source\platform\types.visualc.h" />
-    <ClInclude Include="..\..\source\platform\types.win32.h" />
-    <ClInclude Include="..\..\source\platform\typesLinux.h" />
-    <ClInclude Include="..\..\source\platform\typesPPC.h" />
-    <ClInclude Include="..\..\source\platform\typesWin32.h" />
-    <ClInclude Include="..\..\source\platform\typesX86UNIX.h" />
-    <ClInclude Include="..\..\source\platform\menus\popupMenu.h" />
-    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog.h" />
-    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox.h" />
-    <ClInclude Include="..\..\source\platform\threads\mutex.h" />
-    <ClInclude Include="..\..\source\platform\threads\semaphore.h" />
-    <ClInclude Include="..\..\source\platform\threads\thread.h" />
-    <ClInclude Include="..\..\source\platformWin32\gl_types.h" />
-    <ClInclude Include="..\..\source\platformWin32\GLWinExtFunc.h" />
-    <ClInclude Include="..\..\source\platformWin32\GLWinFunc.h" />
-    <ClInclude Include="..\..\source\platformWin32\platformGL.h" />
-    <ClInclude Include="..\..\source\platformWin32\platformWin32.h" />
-    <ClInclude Include="..\..\source\platformWin32\VFSRes.h" />
-    <ClInclude Include="..\..\source\platformWin32\win32NPatch.h" />
-    <ClInclude Include="..\..\source\platformWin32\win_common_prefix.h" />
-    <ClInclude Include="..\..\source\platformWin32\win_debug_prefix.h" />
-    <ClInclude Include="..\..\source\platformWin32\win_release_prefix.h" />
-    <ClInclude Include="..\..\source\platformWin32\winConsole.h" />
-    <ClInclude Include="..\..\source\platformWin32\winDInputDevice.h" />
-    <ClInclude Include="..\..\source\platformWin32\winDirectInput.h" />
-    <ClInclude Include="..\..\source\platformWin32\winFont.h" />
-    <ClInclude Include="..\..\source\platformWin32\winOGLVideo.h" />
-    <ClInclude Include="..\..\source\platformWin32\winVideo.h" />
-    <ClInclude Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.h" />
-    <ClInclude Include="..\..\source\sim\scriptGroup.h" />
-    <ClInclude Include="..\..\source\sim\scriptObject.h" />
-    <ClInclude Include="..\..\source\sim\simBase.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\simDictionary.h" />
-    <ClInclude Include="..\..\source\sim\simEvent.h" />
-    <ClInclude Include="..\..\source\sim\simFieldDictionary.h" />
-    <ClInclude Include="..\..\source\sim\simObject.h" />
-    <ClInclude Include="..\..\source\sim\SimObjectList.h" />
-    <ClInclude Include="..\..\source\sim\simObjectPtr.h" />
-    <ClInclude Include="..\..\source\sim\simObjectTimerEvent.h" />
-    <ClInclude Include="..\..\source\sim\simSet.h" />
-    <ClInclude Include="..\..\source\string\findMatch.h" />
-    <ClInclude Include="..\..\source\string\stringBuffer.h" />
-    <ClInclude Include="..\..\source\string\stringStack.h" />
-    <ClInclude Include="..\..\source\string\stringTable.h" />
-    <ClInclude Include="..\..\source\string\stringUnit.h" />
-    <ClInclude Include="..\..\source\string\unicode.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiButtonBaseCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiButtonCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiCheckBoxCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiIconButtonCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiRadioCtrl.h" />
-    <ClInclude Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiAutoScrollCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiCtrlArrayCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiDragAndDropCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiFormCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiFrameCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiPaneCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiRolloutCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiScrollCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiStackCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiTabBookCtrl.h" />
-    <ClInclude Include="..\..\source\gui\containers\guiWindowCtrl.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiDebugger.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiEditCtrl.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiFilterCtrl.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiGraphCtrl.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiImageList.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiInspector.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiInspectorTypes.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiMenuBar.h" />
-    <ClInclude Include="..\..\source\gui\editor\guiSeparatorCtrl.h" />
-    <ClInclude Include="..\..\source\testing\unitTesting.h" />
-    <ClInclude Include="..\..\source\torqueConfig.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuild Include="..\..\source\math\mMath_ASM.asm">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\math\mMathAMD_ASM.asm">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\math\mMathSSE_ASM.asm">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\platform\platformCPUInfo.asm">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
-    </CustomBuild>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="ljpeg.vcxproj">
-      <Project>{0b07ba94-aa53-4fd4-adb4-79ec2da53b36}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="lpng.vcxproj">
-      <Project>{af1179e3-a838-46a3-a427-1e62aa4c52f4}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="zlib.vcxproj">
-      <Project>{86cb2525-0cf3-40d3-bf42-a0a95035ee8c}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Shipping|Win32">
+      <Configuration>Shipping</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}</ProjectGuid>
+    <RootNamespace>TorqueGame</RootNamespace>
+    <ProjectName>Torque2D</ProjectName>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../Link/VC2012.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    </LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">../../../</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../Link/VC2012.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">../../Link/VC2012.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">false</LinkIncremental>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Torque2D_DEBUG</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Torque2D</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">Torque2D</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </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;../../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>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation>false</BrowseInformation>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <WarningLevel>Level3</WarningLevel>
+      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
+      <ShowIncludes>false</ShowIncludes>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+    <Link>
+      <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/unicode;../../lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <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;../../source/testing/googleTest;../../source/testing/googleTest/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>UNICODE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation>false</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+    <Link>
+      <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;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <EnableUAC>false</EnableUAC>
+      <UACExecutionLevel>HighestAvailable</UACExecutionLevel>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+    </CustomBuildStep>
+    <CustomBuildStep />
+    <CustomBuildStep>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">
+    <Midl>
+      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <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;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TORQUE_SHIPPING;UNICODE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation>false</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+    <Link>
+      <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;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <EnableUAC>false</EnableUAC>
+      <UACExecutionLevel>HighestAvailable</UACExecutionLevel>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+    </CustomBuildStep>
+    <CustomBuildStep />
+    <CustomBuildStep>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ResourceCompile Include="Torque 2D.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\source\2d\assets\AnimationAsset.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ImageAsset.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAsset.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetEmitter.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetField.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetFieldCollection.cc" />
+    <ClCompile Include="..\..\source\2d\controllers\AmbientForceController.cc" />
+    <ClCompile Include="..\..\source\2d\controllers\core\GroupedSceneController.cc" />
+    <ClCompile Include="..\..\source\2d\controllers\core\PickingSceneController.cc" />
+    <ClCompile Include="..\..\source\2d\controllers\PointForceController.cc" />
+    <ClCompile Include="..\..\source\2d\controllers\BuoyancyController.cc" />
+    <ClCompile Include="..\..\source\2d\core\BatchRender.cc" />
+    <ClCompile Include="..\..\source\2d\core\CoreMath.cc" />
+    <ClCompile Include="..\..\source\2d\core\ImageFrameProvider.cc" />
+    <ClCompile Include="..\..\source\2d\core\ImageFrameProviderCore.cc" />
+    <ClCompile Include="..\..\source\2d\core\ParticleSystem.cc" />
+    <ClCompile Include="..\..\source\2d\core\RenderProxy.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteBase.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteBatch.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteBatchItem.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteBatchQuery.cc" />
+    <ClCompile Include="..\..\source\2d\core\Utility.cc" />
+    <ClCompile Include="..\..\source\2d\core\Vector2.cc" />
+    <ClCompile Include="..\..\source\2d\experimental\composites\WaveComposite.cc" />
+    <ClCompile Include="..\..\source\2d\gui\guiImageButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\2d\gui\guiSceneObjectCtrl.cc" />
+    <ClCompile Include="..\..\source\2d\gui\guiSpriteCtrl.cc" />
+    <ClCompile Include="..\..\source\2d\gui\SceneWindow.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\CompositeSprite.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\ImageFont.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\ParticlePlayer.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObject.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectList.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectSet.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\Scroller.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\ShapeVector.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\Sprite.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\Trigger.cc" />
+    <ClCompile Include="..\..\source\2d\scene\ContactFilter.cc" />
+    <ClCompile Include="..\..\source\2d\scene\DebugDraw.cc" />
+    <ClCompile Include="..\..\source\2d\scene\Scene.cc" />
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderFactories.cpp" />
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderQueue.cpp" />
+    <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc" />
+    <ClCompile Include="..\..\source\algorithm\crc.cc" />
+    <ClCompile Include="..\..\source\algorithm\hashFunction.cc" />
+    <ClCompile Include="..\..\source\assets\assetBase.cc" />
+    <ClCompile Include="..\..\source\assets\assetFieldTypes.cc" />
+    <ClCompile Include="..\..\source\assets\assetManager.cc" />
+    <ClCompile Include="..\..\source\assets\assetQuery.cc" />
+    <ClCompile Include="..\..\source\assets\assetTagsManifest.cc" />
+    <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" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollidePolygon.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2Collision.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2Distance.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2DynamicTree.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2TimeOfImpact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2BlockAllocator.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Draw.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Math.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Settings.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2StackAllocator.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Timer.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Body.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2ContactManager.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Fixture.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Island.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2World.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2Joint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Rope\b2Rope.cpp" />
+    <ClCompile Include="..\..\source\collection\bitTables.cc" />
+    <ClCompile Include="..\..\source\collection\hashTable.cc" />
+    <ClCompile Include="..\..\source\collection\nameTags.cpp" />
+    <ClCompile Include="..\..\source\collection\undo.cc" />
+    <ClCompile Include="..\..\source\collection\vector.cc" />
+    <ClCompile Include="..\..\source\console\consoleBaseType.cc" />
+    <ClCompile Include="..\..\source\console\consoleDictionary.cc" />
+    <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\debug\profiler.cc" />
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc" />
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc" />
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBridge.cc" />
+    <ClCompile Include="..\..\source\debug\telnetDebugger.cc" />
+    <ClCompile Include="..\..\source\delegates\delegateSignal.cpp" />
+    <ClCompile Include="..\..\source\game\defaultGame.cc" />
+    <ClCompile Include="..\..\source\game\gameInterface.cc" />
+    <ClCompile Include="..\..\source\graphics\bitmapBmp.cc" />
+    <ClCompile Include="..\..\source\graphics\bitmapJpeg.cc" />
+    <ClCompile Include="..\..\source\graphics\bitmapPng.cc" />
+    <ClCompile Include="..\..\source\graphics\color.cc" />
+    <ClCompile Include="..\..\source\graphics\dgl.cc" />
+    <ClCompile Include="..\..\source\graphics\dglMatrix.cc" />
+    <ClCompile Include="..\..\source\graphics\DynamicTexture.cc" />
+    <ClCompile Include="..\..\source\graphics\gBitmap.cc" />
+    <ClCompile Include="..\..\source\graphics\gFont.cc" />
+    <ClCompile Include="..\..\source\graphics\gPalette.cc" />
+    <ClCompile Include="..\..\source\graphics\PNGImage.cpp" />
+    <ClCompile Include="..\..\source\graphics\splineUtil.cc" />
+    <ClCompile Include="..\..\source\graphics\TextureDictionary.cc" />
+    <ClCompile Include="..\..\source\graphics\TextureHandle.cc" />
+    <ClCompile Include="..\..\source\graphics\TextureManager.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiGridCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiArrayCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBackgroundCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBitmapBorderCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBitmapCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBubbleTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiCanvas.cc" />
+    <ClCompile Include="..\..\source\gui\guiColorPicker.cc" />
+    <ClCompile Include="..\..\source\gui\guiConsole.cc" />
+    <ClCompile Include="..\..\source\gui\guiConsoleEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiConsoleTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiControl.cc" />
+    <ClCompile Include="..\..\source\gui\guiDefaultControlRender.cc" />
+    <ClCompile Include="..\..\source\gui\guiFadeinBitmapCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiInputCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiListBoxCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMessageVectorCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMLTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMLTextEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMouseEventCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrlEx.cc" />
+    <ClCompile Include="..\..\source\gui\guiProgressCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiScriptNotifyControl.cc" />
+    <ClCompile Include="..\..\source\gui\guiSliderCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTabPageCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextEditSliderCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextListCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTickCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTreeViewCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTypes.cc" />
+    <ClCompile Include="..\..\source\gui\language\lang.cc" />
+    <ClCompile Include="..\..\source\gui\messageVector.cc" />
+    <ClCompile Include="..\..\source\input\actionMap.cc" />
+    <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\fileSystem_ScriptBinding.cc" />
+    <ClCompile Include="..\..\source\io\filterStream.cc" />
+    <ClCompile Include="..\..\source\io\memStream.cc" />
+    <ClCompile Include="..\..\source\io\nStream.cc" />
+    <ClCompile Include="..\..\source\io\resizeStream.cc" />
+    <ClCompile Include="..\..\source\io\resource\resourceDictionary.cc" />
+    <ClCompile Include="..\..\source\io\resource\resourceManager.cc" />
+    <ClCompile Include="..\..\source\io\streamObject.cc" />
+    <ClCompile Include="..\..\source\io\zip\centralDir.cc" />
+    <ClCompile Include="..\..\source\io\zip\compressor.cc" />
+    <ClCompile Include="..\..\source\io\zip\deflate.cc" />
+    <ClCompile Include="..\..\source\io\zip\extraField.cc" />
+    <ClCompile Include="..\..\source\io\zip\fileHeader.cc" />
+    <ClCompile Include="..\..\source\io\zip\stored.cc" />
+    <ClCompile Include="..\..\source\io\zip\zipArchive.cc" />
+    <ClCompile Include="..\..\source\io\zip\zipCryptStream.cc" />
+    <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_ScriptBinding.cc" />
+    <ClCompile Include="..\..\source\messaging\dispatcher.cc" />
+    <ClCompile Include="..\..\source\messaging\eventManager.cc" />
+    <ClCompile Include="..\..\source\messaging\message.cc" />
+    <ClCompile Include="..\..\source\messaging\messageForwarder.cc" />
+    <ClCompile Include="..\..\source\messaging\scriptMsgListener.cc" />
+    <ClCompile Include="..\..\source\module\moduleDefinition.cc" />
+    <ClCompile Include="..\..\source\module\moduleManager.cc" />
+    <ClCompile Include="..\..\source\module\moduleMergeDefinition.cc" />
+    <ClCompile Include="..\..\source\network\connectionProtocol.cc" />
+    <ClCompile Include="..\..\source\network\connectionStringTable.cc" />
+    <ClCompile Include="..\..\source\network\httpObject.cc" />
+    <ClCompile Include="..\..\source\network\netConnection.cc" />
+    <ClCompile Include="..\..\source\network\netDownload.cc" />
+    <ClCompile Include="..\..\source\network\netEvent.cc" />
+    <ClCompile Include="..\..\source\network\netGhost.cc" />
+    <ClCompile Include="..\..\source\network\netInterface.cc" />
+    <ClCompile Include="..\..\source\network\netObject.cc" />
+    <ClCompile Include="..\..\source\network\netStringTable.cc" />
+    <ClCompile Include="..\..\source\network\netTest.cc" />
+    <ClCompile Include="..\..\source\network\networkProcessList.cc" />
+    <ClCompile Include="..\..\source\network\RemoteCommandEvent.cc" />
+    <ClCompile Include="..\..\source\network\serverQuery.cc" />
+    <ClCompile Include="..\..\source\network\tcpObject.cc" />
+    <ClCompile Include="..\..\source\network\telnetConsole.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\binary\tamlBinaryReader.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\binary\tamlBinaryWriter.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONParser.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONReader.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONWriter.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\taml.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\tamlCustom.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\tamlWriteNode.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlParser.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlReader.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlWriter.cc" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinystr.cpp" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxml.cpp" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlerror.cpp" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlparser.cpp" />
+    <ClCompile Include="..\..\source\audio\audio.cc" />
+    <ClCompile Include="..\..\source\audio\audioBuffer.cc" />
+    <ClCompile Include="..\..\source\audio\audioDataBlock.cc" />
+    <ClCompile Include="..\..\source\audio\audioStreamSourceFactory.cc" />
+    <ClCompile Include="..\..\source\audio\wavStreamSource.cc" />
+    <ClCompile Include="..\..\source\component\dynamicConsoleMethodComponent.cpp" />
+    <ClCompile Include="..\..\source\component\simComponent.cpp" />
+    <ClCompile Include="..\..\source\component\behaviors\behaviorComponent.cpp" />
+    <ClCompile Include="..\..\source\component\behaviors\behaviorInstance.cpp" />
+    <ClCompile Include="..\..\source\component\behaviors\behaviorTemplate.cpp" />
+    <ClCompile Include="..\..\source\console\astAlloc.cc" />
+    <ClCompile Include="..\..\source\console\astNodes.cc" />
+    <ClCompile Include="..\..\source\console\cmdgram.cc" />
+    <ClCompile Include="..\..\source\console\CMDscan.cc" />
+    <ClCompile Include="..\..\source\console\codeBlock.cc" />
+    <ClCompile Include="..\..\source\console\compiledEval.cc" />
+    <ClCompile Include="..\..\source\console\compiler.cc" />
+    <ClCompile Include="..\..\source\console\console.cc" />
+    <ClCompile Include="..\..\source\console\consoleDoc.cc" />
+    <ClCompile Include="..\..\source\console\consoleFunctions.cc" />
+    <ClCompile Include="..\..\source\console\consoleLogger.cc" />
+    <ClCompile Include="..\..\source\console\consoleObject.cc" />
+    <ClCompile Include="..\..\source\console\consoleParser.cc" />
+    <ClCompile Include="..\..\source\console\consoleTypes.cc" />
+    <ClCompile Include="..\..\source\game\gameConnection.cc" />
+    <ClCompile Include="..\..\source\game\version.cc" />
+    <ClCompile Include="..\..\source\math\mathTypes.cc" />
+    <ClCompile Include="..\..\source\math\mathUtils.cc" />
+    <ClCompile Include="..\..\source\math\mBox.cc" />
+    <ClCompile Include="..\..\source\math\mMath_C.cc" />
+    <ClCompile Include="..\..\source\math\mMathAltivec.cc" />
+    <ClCompile Include="..\..\source\math\mMathAMD.cc" />
+    <ClCompile Include="..\..\source\math\mMathFn.cc" />
+    <ClCompile Include="..\..\source\math\mMathSSE.cc" />
+    <ClCompile Include="..\..\source\math\mMatrix.cc" />
+    <ClCompile Include="..\..\source\math\mPlaneTransformer.cc" />
+    <ClCompile Include="..\..\source\math\mQuadPatch.cc" />
+    <ClCompile Include="..\..\source\math\mQuat.cc" />
+    <ClCompile Include="..\..\source\math\mRandom.cc" />
+    <ClCompile Include="..\..\source\math\mSolver.cc" />
+    <ClCompile Include="..\..\source\math\mSplinePatch.cc" />
+    <ClCompile Include="..\..\source\persistence\SimXMLDocument.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32FileDialog.cc" />
+    <ClCompile Include="..\..\source\platform\CursorManager.cc" />
+    <ClCompile Include="..\..\source\platform\nativeDialogs\fileDialog.cc" />
+    <ClCompile Include="..\..\source\platform\platform.cc" />
+    <ClCompile Include="..\..\source\platform\platformAssert.cc" />
+    <ClCompile Include="..\..\source\platform\platformCPU.cc" />
+    <ClCompile Include="..\..\source\platform\platformFileIO.cc" />
+    <ClCompile Include="..\..\source\platform\platformFont.cc" />
+    <ClCompile Include="..\..\source\platform\platformMemory.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" />
+    <ClCompile Include="..\..\source\platform\nativeDialogs\msgBox.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\cardProfile.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\winAsmBlit.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winConsole.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winCPUInfo.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winDInputDevice.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winDirectInput.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winExec.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winFileio.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winFont.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winGL.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winGLSpecial.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winInput.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winMath.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winMath_ASM.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winMemory.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winNet.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winOGLVideo.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winOpenAL.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winProcessControl.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winSemaphore.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winStrings.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winTime.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winTLS.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winUser.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winVFS.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winVideo.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winWindow.cc" />
+    <ClCompile Include="..\..\source\platformWin32\menus\popupMenuWin32.cc" />
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32MsgBox.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\threads\mutex.cc" />
+    <ClCompile Include="..\..\source\platformWin32\threads\thread.cc" />
+    <ClCompile Include="..\..\source\platform\Tickable.cc" />
+    <ClCompile Include="..\..\source\sim\scriptGroup.cc" />
+    <ClCompile Include="..\..\source\sim\scriptObject.cc" />
+    <ClCompile Include="..\..\source\sim\simBase.cc" />
+    <ClCompile Include="..\..\source\sim\simConsoleEvent.cc" />
+    <ClCompile Include="..\..\source\sim\simConsoleThreadExecEvent.cc" />
+    <ClCompile Include="..\..\source\sim\simDatablock.cc" />
+    <ClCompile Include="..\..\source\sim\simDictionary.cc" />
+    <ClCompile Include="..\..\source\sim\simFieldDictionary.cc" />
+    <ClCompile Include="..\..\source\sim\simManager.cc" />
+    <ClCompile Include="..\..\source\sim\simObject.cc" />
+    <ClCompile Include="..\..\source\sim\SimObjectList.cc" />
+    <ClCompile Include="..\..\source\sim\simSerialize.cpp" />
+    <ClCompile Include="..\..\source\sim\simSet.cc" />
+    <ClCompile Include="..\..\source\string\findMatch.cc" />
+    <ClCompile Include="..\..\source\string\stringBuffer.cc" />
+    <ClCompile Include="..\..\source\string\stringStack.cc" />
+    <ClCompile Include="..\..\source\string\stringTable.cc" />
+    <ClCompile Include="..\..\source\string\stringUnit.cpp" />
+    <ClCompile Include="..\..\source\string\unicode.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiBorderButton.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonBaseCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiCheckBoxCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiIconButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiRadioCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiAutoScrollCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiCtrlArrayCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiDragAndDropCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiFormCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiFrameCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiPaneCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiRolloutCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiScrollCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiStackCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiTabBookCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiWindowCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiControlListPopup.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiDebugger.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiFilterCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiGraphCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiImageList.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiInspector.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiInspectorTypes.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiMenuBar.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiSeparatorCtrl.cc" />
+    <ClCompile Include="..\..\source\testing\tests\platformFileIoTests.cc" />
+    <ClCompile Include="..\..\source\testing\tests\platformMemoryTests.cc" />
+    <ClCompile Include="..\..\source\testing\tests\platformStringTests.cc" />
+    <ClCompile Include="..\..\source\testing\unitTesting.cc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset.h" />
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset.h" />
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetField.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetFieldCollection.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\controllers\core\SceneController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\PointForceController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\PointForceController_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController.h" />
+    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\core\BatchRender.h" />
+    <ClInclude Include="..\..\source\2d\core\CoreMath.h" />
+    <ClInclude Include="..\..\source\2d\core\ImageFrameProvider.h" />
+    <ClInclude Include="..\..\source\2d\core\ImageFrameProviderCore.h" />
+    <ClInclude Include="..\..\source\2d\core\ParticleSystem.h" />
+    <ClInclude Include="..\..\source\2d\core\RenderProxy.h" />
+    <ClInclude Include="..\..\source\2d\core\RenderProxy_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBase.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBase_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBatch.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBatchItem.h" />
+    <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" />
+    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl_ScriptBindings.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiSceneObjectCtrl.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl_ScriptBindings.h" />
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow.h" />
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectList.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectMoveToEvent.h" />
+    <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\SceneObject_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Scroller.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Scroller_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\scene\ContactFilter.h" />
+    <ClInclude Include="..\..\source\2d\scene\DebugDraw.h" />
+    <ClInclude Include="..\..\source\2d\scene\DebugStats.h" />
+    <ClInclude Include="..\..\source\2d\scene\PhysicsProxy.h" />
+    <ClInclude Include="..\..\source\2d\scene\Scene.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderFactories.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderObject.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderQueue.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderRequest.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderState.h" />
+    <ClInclude Include="..\..\source\2d\scene\Scene_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\scene\WorldQuery.h" />
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryFilter.h" />
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryResult.h" />
+    <ClInclude Include="..\..\source\algorithm\crc.h" />
+    <ClInclude Include="..\..\source\algorithm\crctab.h" />
+    <ClInclude Include="..\..\source\algorithm\hashFunction.h" />
+    <ClInclude Include="..\..\source\algorithm\md5.h" />
+    <ClInclude Include="..\..\source\assets\assetBase.h" />
+    <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\assetDefinition.h" />
+    <ClInclude Include="..\..\source\assets\assetFieldTypes.h" />
+    <ClInclude Include="..\..\source\assets\assetManager.h" />
+    <ClInclude Include="..\..\source\assets\assetManager_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\assetPtr.h" />
+    <ClInclude Include="..\..\source\assets\assetQuery.h" />
+    <ClInclude Include="..\..\source\assets\assetQuery_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\assetTagsManifest.h" />
+    <ClInclude Include="..\..\source\assets\assetTagsManifest_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\declaredAssets.h" />
+    <ClInclude Include="..\..\source\assets\referencedAssets.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredUpdateVisitor.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredVisitor.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedUpdateVisitor.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedVisitor.h" />
+    <ClInclude Include="..\..\source\audio\AudioAsset.h" />
+    <ClInclude Include="..\..\source\box2d\Box2D.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2BroadPhase.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2Collision.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2Distance.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2DynamicTree.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2TimeOfImpact.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2Shape.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2BlockAllocator.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Draw.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2GrowableStack.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Math.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Settings.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2StackAllocator.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Timer.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Body.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2ContactManager.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Fixture.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Island.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2TimeStep.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2World.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2Joint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Rope\b2Rope.h" />
+    <ClInclude Include="..\..\source\collection\bitMatrix.h" />
+    <ClInclude Include="..\..\source\collection\bitSet.h" />
+    <ClInclude Include="..\..\source\collection\bitTables.h" />
+    <ClInclude Include="..\..\source\collection\bitVector.h" />
+    <ClInclude Include="..\..\source\collection\bitVectorW.h" />
+    <ClInclude Include="..\..\source\collection\findIterator.h" />
+    <ClInclude Include="..\..\source\collection\hashTable.h" />
+    <ClInclude Include="..\..\source\collection\linkedList.h" />
+    <ClInclude Include="..\..\source\collection\nameTags.h" />
+    <ClInclude Include="..\..\source\collection\nameTags_ScriptBinding.h" />
+    <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" />
+    <ClInclude Include="..\..\source\collection\vectorQueue.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponentRaiseEvent.h" />
+    <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\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" />
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase_ScriptBinding.h" />
+    <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" />
+    <ClInclude Include="..\..\source\gui\guiBackgroundCtrl.h" />
+    <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\guiDefaultControlRender.h" />
+    <ClInclude Include="..\..\source\gui\guiInputCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiListBoxCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiMessageVectorCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiMLTextCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiMLTextEditCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiMouseEventCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrlEx.h" />
+    <ClInclude Include="..\..\source\gui\guiProgressCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiScriptNotifyControl.h" />
+    <ClInclude Include="..\..\source\gui\guiSliderCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTabPageCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextEditCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextEditSliderCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextListCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTickCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTreeViewCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTypes.h" />
+    <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" />
+    <ClInclude Include="..\..\source\io\zip\fileHeader.h" />
+    <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\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" />
+    <ClInclude Include="..\..\source\module\moduleDefinition_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\module\moduleManager.h" />
+    <ClInclude Include="..\..\source\module\moduleManager_ScriptBinding.h" />
+    <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" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\encodings.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filereadstream.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filestream.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filewritestream.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\pow10.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\stack.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\strfunc.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\prettywriter.h" />
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\rapidjson.h" />
+    <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" />
+    <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONReader.h" />
+    <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONWriter.h" />
+    <ClInclude Include="..\..\source\persistence\taml\taml.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlCallbacks.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlChildren.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlCustom.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlParser.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlVisitor.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlWriteNode.h" />
+    <ClInclude Include="..\..\source\persistence\taml\taml_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlParser.h" />
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlReader.h" />
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlWriter.h" />
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinystr.h" />
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinyxml.h" />
+    <ClInclude Include="..\..\source\audio\audio.h" />
+    <ClInclude Include="..\..\source\audio\audioBuffer.h" />
+    <ClInclude Include="..\..\source\audio\audioDataBlock.h" />
+    <ClInclude Include="..\..\source\audio\audioStreamSource.h" />
+    <ClInclude Include="..\..\source\audio\audioStreamSourceFactory.h" />
+    <ClInclude Include="..\..\source\audio\wavStreamSource.h" />
+    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent.h" />
+    <ClInclude Include="..\..\source\component\simComponent.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate.h" />
+    <ClInclude Include="..\..\source\console\ast.h" />
+    <ClInclude Include="..\..\source\console\astNodeSizes.h" />
+    <ClInclude Include="..\..\source\console\cmdgram.h" />
+    <ClInclude Include="..\..\source\console\codeBlock.h" />
+    <ClInclude Include="..\..\source\console\compiler.h" />
+    <ClInclude Include="..\..\source\console\console.h" />
+    <ClInclude Include="..\..\source\console\consoleDoc.h" />
+    <ClInclude Include="..\..\source\console\consoleLogger.h" />
+    <ClInclude Include="..\..\source\console\consoleObject.h" />
+    <ClInclude Include="..\..\source\console\consoleParser.h" />
+    <ClInclude Include="..\..\source\console\consoleTypes.h" />
+    <ClInclude Include="..\..\source\game\gameConnection.h" />
+    <ClInclude Include="..\..\source\game\resource.h" />
+    <ClInclude Include="..\..\source\game\version.h" />
+    <ClInclude Include="..\..\source\math\mathIO.h" />
+    <ClInclude Include="..\..\source\math\mathTypes.h" />
+    <ClInclude Include="..\..\source\math\mathUtils.h" />
+    <ClInclude Include="..\..\source\math\mBox.h" />
+    <ClInclude Include="..\..\source\math\mConstants.h" />
+    <ClInclude Include="..\..\source\math\mMath.h" />
+    <ClInclude Include="..\..\source\math\mMathFn.h" />
+    <ClInclude Include="..\..\source\math\mMatrix.h" />
+    <ClInclude Include="..\..\source\math\mPlane.h" />
+    <ClInclude Include="..\..\source\math\mPlaneTransformer.h" />
+    <ClInclude Include="..\..\source\math\mPoint.h" />
+    <ClInclude Include="..\..\source\math\mQuadPatch.h" />
+    <ClInclude Include="..\..\source\math\mQuat.h" />
+    <ClInclude Include="..\..\source\math\mRandom.h" />
+    <ClInclude Include="..\..\source\math\mRect.h" />
+    <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" />
+    <ClInclude Include="..\..\source\platform\platformInput_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platform\platformMath.h" />
+    <ClInclude Include="..\..\source\platform\platformMemory.h" />
+    <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" />
+    <ClInclude Include="..\..\source\platform\types.gcc.h" />
+    <ClInclude Include="..\..\source\platform\types.h" />
+    <ClInclude Include="..\..\source\platform\types.posix.h" />
+    <ClInclude Include="..\..\source\platform\types.ppc.h" />
+    <ClInclude Include="..\..\source\platform\types.visualc.h" />
+    <ClInclude Include="..\..\source\platform\types.win32.h" />
+    <ClInclude Include="..\..\source\platform\typesLinux.h" />
+    <ClInclude Include="..\..\source\platform\typesPPC.h" />
+    <ClInclude Include="..\..\source\platform\typesWin32.h" />
+    <ClInclude Include="..\..\source\platform\typesX86UNIX.h" />
+    <ClInclude Include="..\..\source\platform\menus\popupMenu.h" />
+    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog.h" />
+    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox.h" />
+    <ClInclude Include="..\..\source\platform\threads\mutex.h" />
+    <ClInclude Include="..\..\source\platform\threads\semaphore.h" />
+    <ClInclude Include="..\..\source\platform\threads\thread.h" />
+    <ClInclude Include="..\..\source\platformWin32\gl_types.h" />
+    <ClInclude Include="..\..\source\platformWin32\GLWinExtFunc.h" />
+    <ClInclude Include="..\..\source\platformWin32\GLWinFunc.h" />
+    <ClInclude Include="..\..\source\platformWin32\platformGL.h" />
+    <ClInclude Include="..\..\source\platformWin32\platformWin32.h" />
+    <ClInclude Include="..\..\source\platformWin32\VFSRes.h" />
+    <ClInclude Include="..\..\source\platformWin32\win32NPatch.h" />
+    <ClInclude Include="..\..\source\platformWin32\win_common_prefix.h" />
+    <ClInclude Include="..\..\source\platformWin32\win_debug_prefix.h" />
+    <ClInclude Include="..\..\source\platformWin32\win_release_prefix.h" />
+    <ClInclude Include="..\..\source\platformWin32\winConsole.h" />
+    <ClInclude Include="..\..\source\platformWin32\winDInputDevice.h" />
+    <ClInclude Include="..\..\source\platformWin32\winDirectInput.h" />
+    <ClInclude Include="..\..\source\platformWin32\winFont.h" />
+    <ClInclude Include="..\..\source\platformWin32\winOGLVideo.h" />
+    <ClInclude Include="..\..\source\platformWin32\winVideo.h" />
+    <ClInclude Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.h" />
+    <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" />
+    <ClInclude Include="..\..\source\sim\simObject.h" />
+    <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" />
+    <ClInclude Include="..\..\source\gui\buttons\guiButtonCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiCheckBoxCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiIconButtonCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiRadioCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiAutoScrollCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiCtrlArrayCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiDragAndDropCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiFormCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiFrameCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiPaneCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiRolloutCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiScrollCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiStackCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiTabBookCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiWindowCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiDebugger.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiEditCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiFilterCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiGraphCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiImageList.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiInspector.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiInspectorTypes.h" />
+    <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>
+    <CustomBuild Include="..\..\source\math\mMath_ASM.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathAMD_ASM.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathSSE_ASM.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\platform\platformCPUInfo.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="ljpeg.vcxproj">
+      <Project>{0b07ba94-aa53-4fd4-adb4-79ec2da53b36}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="lpng.vcxproj">
+      <Project>{af1179e3-a838-46a3-a427-1e62aa4c52f4}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="zlib.vcxproj">
+      <Project>{86cb2525-0cf3-40d3-bf42-a0a95035ee8c}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
 </Project>

+ 2990 - 2693
engine/compilers/VisualStudio 2012/Torque 2D.vcxproj.filters

@@ -1,2694 +1,2991 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="2d">
-      <UniqueIdentifier>{b90d3c2c-9694-4051-8b22-325c00d37951}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\assets">
-      <UniqueIdentifier>{57099cfd-2f9b-468f-88a5-df769a6235b0}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\sceneobject">
-      <UniqueIdentifier>{8b011278-0d15-4ba9-ba57-24056b918233}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\core">
-      <UniqueIdentifier>{b0a55e16-3a1f-4eb5-8f5b-3396d456be74}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\scene">
-      <UniqueIdentifier>{71933100-a4a2-464e-bb3f-bb04d9f078af}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\gui">
-      <UniqueIdentifier>{7824869e-4359-4413-a615-38c8534d641b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="algorithm">
-      <UniqueIdentifier>{baaa5934-0805-46eb-be6e-ae5643535b4b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="assets">
-      <UniqueIdentifier>{6a14bfc6-1f7c-4527-91d3-ccf897ff4002}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="audio">
-      <UniqueIdentifier>{bfd4849e-66c6-450b-9a01-0873aa28e21a}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d">
-      <UniqueIdentifier>{1f640da6-77a4-4176-a018-9bfad5becf95}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Collision">
-      <UniqueIdentifier>{4faf4110-842d-4178-81ca-0375f3804cac}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Collision\Shapes">
-      <UniqueIdentifier>{2f939a2b-3cd9-4e67-8311-bf751093f2a5}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Common">
-      <UniqueIdentifier>{84907fc2-76e8-4a3b-9df4-76451387d3f9}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Dynamics">
-      <UniqueIdentifier>{e2574a74-ff0d-401d-818d-96e6c155a4b4}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Dynamics\Contacts">
-      <UniqueIdentifier>{18c9fe85-da18-45d5-9573-a71ce9373961}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Dynamics\Joints">
-      <UniqueIdentifier>{4f9157b1-a024-450f-a352-1849cf2bddcc}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="box2d\Rope">
-      <UniqueIdentifier>{14385fbb-f8af-4849-bdd9-8c8f67d3928e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="collection">
-      <UniqueIdentifier>{9ec04d21-b122-45be-bd70-2869fa9cdd8e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="component">
-      <UniqueIdentifier>{09cd4b77-b9b4-41f4-b17e-3ac25c27beee}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="component\behaviors">
-      <UniqueIdentifier>{47a0d755-122c-490b-b11c-d06a74fe2ab2}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="console">
-      <UniqueIdentifier>{ec2d3f1a-e3d1-49d5-98d6-a3084e37d077}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="debug">
-      <UniqueIdentifier>{b3b96a6a-462f-4c7d-92a5-009cabbe94a3}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="debug\remote">
-      <UniqueIdentifier>{d55ba677-1863-4206-92b7-1df94c48df84}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="delegates">
-      <UniqueIdentifier>{d016b107-aefd-41ac-a04c-6b75caaf114d}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="game">
-      <UniqueIdentifier>{d48f2bd5-39e5-4fdb-8472-79839fcd7e21}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="graphics">
-      <UniqueIdentifier>{187e7671-960f-49a7-898b-a10cf5900751}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="gui">
-      <UniqueIdentifier>{c17330c5-953e-4e71-9acb-1b7806b3c932}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="gui\buttons">
-      <UniqueIdentifier>{92e20c7c-410f-4df4-a9b9-7662dac44699}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="gui\containers">
-      <UniqueIdentifier>{513dc4d3-ba16-414a-8576-16b1dba4f6e8}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="gui\editor">
-      <UniqueIdentifier>{c48781cd-5e6a-4ffe-b866-e64582f00d6d}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="gui\language">
-      <UniqueIdentifier>{eee14c00-6a21-4fa8-9339-572a11819062}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="input">
-      <UniqueIdentifier>{fcfa64cc-dd46-41c1-9ada-8b4a15051285}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="io">
-      <UniqueIdentifier>{fa588b4f-a8dd-4615-beee-dab4db372118}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="io\zip">
-      <UniqueIdentifier>{27eea104-6e41-4cfb-bc50-56f9157081ce}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="io\resource">
-      <UniqueIdentifier>{0688e2d7-d313-4a35-b90d-1df191825361}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="math">
-      <UniqueIdentifier>{04e382a2-a0a9-40c9-b227-a46e345fb032}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="memory">
-      <UniqueIdentifier>{5c7d23f1-7194-4a6f-8bd3-fd5b6a0beb4f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="messaging">
-      <UniqueIdentifier>{66757e8b-c204-4b92-92ab-19278019d17d}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="module">
-      <UniqueIdentifier>{23024162-0d6f-4259-8dac-a3a621d55065}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="network">
-      <UniqueIdentifier>{c1b891be-db08-48e9-b52a-f0cf3bac185e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="persistence">
-      <UniqueIdentifier>{87703b23-784c-4769-b085-57c72b1b536e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="persistence\taml">
-      <UniqueIdentifier>{a2568a68-f396-4b3e-9ed6-bf73656752d3}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="persistence\tinyXML">
-      <UniqueIdentifier>{d13f86bc-f4dd-4329-8337-dd41e2db04a1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platform">
-      <UniqueIdentifier>{f5858e14-ed7e-4887-a22e-4123ab41a6f1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platform\menus">
-      <UniqueIdentifier>{a9dbe516-9ed6-43a6-987e-6f2bc6f59928}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platform\nativeDialogs">
-      <UniqueIdentifier>{d98ec67b-b10a-4c7b-bb2f-a6394a861b67}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platform\threads">
-      <UniqueIdentifier>{04d21b23-41a0-44a7-810e-f31c81fd5c81}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platformWin32">
-      <UniqueIdentifier>{3f7e4a0c-c3da-4972-a9bc-9cb0e0ce622e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platformWin32\menus">
-      <UniqueIdentifier>{d77ee12f-a922-4d39-9e6c-2ad87a5b4a4e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platformWin32\nativeDialogs">
-      <UniqueIdentifier>{9da3da8f-0660-4a53-b5cf-3994c2dca7e3}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="platformWin32\threads">
-      <UniqueIdentifier>{78695f15-84c6-4505-a999-716fe79bdabe}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="sim">
-      <UniqueIdentifier>{e706ea06-aa20-4487-a010-e0d00adc658f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="string">
-      <UniqueIdentifier>{fa7e2f20-cd6d-4118-8a74-9f9c95119064}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="testing">
-      <UniqueIdentifier>{7b04617f-42ef-4238-9a98-9d8309b64c93}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="testing\tests">
-      <UniqueIdentifier>{57e1271d-4358-4180-b168-4b9c2cbac907}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\controllers">
-      <UniqueIdentifier>{a9e97335-bed5-4f6a-9959-12f5f41dbdcb}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\controllers\core">
-      <UniqueIdentifier>{e11e344e-6418-4ed0-980a-77d66cd64d65}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\experimental">
-      <UniqueIdentifier>{1eb9e730-583b-4aa4-ac25-b83960799ba4}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="2d\experimental\composites">
-      <UniqueIdentifier>{30e1ec13-118b-4d50-8e04-76e76fcfdc01}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\source\audio\audio.cc">
-      <Filter>audio</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\audio\audioBuffer.cc">
-      <Filter>audio</Filter>
-    </ClCompile>
-    <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>
-    <ClCompile Include="..\..\source\audio\wavStreamSource.cc">
-      <Filter>audio</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\component\dynamicConsoleMethodComponent.cpp">
-      <Filter>component</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\component\simComponent.cpp">
-      <Filter>component</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\component\behaviors\behaviorComponent.cpp">
-      <Filter>component\behaviors</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\component\behaviors\behaviorInstance.cpp">
-      <Filter>component\behaviors</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\component\behaviors\behaviorTemplate.cpp">
-      <Filter>component\behaviors</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\astAlloc.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\astNodes.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\cmdgram.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\CMDscan.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\codeBlock.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\compiledEval.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\compiler.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\console.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleDoc.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleFunctions.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleLogger.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleObject.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleParser.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleTypes.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\game\gameConnection.cc">
-      <Filter>game</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\game\version.cc">
-      <Filter>game</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mathTypes.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mathUtils.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <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>
-    <ClCompile Include="..\..\source\math\mMathAltivec.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mMathAMD.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mMathFn.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mMathSSE.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mMatrix.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mPlaneTransformer.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mQuadPatch.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mQuat.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mRandom.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mSolver.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\mSplinePatch.cc">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\SimXMLDocument.cpp">
-      <Filter>persistence</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\CursorManager.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platform.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformAssert.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformCPU.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformFileIO.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformMemory.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformString.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\platformVideo.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\menus\popupMenu.cc">
-      <Filter>platform\menus</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\nativeDialogs\msgBox.cpp">
-      <Filter>platform\nativeDialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\cardProfile.cpp">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winAsmBlit.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winConsole.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winCPUInfo.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winDInputDevice.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winDirectInput.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winExec.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winFileio.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winFont.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winGL.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winGLSpecial.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winInput.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winMath.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winMath_ASM.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winMemory.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winNet.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winOGLVideo.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winOpenAL.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winProcessControl.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winSemaphore.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winStrings.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winTime.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winTLS.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winUser.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winVFS.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winVideo.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\winWindow.cc">
-      <Filter>platformWin32</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\menus\popupMenuWin32.cc">
-      <Filter>platformWin32\menus</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.cpp">
-      <Filter>platformWin32\nativeDialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32MsgBox.cpp">
-      <Filter>platformWin32\nativeDialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\threads\mutex.cc">
-      <Filter>platformWin32\threads</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\threads\thread.cc">
-      <Filter>platformWin32\threads</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiBorderButton.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiButtonBaseCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiButtonCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiCheckBoxCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiIconButtonCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiRadioCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.cc">
-      <Filter>gui\buttons</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiAutoScrollCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiCtrlArrayCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiDragAndDropCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiFormCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiFrameCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiPaneCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiRolloutCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiScrollCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiStackCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiTabBookCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\containers\guiWindowCtrl.cc">
-      <Filter>gui\containers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiControlListPopup.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiDebugger.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiEditCtrl.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiFilterCtrl.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiGraphCtrl.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiImageList.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiInspector.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiInspectorTypes.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiMenuBar.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\editor\guiSeparatorCtrl.cc">
-      <Filter>gui\editor</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2BroadPhase.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollideCircle.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollideEdge.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2CollidePolygon.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2Collision.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2Distance.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2DynamicTree.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\b2TimeOfImpact.cpp">
-      <Filter>box2d\Collision</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.cpp">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.cpp">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.cpp">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.cpp">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2BlockAllocator.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2Draw.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2Math.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2Settings.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2StackAllocator.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Common\b2Timer.cpp">
-      <Filter>box2d\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Body.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2ContactManager.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Fixture.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2Island.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2World.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.cpp">
-      <Filter>box2d\Dynamics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.cpp">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2Joint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.cpp">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\box2d\Rope\b2Rope.cpp">
-      <Filter>box2d\Rope</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\taml.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlWriter.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlReader.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\module\moduleDefinition.cc">
-      <Filter>module</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\module\moduleManager.cc">
-      <Filter>module</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinystr.cpp">
-      <Filter>persistence\tinyXML</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxml.cpp">
-      <Filter>persistence\tinyXML</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlerror.cpp">
-      <Filter>persistence\tinyXML</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlparser.cpp">
-      <Filter>persistence\tinyXML</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryWriter.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryReader.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\module\moduleMergeDefinition.cc">
-      <Filter>module</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\assetManager.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\assetFieldTypes.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlXmlParser.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\assetQuery.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\assetTagsManifest.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\assetBase.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\language\lang.cc">
-      <Filter>gui\language</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\bitmapBmp.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\bitmapJpeg.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\bitmapPng.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\dgl.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\dglMatrix.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\gBitmap.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\gPalette.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\splineUtil.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\messaging\dispatcher.cc">
-      <Filter>messaging</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\messaging\eventManager.cc">
-      <Filter>messaging</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\messaging\message.cc">
-      <Filter>messaging</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\messaging\messageForwarder.cc">
-      <Filter>messaging</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\messaging\scriptMsgListener.cc">
-      <Filter>messaging</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\game\defaultGame.cc">
-      <Filter>game</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\debug\profiler.cc">
-      <Filter>debug</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\math\rectClipper.cpp">
-      <Filter>math</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\input\actionMap.cc">
-      <Filter>input</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiArrayCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiBackgroundCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiBitmapBorderCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiBitmapCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiBubbleTextCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiCanvas.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiColorPicker.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiConsole.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiConsoleEditCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiConsoleTextCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiControl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiDefaultControlRender.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiFadeinBitmapCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiInputCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiListBoxCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiMessageVectorCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiMLTextCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiMLTextEditCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiMouseEventCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiPopUpCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiPopUpCtrlEx.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiProgressCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiScriptNotifyControl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiSliderCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTabPageCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTextCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTextEditCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTextEditSliderCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTextListCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTickCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTreeViewCtrl.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\guiTypes.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\gui\messageVector.cc">
-      <Filter>gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\PNGImage.cpp">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\collection\bitTables.cc">
-      <Filter>collection</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\collection\hashTable.cc">
-      <Filter>collection</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\collection\vector.cc">
-      <Filter>collection</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\bitStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\bufferStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\fileObject.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\fileStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\fileStreamObject.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\filterStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\memStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\nStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\resizeStream.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\streamObject.cc">
-      <Filter>io</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\centralDir.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\compressor.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\extraField.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\fileHeader.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\zipArchive.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\zipCryptStream.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\zipObject.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\zipSubStream.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\zipTempStream.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\deflate.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\zip\stored.cc">
-      <Filter>io\zip</Filter>
-    </ClCompile>
-    <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>
-    <ClCompile Include="..\..\source\algorithm\hashFunction.cc">
-      <Filter>algorithm</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\game\gameInterface.cc">
-      <Filter>game</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simBase.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simDictionary.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simManager.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simSerialize.cpp">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simSet.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\connectionStringTable.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\httpObject.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netConnection.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netDownload.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netEvent.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netGhost.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netInterface.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netObject.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netStringTable.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\netTest.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\serverQuery.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <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>
-    <ClCompile Include="..\..\source\string\stringTable.cc">
-      <Filter>string</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\string\unicode.cc">
-      <Filter>string</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\string\findMatch.cc">
-      <Filter>string</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\string\stringUnit.cpp">
-      <Filter>string</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\resource\resourceDictionary.cc">
-      <Filter>io\resource</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\io\resource\resourceManager.cc">
-      <Filter>io\resource</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\collection\nameTags.cpp">
-      <Filter>collection</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\collection\undo.cc">
-      <Filter>collection</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\Tickable.cc">
-      <Filter>platform</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\telnetConsole.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\debug\telnetDebugger.cc">
-      <Filter>debug</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\string\stringStack.cc">
-      <Filter>string</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\connectionProtocol.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\network\RemoteCommandEvent.cc">
-      <Filter>network</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\scriptObject.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\scriptGroup.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\SimObjectList.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simObject.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simFieldDictionary.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simConsoleEvent.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simConsoleThreadExecEvent.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\sim\simDatablock.cc">
-      <Filter>sim</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleBaseType.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\ConsoleTypeValidators.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleDictionary.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleExprEvalState.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\console\consoleNamespace.cc">
-      <Filter>console</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\audio\AudioAsset.cc">
-      <Filter>audio</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\TextureManager.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\TextureHandle.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\TextureDictionary.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\DynamicTexture.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlWriteNode.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\delegates\delegateSignal.cpp">
-      <Filter>delegates</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\AnimationAsset.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\ImageAsset.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\CompositeSprite.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObject.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\Scroller.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\ShapeVector.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\Sprite.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\Trigger.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\BatchRender.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\RenderProxy.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\SpriteBase.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\SpriteBatch.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\SpriteBatchItem.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\Utility.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\Vector2.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\ContactFilter.cc">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\DebugDraw.cc">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\Scene.cc">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\gui\guiImageButtonCtrl.cc">
-      <Filter>2d\gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\gui\guiSpriteCtrl.cc">
-      <Filter>2d\gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\gui\guiSceneObjectCtrl.cc">
-      <Filter>2d\gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\CoreMath.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\SceneRenderFactories.cpp">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\scene\SceneRenderQueue.cpp">
-      <Filter>2d\scene</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\gui\SceneWindow.cc">
-      <Filter>2d\gui</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc">
-      <Filter>debug\remote</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBridge.cc">
-      <Filter>debug\remote</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc">
-      <Filter>debug\remote</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\gFont.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <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>
-    <ClCompile Include="..\..\source\testing\tests\platformFileIoTests.cc">
-      <Filter>testing\tests</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\testing\unitTesting.cc">
-      <Filter>testing</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\testing\tests\platformStringTests.cc">
-      <Filter>testing\tests</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\testing\tests\platformMemoryTests.cc">
-      <Filter>testing\tests</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platform\nativeDialogs\fileDialog.cc">
-      <Filter>platform\nativeDialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32FileDialog.cc">
-      <Filter>platformWin32\nativeDialogs</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\graphics\color.cc">
-      <Filter>graphics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\ParticleAsset.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetEmitter.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetField.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\assets\ParticleAssetFieldCollection.cc">
-      <Filter>2d\assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\ParticlePlayer.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\ParticleSystem.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\ImageFont.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\declaredAssets.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\assets\referencedAssets.cc">
-      <Filter>assets</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\persistence\taml\tamlCustom.cc">
-      <Filter>persistence\taml</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectSet.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectList.cc">
-      <Filter>2d\sceneobject</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\controllers\BuoyancyController.cc">
-      <Filter>2d\controllers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\controllers\PointForceController.cc">
-      <Filter>2d\controllers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\controllers\core\GroupedSceneController.cc">
-      <Filter>2d\controllers\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\controllers\core\PickingSceneController.cc">
-      <Filter>2d\controllers\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\controllers\AmbientForceController.cc">
-      <Filter>2d\controllers</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\SpriteBatchQuery.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\experimental\composites\WaveComposite.cc">
-      <Filter>2d\experimental\composites</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\ImageFrameProvider.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\source\2d\core\ImageFrameProviderCore.cc">
-      <Filter>2d\core</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\source\audio\audio.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\audioBuffer.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\audioDataBlock.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\audioStreamSource.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\audioStreamSourceFactory.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\wavStreamSource.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent.h">
-      <Filter>component</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\simComponent.h">
-      <Filter>component</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\ast.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\astNodeSizes.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\cmdgram.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\codeBlock.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\compiler.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\console.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleDoc.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleLogger.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleObject.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleParser.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleTypes.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\gameConnection.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\resource.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\version.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mathIO.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mathTypes.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mathUtils.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mBox.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mConstants.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mMath.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mMathFn.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mMatrix.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mPlane.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mPlaneTransformer.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mPoint.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mQuadPatch.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mQuat.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mRandom.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mRect.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mSphere.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\mSplinePatch.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\SimXMLDocument.h">
-      <Filter>persistence</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\event.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\GLCoreFunc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\GLExtFunc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\GLUFunc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platform.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformAL.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformAssert.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformAudio.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformFont.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformGL.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformInput.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformSemaphore.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformTLS.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformVFS.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformVideo.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.codewarrior.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.gcc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.posix.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.ppc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.visualc.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\types.win32.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\typesLinux.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\typesPPC.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\typesWin32.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\typesX86UNIX.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\menus\popupMenu.h">
-      <Filter>platform\menus</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog.h">
-      <Filter>platform\nativeDialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox.h">
-      <Filter>platform\nativeDialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\threads\mutex.h">
-      <Filter>platform\threads</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\threads\semaphore.h">
-      <Filter>platform\threads</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\threads\thread.h">
-      <Filter>platform\threads</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\gl_types.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\GLWinExtFunc.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\GLWinFunc.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\platformGL.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\platformWin32.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\VFSRes.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\win32NPatch.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\win_common_prefix.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\win_debug_prefix.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\win_release_prefix.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winConsole.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winDInputDevice.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winDirectInput.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winFont.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winOGLVideo.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winVideo.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.h">
-      <Filter>platformWin32\nativeDialogs</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiButtonBaseCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiButtonCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiCheckBoxCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiIconButtonCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiRadioCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.h">
-      <Filter>gui\buttons</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiAutoScrollCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiCtrlArrayCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiDragAndDropCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiFormCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiFrameCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiPaneCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiRolloutCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiScrollCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiStackCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiTabBookCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\containers\guiWindowCtrl.h">
-      <Filter>gui\containers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiDebugger.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiEditCtrl.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiFilterCtrl.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiGraphCtrl.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiImageList.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiInspector.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiInspectorTypes.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiMenuBar.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\editor\guiSeparatorCtrl.h">
-      <Filter>gui\editor</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Box2D.h">
-      <Filter>box2d</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\b2BroadPhase.h">
-      <Filter>box2d\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\b2Collision.h">
-      <Filter>box2d\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\b2Distance.h">
-      <Filter>box2d\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\b2DynamicTree.h">
-      <Filter>box2d\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\b2TimeOfImpact.h">
-      <Filter>box2d\Collision</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.h">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.h">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.h">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.h">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2Shape.h">
-      <Filter>box2d\Collision\Shapes</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2BlockAllocator.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2Draw.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2GrowableStack.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2Math.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2Settings.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2StackAllocator.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Common\b2Timer.h">
-      <Filter>box2d\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Body.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2ContactManager.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Fixture.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2Island.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2TimeStep.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2World.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.h">
-      <Filter>box2d\Dynamics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.h">
-      <Filter>box2d\Dynamics\Contacts</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2Joint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.h">
-      <Filter>box2d\Dynamics\Joints</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\box2d\Rope\b2Rope.h">
-      <Filter>box2d\Rope</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent_ScriptBinding.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance_ScriptBinding.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate_ScriptBinding.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\component\behaviors\behaviorComponentRaiseEvent.h">
-      <Filter>component\behaviors</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\taml.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlCallbacks.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\taml_ScriptBinding.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlWriter.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlReader.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleDefinition.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleManager.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleManager_ScriptBinding.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\tinyXML\tinystr.h">
-      <Filter>persistence\tinyXML</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\tinyXML\tinyxml.h">
-      <Filter>persistence\tinyXML</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryWriter.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryReader.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleDefinition_ScriptBinding.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleMergeDefinition.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetDefinition.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetManager.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetManager_ScriptBinding.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetFieldTypes.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlParser.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlXmlVisitor.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\tamlAssetUpdateVisitor.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredVisitor.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\tamlAssetReferencedVisitor.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredUpdateVisitor.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\tamlAssetReferencedUpdateVisitor.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetQuery.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetQuery_ScriptBinding.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetPtr.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetTagsManifest.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetTagsManifest_ScriptBinding.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\tamlModuleIdUpdateVisitor.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\module\moduleCallbacks.h">
-      <Filter>module</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetBase.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\language\lang.h">
-      <Filter>gui\language</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\dgl.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\gBitmap.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\gPalette.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\splineUtil.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\messaging\dispatcher.h">
-      <Filter>messaging</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\messaging\eventManager.h">
-      <Filter>messaging</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\messaging\message.h">
-      <Filter>messaging</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\messaging\messageForwarder.h">
-      <Filter>messaging</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\messaging\scriptMsgListener.h">
-      <Filter>messaging</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\defaultGame.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\profiler.h">
-      <Filter>debug</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\math\rectClipper.h">
-      <Filter>math</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\input\actionMap.h">
-      <Filter>input</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiArrayCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiBackgroundCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiBitmapCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiBubbleTextCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiCanvas.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiColorPicker.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiConsole.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiConsoleEditCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiConsoleTextCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiControl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiDefaultControlRender.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiInputCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiListBoxCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiMessageVectorCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiMLTextCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiMLTextEditCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiMouseEventCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiPopUpCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiPopUpCtrlEx.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiProgressCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiScriptNotifyControl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiSliderCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTabPageCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTextCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTextEditCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTextEditSliderCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTextListCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTickCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTreeViewCtrl.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\guiTypes.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\gui\messageVector.h">
-      <Filter>gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\PNGImage.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\bitTables.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\bitVector.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\bitVectorW.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\hashTable.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\linkedList.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\simpleHashTable.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\sparseArray.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\vector.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\vector2d.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\vectorHeap.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\vectorQueue.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\bitStream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <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>
-    <ClInclude Include="..\..\source\io\fileStream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\fileStreamObject.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\filterStream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\memstream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\resizeStream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\stream.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\streamObject.h">
-      <Filter>io</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\centralDir.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\compressor.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\extraField.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\fileHeader.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipArchive.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipCryptStream.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipObject.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipStatFilter.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipSubStream.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\zip\zipTempStream.h">
-      <Filter>io\zip</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\memory\dataChunker.h">
-      <Filter>memory</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\memory\frameAllocator.h">
-      <Filter>memory</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\findIterator.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\bitSet.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\algorithm\crc.h">
-      <Filter>algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\algorithm\crctab.h">
-      <Filter>algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\algorithm\hashFunction.h">
-      <Filter>algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\color.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\bitMatrix.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\gameInterface.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simBase.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simDictionary.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simSet.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\connectionStringTable.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\httpObject.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\netConnection.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\netInterface.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\netObject.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\netStringTable.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\serverQuery.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\tcpObject.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\stringBuffer.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\stringTable.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\unicode.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\findMatch.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\stringUnit.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\memory\safeDelete.h">
-      <Filter>memory</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\io\resource\resourceManager.h">
-      <Filter>io\resource</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\memory\factoryCache.h">
-      <Filter>memory</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\nameTags.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\nameTags_ScriptBinding.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\collection\undo.h">
-      <Filter>collection</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\Tickable.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\telnetConsole.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\telnetDebugger.h">
-      <Filter>debug</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\string\stringStack.h">
-      <Filter>string</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\connectionProtocol.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\scriptObject.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\scriptGroup.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\SimObjectList.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simObject.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simFieldDictionary.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simEvent.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simConsoleEvent.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simConsoleThreadExecEvent.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simObjectPtr.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simDatablock.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simDatablockGroup.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleBaseType.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\ConsoleTypeValidators.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleInternal.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleDictionary.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleExprEvalState.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\console\consoleNamespace.h">
-      <Filter>console</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\audio\AudioAsset.h">
-      <Filter>audio</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\TextureManager.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\TextureObject.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\TextureHandle.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\TextureDictionary.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\DynamicTexture.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlWriteNode.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\delegates\delegate.h">
-      <Filter>delegates</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\delegates\FastDelegate.h">
-      <Filter>delegates</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\delegates\delegateSignal.h">
-      <Filter>delegates</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\AnimationAsset.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\AnimationAsset_ScriptBinding.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ImageAsset.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ImageAsset_ScriptBinding.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectMoveToEvent.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectRotateToEvent.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\Scroller.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\Scroller_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\Sprite.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\Sprite_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\Trigger.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\Trigger_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\BatchRender.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\RenderProxy.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\RenderProxy_ScriptBinding.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBase.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBase_ScriptBinding.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBatch.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBatchItem.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\Utility.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\Vector2.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\Vector2_ScriptBinding.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\ContactFilter.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\DebugDraw.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\DebugStats.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\PhysicsProxy.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\Scene.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\Scene_ScriptBinding.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderObject.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderQueue.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderRequest.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderState.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\WorldQuery.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl_ScriptBindings.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl_ScriptBindings.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\guiSceneObjectCtrl.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\CoreMath.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\SceneRenderFactories.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\WorldQueryFilter.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\scene\WorldQueryResult.h">
-      <Filter>2d\scene</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\algorithm\md5.h">
-      <Filter>algorithm</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\SceneWindow.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\gui\SceneWindow_ScriptBinding.h">
-      <Filter>2d\gui</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge_ScriptBinding.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1_ScriptBinding.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase_ScriptBinding.h">
-      <Filter>debug\remote</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\graphics\gFont.h">
-      <Filter>graphics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformEndian.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformCPU.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformString.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformNetwork.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformMemory.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformMath.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformTimeManager.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platform_ScriptBinding.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\game\gameInterface_ScriptBinding.h">
-      <Filter>game</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\network\networkProcessList.h">
-      <Filter>network</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\testing\unitTesting.h">
-      <Filter>testing</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformFileIO.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platform\platformInput_ScriptBinding.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\platformWin32\winWindow.h">
-      <Filter>platformWin32</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlChildren.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAsset.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAsset_ScriptBinding.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetField.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetFieldCollection.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter_ScriptBinding.h">
-      <Filter>2d\assets</Filter>
-    </ClInclude>
-    <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>
-    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\declaredAssets.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\assets\referencedAssets.h">
-      <Filter>assets</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\persistence\taml\tamlCustom.h">
-      <Filter>persistence\taml</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\sim\simObjectTimerEvent.h">
-      <Filter>sim</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectSet.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectList.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectSet_ScriptBinding.h">
-      <Filter>2d\sceneobject</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController_ScriptBinding.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\PointForceController.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\PointForceController_ScriptBinding.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController.h">
-      <Filter>2d\controllers\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController_ScriptBinding.h">
-      <Filter>2d\controllers\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController.h">
-      <Filter>2d\controllers\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController_ScriptBinding.h">
-      <Filter>2d\controllers\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\core\SceneController.h">
-      <Filter>2d\controllers\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController_ScriptBinding.h">
-      <Filter>2d\controllers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBatchQuery.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\SpriteBatchQueryResult.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite.h">
-      <Filter>2d\experimental\composites</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite_ScriptBinding.h">
-      <Filter>2d\experimental\composites</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\ImageFrameProvider.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\source\2d\core\ImageFrameProviderCore.h">
-      <Filter>2d\core</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuild Include="..\..\source\math\mMath_ASM.asm">
-      <Filter>math</Filter>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\math\mMathAMD_ASM.asm">
-      <Filter>math</Filter>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\math\mMathSSE_ASM.asm">
-      <Filter>math</Filter>
-    </CustomBuild>
-    <CustomBuild Include="..\..\source\platform\platformCPUInfo.asm">
-      <Filter>platform</Filter>
-    </CustomBuild>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="Torque 2D.rc" />
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="2d">
+      <UniqueIdentifier>{b90d3c2c-9694-4051-8b22-325c00d37951}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\assets">
+      <UniqueIdentifier>{57099cfd-2f9b-468f-88a5-df769a6235b0}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\sceneobject">
+      <UniqueIdentifier>{8b011278-0d15-4ba9-ba57-24056b918233}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\core">
+      <UniqueIdentifier>{b0a55e16-3a1f-4eb5-8f5b-3396d456be74}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\scene">
+      <UniqueIdentifier>{71933100-a4a2-464e-bb3f-bb04d9f078af}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\gui">
+      <UniqueIdentifier>{7824869e-4359-4413-a615-38c8534d641b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="algorithm">
+      <UniqueIdentifier>{baaa5934-0805-46eb-be6e-ae5643535b4b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="assets">
+      <UniqueIdentifier>{6a14bfc6-1f7c-4527-91d3-ccf897ff4002}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="audio">
+      <UniqueIdentifier>{bfd4849e-66c6-450b-9a01-0873aa28e21a}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d">
+      <UniqueIdentifier>{1f640da6-77a4-4176-a018-9bfad5becf95}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Collision">
+      <UniqueIdentifier>{4faf4110-842d-4178-81ca-0375f3804cac}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Collision\Shapes">
+      <UniqueIdentifier>{2f939a2b-3cd9-4e67-8311-bf751093f2a5}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Common">
+      <UniqueIdentifier>{84907fc2-76e8-4a3b-9df4-76451387d3f9}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Dynamics">
+      <UniqueIdentifier>{e2574a74-ff0d-401d-818d-96e6c155a4b4}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Dynamics\Contacts">
+      <UniqueIdentifier>{18c9fe85-da18-45d5-9573-a71ce9373961}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Dynamics\Joints">
+      <UniqueIdentifier>{4f9157b1-a024-450f-a352-1849cf2bddcc}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Rope">
+      <UniqueIdentifier>{14385fbb-f8af-4849-bdd9-8c8f67d3928e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="collection">
+      <UniqueIdentifier>{9ec04d21-b122-45be-bd70-2869fa9cdd8e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="component">
+      <UniqueIdentifier>{09cd4b77-b9b4-41f4-b17e-3ac25c27beee}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="component\behaviors">
+      <UniqueIdentifier>{47a0d755-122c-490b-b11c-d06a74fe2ab2}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="console">
+      <UniqueIdentifier>{ec2d3f1a-e3d1-49d5-98d6-a3084e37d077}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="debug">
+      <UniqueIdentifier>{b3b96a6a-462f-4c7d-92a5-009cabbe94a3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="debug\remote">
+      <UniqueIdentifier>{d55ba677-1863-4206-92b7-1df94c48df84}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="delegates">
+      <UniqueIdentifier>{d016b107-aefd-41ac-a04c-6b75caaf114d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="game">
+      <UniqueIdentifier>{d48f2bd5-39e5-4fdb-8472-79839fcd7e21}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="graphics">
+      <UniqueIdentifier>{187e7671-960f-49a7-898b-a10cf5900751}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui">
+      <UniqueIdentifier>{c17330c5-953e-4e71-9acb-1b7806b3c932}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\buttons">
+      <UniqueIdentifier>{92e20c7c-410f-4df4-a9b9-7662dac44699}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\containers">
+      <UniqueIdentifier>{513dc4d3-ba16-414a-8576-16b1dba4f6e8}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\editor">
+      <UniqueIdentifier>{c48781cd-5e6a-4ffe-b866-e64582f00d6d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\language">
+      <UniqueIdentifier>{eee14c00-6a21-4fa8-9339-572a11819062}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="input">
+      <UniqueIdentifier>{fcfa64cc-dd46-41c1-9ada-8b4a15051285}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="io">
+      <UniqueIdentifier>{fa588b4f-a8dd-4615-beee-dab4db372118}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="io\zip">
+      <UniqueIdentifier>{27eea104-6e41-4cfb-bc50-56f9157081ce}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="io\resource">
+      <UniqueIdentifier>{0688e2d7-d313-4a35-b90d-1df191825361}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="math">
+      <UniqueIdentifier>{04e382a2-a0a9-40c9-b227-a46e345fb032}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="memory">
+      <UniqueIdentifier>{5c7d23f1-7194-4a6f-8bd3-fd5b6a0beb4f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="messaging">
+      <UniqueIdentifier>{66757e8b-c204-4b92-92ab-19278019d17d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="module">
+      <UniqueIdentifier>{23024162-0d6f-4259-8dac-a3a621d55065}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="network">
+      <UniqueIdentifier>{c1b891be-db08-48e9-b52a-f0cf3bac185e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence">
+      <UniqueIdentifier>{87703b23-784c-4769-b085-57c72b1b536e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\taml">
+      <UniqueIdentifier>{a2568a68-f396-4b3e-9ed6-bf73656752d3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\tinyXML">
+      <UniqueIdentifier>{d13f86bc-f4dd-4329-8337-dd41e2db04a1}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform">
+      <UniqueIdentifier>{f5858e14-ed7e-4887-a22e-4123ab41a6f1}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform\menus">
+      <UniqueIdentifier>{a9dbe516-9ed6-43a6-987e-6f2bc6f59928}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform\nativeDialogs">
+      <UniqueIdentifier>{d98ec67b-b10a-4c7b-bb2f-a6394a861b67}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform\threads">
+      <UniqueIdentifier>{04d21b23-41a0-44a7-810e-f31c81fd5c81}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32">
+      <UniqueIdentifier>{3f7e4a0c-c3da-4972-a9bc-9cb0e0ce622e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32\menus">
+      <UniqueIdentifier>{d77ee12f-a922-4d39-9e6c-2ad87a5b4a4e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32\nativeDialogs">
+      <UniqueIdentifier>{9da3da8f-0660-4a53-b5cf-3994c2dca7e3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32\threads">
+      <UniqueIdentifier>{78695f15-84c6-4505-a999-716fe79bdabe}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="sim">
+      <UniqueIdentifier>{e706ea06-aa20-4487-a010-e0d00adc658f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="string">
+      <UniqueIdentifier>{fa7e2f20-cd6d-4118-8a74-9f9c95119064}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="testing">
+      <UniqueIdentifier>{7b04617f-42ef-4238-9a98-9d8309b64c93}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="testing\tests">
+      <UniqueIdentifier>{57e1271d-4358-4180-b168-4b9c2cbac907}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\controllers">
+      <UniqueIdentifier>{a9e97335-bed5-4f6a-9959-12f5f41dbdcb}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\controllers\core">
+      <UniqueIdentifier>{e11e344e-6418-4ed0-980a-77d66cd64d65}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\experimental">
+      <UniqueIdentifier>{1eb9e730-583b-4aa4-ac25-b83960799ba4}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\experimental\composites">
+      <UniqueIdentifier>{30e1ec13-118b-4d50-8e04-76e76fcfdc01}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\rapidjson">
+      <UniqueIdentifier>{4d0b6ff3-58d2-4952-bd14-915a50a3b568}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\rapidjson\internal">
+      <UniqueIdentifier>{9cbec746-dd4c-4b4c-b11f-37a126ea2c38}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\taml\binary">
+      <UniqueIdentifier>{427672e0-f4a2-45a9-b44c-92d190e961aa}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\taml\json">
+      <UniqueIdentifier>{e1ff3412-7343-4dfb-bc99-bce90655557b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\taml\xml">
+      <UniqueIdentifier>{cc1c1416-376b-4686-a4ac-21d1a35c9390}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\source\audio\audio.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\audioBuffer.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\audioDataBlock.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\audioStreamSourceFactory.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\wavStreamSource.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\dynamicConsoleMethodComponent.cpp">
+      <Filter>component</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\simComponent.cpp">
+      <Filter>component</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\behaviors\behaviorComponent.cpp">
+      <Filter>component\behaviors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\behaviors\behaviorInstance.cpp">
+      <Filter>component\behaviors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\behaviors\behaviorTemplate.cpp">
+      <Filter>component\behaviors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\astAlloc.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\astNodes.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\cmdgram.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\CMDscan.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\codeBlock.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\compiledEval.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\compiler.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\console.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleDoc.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleFunctions.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleLogger.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleObject.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleParser.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleTypes.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\gameConnection.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\version.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mathTypes.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mathUtils.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mBox.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMath_C.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathAltivec.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathAMD.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathFn.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathSSE.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMatrix.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mPlaneTransformer.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mQuadPatch.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mQuat.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mRandom.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mSolver.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mSplinePatch.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\SimXMLDocument.cpp">
+      <Filter>persistence</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\CursorManager.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platform.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformAssert.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformCPU.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformFileIO.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformMemory.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformString.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformVideo.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\menus\popupMenu.cc">
+      <Filter>platform\menus</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\nativeDialogs\msgBox.cpp">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\cardProfile.cpp">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winAsmBlit.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winConsole.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winCPUInfo.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winDInputDevice.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winDirectInput.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winExec.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winFileio.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winFont.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winGL.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winGLSpecial.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winInput.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winMath.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winMath_ASM.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winMemory.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winNet.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winOGLVideo.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winOpenAL.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winProcessControl.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winSemaphore.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winStrings.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winTime.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winTLS.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winUser.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winVFS.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winVideo.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winWindow.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\menus\popupMenuWin32.cc">
+      <Filter>platformWin32\menus</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.cpp">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32MsgBox.cpp">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\threads\mutex.cc">
+      <Filter>platformWin32\threads</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\threads\thread.cc">
+      <Filter>platformWin32\threads</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiBorderButton.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonBaseCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiCheckBoxCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiIconButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiRadioCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiAutoScrollCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiCtrlArrayCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiDragAndDropCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiFormCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiFrameCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiPaneCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiRolloutCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiScrollCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiStackCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiTabBookCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiWindowCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiControlListPopup.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiDebugger.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiEditCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiFilterCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiGraphCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiImageList.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiInspector.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiInspectorTypes.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiMenuBar.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiSeparatorCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2BroadPhase.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollideCircle.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollideEdge.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollidePolygon.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2Collision.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2Distance.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2DynamicTree.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2TimeOfImpact.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2BlockAllocator.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Draw.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Math.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Settings.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2StackAllocator.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Timer.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Body.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2ContactManager.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Fixture.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Island.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2World.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2Joint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Rope\b2Rope.cpp">
+      <Filter>box2d\Rope</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\taml.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\module\moduleDefinition.cc">
+      <Filter>module</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\module\moduleManager.cc">
+      <Filter>module</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinystr.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxml.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlerror.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlparser.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\module\moduleMergeDefinition.cc">
+      <Filter>module</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetManager.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetFieldTypes.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetQuery.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetTagsManifest.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetBase.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\language\lang.cc">
+      <Filter>gui\language</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\bitmapBmp.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\bitmapJpeg.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\bitmapPng.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\dgl.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\dglMatrix.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\gBitmap.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\gPalette.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\splineUtil.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\dispatcher.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\eventManager.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\message.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\messageForwarder.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\scriptMsgListener.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\defaultGame.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\profiler.cc">
+      <Filter>debug</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\rectClipper.cpp">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\input\actionMap.cc">
+      <Filter>input</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiArrayCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBackgroundCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBitmapBorderCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBitmapCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBubbleTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiCanvas.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiColorPicker.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiConsole.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiConsoleEditCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiConsoleTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiControl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiDefaultControlRender.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiFadeinBitmapCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiInputCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiListBoxCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMessageVectorCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMLTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMLTextEditCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMouseEventCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrlEx.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiProgressCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiScriptNotifyControl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiSliderCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTabPageCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextEditCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextEditSliderCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextListCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTickCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTreeViewCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTypes.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\messageVector.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\PNGImage.cpp">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\bitTables.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\hashTable.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\vector.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\bitStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\bufferStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\fileObject.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\fileStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\fileStreamObject.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\filterStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\memStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\nStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\resizeStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\streamObject.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\centralDir.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\compressor.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\extraField.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\fileHeader.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipArchive.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipCryptStream.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipObject.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipSubStream.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipTempStream.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\deflate.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\stored.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\memory\dataChunker.cc">
+      <Filter>memory</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\algorithm\crc.cc">
+      <Filter>algorithm</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\algorithm\hashFunction.cc">
+      <Filter>algorithm</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\gameInterface.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simBase.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simDictionary.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simManager.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simSerialize.cpp">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simSet.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\connectionStringTable.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\httpObject.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netConnection.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netDownload.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netEvent.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netGhost.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netInterface.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netObject.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netStringTable.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netTest.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\serverQuery.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\tcpObject.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringBuffer.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringTable.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\unicode.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\findMatch.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringUnit.cpp">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\resource\resourceDictionary.cc">
+      <Filter>io\resource</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\resource\resourceManager.cc">
+      <Filter>io\resource</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\nameTags.cpp">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\undo.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\Tickable.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\telnetConsole.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\telnetDebugger.cc">
+      <Filter>debug</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringStack.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\connectionProtocol.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\RemoteCommandEvent.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\scriptObject.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\scriptGroup.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\SimObjectList.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simObject.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simFieldDictionary.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simConsoleEvent.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simConsoleThreadExecEvent.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simDatablock.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleBaseType.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\ConsoleTypeValidators.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleDictionary.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleExprEvalState.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleNamespace.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\AudioAsset.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\TextureManager.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\TextureHandle.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\TextureDictionary.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\DynamicTexture.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\tamlWriteNode.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\delegates\delegateSignal.cpp">
+      <Filter>delegates</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\AnimationAsset.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ImageAsset.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\CompositeSprite.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObject.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\Scroller.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\ShapeVector.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\Sprite.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\Trigger.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\BatchRender.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\RenderProxy.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteBase.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteBatch.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteBatchItem.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\Utility.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\Vector2.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\ContactFilter.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\DebugDraw.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\Scene.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\guiImageButtonCtrl.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\guiSpriteCtrl.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\guiSceneObjectCtrl.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\CoreMath.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderFactories.cpp">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderQueue.cpp">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\SceneWindow.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc">
+      <Filter>debug\remote</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBridge.cc">
+      <Filter>debug\remote</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc">
+      <Filter>debug\remote</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\gFont.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformFont.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\networkProcessList.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\tests\platformFileIoTests.cc">
+      <Filter>testing\tests</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\unitTesting.cc">
+      <Filter>testing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\tests\platformStringTests.cc">
+      <Filter>testing\tests</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\tests\platformMemoryTests.cc">
+      <Filter>testing\tests</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\nativeDialogs\fileDialog.cc">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32FileDialog.cc">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\color.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAsset.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetEmitter.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetField.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetFieldCollection.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\ParticlePlayer.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\ParticleSystem.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\ImageFont.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\declaredAssets.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\referencedAssets.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\tamlCustom.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectSet.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObjectList.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\controllers\BuoyancyController.cc">
+      <Filter>2d\controllers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\controllers\PointForceController.cc">
+      <Filter>2d\controllers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\controllers\core\GroupedSceneController.cc">
+      <Filter>2d\controllers\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\controllers\core\PickingSceneController.cc">
+      <Filter>2d\controllers\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\controllers\AmbientForceController.cc">
+      <Filter>2d\controllers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteBatchQuery.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\experimental\composites\WaveComposite.cc">
+      <Filter>2d\experimental\composites</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\ImageFrameProvider.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\ImageFrameProviderCore.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\binary\tamlBinaryReader.cc">
+      <Filter>persistence\taml\binary</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\binary\tamlBinaryWriter.cc">
+      <Filter>persistence\taml\binary</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONReader.cc">
+      <Filter>persistence\taml\json</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONWriter.cc">
+      <Filter>persistence\taml\json</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlParser.cc">
+      <Filter>persistence\taml\xml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlReader.cc">
+      <Filter>persistence\taml\xml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\xml\tamlXmlWriter.cc">
+      <Filter>persistence\taml\xml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\json\tamlJSONParser.cc">
+      <Filter>persistence\taml\json</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiGridCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\metaScripting_ScriptBinding.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\audio_ScriptBinding.cc">
+      <Filter>audio</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\platform\platformNetwork_ScriptBinding.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\memory\frameAllocator_ScriptBinding.cc">
+      <Filter>memory</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\source\audio\audio.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioBuffer.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioDataBlock.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioStreamSource.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioStreamSourceFactory.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\wavStreamSource.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent.h">
+      <Filter>component</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\simComponent.h">
+      <Filter>component</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\ast.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\astNodeSizes.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\cmdgram.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\codeBlock.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\compiler.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\console.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleDoc.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleLogger.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleObject.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleParser.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleTypes.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\gameConnection.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\resource.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\version.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mathIO.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mathTypes.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mathUtils.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mBox.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mConstants.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mMath.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mMathFn.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mMatrix.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mPlane.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mPlaneTransformer.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mPoint.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mQuadPatch.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mQuat.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mRandom.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mRect.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mSphere.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mSplinePatch.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\SimXMLDocument.h">
+      <Filter>persistence</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\event.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\GLCoreFunc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\GLExtFunc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\GLUFunc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platform.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformAL.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformAssert.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformAudio.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformFont.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformGL.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformInput.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformSemaphore.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformTLS.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformVFS.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformVideo.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.codewarrior.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.gcc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.posix.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.ppc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.visualc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.win32.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesLinux.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesPPC.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesWin32.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesX86UNIX.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\menus\popupMenu.h">
+      <Filter>platform\menus</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog.h">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox.h">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\threads\mutex.h">
+      <Filter>platform\threads</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\threads\semaphore.h">
+      <Filter>platform\threads</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\threads\thread.h">
+      <Filter>platform\threads</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\gl_types.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\GLWinExtFunc.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\GLWinFunc.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\platformGL.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\platformWin32.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\VFSRes.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win32NPatch.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win_common_prefix.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win_debug_prefix.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win_release_prefix.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winConsole.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winDInputDevice.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winDirectInput.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winFont.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winOGLVideo.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winVideo.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.h">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiButtonBaseCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiCheckBoxCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiIconButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiRadioCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiAutoScrollCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiCtrlArrayCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiDragAndDropCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiFormCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiFrameCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiPaneCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiRolloutCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiScrollCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiStackCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiTabBookCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiWindowCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiDebugger.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiEditCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiFilterCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiGraphCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiImageList.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiInspector.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiInspectorTypes.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiMenuBar.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiSeparatorCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Box2D.h">
+      <Filter>box2d</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2BroadPhase.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2Collision.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2Distance.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2DynamicTree.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2TimeOfImpact.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2Shape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2BlockAllocator.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Draw.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2GrowableStack.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Math.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Settings.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2StackAllocator.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Timer.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Body.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2ContactManager.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Fixture.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Island.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2TimeStep.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2World.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2Joint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Rope\b2Rope.h">
+      <Filter>box2d\Rope</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent_ScriptBinding.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance_ScriptBinding.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate_ScriptBinding.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponentRaiseEvent.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\taml.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlCallbacks.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\taml_ScriptBinding.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleDefinition.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleManager.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleManager_ScriptBinding.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinystr.h">
+      <Filter>persistence\tinyXML</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinyxml.h">
+      <Filter>persistence\tinyXML</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleDefinition_ScriptBinding.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleMergeDefinition.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetDefinition.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetManager.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetManager_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetFieldTypes.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredUpdateVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedUpdateVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetQuery.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetQuery_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetPtr.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetTagsManifest.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetTagsManifest_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\tamlModuleIdUpdateVisitor.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleCallbacks.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetBase.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\language\lang.h">
+      <Filter>gui\language</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\dgl.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\gBitmap.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\gPalette.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\splineUtil.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\dispatcher.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\eventManager.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\message.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\messageForwarder.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\scriptMsgListener.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\defaultGame.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\profiler.h">
+      <Filter>debug</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\rectClipper.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\input\actionMap.h">
+      <Filter>input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiArrayCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiBackgroundCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiBitmapCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiBubbleTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiCanvas.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiColorPicker.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiConsole.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiConsoleEditCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiConsoleTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiControl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiDefaultControlRender.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiInputCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiListBoxCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMessageVectorCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMLTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMLTextEditCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMouseEventCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrlEx.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiProgressCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiScriptNotifyControl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiSliderCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTabPageCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextEditCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextEditSliderCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextListCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTickCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTreeViewCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTypes.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\messageVector.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\PNGImage.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitTables.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitVector.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitVectorW.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\hashTable.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\linkedList.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\simpleHashTable.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\sparseArray.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vector.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vector2d.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vectorHeap.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vectorQueue.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\bitStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <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>
+    <ClInclude Include="..\..\source\io\fileStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\fileStreamObject.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\filterStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\memstream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\resizeStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\stream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\streamObject.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\centralDir.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\compressor.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\extraField.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\fileHeader.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipArchive.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipCryptStream.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipObject.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipStatFilter.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipSubStream.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipTempStream.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\dataChunker.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\frameAllocator.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\findIterator.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitSet.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\crc.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\crctab.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\hashFunction.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\color.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitMatrix.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\gameInterface.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simBase.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simDictionary.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simSet.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\connectionStringTable.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\httpObject.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netConnection.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netInterface.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netObject.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netStringTable.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\serverQuery.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\tcpObject.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringBuffer.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringTable.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\unicode.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\findMatch.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringUnit.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\safeDelete.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\resource\resourceManager.h">
+      <Filter>io\resource</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\factoryCache.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\nameTags.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\nameTags_ScriptBinding.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\undo.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\Tickable.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\telnetConsole.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\telnetDebugger.h">
+      <Filter>debug</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringStack.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\connectionProtocol.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\scriptObject.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\scriptGroup.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\SimObjectList.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simObject.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simFieldDictionary.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simEvent.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simConsoleEvent.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simConsoleThreadExecEvent.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simObjectPtr.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simDatablock.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simDatablockGroup.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleBaseType.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\ConsoleTypeValidators.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleInternal.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleDictionary.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleExprEvalState.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleNamespace.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\AudioAsset.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureManager.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureObject.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureHandle.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureDictionary.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\DynamicTexture.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlWriteNode.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\delegates\delegate.h">
+      <Filter>delegates</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\delegates\FastDelegate.h">
+      <Filter>delegates</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\delegates\delegateSignal.h">
+      <Filter>delegates</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectMoveToEvent.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectRotateToEvent.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Scroller.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Scroller_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\BatchRender.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\RenderProxy.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\RenderProxy_ScriptBinding.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBase.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBase_ScriptBinding.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBatch.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBatchItem.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\Utility.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\Vector2.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\Vector2_ScriptBinding.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\ContactFilter.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\DebugDraw.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\DebugStats.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\PhysicsProxy.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\Scene.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\Scene_ScriptBinding.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderObject.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderQueue.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderRequest.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderState.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\WorldQuery.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl_ScriptBindings.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl_ScriptBindings.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiSceneObjectCtrl.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\CoreMath.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderFactories.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryFilter.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryResult.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\md5.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow_ScriptBinding.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge_ScriptBinding.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1_ScriptBinding.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase_ScriptBinding.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\gFont.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformEndian.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformCPU.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformString.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformNetwork.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformMemory.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformMath.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformTimeManager.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platform_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\gameInterface_ScriptBinding.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\networkProcessList.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\testing\unitTesting.h">
+      <Filter>testing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformFileIO.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformInput_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winWindow.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlChildren.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetField.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetFieldCollection.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\ParticleSystem.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\declaredAssets.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\referencedAssets.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlCustom.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simObjectTimerEvent.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectSet.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectList.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectSet_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\BuoyancyController_ScriptBinding.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\PointForceController.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\PointForceController_ScriptBinding.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController.h">
+      <Filter>2d\controllers\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\core\GroupedSceneController_ScriptBinding.h">
+      <Filter>2d\controllers\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController.h">
+      <Filter>2d\controllers\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\core\PickingSceneController_ScriptBinding.h">
+      <Filter>2d\controllers\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\core\SceneController.h">
+      <Filter>2d\controllers\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\controllers\AmbientForceController_ScriptBinding.h">
+      <Filter>2d\controllers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBatchQuery.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBatchQueryResult.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite.h">
+      <Filter>2d\experimental\composites</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\experimental\composites\WaveComposite_ScriptBinding.h">
+      <Filter>2d\experimental\composites</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\ImageFrameProvider.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\ImageFrameProviderCore.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\allocators.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\document.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\encodedstream.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\encodings.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filereadstream.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filestream.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\filewritestream.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\prettywriter.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\rapidjson.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\reader.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\stringbuffer.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\writer.h">
+      <Filter>persistence\rapidjson</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\pow10.h">
+      <Filter>persistence\rapidjson\internal</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\stack.h">
+      <Filter>persistence\rapidjson\internal</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\rapidjson\include\rapidjson\internal\strfunc.h">
+      <Filter>persistence\rapidjson\internal</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\binary\tamlBinaryReader.h">
+      <Filter>persistence\taml\binary</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\binary\tamlBinaryWriter.h">
+      <Filter>persistence\taml\binary</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONReader.h">
+      <Filter>persistence\taml\json</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONWriter.h">
+      <Filter>persistence\taml\json</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlParser.h">
+      <Filter>persistence\taml\xml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlReader.h">
+      <Filter>persistence\taml\xml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\xml\tamlXmlWriter.h">
+      <Filter>persistence\taml\xml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlVisitor.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlParser.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\json\tamlJSONParser.h">
+      <Filter>persistence\taml\json</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiGridCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <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\io\streamObject_ScriptBinding.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\undo_ScriptBinding.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <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\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>
+  </ItemGroup>
+  <ItemGroup>
+    <CustomBuild Include="..\..\source\math\mMath_ASM.asm">
+      <Filter>math</Filter>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathAMD_ASM.asm">
+      <Filter>math</Filter>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathSSE_ASM.asm">
+      <Filter>math</Filter>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\platform\platformCPUInfo.asm">
+      <Filter>platform</Filter>
+    </CustomBuild>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="Torque 2D.rc" />
+  </ItemGroup>
 </Project>
 </Project>

+ 285 - 58
engine/compilers/Xcode/Torque2D.xcodeproj/project.pbxproj

@@ -23,8 +23,16 @@
 		2ABF5C8F16569A0C00BBBF1D /* osxMutex.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2ABF5C8E16569A0C00BBBF1D /* osxMutex.mm */; };
 		2ABF5C8F16569A0C00BBBF1D /* osxMutex.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2ABF5C8E16569A0C00BBBF1D /* osxMutex.mm */; };
 		2AC4404516B0142B00FC4091 /* ImageFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AC4404316B0142B00FC4091 /* ImageFont.cc */; };
 		2AC4404516B0142B00FC4091 /* ImageFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AC4404316B0142B00FC4091 /* ImageFont.cc */; };
 		2AC5C7E81667C85700A0D046 /* platformStringTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AC5C7E71667C85700A0D046 /* platformStringTests.cc */; };
 		2AC5C7E81667C85700A0D046 /* platformStringTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AC5C7E71667C85700A0D046 /* platformStringTests.cc */; };
+		2ACAFD4A1705CF4A0022601C /* tamlJSONParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ACAFD481705CF4A0022601C /* tamlJSONParser.cc */; };
 		2ACF5A2816E52D4B00F838D9 /* SpriteBatchQuery.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF5A2516E52D4B00F838D9 /* SpriteBatchQuery.cc */; };
 		2ACF5A2816E52D4B00F838D9 /* SpriteBatchQuery.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF5A2516E52D4B00F838D9 /* SpriteBatchQuery.cc */; };
 		2ACFC0A8166CE1AB00FE7370 /* platformMemoryTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ACFC0A7166CE1AB00FE7370 /* platformMemoryTests.cc */; };
 		2ACFC0A8166CE1AB00FE7370 /* platformMemoryTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ACFC0A7166CE1AB00FE7370 /* platformMemoryTests.cc */; };
+		2AD42140170433FE005BB8AD /* tamlXmlParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD42139170433FE005BB8AD /* tamlXmlParser.cc */; };
+		2AD42141170433FE005BB8AD /* tamlXmlReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD4213B170433FE005BB8AD /* tamlXmlReader.cc */; };
+		2AD42142170433FE005BB8AD /* tamlXmlWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD4213E170433FE005BB8AD /* tamlXmlWriter.cc */; };
+		2AD4214717043408005BB8AD /* tamlJSONReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD4214317043408005BB8AD /* tamlJSONReader.cc */; };
+		2AD4214817043408005BB8AD /* tamlJSONWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD4214517043408005BB8AD /* tamlJSONWriter.cc */; };
+		2AD4214D17043413005BB8AD /* tamlBinaryReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD4214917043413005BB8AD /* tamlBinaryReader.cc */; };
+		2AD4214E17043413005BB8AD /* tamlBinaryWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD4214B17043413005BB8AD /* tamlBinaryWriter.cc */; };
 		2ADCAC1516A41E5500E07619 /* ParticleAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ADCAC1116A41E5500E07619 /* ParticleAsset.cc */; };
 		2ADCAC1516A41E5500E07619 /* ParticleAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ADCAC1116A41E5500E07619 /* ParticleAsset.cc */; };
 		2ADCAC1716A41E5500E07619 /* ParticleAssetField.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ADCAC1316A41E5500E07619 /* ParticleAssetField.cc */; };
 		2ADCAC1716A41E5500E07619 /* ParticleAssetField.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ADCAC1316A41E5500E07619 /* ParticleAssetField.cc */; };
 		2AE2938516EF4C220015E200 /* WaveComposite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AE2938316EF4C220015E200 /* WaveComposite.cc */; };
 		2AE2938516EF4C220015E200 /* WaveComposite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AE2938316EF4C220015E200 /* WaveComposite.cc */; };
@@ -211,7 +219,6 @@
 		86D76FA3165686D80046D71F /* AudioAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0316518D4600D96ADF /* AudioAsset.cc */; };
 		86D76FA3165686D80046D71F /* AudioAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0316518D4600D96ADF /* AudioAsset.cc */; };
 		86D76FA4165686D80046D71F /* audioBuffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0516518D4600D96ADF /* audioBuffer.cc */; };
 		86D76FA4165686D80046D71F /* audioBuffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0516518D4600D96ADF /* audioBuffer.cc */; };
 		86D76FA5165686D80046D71F /* audioDataBlock.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0716518D4600D96ADF /* audioDataBlock.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 */; };
 		86D76FA7165686D80046D71F /* audioStreamSourceFactory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0B16518D4600D96ADF /* audioStreamSourceFactory.cc */; };
 		86D76FA8165686D80046D71F /* wavStreamSource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0D16518D4600D96ADF /* wavStreamSource.cc */; };
 		86D76FA8165686D80046D71F /* wavStreamSource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0D16518D4600D96ADF /* wavStreamSource.cc */; };
 		86D76FA9165686D80046D71F /* bitTables.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F1216518D4600D96ADF /* bitTables.cc */; };
 		86D76FA9165686D80046D71F /* bitTables.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F1216518D4600D96ADF /* bitTables.cc */; };
@@ -340,7 +347,6 @@
 		86D77041165687220046D71F /* fileObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806116518D4600D96ADF /* fileObject.cc */; };
 		86D77041165687220046D71F /* fileObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806116518D4600D96ADF /* fileObject.cc */; };
 		86D77042165687220046D71F /* fileStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806316518D4600D96ADF /* fileStream.cc */; };
 		86D77042165687220046D71F /* fileStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806316518D4600D96ADF /* fileStream.cc */; };
 		86D77043165687220046D71F /* fileStreamObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806516518D4600D96ADF /* fileStreamObject.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 */; };
 		86D77045165687220046D71F /* filterStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806816518D4600D96ADF /* filterStream.cc */; };
 		86D77046165687220046D71F /* memStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806A16518D4600D96ADF /* memStream.cc */; };
 		86D77046165687220046D71F /* memStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806A16518D4600D96ADF /* memStream.cc */; };
 		86D77047165687220046D71F /* nStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806C16518D4600D96ADF /* nStream.cc */; };
 		86D77047165687220046D71F /* nStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806C16518D4600D96ADF /* nStream.cc */; };
@@ -362,7 +368,6 @@
 		86D770571656873C0046D71F /* mathTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809316518D4600D96ADF /* mathTypes.cc */; };
 		86D770571656873C0046D71F /* mathTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809316518D4600D96ADF /* mathTypes.cc */; };
 		86D770581656873C0046D71F /* mathUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809516518D4600D96ADF /* mathUtils.cc */; };
 		86D770581656873C0046D71F /* mathUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809516518D4600D96ADF /* mathUtils.cc */; };
 		86D770591656873C0046D71F /* mBox.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809716518D4600D96ADF /* mBox.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 */; };
 		86D7705B1656873C0046D71F /* mMath_C.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809D16518D4600D96ADF /* mMath_C.cc */; };
 		86D7705C1656873C0046D71F /* mMathAltivec.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809E16518D4600D96ADF /* mMathAltivec.cc */; };
 		86D7705C1656873C0046D71F /* mMathAltivec.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809E16518D4600D96ADF /* mMathAltivec.cc */; };
 		86D7705D1656873C0046D71F /* mMathFn.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80A116518D4600D96ADF /* mMathFn.cc */; };
 		86D7705D1656873C0046D71F /* mMathFn.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80A116518D4600D96ADF /* mMathFn.cc */; };
@@ -374,7 +379,6 @@
 		86D770631656873C0046D71F /* mSplinePatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B416518D4600D96ADF /* mSplinePatch.cc */; };
 		86D770631656873C0046D71F /* mSplinePatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B416518D4600D96ADF /* mSplinePatch.cc */; };
 		86D770641656873C0046D71F /* rectClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B616518D4600D96ADF /* rectClipper.cpp */; };
 		86D770641656873C0046D71F /* rectClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B616518D4600D96ADF /* rectClipper.cpp */; };
 		86D770651656873C0046D71F /* dataChunker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B916518D4600D96ADF /* dataChunker.cc */; };
 		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 */; };
 		86D770671656873C0046D71F /* dispatcher.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C016518D4600D96ADF /* dispatcher.cc */; };
 		86D770681656873C0046D71F /* eventManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C216518D4600D96ADF /* eventManager.cc */; };
 		86D770681656873C0046D71F /* eventManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C216518D4600D96ADF /* eventManager.cc */; };
 		86D770691656873C0046D71F /* message.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C416518D4600D96ADF /* message.cc */; };
 		86D770691656873C0046D71F /* message.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C416518D4600D96ADF /* message.cc */; };
@@ -401,17 +405,11 @@
 		86D7707E1656873C0046D71F /* telnetConsole.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80ED16518D4600D96ADF /* telnetConsole.cc */; };
 		86D7707E1656873C0046D71F /* telnetConsole.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80ED16518D4600D96ADF /* telnetConsole.cc */; };
 		86D7707F1656873C0046D71F /* SimXMLDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80F016518D4600D96ADF /* SimXMLDocument.cpp */; };
 		86D7707F1656873C0046D71F /* SimXMLDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80F016518D4600D96ADF /* SimXMLDocument.cpp */; };
 		86D770801656873C0046D71F /* taml.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80F316518D4600D96ADF /* taml.cc */; };
 		86D770801656873C0046D71F /* taml.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80F316518D4600D96ADF /* taml.cc */; };
-		86D770811656873C0046D71F /* tamlBinaryReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80F616518D4600D96ADF /* tamlBinaryReader.cc */; };
-		86D770821656873C0046D71F /* tamlBinaryWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80F816518D4600D96ADF /* tamlBinaryWriter.cc */; };
 		86D770841656873C0046D71F /* tamlWriteNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80FD16518D4600D96ADF /* tamlWriteNode.cc */; };
 		86D770841656873C0046D71F /* tamlWriteNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80FD16518D4600D96ADF /* tamlWriteNode.cc */; };
-		86D770851656873C0046D71F /* tamlXmlParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80FF16518D4600D96ADF /* tamlXmlParser.cc */; };
-		86D770861656873C0046D71F /* tamlXmlReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810116518D4600D96ADF /* tamlXmlReader.cc */; };
-		86D770871656873C0046D71F /* tamlXmlWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810416518D4600D96ADF /* tamlXmlWriter.cc */; };
 		86D770881656873C0046D71F /* tinystr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810716518D4600D96ADF /* tinystr.cpp */; };
 		86D770881656873C0046D71F /* tinystr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810716518D4600D96ADF /* tinystr.cpp */; };
 		86D770891656873C0046D71F /* tinyxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810916518D4600D96ADF /* tinyxml.cpp */; };
 		86D770891656873C0046D71F /* tinyxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810916518D4600D96ADF /* tinyxml.cpp */; };
 		86D7708A1656873C0046D71F /* tinyxmlerror.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810B16518D4600D96ADF /* tinyxmlerror.cpp */; };
 		86D7708A1656873C0046D71F /* tinyxmlerror.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810B16518D4600D96ADF /* tinyxmlerror.cpp */; };
 		86D7708B1656873C0046D71F /* tinyxmlparser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810C16518D4600D96ADF /* tinyxmlparser.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 */; };
 		86D7708D1656873C0046D71F /* CursorManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834C16518FE800D96ADF /* CursorManager.cc */; };
 		86D7708E1656873C0046D71F /* platform.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834D16518FE800D96ADF /* platform.cc */; };
 		86D7708E1656873C0046D71F /* platform.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834D16518FE800D96ADF /* platform.cc */; };
 		86D7708F1656873C0046D71F /* platformAssert.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834E16518FE800D96ADF /* platformAssert.cc */; };
 		86D7708F1656873C0046D71F /* platformAssert.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834E16518FE800D96ADF /* platformAssert.cc */; };
@@ -445,8 +443,15 @@
 		86D770BB1656873C0046D71F /* stringUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC815116518D4600D96ADF /* stringUnit.cpp */; };
 		86D770BB1656873C0046D71F /* stringUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC815116518D4600D96ADF /* stringUnit.cpp */; };
 		86D770BC1656873C0046D71F /* unicode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC815316518D4600D96ADF /* unicode.cc */; };
 		86D770BC1656873C0046D71F /* unicode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC815316518D4600D96ADF /* unicode.cc */; };
 		86D770C3165687450046D71F /* osxFileDialogs.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8609FE3216556F22004662ED /* osxFileDialogs.mm */; };
 		86D770C3165687450046D71F /* osxFileDialogs.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8609FE3216556F22004662ED /* osxFileDialogs.mm */; };
+		86DE5688171F05F60054CB83 /* guiGridCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86DE5686171F05F60054CB83 /* guiGridCtrl.cc */; };
 		86EA5B401678C7C700598E68 /* osxCocoaUtilities.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86EA5B3F1678C7C700598E68 /* osxCocoaUtilities.mm */; };
 		86EA5B401678C7C700598E68 /* osxCocoaUtilities.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86EA5B3F1678C7C700598E68 /* osxCocoaUtilities.mm */; };
 		86EC5AC7165C1E0100757872 /* osxTorqueView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86EC5AC6165C1E0100757872 /* osxTorqueView.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 */
 /* End PBXBuildFile section */
 
 
 /* Begin PBXFileReference section */
 /* Begin PBXFileReference section */
@@ -471,6 +476,8 @@
 		2AB14A0216D7CDC200EABBF2 /* PointForceController_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PointForceController_ScriptBinding.h; path = controllers/PointForceController_ScriptBinding.h; sourceTree = "<group>"; };
 		2AB14A0216D7CDC200EABBF2 /* PointForceController_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PointForceController_ScriptBinding.h; path = controllers/PointForceController_ScriptBinding.h; sourceTree = "<group>"; };
 		2AB14A0316D7CDC200EABBF2 /* PointForceController.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PointForceController.cc; path = controllers/PointForceController.cc; sourceTree = "<group>"; };
 		2AB14A0316D7CDC200EABBF2 /* PointForceController.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PointForceController.cc; path = controllers/PointForceController.cc; sourceTree = "<group>"; };
 		2AB14A0416D7CDC300EABBF2 /* PointForceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PointForceController.h; path = controllers/PointForceController.h; sourceTree = "<group>"; };
 		2AB14A0416D7CDC300EABBF2 /* PointForceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PointForceController.h; path = controllers/PointForceController.h; sourceTree = "<group>"; };
+		2AB4A5221705A84D0043CBAA /* tamlParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlParser.h; sourceTree = "<group>"; };
+		2AB4A5231705A84D0043CBAA /* tamlVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlVisitor.h; sourceTree = "<group>"; };
 		2AB4C19716DE9F0600B02479 /* GroupedSceneController_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GroupedSceneController_ScriptBinding.h; path = controllers/core/GroupedSceneController_ScriptBinding.h; sourceTree = "<group>"; };
 		2AB4C19716DE9F0600B02479 /* GroupedSceneController_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GroupedSceneController_ScriptBinding.h; path = controllers/core/GroupedSceneController_ScriptBinding.h; sourceTree = "<group>"; };
 		2AB4C19816DE9F0600B02479 /* GroupedSceneController.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GroupedSceneController.cc; path = controllers/core/GroupedSceneController.cc; sourceTree = "<group>"; };
 		2AB4C19816DE9F0600B02479 /* GroupedSceneController.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GroupedSceneController.cc; path = controllers/core/GroupedSceneController.cc; sourceTree = "<group>"; };
 		2AB4C19916DE9F0600B02479 /* GroupedSceneController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GroupedSceneController.h; path = controllers/core/GroupedSceneController.h; sourceTree = "<group>"; };
 		2AB4C19916DE9F0600B02479 /* GroupedSceneController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GroupedSceneController.h; path = controllers/core/GroupedSceneController.h; sourceTree = "<group>"; };
@@ -488,12 +495,43 @@
 		2AC4404316B0142B00FC4091 /* ImageFont.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageFont.cc; sourceTree = "<group>"; };
 		2AC4404316B0142B00FC4091 /* ImageFont.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageFont.cc; sourceTree = "<group>"; };
 		2AC4404416B0142B00FC4091 /* ImageFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageFont.h; sourceTree = "<group>"; };
 		2AC4404416B0142B00FC4091 /* ImageFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageFont.h; sourceTree = "<group>"; };
 		2AC5C7E71667C85700A0D046 /* platformStringTests.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = platformStringTests.cc; path = ../../../source/testing/tests/platformStringTests.cc; sourceTree = "<group>"; };
 		2AC5C7E71667C85700A0D046 /* platformStringTests.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = platformStringTests.cc; path = ../../../source/testing/tests/platformStringTests.cc; sourceTree = "<group>"; };
+		2ACAFD481705CF4A0022601C /* tamlJSONParser.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlJSONParser.cc; path = json/tamlJSONParser.cc; sourceTree = "<group>"; };
+		2ACAFD491705CF4A0022601C /* tamlJSONParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlJSONParser.h; path = json/tamlJSONParser.h; sourceTree = "<group>"; };
 		2ACF5A2516E52D4B00F838D9 /* SpriteBatchQuery.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteBatchQuery.cc; sourceTree = "<group>"; };
 		2ACF5A2516E52D4B00F838D9 /* SpriteBatchQuery.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteBatchQuery.cc; sourceTree = "<group>"; };
 		2ACF5A2616E52D4B00F838D9 /* SpriteBatchQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatchQuery.h; sourceTree = "<group>"; };
 		2ACF5A2616E52D4B00F838D9 /* SpriteBatchQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatchQuery.h; sourceTree = "<group>"; };
 		2ACF5A2716E52D4B00F838D9 /* SpriteBatchQueryResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatchQueryResult.h; sourceTree = "<group>"; };
 		2ACF5A2716E52D4B00F838D9 /* SpriteBatchQueryResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatchQueryResult.h; sourceTree = "<group>"; };
 		2ACFC0A7166CE1AB00FE7370 /* platformMemoryTests.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = platformMemoryTests.cc; path = ../../../source/testing/tests/platformMemoryTests.cc; sourceTree = "<group>"; };
 		2ACFC0A7166CE1AB00FE7370 /* platformMemoryTests.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = platformMemoryTests.cc; path = ../../../source/testing/tests/platformMemoryTests.cc; sourceTree = "<group>"; };
 		2AD07B2616D15F5A0070DC79 /* simObjectTimerEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simObjectTimerEvent.h; sourceTree = "<group>"; };
 		2AD07B2616D15F5A0070DC79 /* simObjectTimerEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simObjectTimerEvent.h; sourceTree = "<group>"; };
 		2AD35A541663608E00C75F30 /* platformFileIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformFileIO.h; sourceTree = "<group>"; };
 		2AD35A541663608E00C75F30 /* platformFileIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformFileIO.h; sourceTree = "<group>"; };
+		2AD42126170433B3005BB8AD /* allocators.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = allocators.h; path = rapidjson/include/rapidjson/allocators.h; sourceTree = "<group>"; };
+		2AD42127170433B3005BB8AD /* document.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = document.h; path = rapidjson/include/rapidjson/document.h; sourceTree = "<group>"; };
+		2AD42128170433B3005BB8AD /* encodedstream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = encodedstream.h; path = rapidjson/include/rapidjson/encodedstream.h; sourceTree = "<group>"; };
+		2AD42129170433B3005BB8AD /* encodings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = encodings.h; path = rapidjson/include/rapidjson/encodings.h; sourceTree = "<group>"; };
+		2AD4212A170433B3005BB8AD /* filereadstream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = filereadstream.h; path = rapidjson/include/rapidjson/filereadstream.h; sourceTree = "<group>"; };
+		2AD4212B170433B3005BB8AD /* filestream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = filestream.h; path = rapidjson/include/rapidjson/filestream.h; sourceTree = "<group>"; };
+		2AD4212C170433B3005BB8AD /* filewritestream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = filewritestream.h; path = rapidjson/include/rapidjson/filewritestream.h; sourceTree = "<group>"; };
+		2AD4212D170433B3005BB8AD /* prettywriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = prettywriter.h; path = rapidjson/include/rapidjson/prettywriter.h; sourceTree = "<group>"; };
+		2AD4212E170433B3005BB8AD /* rapidjson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rapidjson.h; path = rapidjson/include/rapidjson/rapidjson.h; sourceTree = "<group>"; };
+		2AD4212F170433B3005BB8AD /* reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = reader.h; path = rapidjson/include/rapidjson/reader.h; sourceTree = "<group>"; };
+		2AD42130170433B3005BB8AD /* stringbuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stringbuffer.h; path = rapidjson/include/rapidjson/stringbuffer.h; sourceTree = "<group>"; };
+		2AD42131170433B3005BB8AD /* writer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = writer.h; path = rapidjson/include/rapidjson/writer.h; sourceTree = "<group>"; };
+		2AD42133170433C7005BB8AD /* pow10.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pow10.h; path = rapidjson/include/rapidjson/internal/pow10.h; sourceTree = "<group>"; };
+		2AD42134170433C7005BB8AD /* stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stack.h; path = rapidjson/include/rapidjson/internal/stack.h; sourceTree = "<group>"; };
+		2AD42135170433C7005BB8AD /* strfunc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = strfunc.h; path = rapidjson/include/rapidjson/internal/strfunc.h; sourceTree = "<group>"; };
+		2AD42139170433FE005BB8AD /* tamlXmlParser.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlXmlParser.cc; path = xml/tamlXmlParser.cc; sourceTree = "<group>"; };
+		2AD4213A170433FE005BB8AD /* tamlXmlParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlXmlParser.h; path = xml/tamlXmlParser.h; sourceTree = "<group>"; };
+		2AD4213B170433FE005BB8AD /* tamlXmlReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlXmlReader.cc; path = xml/tamlXmlReader.cc; sourceTree = "<group>"; };
+		2AD4213C170433FE005BB8AD /* tamlXmlReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlXmlReader.h; path = xml/tamlXmlReader.h; sourceTree = "<group>"; };
+		2AD4213E170433FE005BB8AD /* tamlXmlWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlXmlWriter.cc; path = xml/tamlXmlWriter.cc; sourceTree = "<group>"; };
+		2AD4213F170433FE005BB8AD /* tamlXmlWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlXmlWriter.h; path = xml/tamlXmlWriter.h; sourceTree = "<group>"; };
+		2AD4214317043408005BB8AD /* tamlJSONReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlJSONReader.cc; path = json/tamlJSONReader.cc; sourceTree = "<group>"; };
+		2AD4214417043408005BB8AD /* tamlJSONReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlJSONReader.h; path = json/tamlJSONReader.h; sourceTree = "<group>"; };
+		2AD4214517043408005BB8AD /* tamlJSONWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlJSONWriter.cc; path = json/tamlJSONWriter.cc; sourceTree = "<group>"; };
+		2AD4214617043408005BB8AD /* tamlJSONWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlJSONWriter.h; path = json/tamlJSONWriter.h; sourceTree = "<group>"; };
+		2AD4214917043413005BB8AD /* tamlBinaryReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlBinaryReader.cc; path = binary/tamlBinaryReader.cc; sourceTree = "<group>"; };
+		2AD4214A17043413005BB8AD /* tamlBinaryReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlBinaryReader.h; path = binary/tamlBinaryReader.h; sourceTree = "<group>"; };
+		2AD4214B17043413005BB8AD /* tamlBinaryWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlBinaryWriter.cc; path = binary/tamlBinaryWriter.cc; sourceTree = "<group>"; };
+		2AD4214C17043413005BB8AD /* tamlBinaryWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlBinaryWriter.h; path = binary/tamlBinaryWriter.h; sourceTree = "<group>"; };
 		2ADCAC0E16A41E4400E07619 /* tamlChildren.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlChildren.h; sourceTree = "<group>"; };
 		2ADCAC0E16A41E4400E07619 /* tamlChildren.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlChildren.h; sourceTree = "<group>"; };
 		2ADCAC1016A41E5500E07619 /* ParticleAsset_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAsset_ScriptBinding.h; sourceTree = "<group>"; };
 		2ADCAC1016A41E5500E07619 /* ParticleAsset_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAsset_ScriptBinding.h; sourceTree = "<group>"; };
 		2ADCAC1116A41E5500E07619 /* ParticleAsset.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleAsset.cc; sourceTree = "<group>"; };
 		2ADCAC1116A41E5500E07619 /* ParticleAsset.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleAsset.cc; sourceTree = "<group>"; };
@@ -526,7 +564,6 @@
 		861CD8CE1678F6C200DAE1A0 /* fileDialog_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileDialog_ScriptBinding.h; 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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		864ECFF016527A8500012416 /* gameInterface_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameInterface_ScriptBinding.h; sourceTree = "<group>"; };
@@ -828,7 +865,6 @@
 		86BC7F0616518D4600D96ADF /* audioBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioBuffer.h; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		86BC7F0C16518D4600D96ADF /* audioStreamSourceFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioStreamSourceFactory.h; sourceTree = "<group>"; };
@@ -1059,7 +1095,6 @@
 		86BC806416518D4600D96ADF /* fileStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStream.h; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		86BC806A16518D4600D96ADF /* memStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memStream.cc; sourceTree = "<group>"; };
@@ -1101,7 +1136,6 @@
 		86BC809616518D4600D96ADF /* mathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathUtils.h; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		86BC809D16518D4600D96ADF /* mMath_C.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMath_C.cc; sourceTree = "<group>"; };
@@ -1130,7 +1164,6 @@
 		86BC80B916518D4600D96ADF /* dataChunker.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dataChunker.cc; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		86BC80C016518D4600D96ADF /* dispatcher.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dispatcher.cc; sourceTree = "<group>"; };
@@ -1183,20 +1216,9 @@
 		86BC80F316518D4600D96ADF /* taml.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = taml.cc; sourceTree = "<group>"; };
 		86BC80F316518D4600D96ADF /* taml.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = taml.cc; sourceTree = "<group>"; };
 		86BC80F416518D4600D96ADF /* taml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml.h; sourceTree = "<group>"; };
 		86BC80F416518D4600D96ADF /* taml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml.h; sourceTree = "<group>"; };
 		86BC80F516518D4600D96ADF /* taml_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml_ScriptBinding.h; sourceTree = "<group>"; };
 		86BC80F516518D4600D96ADF /* taml_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml_ScriptBinding.h; sourceTree = "<group>"; };
-		86BC80F616518D4600D96ADF /* tamlBinaryReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlBinaryReader.cc; sourceTree = "<group>"; };
-		86BC80F716518D4600D96ADF /* tamlBinaryReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlBinaryReader.h; sourceTree = "<group>"; };
-		86BC80F816518D4600D96ADF /* tamlBinaryWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlBinaryWriter.cc; sourceTree = "<group>"; };
-		86BC80F916518D4600D96ADF /* tamlBinaryWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlBinaryWriter.h; sourceTree = "<group>"; };
 		86BC80FA16518D4600D96ADF /* tamlCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlCallbacks.h; sourceTree = "<group>"; };
 		86BC80FA16518D4600D96ADF /* tamlCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlCallbacks.h; sourceTree = "<group>"; };
 		86BC80FD16518D4600D96ADF /* tamlWriteNode.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlWriteNode.cc; sourceTree = "<group>"; };
 		86BC80FD16518D4600D96ADF /* tamlWriteNode.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlWriteNode.cc; sourceTree = "<group>"; };
 		86BC80FE16518D4600D96ADF /* tamlWriteNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlWriteNode.h; sourceTree = "<group>"; };
 		86BC80FE16518D4600D96ADF /* tamlWriteNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlWriteNode.h; sourceTree = "<group>"; };
-		86BC80FF16518D4600D96ADF /* tamlXmlParser.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlParser.cc; sourceTree = "<group>"; };
-		86BC810016518D4600D96ADF /* tamlXmlParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlParser.h; sourceTree = "<group>"; };
-		86BC810116518D4600D96ADF /* tamlXmlReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlReader.cc; sourceTree = "<group>"; };
-		86BC810216518D4600D96ADF /* tamlXmlReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlReader.h; sourceTree = "<group>"; };
-		86BC810316518D4600D96ADF /* tamlXmlVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlVisitor.h; sourceTree = "<group>"; };
-		86BC810416518D4600D96ADF /* tamlXmlWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlWriter.cc; sourceTree = "<group>"; };
-		86BC810516518D4600D96ADF /* tamlXmlWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlWriter.h; sourceTree = "<group>"; };
 		86BC810716518D4600D96ADF /* tinystr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinystr.cpp; sourceTree = "<group>"; };
 		86BC810716518D4600D96ADF /* tinystr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinystr.cpp; sourceTree = "<group>"; };
 		86BC810816518D4600D96ADF /* tinystr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinystr.h; sourceTree = "<group>"; };
 		86BC810816518D4600D96ADF /* tinystr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinystr.h; sourceTree = "<group>"; };
 		86BC810916518D4600D96ADF /* tinyxml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxml.cpp; sourceTree = "<group>"; };
 		86BC810916518D4600D96ADF /* tinyxml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxml.cpp; sourceTree = "<group>"; };
@@ -1332,10 +1354,81 @@
 		86D76F74165682BF0046D71F /* platformGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformGL.h; sourceTree = "<group>"; };
 		86D76F74165682BF0046D71F /* platformGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformGL.h; sourceTree = "<group>"; };
 		86D76F76165683240046D71F /* osxOutlineGL.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = osxOutlineGL.cc; sourceTree = "<group>"; };
 		86D76F76165683240046D71F /* osxOutlineGL.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = osxOutlineGL.cc; sourceTree = "<group>"; };
 		86D76F77165683240046D71F /* osxOutlineGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxOutlineGL.h; sourceTree = "<group>"; };
 		86D76F77165683240046D71F /* osxOutlineGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxOutlineGL.h; sourceTree = "<group>"; };
+		86DE5686171F05F60054CB83 /* guiGridCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiGridCtrl.cc; sourceTree = "<group>"; };
+		86DE5687171F05F60054CB83 /* guiGridCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiGridCtrl.h; sourceTree = "<group>"; };
 		86EA5B3E1678C7C700598E68 /* osxCocoaUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxCocoaUtilities.h; sourceTree = "<group>"; };
 		86EA5B3E1678C7C700598E68 /* osxCocoaUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxCocoaUtilities.h; sourceTree = "<group>"; };
 		86EA5B3F1678C7C700598E68 /* osxCocoaUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxCocoaUtilities.mm; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
 		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 */
 /* End PBXFileReference section */
 
 
 /* Begin PBXFrameworksBuildPhase section */
 /* Begin PBXFrameworksBuildPhase section */
@@ -1408,6 +1501,73 @@
 			name = controllers;
 			name = controllers;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		2AD4212517043387005BB8AD /* rapidjson */ = {
+			isa = PBXGroup;
+			children = (
+				2AD42132170433B7005BB8AD /* internal */,
+				2AD42126170433B3005BB8AD /* allocators.h */,
+				2AD42127170433B3005BB8AD /* document.h */,
+				2AD42128170433B3005BB8AD /* encodedstream.h */,
+				2AD42129170433B3005BB8AD /* encodings.h */,
+				2AD4212A170433B3005BB8AD /* filereadstream.h */,
+				2AD4212B170433B3005BB8AD /* filestream.h */,
+				2AD4212C170433B3005BB8AD /* filewritestream.h */,
+				2AD4212D170433B3005BB8AD /* prettywriter.h */,
+				2AD4212E170433B3005BB8AD /* rapidjson.h */,
+				2AD4212F170433B3005BB8AD /* reader.h */,
+				2AD42130170433B3005BB8AD /* stringbuffer.h */,
+				2AD42131170433B3005BB8AD /* writer.h */,
+			);
+			name = rapidjson;
+			sourceTree = "<group>";
+		};
+		2AD42132170433B7005BB8AD /* internal */ = {
+			isa = PBXGroup;
+			children = (
+				2AD42133170433C7005BB8AD /* pow10.h */,
+				2AD42134170433C7005BB8AD /* stack.h */,
+				2AD42135170433C7005BB8AD /* strfunc.h */,
+			);
+			name = internal;
+			sourceTree = "<group>";
+		};
+		2AD42136170433E4005BB8AD /* binary */ = {
+			isa = PBXGroup;
+			children = (
+				2AD4214917043413005BB8AD /* tamlBinaryReader.cc */,
+				2AD4214A17043413005BB8AD /* tamlBinaryReader.h */,
+				2AD4214B17043413005BB8AD /* tamlBinaryWriter.cc */,
+				2AD4214C17043413005BB8AD /* tamlBinaryWriter.h */,
+			);
+			name = binary;
+			sourceTree = "<group>";
+		};
+		2AD42137170433EA005BB8AD /* json */ = {
+			isa = PBXGroup;
+			children = (
+				2ACAFD481705CF4A0022601C /* tamlJSONParser.cc */,
+				2ACAFD491705CF4A0022601C /* tamlJSONParser.h */,
+				2AD4214317043408005BB8AD /* tamlJSONReader.cc */,
+				2AD4214417043408005BB8AD /* tamlJSONReader.h */,
+				2AD4214517043408005BB8AD /* tamlJSONWriter.cc */,
+				2AD4214617043408005BB8AD /* tamlJSONWriter.h */,
+			);
+			name = json;
+			sourceTree = "<group>";
+		};
+		2AD42138170433F3005BB8AD /* xml */ = {
+			isa = PBXGroup;
+			children = (
+				2AD42139170433FE005BB8AD /* tamlXmlParser.cc */,
+				2AD4213A170433FE005BB8AD /* tamlXmlParser.h */,
+				2AD4213B170433FE005BB8AD /* tamlXmlReader.cc */,
+				2AD4213C170433FE005BB8AD /* tamlXmlReader.h */,
+				2AD4213E170433FE005BB8AD /* tamlXmlWriter.cc */,
+				2AD4213F170433FE005BB8AD /* tamlXmlWriter.h */,
+			);
+			name = xml;
+			sourceTree = "<group>";
+		};
 		2AE2938016EF4BFA0015E200 /* experimental */ = {
 		2AE2938016EF4BFA0015E200 /* experimental */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
@@ -1861,6 +2021,7 @@
 		86BC7E8016518D4600D96ADF /* core */ = {
 		86BC7E8016518D4600D96ADF /* core */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D174174EFA6100033EBB /* Utility_ScriptBinding.h */,
 				2AA3655516F3552200E7A900 /* ImageFrameProvider.cc */,
 				2AA3655516F3552200E7A900 /* ImageFrameProvider.cc */,
 				2AA3655616F3552200E7A900 /* ImageFrameProvider.h */,
 				2AA3655616F3552200E7A900 /* ImageFrameProvider.h */,
 				2AA3655716F3552200E7A900 /* ImageFrameProviderCore.cc */,
 				2AA3655716F3552200E7A900 /* ImageFrameProviderCore.cc */,
@@ -2025,6 +2186,7 @@
 		86BC7F0016518D4600D96ADF /* audio */ = {
 		86BC7F0016518D4600D96ADF /* audio */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D171174EF91900033EBB /* audio_ScriptBinding.cc */,
 				86BC7F0116518D4600D96ADF /* audio.cc */,
 				86BC7F0116518D4600D96ADF /* audio.cc */,
 				86BC7F0216518D4600D96ADF /* audio.h */,
 				86BC7F0216518D4600D96ADF /* audio.h */,
 				86BC7F0316518D4600D96ADF /* AudioAsset.cc */,
 				86BC7F0316518D4600D96ADF /* AudioAsset.cc */,
@@ -2033,7 +2195,6 @@
 				86BC7F0616518D4600D96ADF /* audioBuffer.h */,
 				86BC7F0616518D4600D96ADF /* audioBuffer.h */,
 				86BC7F0716518D4600D96ADF /* audioDataBlock.cc */,
 				86BC7F0716518D4600D96ADF /* audioDataBlock.cc */,
 				86BC7F0816518D4600D96ADF /* audioDataBlock.h */,
 				86BC7F0816518D4600D96ADF /* audioDataBlock.h */,
-				86BC7F0916518D4600D96ADF /* audioFunctions.cc */,
 				86BC7F0A16518D4600D96ADF /* audioStreamSource.h */,
 				86BC7F0A16518D4600D96ADF /* audioStreamSource.h */,
 				86BC7F0B16518D4600D96ADF /* audioStreamSourceFactory.cc */,
 				86BC7F0B16518D4600D96ADF /* audioStreamSourceFactory.cc */,
 				86BC7F0C16518D4600D96ADF /* audioStreamSourceFactory.h */,
 				86BC7F0C16518D4600D96ADF /* audioStreamSourceFactory.h */,
@@ -2047,6 +2208,7 @@
 		86BC7F0F16518D4600D96ADF /* collection */ = {
 		86BC7F0F16518D4600D96ADF /* collection */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D173174EF93900033EBB /* undo_ScriptBinding.h */,
 				86BC7F1016518D4600D96ADF /* bitMatrix.h */,
 				86BC7F1016518D4600D96ADF /* bitMatrix.h */,
 				86BC7F1116518D4600D96ADF /* bitSet.h */,
 				86BC7F1116518D4600D96ADF /* bitSet.h */,
 				86BC7F1216518D4600D96ADF /* bitTables.cc */,
 				86BC7F1216518D4600D96ADF /* bitTables.cc */,
@@ -2077,6 +2239,8 @@
 		86BC7F2616518D4600D96ADF /* component */ = {
 		86BC7F2616518D4600D96ADF /* component */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D149174EE4FA00033EBB /* dynamicConsoleMethodComponent_ScriptBinding.h */,
+				B350D14A174EE4FA00033EBB /* simComponent_ScriptBinding.h */,
 				86BC7F3516518D4600D96ADF /* behaviors */,
 				86BC7F3516518D4600D96ADF /* behaviors */,
 				86BC7F4016518D4600D96ADF /* dynamicConsoleMethodComponent.cpp */,
 				86BC7F4016518D4600D96ADF /* dynamicConsoleMethodComponent.cpp */,
 				86BC7F4116518D4600D96ADF /* dynamicConsoleMethodComponent.h */,
 				86BC7F4116518D4600D96ADF /* dynamicConsoleMethodComponent.h */,
@@ -2107,6 +2271,15 @@
 		86BC7F4716518D4600D96ADF /* console */ = {
 		86BC7F4716518D4600D96ADF /* console */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			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 */,
 				86BC82B316518DF400D96ADF /* consoleDictionary.cc */,
 				86BC82B416518DF400D96ADF /* consoleDictionary.h */,
 				86BC82B416518DF400D96ADF /* consoleDictionary.h */,
 				86BC82B516518DF400D96ADF /* consoleExprEvalState.cc */,
 				86BC82B516518DF400D96ADF /* consoleExprEvalState.cc */,
@@ -2153,6 +2326,8 @@
 		86BC7F7316518D4600D96ADF /* debug */ = {
 		86BC7F7316518D4600D96ADF /* debug */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D165174EF78100033EBB /* profiler_ScriptBinding.h */,
+				B350D166174EF78100033EBB /* telnetDebugger_ScriptBinding.h */,
 				86BC7F7416518D4600D96ADF /* profiler.cc */,
 				86BC7F7416518D4600D96ADF /* profiler.cc */,
 				86BC7F7516518D4600D96ADF /* profiler.h */,
 				86BC7F7516518D4600D96ADF /* profiler.h */,
 				86BC7F7616518D4600D96ADF /* remote */,
 				86BC7F7616518D4600D96ADF /* remote */,
@@ -2194,6 +2369,8 @@
 		86BC7FAE16518D4600D96ADF /* game */ = {
 		86BC7FAE16518D4600D96ADF /* game */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D167174EF80400033EBB /* gameConnection_ScriptBinding.h */,
+				B350D168174EF80500033EBB /* version_ScriptBinding.h */,
 				864ECFF016527A8500012416 /* gameInterface_ScriptBinding.h */,
 				864ECFF016527A8500012416 /* gameInterface_ScriptBinding.h */,
 				86BC7FAF16518D4600D96ADF /* defaultGame.cc */,
 				86BC7FAF16518D4600D96ADF /* defaultGame.cc */,
 				86BC7FB016518D4600D96ADF /* defaultGame.h */,
 				86BC7FB016518D4600D96ADF /* defaultGame.h */,
@@ -2212,6 +2389,12 @@
 		86BC7FB916518D4600D96ADF /* graphics */ = {
 		86BC7FB916518D4600D96ADF /* graphics */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			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 */,
 				86BC7FBA16518D4600D96ADF /* bitmapBmp.cc */,
 				86BC7FBB16518D4600D96ADF /* bitmapJpeg.cc */,
 				86BC7FBB16518D4600D96ADF /* bitmapJpeg.cc */,
 				86BC7FBC16518D4600D96ADF /* bitmapPng.cc */,
 				86BC7FBC16518D4600D96ADF /* bitmapPng.cc */,
@@ -2248,6 +2431,8 @@
 		86BC7FD716518D4600D96ADF /* gui */ = {
 		86BC7FD716518D4600D96ADF /* gui */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D16F174EF89600033EBB /* guiCanvas_ScriptBinding.h */,
+				B350D170174EF89600033EBB /* guiControl_ScriptBinding.h */,
 				86BC7FD816518D4600D96ADF /* buttons */,
 				86BC7FD816518D4600D96ADF /* buttons */,
 				86BC7FE816518D4600D96ADF /* containers */,
 				86BC7FE816518D4600D96ADF /* containers */,
 				86BC800116518D4600D96ADF /* editor */,
 				86BC800116518D4600D96ADF /* editor */,
@@ -2346,6 +2531,8 @@
 		86BC7FE816518D4600D96ADF /* containers */ = {
 		86BC7FE816518D4600D96ADF /* containers */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				86DE5686171F05F60054CB83 /* guiGridCtrl.cc */,
+				86DE5687171F05F60054CB83 /* guiGridCtrl.h */,
 				86BC7FE916518D4600D96ADF /* guiAutoScrollCtrl.cc */,
 				86BC7FE916518D4600D96ADF /* guiAutoScrollCtrl.cc */,
 				86BC7FEA16518D4600D96ADF /* guiAutoScrollCtrl.h */,
 				86BC7FEA16518D4600D96ADF /* guiAutoScrollCtrl.h */,
 				86BC7FEB16518D4600D96ADF /* guiCtrlArrayCtrl.cc */,
 				86BC7FEB16518D4600D96ADF /* guiCtrlArrayCtrl.cc */,
@@ -2412,6 +2599,7 @@
 		86BC805816518D4600D96ADF /* input */ = {
 		86BC805816518D4600D96ADF /* input */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D153174EF5F200033EBB /* actionMap_ScriptBinding.h */,
 				86BC805916518D4600D96ADF /* actionMap.cc */,
 				86BC805916518D4600D96ADF /* actionMap.cc */,
 				86BC805A16518D4600D96ADF /* actionMap.h */,
 				86BC805A16518D4600D96ADF /* actionMap.h */,
 			);
 			);
@@ -2422,6 +2610,10 @@
 		86BC805B16518D4600D96ADF /* io */ = {
 		86BC805B16518D4600D96ADF /* io */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D154174EF62400033EBB /* fileObject_ScriptBinding.h */,
+				B350D155174EF62400033EBB /* fileStreamObject_ScriptBinding.h */,
+				B350D156174EF62400033EBB /* fileSystem_ScriptBinding.cc */,
+				B350D157174EF62400033EBB /* streamObject_ScriptBinding.h */,
 				86BC805C16518D4600D96ADF /* bitStream.cc */,
 				86BC805C16518D4600D96ADF /* bitStream.cc */,
 				86BC805D16518D4600D96ADF /* bitStream.h */,
 				86BC805D16518D4600D96ADF /* bitStream.h */,
 				86BC805E16518D4600D96ADF /* bufferStream.cc */,
 				86BC805E16518D4600D96ADF /* bufferStream.cc */,
@@ -2432,7 +2624,6 @@
 				86BC806416518D4600D96ADF /* fileStream.h */,
 				86BC806416518D4600D96ADF /* fileStream.h */,
 				86BC806516518D4600D96ADF /* fileStreamObject.cc */,
 				86BC806516518D4600D96ADF /* fileStreamObject.cc */,
 				86BC806616518D4600D96ADF /* fileStreamObject.h */,
 				86BC806616518D4600D96ADF /* fileStreamObject.h */,
-				86BC806716518D4600D96ADF /* fileSystemFunctions.cpp */,
 				86BC806816518D4600D96ADF /* filterStream.cc */,
 				86BC806816518D4600D96ADF /* filterStream.cc */,
 				86BC806916518D4600D96ADF /* filterStream.h */,
 				86BC806916518D4600D96ADF /* filterStream.h */,
 				86BC806A16518D4600D96ADF /* memStream.cc */,
 				86BC806A16518D4600D96ADF /* memStream.cc */,
@@ -2453,6 +2644,7 @@
 		86BC806F16518D4600D96ADF /* resource */ = {
 		86BC806F16518D4600D96ADF /* resource */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D159174EF65E00033EBB /* resourceManager_ScriptBinding.h */,
 				86BC807016518D4600D96ADF /* resourceDictionary.cc */,
 				86BC807016518D4600D96ADF /* resourceDictionary.cc */,
 				86BC807116518D4600D96ADF /* resourceManager.cc */,
 				86BC807116518D4600D96ADF /* resourceManager.cc */,
 				86BC807216518D4600D96ADF /* resourceManager.h */,
 				86BC807216518D4600D96ADF /* resourceManager.h */,
@@ -2463,6 +2655,7 @@
 		86BC807616518D4600D96ADF /* zip */ = {
 		86BC807616518D4600D96ADF /* zip */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D15A174EF67100033EBB /* zipObject_ScriptBinding.h */,
 				86BC807716518D4600D96ADF /* centralDir.cc */,
 				86BC807716518D4600D96ADF /* centralDir.cc */,
 				86BC807816518D4600D96ADF /* centralDir.h */,
 				86BC807816518D4600D96ADF /* centralDir.h */,
 				86BC807916518D4600D96ADF /* compressor.cc */,
 				86BC807916518D4600D96ADF /* compressor.cc */,
@@ -2491,6 +2684,11 @@
 		86BC809116518D4600D96ADF /* math */ = {
 		86BC809116518D4600D96ADF /* math */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D12B174ED1FE00033EBB /* box_ScriptBinding.h */,
+				B350D12C174ED1FE00033EBB /* math_ScriptBinding.cc */,
+				B350D12D174ED1FE00033EBB /* matrix_ScriptBinding.h */,
+				B350D12E174ED1FE00033EBB /* random_ScriptBinding.h */,
+				B350D129174ED16800033EBB /* vector_ScriptBinding.h */,
 				86BC809216518D4600D96ADF /* mathIO.h */,
 				86BC809216518D4600D96ADF /* mathIO.h */,
 				86BC809316518D4600D96ADF /* mathTypes.cc */,
 				86BC809316518D4600D96ADF /* mathTypes.cc */,
 				86BC809416518D4600D96ADF /* mathTypes.h */,
 				86BC809416518D4600D96ADF /* mathTypes.h */,
@@ -2498,7 +2696,6 @@
 				86BC809616518D4600D96ADF /* mathUtils.h */,
 				86BC809616518D4600D96ADF /* mathUtils.h */,
 				86BC809716518D4600D96ADF /* mBox.cc */,
 				86BC809716518D4600D96ADF /* mBox.cc */,
 				86BC809816518D4600D96ADF /* mBox.h */,
 				86BC809816518D4600D96ADF /* mBox.h */,
-				86BC809916518D4600D96ADF /* mConsoleFunctions.cc */,
 				86BC809A16518D4600D96ADF /* mConstants.h */,
 				86BC809A16518D4600D96ADF /* mConstants.h */,
 				86BC809B16518D4600D96ADF /* mMath.h */,
 				86BC809B16518D4600D96ADF /* mMath.h */,
 				86BC809D16518D4600D96ADF /* mMath_C.cc */,
 				86BC809D16518D4600D96ADF /* mMath_C.cc */,
@@ -2532,10 +2729,10 @@
 		86BC80B816518D4600D96ADF /* memory */ = {
 		86BC80B816518D4600D96ADF /* memory */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D130174ED23E00033EBB /* frameAllocator_ScriptBinding.cc */,
 				86BC80B916518D4600D96ADF /* dataChunker.cc */,
 				86BC80B916518D4600D96ADF /* dataChunker.cc */,
 				86BC80BA16518D4600D96ADF /* dataChunker.h */,
 				86BC80BA16518D4600D96ADF /* dataChunker.h */,
 				86BC80BB16518D4600D96ADF /* factoryCache.h */,
 				86BC80BB16518D4600D96ADF /* factoryCache.h */,
-				86BC80BC16518D4600D96ADF /* frameAllocator.cc */,
 				86BC80BD16518D4600D96ADF /* frameAllocator.h */,
 				86BC80BD16518D4600D96ADF /* frameAllocator.h */,
 				86BC80BE16518D4600D96ADF /* safeDelete.h */,
 				86BC80BE16518D4600D96ADF /* safeDelete.h */,
 			);
 			);
@@ -2546,6 +2743,9 @@
 		86BC80BF16518D4600D96ADF /* messaging */ = {
 		86BC80BF16518D4600D96ADF /* messaging */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D132174ED27200033EBB /* dispatcher_ScriptBinding.h */,
+				B350D133174ED27200033EBB /* eventManager_ScriptBinding.h */,
+				B350D134174ED27200033EBB /* message_ScriptBinding.h */,
 				86BC80C016518D4600D96ADF /* dispatcher.cc */,
 				86BC80C016518D4600D96ADF /* dispatcher.cc */,
 				86BC80C116518D4600D96ADF /* dispatcher.h */,
 				86BC80C116518D4600D96ADF /* dispatcher.h */,
 				86BC80C216518D4600D96ADF /* eventManager.cc */,
 				86BC80C216518D4600D96ADF /* eventManager.cc */,
@@ -2582,6 +2782,17 @@
 		86BC80D516518D4600D96ADF /* network */ = {
 		86BC80D516518D4600D96ADF /* network */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			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 */,
 				864ECFED165279E100012416 /* networkProcessList.cc */,
 				864ECFEE165279E100012416 /* networkProcessList.h */,
 				864ECFEE165279E100012416 /* networkProcessList.h */,
 				86BC80D616518D4600D96ADF /* connectionProtocol.cc */,
 				86BC80D616518D4600D96ADF /* connectionProtocol.cc */,
@@ -2617,6 +2828,8 @@
 		86BC80EF16518D4600D96ADF /* persistence */ = {
 		86BC80EF16518D4600D96ADF /* persistence */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D140174ED4B800033EBB /* SimXMLDocument_ScriptBinding.h */,
+				2AD4212517043387005BB8AD /* rapidjson */,
 				86BC80F016518D4600D96ADF /* SimXMLDocument.cpp */,
 				86BC80F016518D4600D96ADF /* SimXMLDocument.cpp */,
 				86BC80F116518D4600D96ADF /* SimXMLDocument.h */,
 				86BC80F116518D4600D96ADF /* SimXMLDocument.h */,
 				86BC80F216518D4600D96ADF /* taml */,
 				86BC80F216518D4600D96ADF /* taml */,
@@ -2629,26 +2842,20 @@
 		86BC80F216518D4600D96ADF /* taml */ = {
 		86BC80F216518D4600D96ADF /* taml */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				2AB4A5221705A84D0043CBAA /* tamlParser.h */,
+				2AB4A5231705A84D0043CBAA /* tamlVisitor.h */,
+				2AD42138170433F3005BB8AD /* xml */,
+				2AD42137170433EA005BB8AD /* json */,
+				2AD42136170433E4005BB8AD /* binary */,
 				2AB97A1B16B66BC70080F940 /* tamlCustom.cc */,
 				2AB97A1B16B66BC70080F940 /* tamlCustom.cc */,
 				2AB97A1C16B66BC70080F940 /* tamlCustom.h */,
 				2AB97A1C16B66BC70080F940 /* tamlCustom.h */,
 				2ADCAC0E16A41E4400E07619 /* tamlChildren.h */,
 				2ADCAC0E16A41E4400E07619 /* tamlChildren.h */,
 				86BC80F316518D4600D96ADF /* taml.cc */,
 				86BC80F316518D4600D96ADF /* taml.cc */,
 				86BC80F416518D4600D96ADF /* taml.h */,
 				86BC80F416518D4600D96ADF /* taml.h */,
 				86BC80F516518D4600D96ADF /* taml_ScriptBinding.h */,
 				86BC80F516518D4600D96ADF /* taml_ScriptBinding.h */,
-				86BC80F616518D4600D96ADF /* tamlBinaryReader.cc */,
-				86BC80F716518D4600D96ADF /* tamlBinaryReader.h */,
-				86BC80F816518D4600D96ADF /* tamlBinaryWriter.cc */,
-				86BC80F916518D4600D96ADF /* tamlBinaryWriter.h */,
 				86BC80FA16518D4600D96ADF /* tamlCallbacks.h */,
 				86BC80FA16518D4600D96ADF /* tamlCallbacks.h */,
 				86BC80FD16518D4600D96ADF /* tamlWriteNode.cc */,
 				86BC80FD16518D4600D96ADF /* tamlWriteNode.cc */,
 				86BC80FE16518D4600D96ADF /* tamlWriteNode.h */,
 				86BC80FE16518D4600D96ADF /* tamlWriteNode.h */,
-				86BC80FF16518D4600D96ADF /* tamlXmlParser.cc */,
-				86BC810016518D4600D96ADF /* tamlXmlParser.h */,
-				86BC810116518D4600D96ADF /* tamlXmlReader.cc */,
-				86BC810216518D4600D96ADF /* tamlXmlReader.h */,
-				86BC810316518D4600D96ADF /* tamlXmlVisitor.h */,
-				86BC810416518D4600D96ADF /* tamlXmlWriter.cc */,
-				86BC810516518D4600D96ADF /* tamlXmlWriter.h */,
 			);
 			);
 			path = taml;
 			path = taml;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -2669,6 +2876,11 @@
 		86BC812C16518D4600D96ADF /* sim */ = {
 		86BC812C16518D4600D96ADF /* sim */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D14C174EF54C00033EBB /* simBase_ScriptBinding.h */,
+				B350D14D174EF54C00033EBB /* simDatablock_ScriptBinding.h */,
+				B350D14E174EF54C00033EBB /* simObject_ScriptBinding.h */,
+				B350D14F174EF54C00033EBB /* simSerialize_ScriptBinding.h */,
+				B350D150174EF54C00033EBB /* simSet_ScriptBinding.h */,
 				2AD07B2616D15F5A0070DC79 /* simObjectTimerEvent.h */,
 				2AD07B2616D15F5A0070DC79 /* simObjectTimerEvent.h */,
 				86BC812D16518D4600D96ADF /* scriptGroup.cc */,
 				86BC812D16518D4600D96ADF /* scriptGroup.cc */,
 				86BC812E16518D4600D96ADF /* scriptGroup.h */,
 				86BC812E16518D4600D96ADF /* scriptGroup.h */,
@@ -2705,6 +2917,8 @@
 		86BC814816518D4600D96ADF /* string */ = {
 		86BC814816518D4600D96ADF /* string */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D151174EF5A400033EBB /* stringBuffer_ScriptBinding.h */,
+				B350D152174EF5A400033EBB /* stringUnit_ScriptBinding.h */,
 				86BC814916518D4600D96ADF /* findMatch.cc */,
 				86BC814916518D4600D96ADF /* findMatch.cc */,
 				86BC814A16518D4600D96ADF /* findMatch.h */,
 				86BC814A16518D4600D96ADF /* findMatch.h */,
 				86BC814B16518D4600D96ADF /* stringBuffer.cc */,
 				86BC814B16518D4600D96ADF /* stringBuffer.cc */,
@@ -2725,6 +2939,12 @@
 		86BC82ED16518F6800D96ADF /* platform */ = {
 		86BC82ED16518F6800D96ADF /* platform */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				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 */,
 				86BC834C16518FE800D96ADF /* CursorManager.cc */,
 				86BC835516518FE800D96ADF /* event.h */,
 				86BC835516518FE800D96ADF /* event.h */,
 				86CEFC76166FE17500DAF75D /* platformInput_ScriptBinding.h */,
 				86CEFC76166FE17500DAF75D /* platformInput_ScriptBinding.h */,
@@ -2751,7 +2971,6 @@
 				86BC834516518FE800D96ADF /* platformMemory.h */,
 				86BC834516518FE800D96ADF /* platformMemory.h */,
 				86BC835216518FE800D96ADF /* platformNetAsync.unix.cc */,
 				86BC835216518FE800D96ADF /* platformNetAsync.unix.cc */,
 				86BC835D16518FE800D96ADF /* platformNetAsync.unix.h */,
 				86BC835D16518FE800D96ADF /* platformNetAsync.unix.h */,
-				864ECFEB1652795700012416 /* platformNetwork.cc */,
 				86BC834616518FE800D96ADF /* platformNetwork.h */,
 				86BC834616518FE800D96ADF /* platformNetwork.h */,
 				86BC835E16518FE800D96ADF /* platformSemaphore.h */,
 				86BC835E16518FE800D96ADF /* platformSemaphore.h */,
 				86BC835316518FE800D96ADF /* platformString.cc */,
 				86BC835316518FE800D96ADF /* platformString.cc */,
@@ -2775,6 +2994,7 @@
 		86BC82F416518F6800D96ADF /* menus */ = {
 		86BC82F416518F6800D96ADF /* menus */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D14B174EF4DF00033EBB /* popupMenu_ScriptBinding.h */,
 				86BC833816518FB100D96ADF /* popupMenu.cc */,
 				86BC833816518FB100D96ADF /* popupMenu.cc */,
 				86BC833916518FB100D96ADF /* popupMenu.h */,
 				86BC833916518FB100D96ADF /* popupMenu.h */,
 			);
 			);
@@ -2784,6 +3004,7 @@
 		86BC82F716518F6800D96ADF /* nativeDialogs */ = {
 		86BC82F716518F6800D96ADF /* nativeDialogs */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D148174EE4AA00033EBB /* msgBox_ScriptBinding.h */,
 				86BC833B16518FBC00D96ADF /* msgBox.cpp */,
 				86BC833B16518FBC00D96ADF /* msgBox.cpp */,
 				861CD8CE1678F6C200DAE1A0 /* fileDialog_ScriptBinding.h */,
 				861CD8CE1678F6C200DAE1A0 /* fileDialog_ScriptBinding.h */,
 				861CD8CF1678F6C200DAE1A0 /* fileDialog.cc */,
 				861CD8CF1678F6C200DAE1A0 /* fileDialog.cc */,
@@ -2870,7 +3091,6 @@
 				86D770571656873C0046D71F /* mathTypes.cc in Sources */,
 				86D770571656873C0046D71F /* mathTypes.cc in Sources */,
 				86D770581656873C0046D71F /* mathUtils.cc in Sources */,
 				86D770581656873C0046D71F /* mathUtils.cc in Sources */,
 				86D770591656873C0046D71F /* mBox.cc in Sources */,
 				86D770591656873C0046D71F /* mBox.cc in Sources */,
-				86D7705A1656873C0046D71F /* mConsoleFunctions.cc in Sources */,
 				86D7705B1656873C0046D71F /* mMath_C.cc in Sources */,
 				86D7705B1656873C0046D71F /* mMath_C.cc in Sources */,
 				86D7705C1656873C0046D71F /* mMathAltivec.cc in Sources */,
 				86D7705C1656873C0046D71F /* mMathAltivec.cc in Sources */,
 				86D7705D1656873C0046D71F /* mMathFn.cc in Sources */,
 				86D7705D1656873C0046D71F /* mMathFn.cc in Sources */,
@@ -2882,7 +3102,6 @@
 				86D770631656873C0046D71F /* mSplinePatch.cc in Sources */,
 				86D770631656873C0046D71F /* mSplinePatch.cc in Sources */,
 				86D770641656873C0046D71F /* rectClipper.cpp in Sources */,
 				86D770641656873C0046D71F /* rectClipper.cpp in Sources */,
 				86D770651656873C0046D71F /* dataChunker.cc in Sources */,
 				86D770651656873C0046D71F /* dataChunker.cc in Sources */,
-				86D770661656873C0046D71F /* frameAllocator.cc in Sources */,
 				86D770671656873C0046D71F /* dispatcher.cc in Sources */,
 				86D770671656873C0046D71F /* dispatcher.cc in Sources */,
 				86D770681656873C0046D71F /* eventManager.cc in Sources */,
 				86D770681656873C0046D71F /* eventManager.cc in Sources */,
 				86D770691656873C0046D71F /* message.cc in Sources */,
 				86D770691656873C0046D71F /* message.cc in Sources */,
@@ -2909,17 +3128,11 @@
 				86D7707E1656873C0046D71F /* telnetConsole.cc in Sources */,
 				86D7707E1656873C0046D71F /* telnetConsole.cc in Sources */,
 				86D7707F1656873C0046D71F /* SimXMLDocument.cpp in Sources */,
 				86D7707F1656873C0046D71F /* SimXMLDocument.cpp in Sources */,
 				86D770801656873C0046D71F /* taml.cc in Sources */,
 				86D770801656873C0046D71F /* taml.cc in Sources */,
-				86D770811656873C0046D71F /* tamlBinaryReader.cc in Sources */,
-				86D770821656873C0046D71F /* tamlBinaryWriter.cc in Sources */,
 				86D770841656873C0046D71F /* tamlWriteNode.cc in Sources */,
 				86D770841656873C0046D71F /* tamlWriteNode.cc in Sources */,
-				86D770851656873C0046D71F /* tamlXmlParser.cc in Sources */,
-				86D770861656873C0046D71F /* tamlXmlReader.cc in Sources */,
-				86D770871656873C0046D71F /* tamlXmlWriter.cc in Sources */,
 				86D770881656873C0046D71F /* tinystr.cpp in Sources */,
 				86D770881656873C0046D71F /* tinystr.cpp in Sources */,
 				86D770891656873C0046D71F /* tinyxml.cpp in Sources */,
 				86D770891656873C0046D71F /* tinyxml.cpp in Sources */,
 				86D7708A1656873C0046D71F /* tinyxmlerror.cpp in Sources */,
 				86D7708A1656873C0046D71F /* tinyxmlerror.cpp in Sources */,
 				86D7708B1656873C0046D71F /* tinyxmlparser.cpp in Sources */,
 				86D7708B1656873C0046D71F /* tinyxmlparser.cpp in Sources */,
-				86D7708C1656873C0046D71F /* platformNetwork.cc in Sources */,
 				86D7708D1656873C0046D71F /* CursorManager.cc in Sources */,
 				86D7708D1656873C0046D71F /* CursorManager.cc in Sources */,
 				86D7708E1656873C0046D71F /* platform.cc in Sources */,
 				86D7708E1656873C0046D71F /* platform.cc in Sources */,
 				86D7708F1656873C0046D71F /* platformAssert.cc in Sources */,
 				86D7708F1656873C0046D71F /* platformAssert.cc in Sources */,
@@ -2958,7 +3171,6 @@
 				86D77041165687220046D71F /* fileObject.cc in Sources */,
 				86D77041165687220046D71F /* fileObject.cc in Sources */,
 				86D77042165687220046D71F /* fileStream.cc in Sources */,
 				86D77042165687220046D71F /* fileStream.cc in Sources */,
 				86D77043165687220046D71F /* fileStreamObject.cc in Sources */,
 				86D77043165687220046D71F /* fileStreamObject.cc in Sources */,
-				86D77044165687220046D71F /* fileSystemFunctions.cpp in Sources */,
 				86D77045165687220046D71F /* filterStream.cc in Sources */,
 				86D77045165687220046D71F /* filterStream.cc in Sources */,
 				86D77046165687220046D71F /* memStream.cc in Sources */,
 				86D77046165687220046D71F /* memStream.cc in Sources */,
 				86D77047165687220046D71F /* nStream.cc in Sources */,
 				86D77047165687220046D71F /* nStream.cc in Sources */,
@@ -3101,7 +3313,6 @@
 				86D76FA3165686D80046D71F /* AudioAsset.cc in Sources */,
 				86D76FA3165686D80046D71F /* AudioAsset.cc in Sources */,
 				86D76FA4165686D80046D71F /* audioBuffer.cc in Sources */,
 				86D76FA4165686D80046D71F /* audioBuffer.cc in Sources */,
 				86D76FA5165686D80046D71F /* audioDataBlock.cc in Sources */,
 				86D76FA5165686D80046D71F /* audioDataBlock.cc in Sources */,
-				86D76FA6165686D80046D71F /* audioFunctions.cc in Sources */,
 				86D76FA7165686D80046D71F /* audioStreamSourceFactory.cc in Sources */,
 				86D76FA7165686D80046D71F /* audioStreamSourceFactory.cc in Sources */,
 				86D76FA8165686D80046D71F /* wavStreamSource.cc in Sources */,
 				86D76FA8165686D80046D71F /* wavStreamSource.cc in Sources */,
 				86D76FA9165686D80046D71F /* bitTables.cc in Sources */,
 				86D76FA9165686D80046D71F /* bitTables.cc in Sources */,
@@ -3296,6 +3507,21 @@
 				2AE2938516EF4C220015E200 /* WaveComposite.cc in Sources */,
 				2AE2938516EF4C220015E200 /* WaveComposite.cc in Sources */,
 				2AA3655916F3552200E7A900 /* ImageFrameProvider.cc in Sources */,
 				2AA3655916F3552200E7A900 /* ImageFrameProvider.cc in Sources */,
 				2AA3655A16F3552200E7A900 /* ImageFrameProviderCore.cc in Sources */,
 				2AA3655A16F3552200E7A900 /* ImageFrameProviderCore.cc in Sources */,
+				2AD42140170433FE005BB8AD /* tamlXmlParser.cc in Sources */,
+				2AD42141170433FE005BB8AD /* tamlXmlReader.cc in Sources */,
+				2AD42142170433FE005BB8AD /* tamlXmlWriter.cc in Sources */,
+				2AD4214717043408005BB8AD /* tamlJSONReader.cc in Sources */,
+				2AD4214817043408005BB8AD /* tamlJSONWriter.cc in Sources */,
+				2AD4214D17043413005BB8AD /* tamlBinaryReader.cc in Sources */,
+				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;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
@@ -3358,10 +3584,9 @@
 					../../lib/lpng,
 					../../lib/lpng,
 					../../lib/ljpeg,
 					../../lib/ljpeg,
 					../../lib/lungif,
 					../../lib/lungif,
+					../../source/persistence/rapidjson/include,
 					"$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/Current/Frameworks/QD.framework/Headers",
 					"$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/Current/Frameworks/QD.framework/Headers",
 					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
 					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
-					../../source/testing/googleTest,
-					../../source/testing/googleTest/include,
 				);
 				);
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
 				LIBRARY_SEARCH_PATHS = "$(inherited)";
 				LIBRARY_SEARCH_PATHS = "$(inherited)";
@@ -3454,10 +3679,11 @@
 					../../lib/lpng,
 					../../lib/lpng,
 					../../lib/ljpeg,
 					../../lib/ljpeg,
 					../../lib/lungif,
 					../../lib/lungif,
-					"$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/Current/Frameworks/QD.framework/Headers",
-					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
+					../../source/persistence/rapidjson/include,
 					../../source/testing/googleTest,
 					../../source/testing/googleTest,
 					../../source/testing/googleTest/include,
 					../../source/testing/googleTest/include,
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/Current/Frameworks/QD.framework/Headers",
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
 				);
 				);
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
 				LIBRARY_SEARCH_PATHS = "$(inherited)";
 				LIBRARY_SEARCH_PATHS = "$(inherited)";
@@ -3487,10 +3713,11 @@
 					../../lib/lpng,
 					../../lib/lpng,
 					../../lib/ljpeg,
 					../../lib/ljpeg,
 					../../lib/lungif,
 					../../lib/lungif,
-					"$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/Current/Frameworks/QD.framework/Headers",
-					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
+					../../source/persistence/rapidjson/include,
 					../../source/testing/googleTest,
 					../../source/testing/googleTest,
 					../../source/testing/googleTest/include,
 					../../source/testing/googleTest/include,
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/Current/Frameworks/QD.framework/Headers",
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
 				);
 				);
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
 				LIBRARY_SEARCH_PATHS = "$(inherited)";
 				LIBRARY_SEARCH_PATHS = "$(inherited)";

+ 1 - 1
engine/compilers/Xcode/Torque2D.xcodeproj/xcshareddata/xcschemes/Torque2D.xcscheme

@@ -44,7 +44,7 @@
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       launchStyle = "0"
       launchStyle = "0"
       useCustomWorkingDirectory = "NO"
       useCustomWorkingDirectory = "NO"
-      buildConfiguration = "Release"
+      buildConfiguration = "Debug"
       ignoresPersistentStateOnLaunch = "NO"
       ignoresPersistentStateOnLaunch = "NO"
       debugDocumentVersioning = "YES"
       debugDocumentVersioning = "YES"
       allowLocationSimulation = "YES">
       allowLocationSimulation = "YES">

+ 280 - 52
engine/compilers/Xcode_iOS/Torque2D.xcodeproj/project.pbxproj

@@ -17,13 +17,22 @@
 		2AB4C1B116DE9F6700B02479 /* PickingSceneController.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AB4C1AD16DE9F6700B02479 /* PickingSceneController.cc */; };
 		2AB4C1B116DE9F6700B02479 /* PickingSceneController.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AB4C1AD16DE9F6700B02479 /* PickingSceneController.cc */; };
 		2AB97A2116B66BE50080F940 /* tamlCustom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AB97A1F16B66BE50080F940 /* tamlCustom.cc */; };
 		2AB97A2116B66BE50080F940 /* tamlCustom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AB97A1F16B66BE50080F940 /* tamlCustom.cc */; };
 		2AC4404E16B0144500FC4091 /* ImageFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AC4404C16B0144500FC4091 /* ImageFont.cc */; };
 		2AC4404E16B0144500FC4091 /* ImageFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AC4404C16B0144500FC4091 /* ImageFont.cc */; };
+		2ACAFD471705CF340022601C /* tamlJSONParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ACAFD451705CF340022601C /* tamlJSONParser.cc */; };
 		2ACF5A2C16E52D6A00F838D9 /* SpriteBatchQuery.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF5A2916E52D6A00F838D9 /* SpriteBatchQuery.cc */; };
 		2ACF5A2C16E52D6A00F838D9 /* SpriteBatchQuery.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ACF5A2916E52D6A00F838D9 /* SpriteBatchQuery.cc */; };
+		2AD42156170434C2005BB8AD /* tamlBinaryReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD42152170434C2005BB8AD /* tamlBinaryReader.cc */; };
+		2AD42157170434C2005BB8AD /* tamlBinaryWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD42154170434C2005BB8AD /* tamlBinaryWriter.cc */; };
+		2AD4215F170434E1005BB8AD /* tamlXmlParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD42158170434E1005BB8AD /* tamlXmlParser.cc */; };
+		2AD42160170434E1005BB8AD /* tamlXmlReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD4215A170434E1005BB8AD /* tamlXmlReader.cc */; };
+		2AD42161170434E1005BB8AD /* tamlXmlWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD4215D170434E1005BB8AD /* tamlXmlWriter.cc */; };
+		2AD42166170434F0005BB8AD /* tamlJSONReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD42162170434F0005BB8AD /* tamlJSONReader.cc */; };
+		2AD42167170434F0005BB8AD /* tamlJSONWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AD42164170434F0005BB8AD /* tamlJSONWriter.cc */; };
 		2AE2938B16EF4C480015E200 /* WaveComposite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AE2938916EF4C480015E200 /* WaveComposite.cc */; };
 		2AE2938B16EF4C480015E200 /* WaveComposite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AE2938916EF4C480015E200 /* WaveComposite.cc */; };
 		2AE2F55916D6B07200B6A058 /* BuoyancyController.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AE2F55716D6B07200B6A058 /* BuoyancyController.cc */; };
 		2AE2F55916D6B07200B6A058 /* BuoyancyController.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AE2F55716D6B07200B6A058 /* BuoyancyController.cc */; };
 		2AED7D9316B70102003482CF /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AED7D9216B70102003482CF /* CoreText.framework */; };
 		2AED7D9316B70102003482CF /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AED7D9216B70102003482CF /* CoreText.framework */; };
 		2AF1C54B16B439D900C1CF3A /* declaredAssets.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AF1C54716B439D900C1CF3A /* declaredAssets.cc */; };
 		2AF1C54B16B439D900C1CF3A /* declaredAssets.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AF1C54716B439D900C1CF3A /* declaredAssets.cc */; };
 		2AF1C54C16B439D900C1CF3A /* referencedAssets.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AF1C54916B439D900C1CF3A /* referencedAssets.cc */; };
 		2AF1C54C16B439D900C1CF3A /* referencedAssets.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AF1C54916B439D900C1CF3A /* referencedAssets.cc */; };
 		33230F1656FA2C7C493DA2D2 /* guiSliderCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 332307DBC5B7EEEB22E5A736 /* guiSliderCtrl.cc */; };
 		33230F1656FA2C7C493DA2D2 /* guiSliderCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 332307DBC5B7EEEB22E5A736 /* guiSliderCtrl.cc */; };
+		860A196C171F0666000E9FE8 /* guiGridCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 860A196A171F0666000E9FE8 /* guiGridCtrl.cc */; };
 		8610F32F16AEEC670015BCEB /* main.cs in Resources */ = {isa = PBXBuildFile; fileRef = 8610F32D16AEEC670015BCEB /* main.cs */; };
 		8610F32F16AEEC670015BCEB /* main.cs in Resources */ = {isa = PBXBuildFile; fileRef = 8610F32D16AEEC670015BCEB /* main.cs */; };
 		8610F33016AEEC670015BCEB /* modules in Resources */ = {isa = PBXBuildFile; fileRef = 8610F32E16AEEC670015BCEB /* modules */; };
 		8610F33016AEEC670015BCEB /* modules in Resources */ = {isa = PBXBuildFile; fileRef = 8610F32E16AEEC670015BCEB /* modules */; };
 		8652F2A216C1483B00639EFE /* torque2d.png in Resources */ = {isa = PBXBuildFile; fileRef = 8652F2A116C1483B00639EFE /* torque2d.png */; };
 		8652F2A216C1483B00639EFE /* torque2d.png in Resources */ = {isa = PBXBuildFile; fileRef = 8652F2A116C1483B00639EFE /* torque2d.png */; };
@@ -111,7 +120,6 @@
 		867BB00F16AEC9050033868F /* AudioAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD8C16AEC9050033868F /* AudioAsset.cc */; };
 		867BB00F16AEC9050033868F /* AudioAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD8C16AEC9050033868F /* AudioAsset.cc */; };
 		867BB01016AEC9050033868F /* audioBuffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD8E16AEC9050033868F /* audioBuffer.cc */; };
 		867BB01016AEC9050033868F /* audioBuffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD8E16AEC9050033868F /* audioBuffer.cc */; };
 		867BB01116AEC9050033868F /* audioDataBlock.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9016AEC9050033868F /* audioDataBlock.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 */; };
 		867BB01316AEC9050033868F /* audioStreamSourceFactory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9416AEC9050033868F /* audioStreamSourceFactory.cc */; };
 		867BB01416AEC9050033868F /* wavStreamSource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9616AEC9050033868F /* wavStreamSource.cc */; };
 		867BB01416AEC9050033868F /* wavStreamSource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9616AEC9050033868F /* wavStreamSource.cc */; };
 		867BB01516AEC9050033868F /* bitTables.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9B16AEC9050033868F /* bitTables.cc */; };
 		867BB01516AEC9050033868F /* bitTables.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9B16AEC9050033868F /* bitTables.cc */; };
@@ -238,7 +246,6 @@
 		867BB09D16AEC9050033868F /* fileObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC316AEC9050033868F /* fileObject.cc */; };
 		867BB09D16AEC9050033868F /* fileObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC316AEC9050033868F /* fileObject.cc */; };
 		867BB09E16AEC9050033868F /* fileStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC516AEC9050033868F /* fileStream.cc */; };
 		867BB09E16AEC9050033868F /* fileStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC516AEC9050033868F /* fileStream.cc */; };
 		867BB09F16AEC9050033868F /* fileStreamObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC716AEC9050033868F /* fileStreamObject.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 */; };
 		867BB0A116AEC9050033868F /* filterStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECA16AEC9050033868F /* filterStream.cc */; };
 		867BB0A216AEC9050033868F /* memStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECC16AEC9050033868F /* memStream.cc */; };
 		867BB0A216AEC9050033868F /* memStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECC16AEC9050033868F /* memStream.cc */; };
 		867BB0A316AEC9050033868F /* nStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECE16AEC9050033868F /* nStream.cc */; };
 		867BB0A316AEC9050033868F /* nStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECE16AEC9050033868F /* nStream.cc */; };
@@ -260,7 +267,6 @@
 		867BB0B616AEC9050033868F /* mathTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF516AEC9050033868F /* mathTypes.cc */; };
 		867BB0B616AEC9050033868F /* mathTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF516AEC9050033868F /* mathTypes.cc */; };
 		867BB0B716AEC9050033868F /* mathUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF716AEC9050033868F /* mathUtils.cc */; };
 		867BB0B716AEC9050033868F /* mathUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF716AEC9050033868F /* mathUtils.cc */; };
 		867BB0B816AEC9050033868F /* mBox.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF916AEC9050033868F /* mBox.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 */; };
 		867BB0BB16AEC9050033868F /* mMath_C.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEFF16AEC9050033868F /* mMath_C.cc */; };
 		867BB0BC16AEC9050033868F /* mMathAltivec.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0016AEC9050033868F /* mMathAltivec.cc */; };
 		867BB0BC16AEC9050033868F /* mMathAltivec.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0016AEC9050033868F /* mMathAltivec.cc */; };
 		867BB0BD16AEC9050033868F /* mMathAMD.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0116AEC9050033868F /* mMathAMD.cc */; };
 		867BB0BD16AEC9050033868F /* mMathAMD.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0116AEC9050033868F /* mMathAMD.cc */; };
@@ -275,7 +281,6 @@
 		867BB0C816AEC9050033868F /* mSplinePatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1616AEC9050033868F /* mSplinePatch.cc */; };
 		867BB0C816AEC9050033868F /* mSplinePatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1616AEC9050033868F /* mSplinePatch.cc */; };
 		867BB0C916AEC9050033868F /* rectClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1816AEC9050033868F /* rectClipper.cpp */; };
 		867BB0C916AEC9050033868F /* rectClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1816AEC9050033868F /* rectClipper.cpp */; };
 		867BB0CA16AEC9050033868F /* dataChunker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1B16AEC9050033868F /* dataChunker.cc */; };
 		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 */; };
 		867BB0CC16AEC9050033868F /* dispatcher.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2216AEC9050033868F /* dispatcher.cc */; };
 		867BB0CD16AEC9050033868F /* eventManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2416AEC9050033868F /* eventManager.cc */; };
 		867BB0CD16AEC9050033868F /* eventManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2416AEC9050033868F /* eventManager.cc */; };
 		867BB0CE16AEC9050033868F /* message.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2616AEC9050033868F /* message.cc */; };
 		867BB0CE16AEC9050033868F /* message.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2616AEC9050033868F /* message.cc */; };
@@ -302,12 +307,7 @@
 		867BB0E316AEC9050033868F /* telnetConsole.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5116AEC9050033868F /* telnetConsole.cc */; };
 		867BB0E316AEC9050033868F /* telnetConsole.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5116AEC9050033868F /* telnetConsole.cc */; };
 		867BB0E416AEC9050033868F /* SimXMLDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5416AEC9050033868F /* SimXMLDocument.cpp */; };
 		867BB0E416AEC9050033868F /* SimXMLDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5416AEC9050033868F /* SimXMLDocument.cpp */; };
 		867BB0E516AEC9050033868F /* taml.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5716AEC9050033868F /* taml.cc */; };
 		867BB0E516AEC9050033868F /* taml.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5716AEC9050033868F /* taml.cc */; };
-		867BB0E616AEC9050033868F /* tamlBinaryReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5A16AEC9050033868F /* tamlBinaryReader.cc */; };
-		867BB0E716AEC9050033868F /* tamlBinaryWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5C16AEC9050033868F /* tamlBinaryWriter.cc */; };
 		867BB0E916AEC9050033868F /* tamlWriteNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6216AEC9050033868F /* tamlWriteNode.cc */; };
 		867BB0E916AEC9050033868F /* tamlWriteNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6216AEC9050033868F /* tamlWriteNode.cc */; };
-		867BB0EA16AEC9050033868F /* tamlXmlParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6416AEC9050033868F /* tamlXmlParser.cc */; };
-		867BB0EB16AEC9050033868F /* tamlXmlReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6616AEC9050033868F /* tamlXmlReader.cc */; };
-		867BB0EC16AEC9050033868F /* tamlXmlWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6916AEC9050033868F /* tamlXmlWriter.cc */; };
 		867BB0ED16AEC9050033868F /* tinystr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6C16AEC9050033868F /* tinystr.cpp */; };
 		867BB0ED16AEC9050033868F /* tinystr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6C16AEC9050033868F /* tinystr.cpp */; };
 		867BB0EE16AEC9050033868F /* tinyxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6E16AEC9050033868F /* tinyxml.cpp */; };
 		867BB0EE16AEC9050033868F /* tinyxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6E16AEC9050033868F /* tinyxml.cpp */; };
 		867BB0EF16AEC9050033868F /* tinyxmlerror.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF7016AEC9050033868F /* tinyxmlerror.cpp */; };
 		867BB0EF16AEC9050033868F /* tinyxmlerror.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF7016AEC9050033868F /* tinyxmlerror.cpp */; };
@@ -323,7 +323,6 @@
 		867BB0FA16AEC9050033868F /* platformFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF8F16AEC9050033868F /* platformFont.cc */; };
 		867BB0FA16AEC9050033868F /* platformFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF8F16AEC9050033868F /* platformFont.cc */; };
 		867BB0FB16AEC9050033868F /* platformMemory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF9516AEC9050033868F /* platformMemory.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 */; };
 		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 */; };
 		867BB0FE16AEC9050033868F /* platformString.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF9C16AEC9050033868F /* platformString.cc */; };
 		867BB0FF16AEC9050033868F /* platformVideo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFA116AEC9050033868F /* platformVideo.cc */; };
 		867BB0FF16AEC9050033868F /* platformVideo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFA116AEC9050033868F /* platformVideo.cc */; };
 		867BB10016AEC9050033868F /* Tickable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFA716AEC9050033868F /* Tickable.cc */; };
 		867BB10016AEC9050033868F /* Tickable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFA716AEC9050033868F /* Tickable.cc */; };
@@ -478,6 +477,12 @@
 		86A9A3FE16AEC836003F01E6 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E416AEC817003F01E6 /* OpenAL.framework */; };
 		86A9A3FE16AEC836003F01E6 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E416AEC817003F01E6 /* OpenAL.framework */; };
 		86A9A3FF16AEC836003F01E6 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E516AEC817003F01E6 /* OpenGLES.framework */; };
 		86A9A3FF16AEC836003F01E6 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E516AEC817003F01E6 /* OpenGLES.framework */; };
 		86A9A40016AEC836003F01E6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E616AEC817003F01E6 /* QuartzCore.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 */
 /* End PBXBuildFile section */
 
 
 /* Begin PBXFileReference section */
 /* Begin PBXFileReference section */
@@ -493,6 +498,8 @@
 		2AB14A0616D7CDCE00EABBF2 /* PointForceController_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PointForceController_ScriptBinding.h; path = controllers/PointForceController_ScriptBinding.h; sourceTree = "<group>"; };
 		2AB14A0616D7CDCE00EABBF2 /* PointForceController_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PointForceController_ScriptBinding.h; path = controllers/PointForceController_ScriptBinding.h; sourceTree = "<group>"; };
 		2AB14A0716D7CDCE00EABBF2 /* PointForceController.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PointForceController.cc; path = controllers/PointForceController.cc; sourceTree = "<group>"; };
 		2AB14A0716D7CDCE00EABBF2 /* PointForceController.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PointForceController.cc; path = controllers/PointForceController.cc; sourceTree = "<group>"; };
 		2AB14A0816D7CDCE00EABBF2 /* PointForceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PointForceController.h; path = controllers/PointForceController.h; sourceTree = "<group>"; };
 		2AB14A0816D7CDCE00EABBF2 /* PointForceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PointForceController.h; path = controllers/PointForceController.h; sourceTree = "<group>"; };
+		2AB4A5241705A88F0043CBAA /* tamlParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlParser.h; sourceTree = "<group>"; };
+		2AB4A5251705A88F0043CBAA /* tamlVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlVisitor.h; sourceTree = "<group>"; };
 		2AB4C1A416DE9F4B00B02479 /* AmbientForceController_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AmbientForceController_ScriptBinding.h; path = controllers/AmbientForceController_ScriptBinding.h; sourceTree = "<group>"; };
 		2AB4C1A416DE9F4B00B02479 /* AmbientForceController_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AmbientForceController_ScriptBinding.h; path = controllers/AmbientForceController_ScriptBinding.h; sourceTree = "<group>"; };
 		2AB4C1A516DE9F4B00B02479 /* AmbientForceController.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AmbientForceController.cc; path = controllers/AmbientForceController.cc; sourceTree = "<group>"; };
 		2AB4C1A516DE9F4B00B02479 /* AmbientForceController.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AmbientForceController.cc; path = controllers/AmbientForceController.cc; sourceTree = "<group>"; };
 		2AB4C1A616DE9F4B00B02479 /* AmbientForceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AmbientForceController.h; path = controllers/AmbientForceController.h; sourceTree = "<group>"; };
 		2AB4C1A616DE9F4B00B02479 /* AmbientForceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AmbientForceController.h; path = controllers/AmbientForceController.h; sourceTree = "<group>"; };
@@ -508,10 +515,41 @@
 		2AC4404B16B0144500FC4091 /* ImageFont_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageFont_ScriptBinding.h; sourceTree = "<group>"; };
 		2AC4404B16B0144500FC4091 /* ImageFont_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageFont_ScriptBinding.h; sourceTree = "<group>"; };
 		2AC4404C16B0144500FC4091 /* ImageFont.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageFont.cc; sourceTree = "<group>"; };
 		2AC4404C16B0144500FC4091 /* ImageFont.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageFont.cc; sourceTree = "<group>"; };
 		2AC4404D16B0144500FC4091 /* ImageFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageFont.h; sourceTree = "<group>"; };
 		2AC4404D16B0144500FC4091 /* ImageFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageFont.h; sourceTree = "<group>"; };
+		2ACAFD451705CF340022601C /* tamlJSONParser.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlJSONParser.cc; path = json/tamlJSONParser.cc; sourceTree = "<group>"; };
+		2ACAFD461705CF340022601C /* tamlJSONParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlJSONParser.h; path = json/tamlJSONParser.h; sourceTree = "<group>"; };
 		2ACF5A2916E52D6A00F838D9 /* SpriteBatchQuery.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteBatchQuery.cc; sourceTree = "<group>"; };
 		2ACF5A2916E52D6A00F838D9 /* SpriteBatchQuery.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteBatchQuery.cc; sourceTree = "<group>"; };
 		2ACF5A2A16E52D6A00F838D9 /* SpriteBatchQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatchQuery.h; sourceTree = "<group>"; };
 		2ACF5A2A16E52D6A00F838D9 /* SpriteBatchQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatchQuery.h; sourceTree = "<group>"; };
 		2ACF5A2B16E52D6A00F838D9 /* SpriteBatchQueryResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatchQueryResult.h; sourceTree = "<group>"; };
 		2ACF5A2B16E52D6A00F838D9 /* SpriteBatchQueryResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatchQueryResult.h; sourceTree = "<group>"; };
 		2AD07B2716D15F8E0070DC79 /* simObjectTimerEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simObjectTimerEvent.h; sourceTree = "<group>"; };
 		2AD07B2716D15F8E0070DC79 /* simObjectTimerEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simObjectTimerEvent.h; sourceTree = "<group>"; };
+		2AD42152170434C2005BB8AD /* tamlBinaryReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlBinaryReader.cc; path = binary/tamlBinaryReader.cc; sourceTree = "<group>"; };
+		2AD42153170434C2005BB8AD /* tamlBinaryReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlBinaryReader.h; path = binary/tamlBinaryReader.h; sourceTree = "<group>"; };
+		2AD42154170434C2005BB8AD /* tamlBinaryWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlBinaryWriter.cc; path = binary/tamlBinaryWriter.cc; sourceTree = "<group>"; };
+		2AD42155170434C2005BB8AD /* tamlBinaryWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlBinaryWriter.h; path = binary/tamlBinaryWriter.h; sourceTree = "<group>"; };
+		2AD42158170434E1005BB8AD /* tamlXmlParser.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlXmlParser.cc; path = xml/tamlXmlParser.cc; sourceTree = "<group>"; };
+		2AD42159170434E1005BB8AD /* tamlXmlParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlXmlParser.h; path = xml/tamlXmlParser.h; sourceTree = "<group>"; };
+		2AD4215A170434E1005BB8AD /* tamlXmlReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlXmlReader.cc; path = xml/tamlXmlReader.cc; sourceTree = "<group>"; };
+		2AD4215B170434E1005BB8AD /* tamlXmlReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlXmlReader.h; path = xml/tamlXmlReader.h; sourceTree = "<group>"; };
+		2AD4215D170434E1005BB8AD /* tamlXmlWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlXmlWriter.cc; path = xml/tamlXmlWriter.cc; sourceTree = "<group>"; };
+		2AD4215E170434E1005BB8AD /* tamlXmlWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlXmlWriter.h; path = xml/tamlXmlWriter.h; sourceTree = "<group>"; };
+		2AD42162170434F0005BB8AD /* tamlJSONReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlJSONReader.cc; path = json/tamlJSONReader.cc; sourceTree = "<group>"; };
+		2AD42163170434F0005BB8AD /* tamlJSONReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlJSONReader.h; path = json/tamlJSONReader.h; sourceTree = "<group>"; };
+		2AD42164170434F0005BB8AD /* tamlJSONWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tamlJSONWriter.cc; path = json/tamlJSONWriter.cc; sourceTree = "<group>"; };
+		2AD42165170434F0005BB8AD /* tamlJSONWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tamlJSONWriter.h; path = json/tamlJSONWriter.h; sourceTree = "<group>"; };
+		2AD4216A17043513005BB8AD /* allocators.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = allocators.h; path = rapidjson/include/rapidjson/allocators.h; sourceTree = "<group>"; };
+		2AD4216B17043513005BB8AD /* document.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = document.h; path = rapidjson/include/rapidjson/document.h; sourceTree = "<group>"; };
+		2AD4216C17043513005BB8AD /* encodedstream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = encodedstream.h; path = rapidjson/include/rapidjson/encodedstream.h; sourceTree = "<group>"; };
+		2AD4216D17043513005BB8AD /* encodings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = encodings.h; path = rapidjson/include/rapidjson/encodings.h; sourceTree = "<group>"; };
+		2AD4216E17043513005BB8AD /* filereadstream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = filereadstream.h; path = rapidjson/include/rapidjson/filereadstream.h; sourceTree = "<group>"; };
+		2AD4216F17043513005BB8AD /* filestream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = filestream.h; path = rapidjson/include/rapidjson/filestream.h; sourceTree = "<group>"; };
+		2AD4217017043513005BB8AD /* filewritestream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = filewritestream.h; path = rapidjson/include/rapidjson/filewritestream.h; sourceTree = "<group>"; };
+		2AD4217117043513005BB8AD /* prettywriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = prettywriter.h; path = rapidjson/include/rapidjson/prettywriter.h; sourceTree = "<group>"; };
+		2AD4217217043513005BB8AD /* rapidjson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rapidjson.h; path = rapidjson/include/rapidjson/rapidjson.h; sourceTree = "<group>"; };
+		2AD4217317043513005BB8AD /* reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = reader.h; path = rapidjson/include/rapidjson/reader.h; sourceTree = "<group>"; };
+		2AD4217417043513005BB8AD /* stringbuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stringbuffer.h; path = rapidjson/include/rapidjson/stringbuffer.h; sourceTree = "<group>"; };
+		2AD4217517043513005BB8AD /* writer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = writer.h; path = rapidjson/include/rapidjson/writer.h; sourceTree = "<group>"; };
+		2AD4217617043524005BB8AD /* pow10.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pow10.h; path = rapidjson/include/rapidjson/internal/pow10.h; sourceTree = "<group>"; };
+		2AD4217717043524005BB8AD /* stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stack.h; path = rapidjson/include/rapidjson/internal/stack.h; sourceTree = "<group>"; };
+		2AD4217817043524005BB8AD /* strfunc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = strfunc.h; path = rapidjson/include/rapidjson/internal/strfunc.h; sourceTree = "<group>"; };
 		2AE2938816EF4C480015E200 /* WaveComposite_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WaveComposite_ScriptBinding.h; path = experimental/composites/WaveComposite_ScriptBinding.h; sourceTree = "<group>"; };
 		2AE2938816EF4C480015E200 /* WaveComposite_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WaveComposite_ScriptBinding.h; path = experimental/composites/WaveComposite_ScriptBinding.h; sourceTree = "<group>"; };
 		2AE2938916EF4C480015E200 /* WaveComposite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WaveComposite.cc; path = experimental/composites/WaveComposite.cc; sourceTree = "<group>"; };
 		2AE2938916EF4C480015E200 /* WaveComposite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WaveComposite.cc; path = experimental/composites/WaveComposite.cc; sourceTree = "<group>"; };
 		2AE2938A16EF4C480015E200 /* WaveComposite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WaveComposite.h; path = experimental/composites/WaveComposite.h; sourceTree = "<group>"; };
 		2AE2938A16EF4C480015E200 /* WaveComposite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WaveComposite.h; path = experimental/composites/WaveComposite.h; sourceTree = "<group>"; };
@@ -525,6 +563,8 @@
 		2AF1C54A16B439D900C1CF3A /* referencedAssets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = referencedAssets.h; sourceTree = "<group>"; };
 		2AF1C54A16B439D900C1CF3A /* referencedAssets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = referencedAssets.h; sourceTree = "<group>"; };
 		332307DBC5B7EEEB22E5A736 /* guiSliderCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiSliderCtrl.cc; sourceTree = "<group>"; };
 		332307DBC5B7EEEB22E5A736 /* guiSliderCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiSliderCtrl.cc; sourceTree = "<group>"; };
 		33230911303CCA4C673E1A22 /* guiSliderCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSliderCtrl.h; sourceTree = "<group>"; };
 		33230911303CCA4C673E1A22 /* guiSliderCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSliderCtrl.h; sourceTree = "<group>"; };
+		860A196A171F0666000E9FE8 /* guiGridCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiGridCtrl.cc; sourceTree = "<group>"; };
+		860A196B171F0666000E9FE8 /* guiGridCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiGridCtrl.h; sourceTree = "<group>"; };
 		8610F32D16AEEC670015BCEB /* main.cs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = main.cs; path = ../../../main.cs; sourceTree = "<group>"; };
 		8610F32D16AEEC670015BCEB /* main.cs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = main.cs; path = ../../../main.cs; sourceTree = "<group>"; };
 		8610F32E16AEEC670015BCEB /* modules */ = {isa = PBXFileReference; lastKnownFileType = folder; name = modules; path = ../../../modules; sourceTree = "<group>"; };
 		8610F32E16AEEC670015BCEB /* modules */ = {isa = PBXFileReference; lastKnownFileType = folder; name = modules; path = ../../../modules; sourceTree = "<group>"; };
 		8652F2A116C1483B00639EFE /* torque2d.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = torque2d.png; path = ../torque2d.png; sourceTree = "<group>"; };
 		8652F2A116C1483B00639EFE /* torque2d.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = torque2d.png; path = ../torque2d.png; sourceTree = "<group>"; };
@@ -716,7 +756,6 @@
 		867BAD8F16AEC9050033868F /* audioBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioBuffer.h; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		867BAD9516AEC9050033868F /* audioStreamSourceFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioStreamSourceFactory.h; sourceTree = "<group>"; };
@@ -982,7 +1021,6 @@
 		867BAEC616AEC9050033868F /* fileStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStream.h; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		867BAECC16AEC9050033868F /* memStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memStream.cc; sourceTree = "<group>"; };
@@ -1024,7 +1062,6 @@
 		867BAEF816AEC9050033868F /* mathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathUtils.h; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		867BAEFF16AEC9050033868F /* mMath_C.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMath_C.cc; sourceTree = "<group>"; };
@@ -1055,7 +1092,6 @@
 		867BAF1B16AEC9050033868F /* dataChunker.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dataChunker.cc; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		867BAF2216AEC9050033868F /* dispatcher.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dispatcher.cc; sourceTree = "<group>"; };
@@ -1110,21 +1146,10 @@
 		867BAF5716AEC9050033868F /* taml.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = taml.cc; sourceTree = "<group>"; };
 		867BAF5716AEC9050033868F /* taml.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = taml.cc; sourceTree = "<group>"; };
 		867BAF5816AEC9050033868F /* taml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml.h; sourceTree = "<group>"; };
 		867BAF5816AEC9050033868F /* taml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml.h; sourceTree = "<group>"; };
 		867BAF5916AEC9050033868F /* taml_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml_ScriptBinding.h; sourceTree = "<group>"; };
 		867BAF5916AEC9050033868F /* taml_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml_ScriptBinding.h; sourceTree = "<group>"; };
-		867BAF5A16AEC9050033868F /* tamlBinaryReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlBinaryReader.cc; sourceTree = "<group>"; };
-		867BAF5B16AEC9050033868F /* tamlBinaryReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlBinaryReader.h; sourceTree = "<group>"; };
-		867BAF5C16AEC9050033868F /* tamlBinaryWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlBinaryWriter.cc; sourceTree = "<group>"; };
-		867BAF5D16AEC9050033868F /* tamlBinaryWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlBinaryWriter.h; sourceTree = "<group>"; };
 		867BAF5E16AEC9050033868F /* tamlCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlCallbacks.h; sourceTree = "<group>"; };
 		867BAF5E16AEC9050033868F /* tamlCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlCallbacks.h; sourceTree = "<group>"; };
 		867BAF5F16AEC9050033868F /* tamlChildren.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlChildren.h; sourceTree = "<group>"; };
 		867BAF5F16AEC9050033868F /* tamlChildren.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlChildren.h; sourceTree = "<group>"; };
 		867BAF6216AEC9050033868F /* tamlWriteNode.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlWriteNode.cc; sourceTree = "<group>"; };
 		867BAF6216AEC9050033868F /* tamlWriteNode.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlWriteNode.cc; sourceTree = "<group>"; };
 		867BAF6316AEC9050033868F /* tamlWriteNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlWriteNode.h; sourceTree = "<group>"; };
 		867BAF6316AEC9050033868F /* tamlWriteNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlWriteNode.h; sourceTree = "<group>"; };
-		867BAF6416AEC9050033868F /* tamlXmlParser.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlParser.cc; sourceTree = "<group>"; };
-		867BAF6516AEC9050033868F /* tamlXmlParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlParser.h; sourceTree = "<group>"; };
-		867BAF6616AEC9050033868F /* tamlXmlReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlReader.cc; sourceTree = "<group>"; };
-		867BAF6716AEC9050033868F /* tamlXmlReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlReader.h; sourceTree = "<group>"; };
-		867BAF6816AEC9050033868F /* tamlXmlVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlVisitor.h; sourceTree = "<group>"; };
-		867BAF6916AEC9050033868F /* tamlXmlWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlWriter.cc; sourceTree = "<group>"; };
-		867BAF6A16AEC9050033868F /* tamlXmlWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlWriter.h; sourceTree = "<group>"; };
 		867BAF6C16AEC9050033868F /* tinystr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinystr.cpp; sourceTree = "<group>"; };
 		867BAF6C16AEC9050033868F /* tinystr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinystr.cpp; sourceTree = "<group>"; };
 		867BAF6D16AEC9050033868F /* tinystr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinystr.h; sourceTree = "<group>"; };
 		867BAF6D16AEC9050033868F /* tinystr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinystr.h; sourceTree = "<group>"; };
 		867BAF6E16AEC9050033868F /* tinyxml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxml.cpp; sourceTree = "<group>"; };
 		867BAF6E16AEC9050033868F /* tinyxml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxml.cpp; sourceTree = "<group>"; };
@@ -1166,7 +1191,6 @@
 		867BAF9616AEC9050033868F /* platformMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformMemory.h; sourceTree = "<group>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		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>"; };
 		867BAF9C16AEC9050033868F /* platformString.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformString.cc; sourceTree = "<group>"; };
@@ -1416,6 +1440,75 @@
 		86A9A3E416AEC817003F01E6 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
 		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; };
 		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; };
 		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 */
 /* End PBXFileReference section */
 
 
 /* Begin PBXFrameworksBuildPhase section */
 /* Begin PBXFrameworksBuildPhase section */
@@ -1478,6 +1571,73 @@
 			name = controllers;
 			name = controllers;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		2AD4214F170434A9005BB8AD /* binary */ = {
+			isa = PBXGroup;
+			children = (
+				2AD42152170434C2005BB8AD /* tamlBinaryReader.cc */,
+				2AD42153170434C2005BB8AD /* tamlBinaryReader.h */,
+				2AD42154170434C2005BB8AD /* tamlBinaryWriter.cc */,
+				2AD42155170434C2005BB8AD /* tamlBinaryWriter.h */,
+			);
+			name = binary;
+			sourceTree = "<group>";
+		};
+		2AD42150170434AF005BB8AD /* json */ = {
+			isa = PBXGroup;
+			children = (
+				2ACAFD451705CF340022601C /* tamlJSONParser.cc */,
+				2ACAFD461705CF340022601C /* tamlJSONParser.h */,
+				2AD42162170434F0005BB8AD /* tamlJSONReader.cc */,
+				2AD42163170434F0005BB8AD /* tamlJSONReader.h */,
+				2AD42164170434F0005BB8AD /* tamlJSONWriter.cc */,
+				2AD42165170434F0005BB8AD /* tamlJSONWriter.h */,
+			);
+			name = json;
+			sourceTree = "<group>";
+		};
+		2AD42151170434B5005BB8AD /* xml */ = {
+			isa = PBXGroup;
+			children = (
+				2AD42158170434E1005BB8AD /* tamlXmlParser.cc */,
+				2AD42159170434E1005BB8AD /* tamlXmlParser.h */,
+				2AD4215A170434E1005BB8AD /* tamlXmlReader.cc */,
+				2AD4215B170434E1005BB8AD /* tamlXmlReader.h */,
+				2AD4215D170434E1005BB8AD /* tamlXmlWriter.cc */,
+				2AD4215E170434E1005BB8AD /* tamlXmlWriter.h */,
+			);
+			name = xml;
+			sourceTree = "<group>";
+		};
+		2AD42168170434F9005BB8AD /* rapidjson */ = {
+			isa = PBXGroup;
+			children = (
+				2AD4216A17043513005BB8AD /* allocators.h */,
+				2AD4216B17043513005BB8AD /* document.h */,
+				2AD4216C17043513005BB8AD /* encodedstream.h */,
+				2AD4216D17043513005BB8AD /* encodings.h */,
+				2AD4216E17043513005BB8AD /* filereadstream.h */,
+				2AD4216F17043513005BB8AD /* filestream.h */,
+				2AD4217017043513005BB8AD /* filewritestream.h */,
+				2AD4217117043513005BB8AD /* prettywriter.h */,
+				2AD4217217043513005BB8AD /* rapidjson.h */,
+				2AD4217317043513005BB8AD /* reader.h */,
+				2AD4217417043513005BB8AD /* stringbuffer.h */,
+				2AD4217517043513005BB8AD /* writer.h */,
+				2AD4216917043501005BB8AD /* internal */,
+			);
+			name = rapidjson;
+			sourceTree = "<group>";
+		};
+		2AD4216917043501005BB8AD /* internal */ = {
+			isa = PBXGroup;
+			children = (
+				2AD4217617043524005BB8AD /* pow10.h */,
+				2AD4217717043524005BB8AD /* stack.h */,
+				2AD4217817043524005BB8AD /* strfunc.h */,
+			);
+			name = internal;
+			sourceTree = "<group>";
+		};
 		2AE2938616EF4C310015E200 /* experimental */ = {
 		2AE2938616EF4C310015E200 /* experimental */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
@@ -1613,6 +1773,7 @@
 		867BAD0C16AEC9050033868F /* core */ = {
 		867BAD0C16AEC9050033868F /* core */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D179174F04F300033EBB /* Utility_ScriptBinding.h */,
 				2AA3655B16F3553E00E7A900 /* ImageFrameProvider.cc */,
 				2AA3655B16F3553E00E7A900 /* ImageFrameProvider.cc */,
 				2AA3655C16F3553E00E7A900 /* ImageFrameProvider.h */,
 				2AA3655C16F3553E00E7A900 /* ImageFrameProvider.h */,
 				2AA3655D16F3553E00E7A900 /* ImageFrameProviderCore.cc */,
 				2AA3655D16F3553E00E7A900 /* ImageFrameProviderCore.cc */,
@@ -1777,6 +1938,7 @@
 		867BAD8916AEC9050033868F /* audio */ = {
 		867BAD8916AEC9050033868F /* audio */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D17B174F053800033EBB /* audio_ScriptBinding.cc */,
 				867BAD8A16AEC9050033868F /* audio.cc */,
 				867BAD8A16AEC9050033868F /* audio.cc */,
 				867BAD8B16AEC9050033868F /* audio.h */,
 				867BAD8B16AEC9050033868F /* audio.h */,
 				867BAD8C16AEC9050033868F /* AudioAsset.cc */,
 				867BAD8C16AEC9050033868F /* AudioAsset.cc */,
@@ -1785,7 +1947,6 @@
 				867BAD8F16AEC9050033868F /* audioBuffer.h */,
 				867BAD8F16AEC9050033868F /* audioBuffer.h */,
 				867BAD9016AEC9050033868F /* audioDataBlock.cc */,
 				867BAD9016AEC9050033868F /* audioDataBlock.cc */,
 				867BAD9116AEC9050033868F /* audioDataBlock.h */,
 				867BAD9116AEC9050033868F /* audioDataBlock.h */,
-				867BAD9216AEC9050033868F /* audioFunctions.cc */,
 				867BAD9316AEC9050033868F /* audioStreamSource.h */,
 				867BAD9316AEC9050033868F /* audioStreamSource.h */,
 				867BAD9416AEC9050033868F /* audioStreamSourceFactory.cc */,
 				867BAD9416AEC9050033868F /* audioStreamSourceFactory.cc */,
 				867BAD9516AEC9050033868F /* audioStreamSourceFactory.h */,
 				867BAD9516AEC9050033868F /* audioStreamSourceFactory.h */,
@@ -1799,6 +1960,7 @@
 		867BAD9816AEC9050033868F /* collection */ = {
 		867BAD9816AEC9050033868F /* collection */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D17D174F054300033EBB /* undo_ScriptBinding.h */,
 				867BAD9916AEC9050033868F /* bitMatrix.h */,
 				867BAD9916AEC9050033868F /* bitMatrix.h */,
 				867BAD9A16AEC9050033868F /* bitSet.h */,
 				867BAD9A16AEC9050033868F /* bitSet.h */,
 				867BAD9B16AEC9050033868F /* bitTables.cc */,
 				867BAD9B16AEC9050033868F /* bitTables.cc */,
@@ -1829,6 +1991,8 @@
 		867BADAF16AEC9050033868F /* component */ = {
 		867BADAF16AEC9050033868F /* component */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D17E174F055200033EBB /* dynamicConsoleMethodComponent_ScriptBinding.h */,
+				B350D17F174F055200033EBB /* simComponent_ScriptBinding.h */,
 				867BADBE16AEC9050033868F /* behaviors */,
 				867BADBE16AEC9050033868F /* behaviors */,
 				867BADC916AEC9050033868F /* dynamicConsoleMethodComponent.cpp */,
 				867BADC916AEC9050033868F /* dynamicConsoleMethodComponent.cpp */,
 				867BADCA16AEC9050033868F /* dynamicConsoleMethodComponent.h */,
 				867BADCA16AEC9050033868F /* dynamicConsoleMethodComponent.h */,
@@ -1859,6 +2023,15 @@
 		867BADD016AEC9050033868F /* console */ = {
 		867BADD016AEC9050033868F /* console */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			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 */,
 				867BADD116AEC9050033868F /* ast.h */,
 				867BADD216AEC9050033868F /* astAlloc.cc */,
 				867BADD216AEC9050033868F /* astAlloc.cc */,
 				867BADD316AEC9050033868F /* astNodes.cc */,
 				867BADD316AEC9050033868F /* astNodes.cc */,
@@ -1906,6 +2079,8 @@
 		867BADFC16AEC9050033868F /* debug */ = {
 		867BADFC16AEC9050033868F /* debug */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D18A174F058D00033EBB /* profiler_ScriptBinding.h */,
+				B350D18B174F058D00033EBB /* telnetDebugger_ScriptBinding.h */,
 				867BADFD16AEC9050033868F /* profiler.cc */,
 				867BADFD16AEC9050033868F /* profiler.cc */,
 				867BADFE16AEC9050033868F /* profiler.h */,
 				867BADFE16AEC9050033868F /* profiler.h */,
 				867BADFF16AEC9050033868F /* remote */,
 				867BADFF16AEC9050033868F /* remote */,
@@ -1947,6 +2122,8 @@
 		867BAE1016AEC9050033868F /* game */ = {
 		867BAE1016AEC9050033868F /* game */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D18C174F05A200033EBB /* gameConnection_ScriptBinding.h */,
+				B350D18D174F05A200033EBB /* version_ScriptBinding.h */,
 				867BAE1116AEC9050033868F /* defaultGame.cc */,
 				867BAE1116AEC9050033868F /* defaultGame.cc */,
 				867BAE1216AEC9050033868F /* defaultGame.h */,
 				867BAE1216AEC9050033868F /* defaultGame.h */,
 				867BAE1316AEC9050033868F /* gameConnection.cc */,
 				867BAE1316AEC9050033868F /* gameConnection.cc */,
@@ -1965,6 +2142,12 @@
 		867BAE1B16AEC9050033868F /* graphics */ = {
 		867BAE1B16AEC9050033868F /* graphics */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			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 */,
 				867BAE1C16AEC9050033868F /* bitmapBmp.cc */,
 				867BAE1D16AEC9050033868F /* bitmapJpeg.cc */,
 				867BAE1D16AEC9050033868F /* bitmapJpeg.cc */,
 				867BAE1E16AEC9050033868F /* bitmapPng.cc */,
 				867BAE1E16AEC9050033868F /* bitmapPng.cc */,
@@ -2001,6 +2184,8 @@
 		867BAE3A16AEC9050033868F /* gui */ = {
 		867BAE3A16AEC9050033868F /* gui */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D194174F05CB00033EBB /* guiCanvas_ScriptBinding.h */,
+				B350D195174F05CB00033EBB /* guiControl_ScriptBinding.h */,
 				867BAE3B16AEC9050033868F /* buttons */,
 				867BAE3B16AEC9050033868F /* buttons */,
 				867BAE4B16AEC9050033868F /* containers */,
 				867BAE4B16AEC9050033868F /* containers */,
 				867BAE6416AEC9050033868F /* editor */,
 				867BAE6416AEC9050033868F /* editor */,
@@ -2097,6 +2282,8 @@
 		867BAE4B16AEC9050033868F /* containers */ = {
 		867BAE4B16AEC9050033868F /* containers */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				860A196A171F0666000E9FE8 /* guiGridCtrl.cc */,
+				860A196B171F0666000E9FE8 /* guiGridCtrl.h */,
 				867BAE4C16AEC9050033868F /* guiAutoScrollCtrl.cc */,
 				867BAE4C16AEC9050033868F /* guiAutoScrollCtrl.cc */,
 				867BAE4D16AEC9050033868F /* guiAutoScrollCtrl.h */,
 				867BAE4D16AEC9050033868F /* guiAutoScrollCtrl.h */,
 				867BAE4E16AEC9050033868F /* guiCtrlArrayCtrl.cc */,
 				867BAE4E16AEC9050033868F /* guiCtrlArrayCtrl.cc */,
@@ -2161,6 +2348,7 @@
 		867BAEBB16AEC9050033868F /* input */ = {
 		867BAEBB16AEC9050033868F /* input */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D196174F05F100033EBB /* actionMap_ScriptBinding.h */,
 				867BAEBC16AEC9050033868F /* actionMap.cc */,
 				867BAEBC16AEC9050033868F /* actionMap.cc */,
 				867BAEBD16AEC9050033868F /* actionMap.h */,
 				867BAEBD16AEC9050033868F /* actionMap.h */,
 			);
 			);
@@ -2171,6 +2359,10 @@
 		867BAEBE16AEC9050033868F /* io */ = {
 		867BAEBE16AEC9050033868F /* io */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D197174F060700033EBB /* fileObject_ScriptBinding.h */,
+				B350D198174F060700033EBB /* fileStreamObject_ScriptBinding.h */,
+				B350D199174F060700033EBB /* fileSystem_ScriptBinding.cc */,
+				B350D19A174F060700033EBB /* streamObject_ScriptBinding.h */,
 				867BAEBF16AEC9050033868F /* bitStream.cc */,
 				867BAEBF16AEC9050033868F /* bitStream.cc */,
 				867BAEC016AEC9050033868F /* bitStream.h */,
 				867BAEC016AEC9050033868F /* bitStream.h */,
 				867BAEC116AEC9050033868F /* bufferStream.cc */,
 				867BAEC116AEC9050033868F /* bufferStream.cc */,
@@ -2181,7 +2373,6 @@
 				867BAEC616AEC9050033868F /* fileStream.h */,
 				867BAEC616AEC9050033868F /* fileStream.h */,
 				867BAEC716AEC9050033868F /* fileStreamObject.cc */,
 				867BAEC716AEC9050033868F /* fileStreamObject.cc */,
 				867BAEC816AEC9050033868F /* fileStreamObject.h */,
 				867BAEC816AEC9050033868F /* fileStreamObject.h */,
-				867BAEC916AEC9050033868F /* fileSystemFunctions.cpp */,
 				867BAECA16AEC9050033868F /* filterStream.cc */,
 				867BAECA16AEC9050033868F /* filterStream.cc */,
 				867BAECB16AEC9050033868F /* filterStream.h */,
 				867BAECB16AEC9050033868F /* filterStream.h */,
 				867BAECC16AEC9050033868F /* memStream.cc */,
 				867BAECC16AEC9050033868F /* memStream.cc */,
@@ -2202,6 +2393,7 @@
 		867BAED116AEC9050033868F /* resource */ = {
 		867BAED116AEC9050033868F /* resource */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D19C174F061100033EBB /* resourceManager_ScriptBinding.h */,
 				867BAED216AEC9050033868F /* resourceDictionary.cc */,
 				867BAED216AEC9050033868F /* resourceDictionary.cc */,
 				867BAED316AEC9050033868F /* resourceManager.cc */,
 				867BAED316AEC9050033868F /* resourceManager.cc */,
 				867BAED416AEC9050033868F /* resourceManager.h */,
 				867BAED416AEC9050033868F /* resourceManager.h */,
@@ -2212,6 +2404,7 @@
 		867BAED816AEC9050033868F /* zip */ = {
 		867BAED816AEC9050033868F /* zip */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D19D174F061D00033EBB /* zipObject_ScriptBinding.h */,
 				867BAED916AEC9050033868F /* centralDir.cc */,
 				867BAED916AEC9050033868F /* centralDir.cc */,
 				867BAEDA16AEC9050033868F /* centralDir.h */,
 				867BAEDA16AEC9050033868F /* centralDir.h */,
 				867BAEDB16AEC9050033868F /* compressor.cc */,
 				867BAEDB16AEC9050033868F /* compressor.cc */,
@@ -2240,6 +2433,11 @@
 		867BAEF316AEC9050033868F /* math */ = {
 		867BAEF316AEC9050033868F /* math */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D19E174F063200033EBB /* box_ScriptBinding.h */,
+				B350D19F174F063200033EBB /* math_ScriptBinding.cc */,
+				B350D1A0174F063200033EBB /* matrix_ScriptBinding.h */,
+				B350D1A1174F063200033EBB /* random_ScriptBinding.h */,
+				B350D1A2174F063200033EBB /* vector_ScriptBinding.h */,
 				867BAEF416AEC9050033868F /* mathIO.h */,
 				867BAEF416AEC9050033868F /* mathIO.h */,
 				867BAEF516AEC9050033868F /* mathTypes.cc */,
 				867BAEF516AEC9050033868F /* mathTypes.cc */,
 				867BAEF616AEC9050033868F /* mathTypes.h */,
 				867BAEF616AEC9050033868F /* mathTypes.h */,
@@ -2247,7 +2445,6 @@
 				867BAEF816AEC9050033868F /* mathUtils.h */,
 				867BAEF816AEC9050033868F /* mathUtils.h */,
 				867BAEF916AEC9050033868F /* mBox.cc */,
 				867BAEF916AEC9050033868F /* mBox.cc */,
 				867BAEFA16AEC9050033868F /* mBox.h */,
 				867BAEFA16AEC9050033868F /* mBox.h */,
-				867BAEFB16AEC9050033868F /* mConsoleFunctions.cc */,
 				867BAEFC16AEC9050033868F /* mConstants.h */,
 				867BAEFC16AEC9050033868F /* mConstants.h */,
 				867BAEFD16AEC9050033868F /* mMath.h */,
 				867BAEFD16AEC9050033868F /* mMath.h */,
 				867BAEFF16AEC9050033868F /* mMath_C.cc */,
 				867BAEFF16AEC9050033868F /* mMath_C.cc */,
@@ -2283,10 +2480,10 @@
 		867BAF1A16AEC9050033868F /* memory */ = {
 		867BAF1A16AEC9050033868F /* memory */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D1A4174F064000033EBB /* frameAllocator_ScriptBinding.cc */,
 				867BAF1B16AEC9050033868F /* dataChunker.cc */,
 				867BAF1B16AEC9050033868F /* dataChunker.cc */,
 				867BAF1C16AEC9050033868F /* dataChunker.h */,
 				867BAF1C16AEC9050033868F /* dataChunker.h */,
 				867BAF1D16AEC9050033868F /* factoryCache.h */,
 				867BAF1D16AEC9050033868F /* factoryCache.h */,
-				867BAF1E16AEC9050033868F /* frameAllocator.cc */,
 				867BAF1F16AEC9050033868F /* frameAllocator.h */,
 				867BAF1F16AEC9050033868F /* frameAllocator.h */,
 				867BAF2016AEC9050033868F /* safeDelete.h */,
 				867BAF2016AEC9050033868F /* safeDelete.h */,
 			);
 			);
@@ -2297,6 +2494,9 @@
 		867BAF2116AEC9050033868F /* messaging */ = {
 		867BAF2116AEC9050033868F /* messaging */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D1A6174F064F00033EBB /* dispatcher_ScriptBinding.h */,
+				B350D1A7174F064F00033EBB /* eventManager_ScriptBinding.h */,
+				B350D1A8174F064F00033EBB /* message_ScriptBinding.h */,
 				867BAF2216AEC9050033868F /* dispatcher.cc */,
 				867BAF2216AEC9050033868F /* dispatcher.cc */,
 				867BAF2316AEC9050033868F /* dispatcher.h */,
 				867BAF2316AEC9050033868F /* dispatcher.h */,
 				867BAF2416AEC9050033868F /* eventManager.cc */,
 				867BAF2416AEC9050033868F /* eventManager.cc */,
@@ -2333,6 +2533,17 @@
 		867BAF3716AEC9050033868F /* network */ = {
 		867BAF3716AEC9050033868F /* network */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			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 */,
 				867BAF3816AEC9050033868F /* connectionProtocol.cc */,
 				867BAF3916AEC9050033868F /* connectionProtocol.h */,
 				867BAF3916AEC9050033868F /* connectionProtocol.h */,
 				867BAF3A16AEC9050033868F /* connectionStringTable.cc */,
 				867BAF3A16AEC9050033868F /* connectionStringTable.cc */,
@@ -2368,6 +2579,8 @@
 		867BAF5316AEC9050033868F /* persistence */ = {
 		867BAF5316AEC9050033868F /* persistence */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D1B4174F067F00033EBB /* SimXMLDocument_ScriptBinding.h */,
+				2AD42168170434F9005BB8AD /* rapidjson */,
 				867BAF5416AEC9050033868F /* SimXMLDocument.cpp */,
 				867BAF5416AEC9050033868F /* SimXMLDocument.cpp */,
 				867BAF5516AEC9050033868F /* SimXMLDocument.h */,
 				867BAF5516AEC9050033868F /* SimXMLDocument.h */,
 				867BAF5616AEC9050033868F /* taml */,
 				867BAF5616AEC9050033868F /* taml */,
@@ -2380,26 +2593,20 @@
 		867BAF5616AEC9050033868F /* taml */ = {
 		867BAF5616AEC9050033868F /* taml */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				2AB4A5241705A88F0043CBAA /* tamlParser.h */,
+				2AB4A5251705A88F0043CBAA /* tamlVisitor.h */,
+				2AD42151170434B5005BB8AD /* xml */,
+				2AD42150170434AF005BB8AD /* json */,
+				2AD4214F170434A9005BB8AD /* binary */,
 				2AB97A1F16B66BE50080F940 /* tamlCustom.cc */,
 				2AB97A1F16B66BE50080F940 /* tamlCustom.cc */,
 				2AB97A2016B66BE50080F940 /* tamlCustom.h */,
 				2AB97A2016B66BE50080F940 /* tamlCustom.h */,
 				867BAF5716AEC9050033868F /* taml.cc */,
 				867BAF5716AEC9050033868F /* taml.cc */,
 				867BAF5816AEC9050033868F /* taml.h */,
 				867BAF5816AEC9050033868F /* taml.h */,
 				867BAF5916AEC9050033868F /* taml_ScriptBinding.h */,
 				867BAF5916AEC9050033868F /* taml_ScriptBinding.h */,
-				867BAF5A16AEC9050033868F /* tamlBinaryReader.cc */,
-				867BAF5B16AEC9050033868F /* tamlBinaryReader.h */,
-				867BAF5C16AEC9050033868F /* tamlBinaryWriter.cc */,
-				867BAF5D16AEC9050033868F /* tamlBinaryWriter.h */,
 				867BAF5E16AEC9050033868F /* tamlCallbacks.h */,
 				867BAF5E16AEC9050033868F /* tamlCallbacks.h */,
 				867BAF5F16AEC9050033868F /* tamlChildren.h */,
 				867BAF5F16AEC9050033868F /* tamlChildren.h */,
 				867BAF6216AEC9050033868F /* tamlWriteNode.cc */,
 				867BAF6216AEC9050033868F /* tamlWriteNode.cc */,
 				867BAF6316AEC9050033868F /* tamlWriteNode.h */,
 				867BAF6316AEC9050033868F /* tamlWriteNode.h */,
-				867BAF6416AEC9050033868F /* tamlXmlParser.cc */,
-				867BAF6516AEC9050033868F /* tamlXmlParser.h */,
-				867BAF6616AEC9050033868F /* tamlXmlReader.cc */,
-				867BAF6716AEC9050033868F /* tamlXmlReader.h */,
-				867BAF6816AEC9050033868F /* tamlXmlVisitor.h */,
-				867BAF6916AEC9050033868F /* tamlXmlWriter.cc */,
-				867BAF6A16AEC9050033868F /* tamlXmlWriter.h */,
 			);
 			);
 			path = taml;
 			path = taml;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -2420,6 +2627,12 @@
 		867BAF7216AEC9050033868F /* platform */ = {
 		867BAF7216AEC9050033868F /* platform */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			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 */,
 				867BAF7316AEC9050033868F /* CursorManager.cc */,
 				867BAF7416AEC9050033868F /* eaxtypes.h */,
 				867BAF7416AEC9050033868F /* eaxtypes.h */,
 				867BAF7516AEC9050033868F /* event.h */,
 				867BAF7516AEC9050033868F /* event.h */,
@@ -2450,7 +2663,6 @@
 				867BAF9616AEC9050033868F /* platformMemory.h */,
 				867BAF9616AEC9050033868F /* platformMemory.h */,
 				867BAF9716AEC9050033868F /* platformNetAsync.unix.cc */,
 				867BAF9716AEC9050033868F /* platformNetAsync.unix.cc */,
 				867BAF9816AEC9050033868F /* platformNetAsync.unix.h */,
 				867BAF9816AEC9050033868F /* platformNetAsync.unix.h */,
-				867BAF9916AEC9050033868F /* platformNetwork.cc */,
 				867BAF9A16AEC9050033868F /* platformNetwork.h */,
 				867BAF9A16AEC9050033868F /* platformNetwork.h */,
 				867BAF9B16AEC9050033868F /* platformSemaphore.h */,
 				867BAF9B16AEC9050033868F /* platformSemaphore.h */,
 				867BAF9C16AEC9050033868F /* platformString.cc */,
 				867BAF9C16AEC9050033868F /* platformString.cc */,
@@ -2483,6 +2695,7 @@
 		867BAF7916AEC9050033868F /* menus */ = {
 		867BAF7916AEC9050033868F /* menus */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D1BD174F06C900033EBB /* popupMenu_ScriptBinding.h */,
 				867BAF7A16AEC9050033868F /* popupMenu.cc */,
 				867BAF7A16AEC9050033868F /* popupMenu.cc */,
 				867BAF7B16AEC9050033868F /* popupMenu.h */,
 				867BAF7B16AEC9050033868F /* popupMenu.h */,
 			);
 			);
@@ -2492,6 +2705,7 @@
 		867BAF7C16AEC9050033868F /* nativeDialogs */ = {
 		867BAF7C16AEC9050033868F /* nativeDialogs */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D1BC174F06C000033EBB /* msgBox_ScriptBinding.h */,
 				867BAF7D16AEC9050033868F /* fileDialog.cc */,
 				867BAF7D16AEC9050033868F /* fileDialog.cc */,
 				867BAF7E16AEC9050033868F /* fileDialog.h */,
 				867BAF7E16AEC9050033868F /* fileDialog.h */,
 				867BAF7F16AEC9050033868F /* fileDialog_ScriptBinding.h */,
 				867BAF7F16AEC9050033868F /* fileDialog_ScriptBinding.h */,
@@ -2514,6 +2728,11 @@
 		867BAFB516AEC9050033868F /* sim */ = {
 		867BAFB516AEC9050033868F /* sim */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D1BE174F06DE00033EBB /* simBase_ScriptBinding.h */,
+				B350D1BF174F06DE00033EBB /* simDatablock_ScriptBinding.h */,
+				B350D1C0174F06DE00033EBB /* simObject_ScriptBinding.h */,
+				B350D1C1174F06DE00033EBB /* simSerialize_ScriptBinding.h */,
+				B350D1C2174F06DE00033EBB /* simSet_ScriptBinding.h */,
 				2AD07B2716D15F8E0070DC79 /* simObjectTimerEvent.h */,
 				2AD07B2716D15F8E0070DC79 /* simObjectTimerEvent.h */,
 				867BAFB616AEC9050033868F /* scriptGroup.cc */,
 				867BAFB616AEC9050033868F /* scriptGroup.cc */,
 				867BAFB716AEC9050033868F /* scriptGroup.h */,
 				867BAFB716AEC9050033868F /* scriptGroup.h */,
@@ -2550,6 +2769,8 @@
 		867BAFD116AEC9050033868F /* string */ = {
 		867BAFD116AEC9050033868F /* string */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				B350D1C3174F06ED00033EBB /* stringBuffer_ScriptBinding.h */,
+				B350D1C4174F06ED00033EBB /* stringUnit_ScriptBinding.h */,
 				867BAFD216AEC9050033868F /* findMatch.cc */,
 				867BAFD216AEC9050033868F /* findMatch.cc */,
 				867BAFD316AEC9050033868F /* findMatch.h */,
 				867BAFD316AEC9050033868F /* findMatch.h */,
 				867BAFD416AEC9050033868F /* stringBuffer.cc */,
 				867BAFD416AEC9050033868F /* stringBuffer.cc */,
@@ -3071,7 +3292,6 @@
 				867BB00F16AEC9050033868F /* AudioAsset.cc in Sources */,
 				867BB00F16AEC9050033868F /* AudioAsset.cc in Sources */,
 				867BB01016AEC9050033868F /* audioBuffer.cc in Sources */,
 				867BB01016AEC9050033868F /* audioBuffer.cc in Sources */,
 				867BB01116AEC9050033868F /* audioDataBlock.cc in Sources */,
 				867BB01116AEC9050033868F /* audioDataBlock.cc in Sources */,
-				867BB01216AEC9050033868F /* audioFunctions.cc in Sources */,
 				867BB01316AEC9050033868F /* audioStreamSourceFactory.cc in Sources */,
 				867BB01316AEC9050033868F /* audioStreamSourceFactory.cc in Sources */,
 				867BB01416AEC9050033868F /* wavStreamSource.cc in Sources */,
 				867BB01416AEC9050033868F /* wavStreamSource.cc in Sources */,
 				867BB01516AEC9050033868F /* bitTables.cc in Sources */,
 				867BB01516AEC9050033868F /* bitTables.cc in Sources */,
@@ -3197,7 +3417,6 @@
 				867BB09D16AEC9050033868F /* fileObject.cc in Sources */,
 				867BB09D16AEC9050033868F /* fileObject.cc in Sources */,
 				867BB09E16AEC9050033868F /* fileStream.cc in Sources */,
 				867BB09E16AEC9050033868F /* fileStream.cc in Sources */,
 				867BB09F16AEC9050033868F /* fileStreamObject.cc in Sources */,
 				867BB09F16AEC9050033868F /* fileStreamObject.cc in Sources */,
-				867BB0A016AEC9050033868F /* fileSystemFunctions.cpp in Sources */,
 				867BB0A116AEC9050033868F /* filterStream.cc in Sources */,
 				867BB0A116AEC9050033868F /* filterStream.cc in Sources */,
 				867BB0A216AEC9050033868F /* memStream.cc in Sources */,
 				867BB0A216AEC9050033868F /* memStream.cc in Sources */,
 				867BB0A316AEC9050033868F /* nStream.cc in Sources */,
 				867BB0A316AEC9050033868F /* nStream.cc in Sources */,
@@ -3219,7 +3438,6 @@
 				867BB0B616AEC9050033868F /* mathTypes.cc in Sources */,
 				867BB0B616AEC9050033868F /* mathTypes.cc in Sources */,
 				867BB0B716AEC9050033868F /* mathUtils.cc in Sources */,
 				867BB0B716AEC9050033868F /* mathUtils.cc in Sources */,
 				867BB0B816AEC9050033868F /* mBox.cc in Sources */,
 				867BB0B816AEC9050033868F /* mBox.cc in Sources */,
-				867BB0B916AEC9050033868F /* mConsoleFunctions.cc in Sources */,
 				867BB0BB16AEC9050033868F /* mMath_C.cc in Sources */,
 				867BB0BB16AEC9050033868F /* mMath_C.cc in Sources */,
 				867BB0BC16AEC9050033868F /* mMathAltivec.cc in Sources */,
 				867BB0BC16AEC9050033868F /* mMathAltivec.cc in Sources */,
 				867BB0BD16AEC9050033868F /* mMathAMD.cc in Sources */,
 				867BB0BD16AEC9050033868F /* mMathAMD.cc in Sources */,
@@ -3234,7 +3452,6 @@
 				867BB0C816AEC9050033868F /* mSplinePatch.cc in Sources */,
 				867BB0C816AEC9050033868F /* mSplinePatch.cc in Sources */,
 				867BB0C916AEC9050033868F /* rectClipper.cpp in Sources */,
 				867BB0C916AEC9050033868F /* rectClipper.cpp in Sources */,
 				867BB0CA16AEC9050033868F /* dataChunker.cc in Sources */,
 				867BB0CA16AEC9050033868F /* dataChunker.cc in Sources */,
-				867BB0CB16AEC9050033868F /* frameAllocator.cc in Sources */,
 				867BB0CC16AEC9050033868F /* dispatcher.cc in Sources */,
 				867BB0CC16AEC9050033868F /* dispatcher.cc in Sources */,
 				867BB0CD16AEC9050033868F /* eventManager.cc in Sources */,
 				867BB0CD16AEC9050033868F /* eventManager.cc in Sources */,
 				867BB0CE16AEC9050033868F /* message.cc in Sources */,
 				867BB0CE16AEC9050033868F /* message.cc in Sources */,
@@ -3261,12 +3478,7 @@
 				867BB0E316AEC9050033868F /* telnetConsole.cc in Sources */,
 				867BB0E316AEC9050033868F /* telnetConsole.cc in Sources */,
 				867BB0E416AEC9050033868F /* SimXMLDocument.cpp in Sources */,
 				867BB0E416AEC9050033868F /* SimXMLDocument.cpp in Sources */,
 				867BB0E516AEC9050033868F /* taml.cc in Sources */,
 				867BB0E516AEC9050033868F /* taml.cc in Sources */,
-				867BB0E616AEC9050033868F /* tamlBinaryReader.cc in Sources */,
-				867BB0E716AEC9050033868F /* tamlBinaryWriter.cc in Sources */,
 				867BB0E916AEC9050033868F /* tamlWriteNode.cc in Sources */,
 				867BB0E916AEC9050033868F /* tamlWriteNode.cc in Sources */,
-				867BB0EA16AEC9050033868F /* tamlXmlParser.cc in Sources */,
-				867BB0EB16AEC9050033868F /* tamlXmlReader.cc in Sources */,
-				867BB0EC16AEC9050033868F /* tamlXmlWriter.cc in Sources */,
 				867BB0ED16AEC9050033868F /* tinystr.cpp in Sources */,
 				867BB0ED16AEC9050033868F /* tinystr.cpp in Sources */,
 				867BB0EE16AEC9050033868F /* tinyxml.cpp in Sources */,
 				867BB0EE16AEC9050033868F /* tinyxml.cpp in Sources */,
 				867BB0EF16AEC9050033868F /* tinyxmlerror.cpp in Sources */,
 				867BB0EF16AEC9050033868F /* tinyxmlerror.cpp in Sources */,
@@ -3282,7 +3494,6 @@
 				867BB0FA16AEC9050033868F /* platformFont.cc in Sources */,
 				867BB0FA16AEC9050033868F /* platformFont.cc in Sources */,
 				867BB0FB16AEC9050033868F /* platformMemory.cc in Sources */,
 				867BB0FB16AEC9050033868F /* platformMemory.cc in Sources */,
 				867BB0FC16AEC9050033868F /* platformNetAsync.unix.cc in Sources */,
 				867BB0FC16AEC9050033868F /* platformNetAsync.unix.cc in Sources */,
-				867BB0FD16AEC9050033868F /* platformNetwork.cc in Sources */,
 				867BB0FE16AEC9050033868F /* platformString.cc in Sources */,
 				867BB0FE16AEC9050033868F /* platformString.cc in Sources */,
 				867BB0FF16AEC9050033868F /* platformVideo.cc in Sources */,
 				867BB0FF16AEC9050033868F /* platformVideo.cc in Sources */,
 				867BB10016AEC9050033868F /* Tickable.cc in Sources */,
 				867BB10016AEC9050033868F /* Tickable.cc in Sources */,
@@ -3432,6 +3643,21 @@
 				2AE2938B16EF4C480015E200 /* WaveComposite.cc in Sources */,
 				2AE2938B16EF4C480015E200 /* WaveComposite.cc in Sources */,
 				2AA3655F16F3553E00E7A900 /* ImageFrameProvider.cc in Sources */,
 				2AA3655F16F3553E00E7A900 /* ImageFrameProvider.cc in Sources */,
 				2AA3656016F3553E00E7A900 /* ImageFrameProviderCore.cc in Sources */,
 				2AA3656016F3553E00E7A900 /* ImageFrameProviderCore.cc in Sources */,
+				2AD42156170434C2005BB8AD /* tamlBinaryReader.cc in Sources */,
+				2AD42157170434C2005BB8AD /* tamlBinaryWriter.cc in Sources */,
+				2AD4215F170434E1005BB8AD /* tamlXmlParser.cc in Sources */,
+				2AD42160170434E1005BB8AD /* tamlXmlReader.cc in Sources */,
+				2AD42161170434E1005BB8AD /* tamlXmlWriter.cc in Sources */,
+				2AD42166170434F0005BB8AD /* tamlJSONReader.cc in Sources */,
+				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;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
@@ -3533,6 +3759,7 @@
 					../../lib/lpng,
 					../../lib/lpng,
 					../../lib/ljpeg,
 					../../lib/ljpeg,
 					../../lib/lungif,
 					../../lib/lungif,
+					../../source/persistence/rapidjson/include,
 					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
 					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
 				);
 				);
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
@@ -3556,6 +3783,7 @@
 					../../lib/lpng,
 					../../lib/lpng,
 					../../lib/ljpeg,
 					../../lib/ljpeg,
 					../../lib/lungif,
 					../../lib/lungif,
+					../../source/persistence/rapidjson/include,
 					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
 					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
 				);
 				);
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
 				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,34 +20,44 @@
 // IN THE SOFTWARE.
 // 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] );
     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();
     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] );
     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.
     // Fetch a return buffer.
     S32 bufferSize = 4096;
     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.
     // Fetch validated frames flag.
     const bool validatedFrames = argc >= 3 ? dAtob( argv[2] ) : false;
     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] ) );
     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();
     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] ) );
     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();
     return object->getAnimationCycle();
-}
+}
+
+ConsoleMethodGroupEndWithDocs(AnimationAsset)

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,24 +20,32 @@
 // IN THE SOFTWARE.
 // 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] );
     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();
     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.
     // Fetch Texture Filter Mode.
     const ImageAsset::TextureFilterMode filterMode = ImageAsset::getFilterModeEnum( argv[2] );
     const ImageAsset::TextureFilterMode filterMode = ImageAsset::getFilterModeEnum( argv[2] );
@@ -57,192 +65,240 @@ 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() );
     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]) );
     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();
     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]) );
     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();
     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]) );
     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();
     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]) );
     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();
     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]) );
     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();
     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]) );
     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();
     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]) );
     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();
     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]) );
     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();
     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]) );
     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();
     return object->getCellWidth();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
-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]) );
     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();
     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();
     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();
     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.
     // Create Returnable Buffer.
     char* pBuffer = Con::getReturnBuffer(32);
     char* pBuffer = Con::getReturnBuffer(32);
@@ -256,25 +312,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() );
     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(); 
     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.
     // Fetch Frame.
     const S32 frame = dAtoi(argv[2]);
     const S32 frame = dAtoi(argv[2]);
@@ -303,22 +365,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();
     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.
     // Fetch offsets.
     const S32 cellOffsetX = dAtoi( argv[2] );
     const S32 cellOffsetX = dAtoi( argv[2] );
@@ -333,14 +399,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.
     // Fetch cell index.
     const S32 cellIndex = dAtoi( argv[2] );
     const S32 cellIndex = dAtoi( argv[2] );
@@ -359,9 +427,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.
     // Fetch cell index.
     const S32 cellIndex = dAtoi( argv[2] );
     const S32 cellIndex = dAtoi( argv[2] );
@@ -371,14 +441,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.
     // Fetch cell index.
     const S32 cellIndex = dAtoi( argv[2] );
     const S32 cellIndex = dAtoi( argv[2] );
@@ -396,10 +468,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();
     return object->getExplicitCellCount();
 }
 }
 
 
-
+ConsoleMethodGroupEndWithDocs(ImageAsset)

+ 826 - 682
engine/source/2d/assets/ParticleAssetEmitter_ScriptBinding.h

@@ -1,682 +1,826 @@
-//-----------------------------------------------------------------------------
-// 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.
-//-----------------------------------------------------------------------------
-
-//-----------------------------------------------------------------------------
-/// 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." )
-{
-    // Fetch the owner.
-    ParticleAsset* pParticleAsset = object->getOwner();
-
-    return pParticleAsset == NULL ? StringTable->EmptyString : pParticleAsset->getIdString();
-}
-
-//-----------------------------------------------------------------------------
-
-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." )
-{
-    object->setEmitterName( argv[2] );
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getEmitterName, const char*, 2, 2,  "() Gets the name of the emitter.\n"
-                                                                        "@return The name of the emitter." )
-{
-    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." )
-{
-    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." )
-{
-    return ParticleAssetEmitter::getEmitterTypeDescription( object->getEmitterType() );
-}
-
-//-----------------------------------------------------------------------------
-
-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." )
-{
-    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." )
-{
-    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." )
-{
-    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." )
-{
-    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." )
-{
-    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." )
-{
-    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." )
-{
-    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." )
-{
-    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." )
-{
-    object->setAlignedAngleOffset( dAtof(argv[2]) );
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getAlignedAngleOffset, F32, 2, 2,  "() Gets the aligned angle offset.\n"
-                                                                        "@return The aligned angle offset." )
-{
-    return object->getAlignedAngleOffset();
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, setRandomAngleOffset, void, 3, 3, "(randomAngle) - Set Random-Orientation Angle-Offset.")
-{
-    object->setRandomAngleOffset( dAtof(argv[2]) );
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getRandomAngleOffset, F32, 2, 2, "Get Random-Orientation Angle-Offset.")
-{
-    return object->getRandomAngleOffset();
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, setRandomArc, void, 3, 3, "(randomArc) - Set Random-Orientation Arc.")
-{
-    object->setRandomArc( dAtof(argv[2]) );
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getRandomArc, F32, 2, 2, "Get Random-Orientation Arc.")
-{
-    return object->getRandomArc();
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, setFixedAngleOffset, void, 3, 3, "(randomAngle) - Set Fixed-Orientation Angle-Offset.")
-{
-    object->setFixedAngleOffset( dAtof(argv[2]) );
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getFixedAngleOffset, F32, 2, 2, "Get Fixed-Orientation Angle-Offset.")
-{
-    return object->getFixedAngleOffset();
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, setPivotPoint, void, 3, 4, "(pivotX / pivotY) - Set the Pivot-Point.")
-{
-    // Grab the element count.
-    U32 elementCount =Utility::mGetStringElementCount(argv[2]);
-
-    // ("pivotX pivotY")
-    if ( (elementCount == 2) && (argc < 4) )
-    {
-        object->setPivotPoint( Vector2( argv[2] ) );
-        return;
-    }
-
-    // (pivotX, pivotY)
-    if ( (elementCount == 1) && (argc > 3) )
-    {
-        object->setPivotPoint( Vector2( dAtof(argv[2]), dAtof(argv[3]) ) );
-        return;
-    }
-
-    // Warn.
-    Con::warnf( "ParticleAssetEmitter::setPivotPoint() - Invalid number of parameters!" );
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getPivotPoint, const char*, 2, 2, "Get Pivot-Point.")
-{
-    return object->getPivotPoint().scriptThis();
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, setLinkEmissionRotation, void, 3, 3, "(linkEmissionRotation) - Set Link-Emission-Rotation Flag.")
-{
-    object->setLinkEmissionRotation( dAtob(argv[2]) );
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getLinkEmissionRotation, bool, 2, 2, "Get Link-Emission-Rotation Flag.")
-{
-    return object->getLinkEmissionRotation();
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, setIntenseParticles, void, 3, 3, "(intenseParticles) - Set Intense-Particles Flag.")
-{
-    object->setIntenseParticles( dAtob(argv[2]) );
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getIntenseParticles, bool, 2, 2, "Get Intense-Particles Flag.")
-{
-    return object->getIntenseParticles();
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, setSingleParticle, void, 3, 3, "(singleParticle) - Set Single-Particle Flag.")
-{
-    // Set Single Particle.
-    object->setSingleParticle( dAtob(argv[2]) );
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getSingleParticle, bool, 2, 2, "Get Single-Particle Flag.")
-{
-    return object->getSingleParticle();
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, setAttachPositionToEmitter, void, 3, 3, "(attachPositionToEmitter) - Set Attach-Position-To-Emitter Flag.")
-{
-    object->setAttachPositionToEmitter( dAtob(argv[2]) );
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getAttachPositionToEmitter, bool, 2, 2, "Get Attach-Position-To-Emitter Flag.")
-{
-    return object->getAttachPositionToEmitter();
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, setAttachRotationToEmitter, void, 3, 3, "(attachRotationToEmitter) - Set Attach-Rotation-To-Emitter Flag.")
-{
-    object->setAttachRotationToEmitter( dAtob(argv[2]) );
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getAttachRotationToEmitter, bool, 2, 2, "Get Attach-Rotation-To-Emitter Flag.")
-{
-    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." )
-{
-    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." )
-{
-    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." )
-{
-    // Fetch the frame.
-    const U32 frame = argc >= 4 ? dAtoi(argv[3]) : 0;
-
-    return object->setImage( argv[2], frame );
-}
-
-//------------------------------------------------------------------------------
-
-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." )
-{
-    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." )
-{
-    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." )
-{
-    return object->getImageFrame();
-}
-
-//------------------------------------------------------------------------------
-
-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." )
-{
-    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." )
-{
-    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." )
-{
-    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." )
-{
-    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.")
-{
-    // Fetch source blend factor.
-    const  GLenum blendFactor = SceneObject::getSrcBlendFactorEnum(argv[2]);
-
-    object->setSrcBlendFactor( blendFactor );
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getSrcBlendFactor, const char*, 2, 2,   "() - Gets the source render blend factor.\n"
-                                                                            "@return (srcBlend) The source render blend factor.")
-{
-   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.")
-{
-    // Fetch destination blend factor.
-    const GLenum blendFactor = SceneObject::getDstBlendFactorEnum(argv[2]);
-
-    object->setDstBlendFactor( blendFactor );
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getDstBlendFactor, const char*, 2, 2,   "() - Gets the destination render blend factor.\n"
-                                                                            "@return (dstBlend) The destination render blend factor.")
-{
-   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." )
-
-{
-    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.")
-{
-    return object->getAlphaTest();
-}
-
-
-//-----------------------------------------------------------------------------
-/// Particle emitter fields.
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAssetEmitter, getSelectableFieldCount, S32, 2, 2, "() Gets the number of available selectable fields.\n"
-                                                                        "@return The number of available selectable fields." )
-{
-    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." )
-{
-    // Fetch the field hash.
-    const ParticleAssetFieldCollection::typeFieldHash& fieldHash = object->getParticleFields().getFields();
-
-    // Fetch the index.
-    S32 fieldIndex = dAtoi( argv[2] );
-
-    // Is the field index valid?
-    if ( fieldIndex >= 0 && fieldIndex < (S32)fieldHash.size() )
-    {
-        // Yes, but because the fields are in a hash-table, we'll have to iterate and get O(index).
-        for( ParticleAssetFieldCollection::typeFieldHash::const_iterator fieldItr = fieldHash.begin(); fieldItr != fieldHash.end(); ++fieldItr, --fieldIndex )
-        {
-            // Skip if this is not the field index we're looking for?
-            if ( fieldIndex != 0 )
-                continue;
-
-            // Found it so return the field name.
-            return fieldItr->value->getFieldName();
-        }
-    }
-
-
-    // Warn.
-    Con::warnf( "ParticleAssetEmitter::getSelectableFieldName() - Index '%d' is out of range.", fieldIndex );
-
-    return StringTable->EmptyString;
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    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.")
-{
-    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.")
-{
-    // Get the selected field.
-    const ParticleAssetField* pParticleAssetField = object->getParticleFields().getSelectedField();
-
-    return pParticleAssetField == NULL ? StringTable->EmptyString : pParticleAssetField->getFieldName();
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    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.")
-{
-    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.")
-{
-   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.")
-{
-   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.
-   return object->getParticleFields().setDataKey( dAtoi(argv[2]), dAtof(argv[3]) );
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-   // Get Data Key Count.
-   return object->getParticleFields().getDataKeyCount();
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-   // Fetch the key index.
-   const S32 keyIndex = dAtoi(argv[2]);
-
-   // Fetch the data-key.
-   const ParticleAssetField::DataKey dataKey = object->getParticleFields().getDataKey( keyIndex );
-
-   // Finish if the data-key is bad.
-   if ( dataKey == ParticleAssetField::BadDataKey )
-       return StringTable->EmptyString;
-
-   // Create Returnable Buffer.
-   char* pBuffer = Con::getReturnBuffer(32);
-
-   // Format Buffer.
-   dSprintf(pBuffer, 32, "%f %f", dataKey.mTime, dataKey.mValue );
-
-   // Return buffer.
-   return pBuffer;
-}
-
-//-----------------------------------------------------------------------------
-
-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." )
-{
-   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." )
-{
-   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." )
-{
-   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." )
-{
-   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.")
-{
-   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.")
-{
-   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" )
-{
-   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.")
-{
-   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." )
-{
-   return object->getParticleFields().getValueScale();
-}
+//-----------------------------------------------------------------------------
+// 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(ParticleAssetEmitter, SimObject)
+
+//-----------------------------------------------------------------------------
+/// Particle emitter accessors.
+//-----------------------------------------------------------------------------
+
+/*! 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();
+
+    return pParticleAsset == NULL ? StringTable->EmptyString : pParticleAsset->getIdString();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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] );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the name of the emitter.
+    @return The name of the emitter.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getEmitterName, ConsoleString, 2, 2, ())
+{
+    return object->getEmitterName();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the type of the emitter.
+    @return The type of the emitter.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getEmitterType, ConsoleString, 2, 2, ())
+{
+    return ParticleAssetEmitter::getEmitterTypeDescription( object->getEmitterType() );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the emitter fixed-force angle for particles.
+    @return The fixed-force angle for particles.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getFixedForceAngle, ConsoleFloat, 2, 2, ())
+{
+    return object->getFixedForceAngle();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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() );
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! Gets the aligned angle offset.
+    @return The aligned angle offset.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getAlignedAngleOffset, ConsoleFloat, 2, 2, ())
+{
+    return object->getAlignedAngleOffset();
+}
+
+//------------------------------------------------------------------------------
+
+/*! Set Random-Orientation Angle-Offset.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setRandomAngleOffset, ConsoleVoid, 3, 3, (randomAngle))
+{
+    object->setRandomAngleOffset( dAtof(argv[2]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! Get Random-Orientation Angle-Offset.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getRandomAngleOffset, ConsoleFloat, 2, 2, ())
+{
+    return object->getRandomAngleOffset();
+}
+
+//------------------------------------------------------------------------------
+
+/*! Set Random-Orientation Arc.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setRandomArc, ConsoleVoid, 3, 3, (randomArc))
+{
+    object->setRandomArc( dAtof(argv[2]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! Get Random-Orientation Arc.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getRandomArc, ConsoleFloat, 2, 2, ())
+{
+    return object->getRandomArc();
+}
+
+//------------------------------------------------------------------------------
+
+/*! Set Fixed-Orientation Angle-Offset.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setFixedAngleOffset, ConsoleVoid, 3, 3, (randomAngle))
+{
+    object->setFixedAngleOffset( dAtof(argv[2]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! Get Fixed-Orientation Angle-Offset.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getFixedAngleOffset, ConsoleFloat, 2, 2, ())
+{
+    return object->getFixedAngleOffset();
+}
+
+//------------------------------------------------------------------------------
+
+/*! Set the Pivot-Point.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setPivotPoint, ConsoleVoid, 3, 4, (pivotX / pivotY))
+{
+    // Grab the element count.
+    U32 elementCount =Utility::mGetStringElementCount(argv[2]);
+
+    // ("pivotX pivotY")
+    if ( (elementCount == 2) && (argc < 4) )
+    {
+        object->setPivotPoint( Vector2( argv[2] ) );
+        return;
+    }
+
+    // (pivotX, pivotY)
+    if ( (elementCount == 1) && (argc > 3) )
+    {
+        object->setPivotPoint( Vector2( dAtof(argv[2]), dAtof(argv[3]) ) );
+        return;
+    }
+
+    // Warn.
+    Con::warnf( "ParticleAssetEmitter::setPivotPoint() - Invalid number of parameters!" );
+}
+
+//------------------------------------------------------------------------------
+
+/*! Get Pivot-Point.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getPivotPoint, ConsoleString, 2, 2, ())
+{
+    return object->getPivotPoint().scriptThis();
+}
+
+//------------------------------------------------------------------------------
+
+/*! Set Link-Emission-Rotation Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setLinkEmissionRotation, ConsoleVoid, 3, 3, (linkEmissionRotation))
+{
+    object->setLinkEmissionRotation( dAtob(argv[2]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! Get Link-Emission-Rotation Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getLinkEmissionRotation, ConsoleBool, 2, 2, ())
+{
+    return object->getLinkEmissionRotation();
+}
+
+//------------------------------------------------------------------------------
+
+/*! Set Intense-Particles Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setIntenseParticles, ConsoleVoid, 3, 3, (intenseParticles))
+{
+    object->setIntenseParticles( dAtob(argv[2]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! Get Intense-Particles Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getIntenseParticles, ConsoleBool, 2, 2, ())
+{
+    return object->getIntenseParticles();
+}
+
+//------------------------------------------------------------------------------
+
+/*! Set Single-Particle Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setSingleParticle, ConsoleVoid, 3, 3, (singleParticle))
+{
+    // Set Single Particle.
+    object->setSingleParticle( dAtob(argv[2]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! Get Single-Particle Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getSingleParticle, ConsoleBool, 2, 2, ())
+{
+    return object->getSingleParticle();
+}
+
+//------------------------------------------------------------------------------
+
+/*! Set Attach-Position-To-Emitter Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setAttachPositionToEmitter, ConsoleVoid, 3, 3, (attachPositionToEmitter))
+{
+    object->setAttachPositionToEmitter( dAtob(argv[2]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! Get Attach-Position-To-Emitter Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getAttachPositionToEmitter, ConsoleBool, 2, 2, ())
+{
+    return object->getAttachPositionToEmitter();
+}
+
+//------------------------------------------------------------------------------
+
+/*! Set Attach-Rotation-To-Emitter Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, setAttachRotationToEmitter, ConsoleVoid, 3, 3, (attachRotationToEmitter))
+{
+    object->setAttachRotationToEmitter( dAtob(argv[2]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! Get Attach-Rotation-To-Emitter Flag.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getAttachRotationToEmitter, ConsoleBool, 2, 2, ())
+{
+    return object->getAttachRotationToEmitter();
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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;
+
+    return object->setImage( argv[2], frame );
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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] );
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//------------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]);
+
+    object->setSrcBlendFactor( blendFactor );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the source render blend factor.
+    @return (srcBlend) The source render blend factor.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getSrcBlendFactor, ConsoleString, 2, 2, ())
+{
+   return SceneObject::getSrcBlendFactorDescription(object->getSrcBlendFactor());
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]);
+
+    object->setDstBlendFactor( blendFactor );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the destination render blend factor.
+    @return (dstBlend) The destination render blend factor.
+*/
+ConsoleMethodWithDocs(ParticleAssetEmitter, getDstBlendFactor, ConsoleString, 2, 2, ())
+{
+   return SceneObject::getDstBlendFactorDescription(object->getDstBlendFactor());
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]));
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+
+//-----------------------------------------------------------------------------
+/// Particle emitter 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+
+    // Fetch the index.
+    S32 fieldIndex = dAtoi( argv[2] );
+
+    // Is the field index valid?
+    if ( fieldIndex >= 0 && fieldIndex < (S32)fieldHash.size() )
+    {
+        // Yes, but because the fields are in a hash-table, we'll have to iterate and get O(index).
+        for( ParticleAssetFieldCollection::typeFieldHash::const_iterator fieldItr = fieldHash.begin(); fieldItr != fieldHash.end(); ++fieldItr, --fieldIndex )
+        {
+            // Skip if this is not the field index we're looking for?
+            if ( fieldIndex != 0 )
+                continue;
+
+            // Found it so return the field name.
+            return fieldItr->value->getFieldName();
+        }
+    }
+
+
+    // Warn.
+    Con::warnf( "ParticleAssetEmitter::getSelectableFieldName() - Index '%d' is out of range.", fieldIndex );
+
+    return StringTable->EmptyString;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+
+    return pParticleAssetField == NULL ? StringTable->EmptyString : pParticleAssetField->getFieldName();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]);
+
+   // Fetch the data-key.
+   const ParticleAssetField::DataKey dataKey = object->getParticleFields().getDataKey( keyIndex );
+
+   // Finish if the data-key is bad.
+   if ( dataKey == ParticleAssetField::BadDataKey )
+       return StringTable->EmptyString;
+
+   // Create Returnable Buffer.
+   char* pBuffer = Con::getReturnBuffer(32);
+
+   // Format Buffer.
+   dSprintf(pBuffer, 32, "%f %f", dataKey.mTime, dataKey.mValue );
+
+   // Return buffer.
+   return pBuffer;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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)

+ 471 - 401
engine/source/2d/assets/ParticleAsset_ScriptBinding.h

@@ -1,401 +1,471 @@
-//-----------------------------------------------------------------------------
-// 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.
-//-----------------------------------------------------------------------------
-
-//-----------------------------------------------------------------------------
-/// 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.")
-{
-    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." )
-{
-    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." )
-{
-    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." )
-{
-    return object->getLifetime();
-}
-
-//-----------------------------------------------------------------------------
-/// Particle asset fields.
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAsset, getSelectableFieldCount, S32, 2, 2,    "() Gets the number of available selectable fields.\n"
-                                                                    "@return The number of available selectable fields." )
-{
-    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." )
-{
-    // Fetch the field hash.
-    const ParticleAssetFieldCollection::typeFieldHash& fieldHash = object->getParticleFields().getFields();
-
-    // Fetch the index.
-    S32 fieldIndex = dAtoi( argv[2] );
-
-    // Is the field index valid?
-    if ( fieldIndex >= 0 && fieldIndex < (S32)fieldHash.size() )
-    {
-        // Yes, but because the fields are in a hash-table, we'll have to iterate and get O(index).
-        for( ParticleAssetFieldCollection::typeFieldHash::const_iterator fieldItr = fieldHash.begin(); fieldItr != fieldHash.end(); ++fieldItr, --fieldIndex )
-        {
-            // Skip if this is not the field index we're looking for?
-            if ( fieldIndex != 0 )
-                continue;
-
-            // Found it so return the field name.
-            return fieldItr->value->getFieldName();
-        }
-    }
-
-
-    // Warn.
-    Con::warnf( "ParticleAsset::getSelectableFieldName() - Index '%d' is out of range.", fieldIndex );
-
-    return StringTable->EmptyString;
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    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.")
-{
-    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.")
-{
-    // Get the selected field.
-    const ParticleAssetField* pParticleAssetField = object->getParticleFields().getSelectedField();
-
-    return pParticleAssetField == NULL ? StringTable->EmptyString : pParticleAssetField->getFieldName();
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    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.")
-{
-    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.")
-{
-   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.")
-{
-   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.
-   return object->getParticleFields().setDataKey( dAtoi(argv[2]), dAtof(argv[3]) );
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-   // Get Data Key Count.
-   return object->getParticleFields().getDataKeyCount();
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-   // Fetch the key index.
-   const S32 keyIndex = dAtoi(argv[2]);
-
-   // Fetch the data-key.
-   const ParticleAssetField::DataKey dataKey = object->getParticleFields().getDataKey( keyIndex );
-
-   // Finish if the data-key is bad.
-   if ( dataKey == ParticleAssetField::BadDataKey )
-       return StringTable->EmptyString;
-
-   // Create Returnable Buffer.
-   char* pBuffer = Con::getReturnBuffer(32);
-
-   // Format Buffer.
-   dSprintf(pBuffer, 32, "%f %f", dataKey.mTime, dataKey.mValue );
-
-   // Return buffer.
-   return pBuffer;
-}
-
-//-----------------------------------------------------------------------------
-
-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." )
-{
-   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." )
-{
-   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." )
-{
-   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." )
-{
-   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.")
-{
-   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.")
-{
-   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" )
-{
-   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.")
-{
-   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." )
-{
-   return object->getParticleFields().getValueScale();
-}
-
-//-----------------------------------------------------------------------------
-/// 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.")
-{
-    // Find the emitter.
-    ParticleAssetEmitter* pEmitter = object->createEmitter();
-
-    return pEmitter == NULL ? StringTable->EmptyString : pEmitter->getIdString();
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    // Find the emitter.
-    ParticleAssetEmitter* pEmitter = Sim::findObject<ParticleAssetEmitter>( argv[2] );
-
-    // Did we find the emitter?
-    if ( pEmitter == NULL )
-    {
-        // No, so warn.
-        Con::warnf( "ParticleAsset::addEmitter() - Could not find the emitter '%s'.", argv[2] );
-        return false;
-    }
-
-    return object->addEmitter(pEmitter);
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAsset, removeEmitter, bool, 3, 4, "(emitterId, [bool deleteEmitter]) - Removes an emitter.\n"
-                                                        "@param emitterId The emitter to remove.\n"
-                                                        "@return No return value.")
-{
-    // Find the emitter.
-    ParticleAssetEmitter* pEmitter = Sim::findObject<ParticleAssetEmitter>( argv[2] );
-
-    // Did we find the emitter?
-    if ( pEmitter == NULL )
-    {
-        // No, so warn.
-        Con::warnf( "ParticleAsset::removeEmitter() - Could not find the emitter '%s'.", argv[2] );
-        return false;
-    }
-
-    bool deleteEmitter = true;
-    if (argc > 3)
-        deleteEmitter = dAtob(argv[3]);
-
-    // Remove the emitter.
-    object->removeEmitter( pEmitter, deleteEmitter );
-
-    return true;
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAsset, clearEmitters, void, 2, 2, "() Clear all the emitters.\n"
-                                                        "@return No return Value.")
-{
-   // Clear Emitters.
-   object->clearEmitters();
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ParticleAsset, getEmitterCount, S32, 2, 2,    "() Gets the emitter count.\n"
-                                                            "@return Returns the number of emitters as an integer.")
-{
-   // Get Emitter Count.
-   return object->getEmitterCount();
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-   // Get the emitter.
-   ParticleAssetEmitter* pEmitter = object->getEmitter( dAtoi(argv[2]) );
-
-   return pEmitter == NULL ? 0 : pEmitter->getId();
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-   // Find the emitter.
-   ParticleAssetEmitter* pEmitter = object->findEmitter( argv[2] );
-
-   return pEmitter == NULL ? 0 : pEmitter->getId();
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-   // Move Emitter Object.
-   object->moveEmitter( dAtoi(argv[2]), dAtoi(argv[3]) );
-}
+//-----------------------------------------------------------------------------
+// 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(ParticleAsset, AssetBase)
+
+//-----------------------------------------------------------------------------
+/// Particle asset accessors.
+//-----------------------------------------------------------------------------
+
+/*! 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] ) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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() );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the lifetime of the particle effect.
+    @return The lifetime of the particle effect.
+*/
+ConsoleMethodWithDocs(ParticleAsset, getLifetime, ConsoleFloat, 2, 2, ())
+{
+    return object->getLifetime();
+}
+
+//-----------------------------------------------------------------------------
+/// Particle asset 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+
+    // Fetch the index.
+    S32 fieldIndex = dAtoi( argv[2] );
+
+    // Is the field index valid?
+    if ( fieldIndex >= 0 && fieldIndex < (S32)fieldHash.size() )
+    {
+        // Yes, but because the fields are in a hash-table, we'll have to iterate and get O(index).
+        for( ParticleAssetFieldCollection::typeFieldHash::const_iterator fieldItr = fieldHash.begin(); fieldItr != fieldHash.end(); ++fieldItr, --fieldIndex )
+        {
+            // Skip if this is not the field index we're looking for?
+            if ( fieldIndex != 0 )
+                continue;
+
+            // Found it so return the field name.
+            return fieldItr->value->getFieldName();
+        }
+    }
+
+
+    // Warn.
+    Con::warnf( "ParticleAsset::getSelectableFieldName() - Index '%d' is out of range.", fieldIndex );
+
+    return StringTable->EmptyString;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+
+    return pParticleAssetField == NULL ? StringTable->EmptyString : pParticleAssetField->getFieldName();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]);
+
+   // Fetch the data-key.
+   const ParticleAssetField::DataKey dataKey = object->getParticleFields().getDataKey( keyIndex );
+
+   // Finish if the data-key is bad.
+   if ( dataKey == ParticleAssetField::BadDataKey )
+       return StringTable->EmptyString;
+
+   // Create Returnable Buffer.
+   char* pBuffer = Con::getReturnBuffer(32);
+
+   // Format Buffer.
+   dSprintf(pBuffer, 32, "%f %f", dataKey.mTime, dataKey.mValue );
+
+   // Return buffer.
+   return pBuffer;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+/// Emitter asset methods.
+//-----------------------------------------------------------------------------
+
+/*! 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();
+
+    return pEmitter == NULL ? StringTable->EmptyString : pEmitter->getIdString();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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] );
+
+    // Did we find the emitter?
+    if ( pEmitter == NULL )
+    {
+        // No, so warn.
+        Con::warnf( "ParticleAsset::addEmitter() - Could not find the emitter '%s'.", argv[2] );
+        return false;
+    }
+
+    return object->addEmitter(pEmitter);
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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] );
+
+    // Did we find the emitter?
+    if ( pEmitter == NULL )
+    {
+        // No, so warn.
+        Con::warnf( "ParticleAsset::removeEmitter() - Could not find the emitter '%s'.", argv[2] );
+        return false;
+    }
+
+    bool deleteEmitter = true;
+    if (argc > 3)
+        deleteEmitter = dAtob(argv[3]);
+
+    // Remove the emitter.
+    object->removeEmitter( pEmitter, deleteEmitter );
+
+    return true;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Clear all the emitters.
+    @return No return Value.
+*/
+ConsoleMethodWithDocs(ParticleAsset, clearEmitters, ConsoleVoid, 2, 2, ())
+{
+   // Clear Emitters.
+   object->clearEmitters();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+
+   return pEmitter == NULL ? 0 : pEmitter->getId();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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] );
+
+   return pEmitter == NULL ? 0 : pEmitter->getId();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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)

+ 66 - 59
engine/source/2d/controllers/AmbientForceController_ScriptBinding.h

@@ -1,59 +1,66 @@
-//-----------------------------------------------------------------------------
-// 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.
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    // The new force.
-    b2Vec2 force;
-
-    // Elements in the first argument.
-    const U32 elementCount = Utility::mGetStringElementCount(argv[2]);
-
-    // ("x y")
-    if ((elementCount == 2) && (argc == 3))
-        force = Utility::mGetStringElementVector(argv[2]);
-
-    // (x, y)
-    else if ((elementCount == 1) && (argc == 4))
-        force.Set(dAtof(argv[2]), dAtof(argv[3]));
-
-    // Invalid
-    else
-    {
-        Con::warnf("AmbientForceController::setForce() - Invalid number of parameters!");
-        return;
-    }
-
-    object->setForce( force );
-} 
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(AmbientForceController, getForce, const char*, 2, 2, "() Gets the ambient force being used.\n"
-                                                                    "@return The ambient force being used.")
-{
-    return object->getForce().scriptThis();
-}
-
+//-----------------------------------------------------------------------------
+// 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(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;
+
+    // Elements in the first argument.
+    const U32 elementCount = Utility::mGetStringElementCount(argv[2]);
+
+    // ("x y")
+    if ((elementCount == 2) && (argc == 3))
+        force = Utility::mGetStringElementVector(argv[2]);
+
+    // (x, y)
+    else if ((elementCount == 1) && (argc == 4))
+        force.Set(dAtof(argv[2]), dAtof(argv[3]));
+
+    // Invalid
+    else
+    {
+        Con::warnf("AmbientForceController::setForce() - Invalid number of parameters!");
+        return;
+    }
+
+    object->setForce( force );
+} 
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the ambient force being used.
+    @return The ambient force being used.
+*/
+ConsoleMethodWithDocs(AmbientForceController, getForce, ConsoleString, 2, 2, ())
+{
+    return object->getForce().scriptThis();
+}
+
+ConsoleMethodGroupEndWithDocs(AmbientForceController)

+ 25 - 23
engine/source/2d/controllers/BuoyancyController_ScriptBinding.h

@@ -1,23 +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(BuoyancyController, PickingSceneController)
+
+ConsoleMethodGroupEndWithDocs(BuoyancyController)

+ 200 - 169
engine/source/2d/controllers/PointForceController_ScriptBinding.h

@@ -1,169 +1,200 @@
-//-----------------------------------------------------------------------------
-// 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.
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    // The new position.
-    b2Vec2 position;
-
-    // Elements in the first argument.
-    U32 elementCount = Utility::mGetStringElementCount(argv[2]);
-
-    // ("x y")
-    if ((elementCount == 2) && (argc == 3))
-        position = Utility::mGetStringElementVector(argv[2]);
-
-    // (x, y)
-    else if ((elementCount == 1) && (argc == 4))
-        position.Set(dAtof(argv[2]), dAtof(argv[3]));
-
-    // Invalid
-    else
-    {
-        Con::warnf("PointForceController::setPosition() - Invalid number of parameters!");
-        return;
-    }
-
-    // Set Position.
-    object->setPosition(position);
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    // Get position.
-    return object->getPosition().scriptThis();
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    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.")
-{
-    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.")
-{
-    object->setForce( dAtof(argv[2]) );
-} 
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(PointForceController, getForce, F32, 2, 2,        "() Gets the point force being used.\n"
-                                                                "@return The point force being used.")
-{
-    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.")
-{
-    object->setLinearDrag( dAtof(argv[2]) );
-} 
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(PointForceController, getLinearDrag, F32, 2, 2,   "() Gets the linear drag coefficient.\n"
-                                                                "@return The linear drag coefficient.")
-{
-    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.")
-{
-    object->setAngularDrag( dAtof(argv[2]) );
-} 
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(PointForceController, getAngularDrag, F32, 2, 2,  "() Gets the angular drag coefficient.\n"
-                                                                "@return The angular drag coefficient.")
-{
-    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.")
-{
-    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.")
-{
-    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.")
-{
-    // Find the scene object.
-    SceneObject* pSceneObject = Sim::findObject<SceneObject>( argv[2] );
-
-    object->setTrackedObject( pSceneObject );
-} 
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    // Fetch the scene object.
-    SceneObject* pSceneObject = object->getTrackedObject();
-
-    return pSceneObject == NULL ? NULL : pSceneObject->getIdString();
-} 
-
+//-----------------------------------------------------------------------------
+// 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(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;
+
+    // Elements in the first argument.
+    U32 elementCount = Utility::mGetStringElementCount(argv[2]);
+
+    // ("x y")
+    if ((elementCount == 2) && (argc == 3))
+        position = Utility::mGetStringElementVector(argv[2]);
+
+    // (x, y)
+    else if ((elementCount == 1) && (argc == 4))
+        position.Set(dAtof(argv[2]), dAtof(argv[3]));
+
+    // Invalid
+    else
+    {
+        Con::warnf("PointForceController::setPosition() - Invalid number of parameters!");
+        return;
+    }
+
+    // Set Position.
+    object->setPosition(position);
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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, PointForceController, ConsoleString, 2, 2, ())
+{
+    // Get position.
+    return object->getPosition().scriptThis();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+} 
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+} 
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the point force being used.
+    @return The point force being used.
+*/
+ConsoleMethodWithDocs(PointForceController, getForce, ConsoleFloat, 2, 2, ())
+{
+    return object->getForce();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+} 
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the linear drag coefficient.
+    @return The linear drag coefficient.
+*/
+ConsoleMethodWithDocs(PointForceController, getLinearDrag, ConsoleFloat, 2, 2, ())
+{
+    return object->getLinearDrag();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+} 
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the angular drag coefficient.
+    @return The angular drag coefficient.
+*/
+ConsoleMethodWithDocs(PointForceController, getAngularDrag, ConsoleFloat, 2, 2, ())
+{
+    return object->getAngularDrag();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+} 
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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] );
+
+    object->setTrackedObject( pSceneObject );
+} 
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+
+    return pSceneObject == NULL ? NULL : pSceneObject->getIdString();
+} 
+
+ConsoleMethodGroupEndWithDocs(PointForceController)

+ 199 - 187
engine/source/2d/controllers/core/PickingSceneController_ScriptBinding.h

@@ -1,187 +1,199 @@
-//-----------------------------------------------------------------------------
-// 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.
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    // The mask.
-    U32 mask = 0;
-
-    // Grab the element count of the first parameter.
-    const U32 elementCount = Utility::mGetStringElementCount(argv[2]);
-
-    // Make sure we get at least one number.
-    if (elementCount < 1)
-    {
-        object->setControlGroupMask(MASK_ALL);
-        return;
-    }
-
-    // Space separated list.
-    if (argc == 3)
-    {
-        // Convert the string to a mask.
-        for (U32 i = 0; i < elementCount; i++)
-        {
-            S32 bit = dAtoi(Utility::mGetStringElement(argv[2], i));
-         
-            // Make sure the group is valid.
-            if ((bit < 0) || (bit >= MASK_BITCOUNT))
-            {
-            Con::warnf("PickingSceneController::setControlGroups() - Invalid group specified (%d); skipped!", bit);
-            continue;
-            }
-         
-            mask |= (1 << bit);
-        }
-    }
-
-    // Comma separated list.
-    else
-    {
-        // Convert the list to a mask.
-        for (U32 i = 2; i < (U32)argc; i++)
-        {
-            S32 bit = dAtoi(argv[i]);
-         
-            // Make sure the group is valid.
-            if ((bit < 0) || (bit >= MASK_BITCOUNT))
-            {
-            Con::warnf("PickingSceneController::setControlGroups() - Invalid group specified (%d); skipped!", bit);
-            continue;
-            }
-
-            mask |= (1 << bit);
-        }
-    }
-    // Set control groups.
-    object->setControlGroupMask(mask);
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(PickingSceneController, getControlGroups, const char*, 2, 2,  "() - Gets the control groups.\n"
-                                                                            "@return (controlGroups) A list of groups that are affected by the controller.")
-{
-    U32 mask = object->getControlGroupMask();
-
-    bool first = true;
-    char* bits = Con::getReturnBuffer(128);
-    bits[0] = '\0';
-    for (S32 i = 0; i < MASK_BITCOUNT; i++)
-    {
-        if (mask & BIT(i))
-        {
-            char bit[4];
-            dSprintf(bit, 4, "%s%d", first ? "" : " ", i);
-            first = false;
-            dStrcat(bits, bit);
-        }
-    }
-
-    return bits;
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    // The mask.
-    U32 mask = 0;
-
-    // Grab the element count of the first parameter.
-    const U32 elementCount = Utility::mGetStringElementCount(argv[2]);
-
-    // Make sure we get at least one number.
-    if (elementCount < 1)
-    {
-        object->setControlLayerMask(MASK_ALL);
-        return;
-    }
-
-    // Space separated list.
-    if (argc == 3)
-    {
-        // Convert the string to a mask.
-        for (U32 i = 0; i < elementCount; i++)
-        {
-            S32 bit = dAtoi(Utility::mGetStringElement(argv[2], i));
-         
-            // Make sure the group is valid.
-            if ((bit < 0) || (bit >= MASK_BITCOUNT))
-            {
-            Con::warnf("PickingSceneController::setControlLayers() - Invalid layer specified (%d); skipped!", bit);
-            continue;
-            }
-         
-            mask |= (1 << bit);
-        }
-    }
-
-    // Comma separated list.
-    else
-    {
-        // Convert the list to a mask.
-        for (U32 i = 2; i < (U32)argc; i++)
-        {
-            S32 bit = dAtoi(argv[i]);
-         
-            // Make sure the group is valid.
-            if ((bit < 0) || (bit >= MASK_BITCOUNT))
-            {
-            Con::warnf("PickingSceneController::setControlLayers() - Invalid layer specified (%d); skipped!", bit);
-            continue;
-            }
-
-            mask |= (1 << bit);
-        }
-    }
-    // Set control Layers
-    object->setControlLayerMask(mask);
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(PickingSceneController, getControlLayers, const char*, 2, 2,  "() - Gets the control layers.\n"
-                                                                            "@return (controlLayers) A list of layers that are affected by the controller.")
-{
-    U32 mask = object->getControlLayerMask();
-
-    bool first = true;
-    char* bits = Con::getReturnBuffer(128);
-    bits[0] = '\0';
-    for (S32 i = 0; i < MASK_BITCOUNT; i++)
-    {
-        if (mask & BIT(i))
-        {
-            char bit[4];
-            dSprintf(bit, 4, "%s%d", first ? "" : " ", i);
-            first = false;
-            dStrcat(bits, bit);
-        }
-    }
-
-    return bits;
-}
+//-----------------------------------------------------------------------------
+// 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(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;
+
+    // Grab the element count of the first parameter.
+    const U32 elementCount = Utility::mGetStringElementCount(argv[2]);
+
+    // Make sure we get at least one number.
+    if (elementCount < 1)
+    {
+        object->setControlGroupMask(MASK_ALL);
+        return;
+    }
+
+    // Space separated list.
+    if (argc == 3)
+    {
+        // Convert the string to a mask.
+        for (U32 i = 0; i < elementCount; i++)
+        {
+            S32 bit = dAtoi(Utility::mGetStringElement(argv[2], i));
+         
+            // Make sure the group is valid.
+            if ((bit < 0) || (bit >= MASK_BITCOUNT))
+            {
+            Con::warnf("PickingSceneController::setControlGroups() - Invalid group specified (%d); skipped!", bit);
+            continue;
+            }
+         
+            mask |= (1 << bit);
+        }
+    }
+
+    // Comma separated list.
+    else
+    {
+        // Convert the list to a mask.
+        for (U32 i = 2; i < (U32)argc; i++)
+        {
+            S32 bit = dAtoi(argv[i]);
+         
+            // Make sure the group is valid.
+            if ((bit < 0) || (bit >= MASK_BITCOUNT))
+            {
+            Con::warnf("PickingSceneController::setControlGroups() - Invalid group specified (%d); skipped!", bit);
+            continue;
+            }
+
+            mask |= (1 << bit);
+        }
+    }
+    // Set control groups.
+    object->setControlGroupMask(mask);
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+
+    bool first = true;
+    char* bits = Con::getReturnBuffer(128);
+    bits[0] = '\0';
+    for (S32 i = 0; i < MASK_BITCOUNT; i++)
+    {
+        if (mask & BIT(i))
+        {
+            char bit[4];
+            dSprintf(bit, 4, "%s%d", first ? "" : " ", i);
+            first = false;
+            dStrcat(bits, bit);
+        }
+    }
+
+    return bits;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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;
+
+    // Grab the element count of the first parameter.
+    const U32 elementCount = Utility::mGetStringElementCount(argv[2]);
+
+    // Make sure we get at least one number.
+    if (elementCount < 1)
+    {
+        object->setControlLayerMask(MASK_ALL);
+        return;
+    }
+
+    // Space separated list.
+    if (argc == 3)
+    {
+        // Convert the string to a mask.
+        for (U32 i = 0; i < elementCount; i++)
+        {
+            S32 bit = dAtoi(Utility::mGetStringElement(argv[2], i));
+         
+            // Make sure the group is valid.
+            if ((bit < 0) || (bit >= MASK_BITCOUNT))
+            {
+            Con::warnf("PickingSceneController::setControlLayers() - Invalid layer specified (%d); skipped!", bit);
+            continue;
+            }
+         
+            mask |= (1 << bit);
+        }
+    }
+
+    // Comma separated list.
+    else
+    {
+        // Convert the list to a mask.
+        for (U32 i = 2; i < (U32)argc; i++)
+        {
+            S32 bit = dAtoi(argv[i]);
+         
+            // Make sure the group is valid.
+            if ((bit < 0) || (bit >= MASK_BITCOUNT))
+            {
+            Con::warnf("PickingSceneController::setControlLayers() - Invalid layer specified (%d); skipped!", bit);
+            continue;
+            }
+
+            mask |= (1 << bit);
+        }
+    }
+    // Set control Layers
+    object->setControlLayerMask(mask);
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+
+    bool first = true;
+    char* bits = Con::getReturnBuffer(128);
+    bits[0] = '\0';
+    for (S32 i = 0; i < MASK_BITCOUNT; i++)
+    {
+        if (mask & BIT(i))
+        {
+            char bit[4];
+            dSprintf(bit, 4, "%s%d", first ? "" : " ", i);
+            first = false;
+            dStrcat(bits, bit);
+        }
+    }
+
+    return bits;
+}
+
+ConsoleMethodGroupEndWithDocs(PickingSceneController)

+ 255 - 136
engine/source/2d/core/BatchRender.cc

@@ -32,9 +32,9 @@
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
 BatchRender::BatchRender() :
 BatchRender::BatchRender() :
-    mQuadCount( 0 ),
+    mTriangleCount( 0 ),
     mVertexCount( 0 ),
     mVertexCount( 0 ),
-    mTextureResidentCount( 0 ),
+    mTextureCoordCount( 0 ),
     mIndexCount( 0 ),
     mIndexCount( 0 ),
     mColorCount( 0 ),
     mColorCount( 0 ),
     NoColor( -1.0f, -1.0f, -1.0f ),
     NoColor( -1.0f, -1.0f, -1.0f ),
@@ -99,6 +99,125 @@ void BatchRender::setAlphaTestMode( const SceneRenderRequest* pSceneRenderReques
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
+void BatchRender::SubmitTriangles(
+        const U32 vertexCount,
+        const Vector2* pVertexArray,
+        const Vector2* pTextureArray,
+        TextureHandle& texture,
+        const ColorF& color )
+{
+    // Debug Profiling.
+    PROFILE_SCOPE(BatchRender_SubmitTriangles);
+
+    // Sanity!
+    AssertFatal( mpDebugStats != NULL, "Debug stats have not been configured." );
+    AssertFatal( vertexCount % 3 == 0, "BatchRender::SubmitTriangles() - Invalid vertex count, cannot represent whole triangles." );
+    AssertFatal( vertexCount <= BATCHRENDER_BUFFERSIZE, "BatchRender::SubmitTriangles() - Invalid vertex count." );
+
+    // Calculate triangle count.
+    const U32 triangleCount = vertexCount / 3;
+
+    // Would we exceed the triangle buffer size?
+    if ( (mTriangleCount + triangleCount) > BATCHRENDER_MAXTRIANGLES )
+    {
+        // Yes, so flush.
+        flush( mpDebugStats->batchBufferFullFlush );
+    }
+    // Do we have anything batched?
+    else if ( mTriangleCount > 0 )
+    {
+        // Yes, so do we have any existing colors?
+        if ( mColorCount == 0 )
+        {
+            // No, so flush if color is specified.
+            if ( color != NoColor  )
+                flush( mpDebugStats->batchColorStateFlush );
+        }
+        else
+        {
+            // Yes, so flush if color is not specified.
+            if ( color == NoColor  )
+                flush( mpDebugStats->batchColorStateFlush );
+        }
+    }
+
+    // Strict order mode?
+    if ( mStrictOrderMode )
+    {
+        // Yes, so is there a texture change?
+        if ( texture != mStrictOrderTextureHandle && mTriangleCount > 0 )
+        {
+            // Yes, so flush.
+            flush( mpDebugStats->batchTextureChangeFlush );
+        }
+
+        // Fetch vertex index.
+        U16 vertexIndex = (U16)mVertexCount;
+
+        // Add new indices.
+        for( U32 n = 0; n < triangleCount; ++n )
+        {
+            mIndexBuffer[mIndexCount++] = vertexIndex++;
+            mIndexBuffer[mIndexCount++] = vertexIndex++;
+            mIndexBuffer[mIndexCount++] = vertexIndex++;
+        }
+
+        // Set strict order mode texture handle.
+        mStrictOrderTextureHandle = texture;
+    }
+    else
+    {
+        // No, so add triangle run.
+        findTextureBatch( texture )->push_back( TriangleRun( TriangleRun::TRIANGLE, triangleCount, mVertexCount ) );
+    }
+
+    // Is a color specified?
+    if ( color != NoColor )
+    {
+        // Yes, so add colors.
+        for( U32 n = 0; n < triangleCount; ++n )
+        {
+            mColorBuffer[mColorCount++] = color;
+            mColorBuffer[mColorCount++] = color;
+            mColorBuffer[mColorCount++] = color;
+        }
+    }
+
+    // Add textured vertices.
+    for( U32 n = 0; n < triangleCount; ++n )
+    {
+        mVertexBuffer[mVertexCount++]   = *(pVertexArray++);
+        mVertexBuffer[mVertexCount++]   = *(pVertexArray++);
+        mVertexBuffer[mVertexCount++]   = *(pVertexArray++);
+        mTextureBuffer[mTextureCoordCount++] = *(pTextureArray++);
+        mTextureBuffer[mTextureCoordCount++] = *(pTextureArray++);
+        mTextureBuffer[mTextureCoordCount++] = *(pTextureArray++);
+    }
+
+    // Stats.
+    mpDebugStats->batchTrianglesSubmitted += triangleCount;
+
+    // Increase triangle count.
+    mTriangleCount += triangleCount;
+
+    // Have we reached the buffer limit?
+    if ( mTriangleCount == BATCHRENDER_MAXTRIANGLES )
+    {
+        // Yes, so flush.
+        flush( mpDebugStats->batchBufferFullFlush );
+    }
+    // Is batching enabled?
+    else if ( !mBatchEnabled )
+    {
+        // No, so flush immediately.
+        // NOTE: Technically this is still batching but will still revert to using
+        // more draw calls therefore can be used in comparison.
+        flushInternal();
+    }
+}
+
+//-----------------------------------------------------------------------------
+
 void BatchRender::SubmitQuad(
 void BatchRender::SubmitQuad(
         const Vector2& vertexPos0,
         const Vector2& vertexPos0,
         const Vector2& vertexPos1,
         const Vector2& vertexPos1,
@@ -114,10 +233,17 @@ void BatchRender::SubmitQuad(
     // Sanity!
     // Sanity!
     AssertFatal( mpDebugStats != NULL, "Debug stats have not been configured." );
     AssertFatal( mpDebugStats != NULL, "Debug stats have not been configured." );
 
 
-    PROFILE_START(BatchRender_SubmitQuad);
+    // Debug Profiling.
+    PROFILE_SCOPE(BatchRender_SubmitQuad);
 
 
+    // Would we exceed the triangle buffer size?
+    if ( (mTriangleCount + 2) > BATCHRENDER_MAXTRIANGLES )
+    {
+        // Yes, so flush.
+        flush( mpDebugStats->batchBufferFullFlush );
+    }
     // Do we have anything batched?
     // Do we have anything batched?
-    if ( mQuadCount > 0 )
+    else if ( mTriangleCount > 0 )
     {
     {
         // Yes, so do we have any existing colors?
         // Yes, so do we have any existing colors?
         if ( mColorCount == 0 )
         if ( mColorCount == 0 )
@@ -134,21 +260,11 @@ void BatchRender::SubmitQuad(
         }
         }
     }
     }
 
 
-    // Is a color specified?
-    if ( color != NoColor )
-    {
-        // Yes, so add colors.
-        mColorBuffer[mColorCount++] = color;
-        mColorBuffer[mColorCount++] = color;
-        mColorBuffer[mColorCount++] = color;
-        mColorBuffer[mColorCount++] = color;
-    }
-
     // Strict order mode?
     // Strict order mode?
     if ( mStrictOrderMode )
     if ( mStrictOrderMode )
     {
     {
-        // Is there is a texture change.
-        if ( texture != mStrictOrderTextureHandle )
+        // Yes, so is there a texture change?
+        if ( texture != mStrictOrderTextureHandle && mTriangleCount > 0 )
         {
         {
             // Yes, so flush.
             // Yes, so flush.
             flush( mpDebugStats->batchTextureChangeFlush );
             flush( mpDebugStats->batchTextureChangeFlush );
@@ -167,44 +283,18 @@ void BatchRender::SubmitQuad(
     }
     }
     else
     else
     {
     {
-        // No, so fetch texture binding.
-        const U32 textureBinding = texture.getGLName();
-
-        indexVectorType* pIndexVector = NULL;
-
-        // Find texture binding.
-        textureBatchType::iterator itr = mTextureBatchMap.find( textureBinding );
-
-        // Did we find a texture binding?
-        if ( itr == mTextureBatchMap.end() )
-        {
-            // No, so fetch index vector pool count.
-            const U32 indexVectorPoolCount = mIndexVectorPool.size();
-
-            // Do we have any in the index vector pool?
-            if ( indexVectorPoolCount > 0 )
-            {
-                // Yes, so use it.
-                pIndexVector = mIndexVectorPool[indexVectorPoolCount-1];
-                mIndexVectorPool.pop_back();
-            }
-            else
-            {
-                // No, so generate one.
-                pIndexVector = new indexVectorType( 6 * 6 );
-            }
-
-            // Insert into texture batch map.
-            mTextureBatchMap.insert( textureBinding, pIndexVector );
-        }
-        else
-        {
-            // Yes, so fetch it.
-            pIndexVector = itr->value;
-        }
+        // No, so add triangle run.
+        findTextureBatch( texture )->push_back( TriangleRun( TriangleRun::QUAD, 1, mVertexCount ) );
+    }
 
 
-        // Add vertex start.
-        pIndexVector->push_back( mVertexCount );       
+    // Is a color specified?
+    if ( color != NoColor )
+    {
+        // Yes, so add colors.
+        mColorBuffer[mColorCount++] = color;
+        mColorBuffer[mColorCount++] = color;
+        mColorBuffer[mColorCount++] = color;
+        mColorBuffer[mColorCount++] = color;
     }
     }
 
 
     // Add textured vertices.
     // Add textured vertices.
@@ -213,42 +303,39 @@ void BatchRender::SubmitQuad(
     mVertexBuffer[mVertexCount++]   = vertexPos1;
     mVertexBuffer[mVertexCount++]   = vertexPos1;
     mVertexBuffer[mVertexCount++]   = vertexPos3;
     mVertexBuffer[mVertexCount++]   = vertexPos3;
     mVertexBuffer[mVertexCount++]   = vertexPos2;
     mVertexBuffer[mVertexCount++]   = vertexPos2;
-    mTextureBuffer[mTextureResidentCount++] = texturePos0;
-    mTextureBuffer[mTextureResidentCount++] = texturePos1;
-    mTextureBuffer[mTextureResidentCount++] = texturePos3;
-    mTextureBuffer[mTextureResidentCount++] = texturePos2;
+    mTextureBuffer[mTextureCoordCount++] = texturePos0;
+    mTextureBuffer[mTextureCoordCount++] = texturePos1;
+    mTextureBuffer[mTextureCoordCount++] = texturePos3;
+    mTextureBuffer[mTextureCoordCount++] = texturePos2;
 
 
     // Stats.
     // Stats.
     mpDebugStats->batchTrianglesSubmitted+=2;
     mpDebugStats->batchTrianglesSubmitted+=2;
 
 
-    // Increase quad count.
-    mQuadCount++;
+    // Increase triangle count.
+    mTriangleCount += 2;
 
 
     // Have we reached the buffer limit?
     // Have we reached the buffer limit?
-    if ( mQuadCount == BATCHRENDER_MAXQUADS )
+    if ( mTriangleCount == BATCHRENDER_MAXTRIANGLES )
     {
     {
         // Yes, so flush.
         // Yes, so flush.
         flush( mpDebugStats->batchBufferFullFlush );
         flush( mpDebugStats->batchBufferFullFlush );
     }
     }
-
     // Is batching enabled?
     // Is batching enabled?
-    if ( !mBatchEnabled )
+    else if ( !mBatchEnabled )
     {
     {
         // No, so flush immediately.
         // No, so flush immediately.
         // NOTE: Technically this is still batching but will still revert to using
         // NOTE: Technically this is still batching but will still revert to using
         // more draw calls therefore can be used in comparison.
         // more draw calls therefore can be used in comparison.
         flushInternal();
         flushInternal();
     }
     }
-
-    PROFILE_END();   // BatchRender_SubmitQuad
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
 void BatchRender::flush( U32& reasonMetric )
 void BatchRender::flush( U32& reasonMetric )
 {
 {
-    // Finish if no quads to flush.
-    if ( mQuadCount == 0 )
+    // Finish if no triangles to flush.
+    if ( mTriangleCount == 0 )
         return;
         return;
 
 
     // Increase reason metric.
     // Increase reason metric.
@@ -262,8 +349,8 @@ void BatchRender::flush( U32& reasonMetric )
 
 
 void BatchRender::flush( void )
 void BatchRender::flush( void )
 {
 {
-    // Finish if no quads to flush.
-    if ( mQuadCount == 0 )
+    // Finish if no triangles to flush.
+    if ( mTriangleCount == 0 )
         return;
         return;
 
 
     // Increase reason metric.
     // Increase reason metric.
@@ -277,11 +364,12 @@ void BatchRender::flush( void )
 
 
 void BatchRender::flushInternal( void )
 void BatchRender::flushInternal( void )
 {
 {
-    // Finish if no quads to flush.
-    if ( mQuadCount == 0 )
-        return;
+    // Debug Profiling.
+    PROFILE_SCOPE(T2D_BatchRender_flush);
 
 
-    PROFILE_START(T2D_BatchRender_flush);
+    // Finish if no triangles to flush.
+    if ( mTriangleCount == 0 )
+        return;
 
 
     // Stats.
     // Stats.
     mpDebugStats->batchFlushes++;
     mpDebugStats->batchFlushes++;
@@ -352,32 +440,16 @@ void BatchRender::flushInternal( void )
         if ( !mWireframeMode )
         if ( !mWireframeMode )
             glBindTexture( GL_TEXTURE_2D, mStrictOrderTextureHandle.getGLName() );
             glBindTexture( GL_TEXTURE_2D, mStrictOrderTextureHandle.getGLName() );
 
 
-        // Yes, so do we have a single quad?
-        if ( mQuadCount == 1 )
-        {
-            // Yes, so draw the quad using a triangle-strip with indexes.
-            glDrawArrays( GL_TRIANGLE_STRIP, 0, 4 );    
-
-            // Stats.
-            mpDebugStats->batchDrawCallsStrictSingle++;
+        // Draw the triangles
+        glDrawElements( GL_TRIANGLES, mIndexCount, GL_UNSIGNED_SHORT, mIndexBuffer );
 
 
-            // Stats.
-            if ( mpDebugStats->batchMaxTriangleDrawn < 2 )
-                mpDebugStats->batchMaxTriangleDrawn = 2;
-        }
-        else
-        {
-            // Draw the quads using triangles with indexes.
-            glDrawElements( GL_TRIANGLES, mIndexCount, GL_UNSIGNED_SHORT, mIndexBuffer );
-
-            // Stats.
-            mpDebugStats->batchDrawCallsStrictMultiple++;
+        // Stats.
+        mpDebugStats->batchDrawCallsStrict++;
 
 
-            // Stats.
-            const U32 trianglesDrawn = mIndexCount / 3;
-            if ( trianglesDrawn > mpDebugStats->batchMaxTriangleDrawn )
-                mpDebugStats->batchMaxTriangleDrawn = trianglesDrawn;
-        }
+        // Stats.
+        const U32 trianglesDrawn = mIndexCount / 3;
+        if ( trianglesDrawn > mpDebugStats->batchMaxTriangleDrawn )
+            mpDebugStats->batchMaxTriangleDrawn = trianglesDrawn;
 
 
         // Stats.
         // Stats.
         if ( mVertexCount > mpDebugStats->batchMaxVertexBuffer )
         if ( mVertexCount > mpDebugStats->batchMaxVertexBuffer )
@@ -388,28 +460,58 @@ void BatchRender::flushInternal( void )
         // No, so iterate texture batch map.
         // No, so iterate texture batch map.
         for( textureBatchType::iterator batchItr = mTextureBatchMap.begin(); batchItr != mTextureBatchMap.end(); ++batchItr )
         for( textureBatchType::iterator batchItr = mTextureBatchMap.begin(); batchItr != mTextureBatchMap.end(); ++batchItr )
         {
         {
-            // Fetch texture binding.
-            const U32 textureBinding = batchItr->key;
+            // Reset index count.
+            mIndexCount = 0;
 
 
             // Fetch index vector.
             // Fetch index vector.
             indexVectorType* pIndexVector = batchItr->value;
             indexVectorType* pIndexVector = batchItr->value;
 
 
-            // Reset index count.
-            mIndexCount = 0;
-
             // Iterate indexes.
             // Iterate indexes.
             for( indexVectorType::iterator indexItr = pIndexVector->begin(); indexItr != pIndexVector->end(); ++indexItr )
             for( indexVectorType::iterator indexItr = pIndexVector->begin(); indexItr != pIndexVector->end(); ++indexItr )
             {
             {
-                // Fetch quad index.
-                U32 quadIndex = (*indexItr);
-
-                // Add new indices.
-                mIndexBuffer[mIndexCount++] = (U16)quadIndex++;
-                mIndexBuffer[mIndexCount++] = (U16)quadIndex++;
-                mIndexBuffer[mIndexCount++] = (U16)quadIndex++;
-                mIndexBuffer[mIndexCount++] = (U16)quadIndex--;
-                mIndexBuffer[mIndexCount++] = (U16)quadIndex--;
-                mIndexBuffer[mIndexCount++] = (U16)quadIndex;
+                // Fetch triangle run.
+                const TriangleRun& triangleRun = *indexItr;
+
+                // Fetch primitivecount.
+                const U32 primitiveCount = triangleRun.mPrimitiveCount;
+
+                // Fetch triangle index start.
+                U16 triangleIndex = (U16)triangleRun.mStartIndex;
+
+                // Fetch primitive mode.
+                const TriangleRun::PrimitiveMode& primitiveMode = triangleRun.mPrimitiveMode;
+
+                // Handle primitive mode.
+                if ( primitiveMode == TriangleRun::QUAD )
+                {
+                    // Add triangle run for quad.
+                    for( U32 n = 0; n < primitiveCount; ++n )
+                    {
+                        // Add new indices.
+                        mIndexBuffer[mIndexCount++] = triangleIndex++;
+                        mIndexBuffer[mIndexCount++] = triangleIndex++;
+                        mIndexBuffer[mIndexCount++] = triangleIndex++;
+                        mIndexBuffer[mIndexCount++] = triangleIndex--;
+                        mIndexBuffer[mIndexCount++] = triangleIndex--;
+                        mIndexBuffer[mIndexCount++] = triangleIndex--;
+                    }
+                }
+                else if ( primitiveMode == TriangleRun::TRIANGLE )
+                {
+                    // Add triangle run for triangles.
+                    for( U32 n = 0; n < primitiveCount; ++n )
+                    {
+                        // Add new indices.
+                        mIndexBuffer[mIndexCount++] = triangleIndex++;
+                        mIndexBuffer[mIndexCount++] = triangleIndex++;
+                        mIndexBuffer[mIndexCount++] = triangleIndex++;
+                    }
+                }
+                else
+                {
+                    // Sanity!
+                    AssertFatal( false, "BatchRender::flushInternal() - Unrecognized primitive mode encountered for triangle run." );
+                }
             }
             }
 
 
             // Sanity!
             // Sanity!
@@ -417,9 +519,9 @@ void BatchRender::flushInternal( void )
 
 
             // Bind the texture if not in wireframe mode.
             // Bind the texture if not in wireframe mode.
             if ( !mWireframeMode )
             if ( !mWireframeMode )
-                glBindTexture( GL_TEXTURE_2D, textureBinding );
+                glBindTexture( GL_TEXTURE_2D, batchItr->key );
 
 
-            // Draw the quads using triangles with indexes.
+            // Draw the triangles.
             glDrawElements( GL_TRIANGLES, mIndexCount, GL_UNSIGNED_SHORT, mIndexBuffer );
             glDrawElements( GL_TRIANGLES, mIndexCount, GL_UNSIGNED_SHORT, mIndexBuffer );
 
 
             // Stats.
             // Stats.
@@ -453,37 +555,54 @@ void BatchRender::flushInternal( void )
     glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
     glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
 
 
     // Reset batch state.
     // Reset batch state.
-    mQuadCount = 0;
+    mTriangleCount = 0;
     mVertexCount = 0;
     mVertexCount = 0;
-    mTextureResidentCount = 0;
+    mTextureCoordCount = 0;
     mIndexCount = 0;
     mIndexCount = 0;
     mColorCount = 0;
     mColorCount = 0;
-
-    PROFILE_END();   // T2D_BatchRender_flush
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
-void BatchRender::RenderQuad(
-        const Vector2& vertexPos0,
-        const Vector2& vertexPos1,
-        const Vector2& vertexPos2,
-        const Vector2& vertexPos3,
-        const Vector2& texturePos0,
-        const Vector2& texturePos1,
-        const Vector2& texturePos2,
-        const Vector2& texturePos3 )
+BatchRender::indexVectorType* BatchRender::findTextureBatch( TextureHandle& handle )
 {
 {
-    glBegin( GL_TRIANGLE_STRIP );
-        glTexCoord2f( texturePos0.x, texturePos0.y );
-        glVertex2f( vertexPos0.x, vertexPos0.y );
-        glTexCoord2f( texturePos1.x, texturePos1.y );
-        glVertex2f( vertexPos1.x, vertexPos1.y );
-        glTexCoord2f( texturePos3.x, texturePos3.y );
-        glVertex2f( vertexPos3.x, vertexPos3.y );
-        glTexCoord2f( texturePos2.x, texturePos2.y );
-        glVertex2f( vertexPos2.x, vertexPos2.y );
-    glEnd();
+    // Fetch texture binding.
+    const U32 textureBinding = handle.getGLName();
+
+    indexVectorType* pIndexVector = NULL;
+
+    // Find texture binding.
+    textureBatchType::iterator itr = mTextureBatchMap.find( textureBinding );
+
+    // Did we find a texture binding?
+    if ( itr == mTextureBatchMap.end() )
+    {
+        // No, so fetch index vector pool count.
+        const U32 indexVectorPoolCount = mIndexVectorPool.size();
+
+        // Do we have any in the index vector pool?
+        if ( indexVectorPoolCount > 0 )
+        {
+            // Yes, so use it.
+            pIndexVector = mIndexVectorPool[indexVectorPoolCount-1];
+            mIndexVectorPool.pop_back();
+        }
+        else
+        {
+            // No, so generate one.
+            pIndexVector = new indexVectorType( 6 * 6 );
+        }
+
+        // Insert into texture batch map.
+        mTextureBatchMap.insert( textureBinding, pIndexVector );
+    }
+    else
+    {
+        // Yes, so fetch it.
+        pIndexVector = itr->value;
+    }
+
+    return pIndexVector;
 }
 }
 
 
 
 

+ 82 - 35
engine/source/2d/core/BatchRender.h

@@ -50,7 +50,7 @@
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
 #define BATCHRENDER_BUFFERSIZE      (65535)
 #define BATCHRENDER_BUFFERSIZE      (65535)
-#define BATCHRENDER_MAXQUADS        (BATCHRENDER_BUFFERSIZE/6)
+#define BATCHRENDER_MAXTRIANGLES    (BATCHRENDER_BUFFERSIZE/3)
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
@@ -60,6 +60,58 @@ class SceneRenderRequest;
 
 
 class BatchRender
 class BatchRender
 {
 {
+private:
+    struct TriangleRun
+    {
+        enum PrimitiveMode
+        {
+            TRIANGLE,
+            QUAD,
+        };
+
+        TriangleRun( const PrimitiveMode primitive, const U32 primitiveCount, const U32 startIndex ) :
+            mPrimitiveMode( primitive ),
+            mPrimitiveCount( primitiveCount ),
+            mStartIndex( startIndex )
+        { }
+
+        PrimitiveMode mPrimitiveMode;
+        U32 mPrimitiveCount;
+        U32 mStartIndex;
+    };
+
+    typedef Vector<TriangleRun> indexVectorType;
+    typedef HashMap<U32, indexVectorType*> textureBatchType;
+
+    VectorPtr< indexVectorType* > mIndexVectorPool;
+    textureBatchType    mTextureBatchMap;
+
+    const ColorF        NoColor;
+
+    Vector2             mVertexBuffer[ BATCHRENDER_BUFFERSIZE ];
+    Vector2             mTextureBuffer[ BATCHRENDER_BUFFERSIZE ];
+    U16                 mIndexBuffer[ BATCHRENDER_BUFFERSIZE ];
+    ColorF              mColorBuffer[ BATCHRENDER_BUFFERSIZE ];
+   
+    U32                 mTriangleCount;
+    U32                 mVertexCount;
+    U32                 mTextureCoordCount;
+    U32                 mIndexCount;
+    U32                 mColorCount;
+
+    bool                mBlendMode;
+    GLenum              mSrcBlendFactor;
+    GLenum              mDstBlendFactor;
+    ColorF              mBlendColor;
+    F32                 mAlphaTestMode;
+
+    bool                mStrictOrderMode;
+    TextureHandle       mStrictOrderTextureHandle;
+    DebugStats*         mpDebugStats;
+
+    bool                mWireframeMode;
+    bool                mBatchEnabled;
+
 public:
 public:
     BatchRender();
     BatchRender();
     virtual ~BatchRender();
     virtual ~BatchRender();
@@ -117,7 +169,7 @@ public:
     void setBlendMode( const SceneRenderRequest* pSceneRenderRequest );
     void setBlendMode( const SceneRenderRequest* pSceneRenderRequest );
 
 
     /// Set alpha-test mode.
     /// Set alpha-test mode.
-    inline void setAlphaTestMode( const F32 alphaTestMode )
+    void setAlphaTestMode( const F32 alphaTestMode )
     {
     {
         // Ignore no change.
         // Ignore no change.
         if ( mIsEqual( mAlphaTestMode, alphaTestMode ) )
         if ( mIsEqual( mAlphaTestMode, alphaTestMode ) )
@@ -167,6 +219,19 @@ public:
     /// Sets the debug stats to use.
     /// Sets the debug stats to use.
     inline void setDebugStats( DebugStats* pDebugStats ) { mpDebugStats = pDebugStats; }
     inline void setDebugStats( DebugStats* pDebugStats ) { mpDebugStats = pDebugStats; }
 
 
+    /// Submit triangles for batching.
+    /// Vertex and textures are indexed as:
+    ///  2        5
+    ///   |\      |\
+    ///   | \     | \
+    ///  0| _\1  3| _\4
+    void SubmitTriangles(
+            const U32 vertexCount,
+            const Vector2* pVertexArray,
+            const Vector2* pTextureArray,
+            TextureHandle& texture,
+            const ColorF& color = ColorF(-1.0f, -1.0f, -1.0f) );
+
     /// Submit a quad for batching.
     /// Submit a quad for batching.
     /// Vertex and textures are indexed as:
     /// Vertex and textures are indexed as:
     ///  3 ___ 2
     ///  3 ___ 2
@@ -200,7 +265,19 @@ public:
             const Vector2& texturePos0,
             const Vector2& texturePos0,
             const Vector2& texturePos1,
             const Vector2& texturePos1,
             const Vector2& texturePos2,
             const Vector2& texturePos2,
-            const Vector2& texturePos3 );
+            const Vector2& texturePos3 )
+    {
+        glBegin( GL_TRIANGLE_STRIP );
+            glTexCoord2f( texturePos0.x, texturePos0.y );
+            glVertex2f( vertexPos0.x, vertexPos0.y );
+            glTexCoord2f( texturePos1.x, texturePos1.y );
+            glVertex2f( vertexPos1.x, vertexPos1.y );
+            glTexCoord2f( texturePos3.x, texturePos3.y );
+            glVertex2f( vertexPos3.x, vertexPos3.y );
+            glTexCoord2f( texturePos2.x, texturePos2.y );
+            glVertex2f( vertexPos2.x, vertexPos2.y );
+        glEnd();
+    }
 
 
     /// Flush (render) any pending batches with a reason metric.
     /// Flush (render) any pending batches with a reason metric.
     void flush( U32& reasonMetric );
     void flush( U32& reasonMetric );
@@ -212,38 +289,8 @@ private:
     /// Flush (render) any pending batches.
     /// Flush (render) any pending batches.
     void flushInternal( void );
     void flushInternal( void );
 
 
-private:
-    typedef Vector<U32> indexVectorType;
-    typedef HashMap<U32, indexVectorType*> textureBatchType;
-
-    VectorPtr< indexVectorType* > mIndexVectorPool;
-    textureBatchType    mTextureBatchMap;
-
-    const ColorF        NoColor;
-
-    Vector2             mVertexBuffer[ BATCHRENDER_BUFFERSIZE ];
-    Vector2             mTextureBuffer[ BATCHRENDER_BUFFERSIZE ];
-    U16                 mIndexBuffer[ BATCHRENDER_BUFFERSIZE ];
-    ColorF              mColorBuffer[ BATCHRENDER_BUFFERSIZE ];
-   
-    U32                 mQuadCount;
-    U32                 mVertexCount;
-    U32                 mTextureResidentCount;
-    U32                 mIndexCount;
-    U32                 mColorCount;
-
-    bool                mBlendMode;
-    GLenum              mSrcBlendFactor;
-    GLenum              mDstBlendFactor;
-    ColorF              mBlendColor;
-    F32                 mAlphaTestMode;
-
-    bool                mStrictOrderMode;
-    TextureHandle       mStrictOrderTextureHandle;
-    DebugStats*         mpDebugStats;
-
-    bool                mWireframeMode;
-    bool                mBatchEnabled;
+    /// Find texture batch.
+    indexVectorType* findTextureBatch( TextureHandle& handle );
 };
 };
 
 
 #endif
 #endif

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,18 +20,24 @@
 // IN THE SOFTWARE.
 // 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();
     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.
     // Fetch image asset Id.
     const char* pImageAssetId = argv[2];
     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?
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
     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.
     // Play Animation.
     return static_cast<ImageFrameProvider*>(object)->setAnimation( argv[2] );
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     if ( object->isStaticFrameProvider() )
@@ -257,3 +289,4 @@ ConsoleMethod(RenderProxy, getAnimationTimeScale, F32, 2, 2,    "() - Get the an
     return object->getAnimationTimeScale();
     return object->getAnimationTimeScale();
 }
 }
 
 
+ConsoleMethodGroupEndWithDocs(RenderProxy)

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,18 +20,24 @@
 // IN THE SOFTWARE.
 // 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();
     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.
     // Calculate Frame.
     U32 frame = argc >= 4 ? dAtoi(argv[3]) : 0;
     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?
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
     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.
     // Play Animation.
     return static_cast<ImageFrameProvider*>(object)->setAnimation( argv[2] );
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     if ( object->isStaticFrameProvider() )
@@ -254,3 +286,5 @@ ConsoleMethod(SpriteBase, getAnimationTimeScale, F32, 2, 2,     "() - Get the an
 
 
     return object->getAnimationTimeScale();
     return object->getAnimationTimeScale();
 }
 }
+
+ConsoleMethodGroupEndWithDocs(SpriteBase)

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

@@ -28,6 +28,8 @@
 #include "2d/sceneobject/SceneObject.h"
 #include "2d/sceneobject/SceneObject.h"
 #include "2d/core/Utility.h"
 #include "2d/core/Utility.h"
 
 
+#include "Utility_ScriptBinding.h"
+
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
 ConsoleType( b2AABB, Typeb2AABB, sizeof(b2AABB), "" )
 ConsoleType( b2AABB, Typeb2AABB, sizeof(b2AABB), "" )
@@ -76,64 +78,6 @@ ConsoleSetType( Typeb2AABB )
 namespace Utility
 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 )
 const char* mGetFirstNonWhitespace( const char* inString )

+ 88 - 0
engine/source/2d/core/Utility_ScriptBinding.h

@@ -0,0 +1,88 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+/*! @defgroup Utility Utility
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! Returns the common elements in two sets.
+	@param set1 string of space-separated values
+	@param set2 string of space-separated values
+	@return string of space-separated values
+*/
+ConsoleFunctionWithDocs( t2dGetCommonElements, ConsoleString, 3, 3, (set1, set2))
+{
+    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;
+}
+
+/*! @} */ // end group Utility

+ 105 - 53
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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
     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 p1))
 {
 {
     // Check Parameters.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
@@ -241,12 +280,14 @@ ConsoleFunction( Vector2AngleToPoint, F32, 3, 3, "(Vector2 p1, Vector2 p1) - Ret
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-// 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.
     // Fetch angle.
     const F32 angle = mDegToRad(dAtof(argv[1]));
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 )
     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.
     // Check Parameters.
     if (Utility::mGetStringElementCount(argv[1]) < 2 ||Utility::mGetStringElementCount(argv[2]) < 2 )
     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;
     return pBuffer;
 }
 }
 
 
-
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
-ConsoleFunctionGroupEnd( Vector2Math );
+/*! @} */

+ 3 - 0
engine/source/2d/experimental/composites/WaveComposite_ScriptBinding.h

@@ -20,3 +20,6 @@
 // IN THE SOFTWARE.
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
+ConsoleMethodGroupBeginWithDocs(WaveComposite, SceneObject)
+
+ConsoleMethodGroupEndWithDocs(WaveComposite)

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

@@ -1866,13 +1866,12 @@ void SceneWindow::renderMetricsOverlay( Point2I offset, const RectI& updateRect
 
 
         // Batching #1.
         // Batching #1.
         dglDrawText( font, bannerOffset + Point2I(0,(S32)linePositionY), "Batching", NULL );
         dglDrawText( font, bannerOffset + Point2I(0,(S32)linePositionY), "Batching", NULL );
-        dSprintf( mDebugText, sizeof( mDebugText ), "- %sTris=%d<%d>, MaxTriDraw=%d, MaxVerts=%d, Single=%d<%d>, Mult=%d<%d>, Sorted=%d<%d>",
+        dSprintf( mDebugText, sizeof( mDebugText ), "- %sTris=%d<%d>, MaxTriDraw=%d, MaxVerts=%d, Strict=%d<%d>, Sorted=%d<%d>",
             pScene->getBatchingEnabled() ? "" : "(OFF) ",
             pScene->getBatchingEnabled() ? "" : "(OFF) ",
             debugStats.batchTrianglesSubmitted, debugStats.maxBatchTrianglesSubmitted,
             debugStats.batchTrianglesSubmitted, debugStats.maxBatchTrianglesSubmitted,
             debugStats.batchMaxTriangleDrawn,
             debugStats.batchMaxTriangleDrawn,
             debugStats.batchMaxVertexBuffer,
             debugStats.batchMaxVertexBuffer,
-            debugStats.batchDrawCallsStrictSingle, debugStats.maxBatchDrawCallsStrictSingle,
-            debugStats.batchDrawCallsStrictMultiple, debugStats.maxBatchDrawCallsStrictMultiple,
+            debugStats.batchDrawCallsStrict, debugStats.maxBatchDrawCallsStrict,
             debugStats.batchDrawCallsSorted, debugStats.maxBatchDrawCallsSorted                   
             debugStats.batchDrawCallsSorted, debugStats.maxBatchDrawCallsSorted                   
             );
             );
         dglDrawText( font, bannerOffset + Point2I(metricsOffset,(S32)linePositionY), mDebugText, NULL );
         dglDrawText( font, bannerOffset + Point2I(metricsOffset,(S32)linePositionY), mDebugText, NULL );

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,9 +20,12 @@
 // IN THE SOFTWARE.
 // 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.
     // Get Size Argument Buffer.
     char* pExtentsBuffer = Con::getReturnBuffer(64);
     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();
    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?
     // No scene specified?
     if ( argc < 3 )
     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.
     // Reset Scene.
     object->resetScene();
     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 )
    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();
     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 )
    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();
     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.
    // Upper left bound.
    Vector2 v1;
    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.
     // Fetch Camera Window.
     const RectF cameraWindow = object->getCameraArea();
     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]) );
     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();
     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])) );
     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();
     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
     // Fetch camera window
     const Vector2 cameraWindowScale = object->getCameraWindowScale();
     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();
     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.
     // Fetch camera window scale.
     Vector2 cameraWindowScale = object->getCameraWindowScale();
     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 )
    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();
     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 )
    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();
     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.
    // Upper left bound.
    Vector2 v1;
    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.
     // Fetch Camera Window.
     const RectF cameraWindow = object->getTargetCameraArea();
     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]) );
     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();
     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])) );
     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();
     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.
     // Set Camera Interpolation Time.
     object->setCameraInterpolationTime( dAtof(argv[2]) );
     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.
     // Set Camera Interpolation Mode.
     object->setCameraInterpolationMode( SceneWindow::getInterpolationModeEnum(argv[2]) );
     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;
     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.
     // Stop Camera Move.
     object->stopCameraMove();
     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.
     // Complete Camera Move.
     object->completeCameraMove();
     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;
     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?
     // Is Camera Moving?
     return object->isCameraMoving();
     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.
     // Is Camera Mounted.
     return object->isCameraMounted();
     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.
     // Start Camera Shake.
     object->startCameraShake( dAtof(argv[2]), dAtof(argv[3]) );
     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.
     // Stop Camera Shake.
     object->stopCameraShake();
     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.
     // Grab the object. Always specified.
     SceneObject* pSceneObject = dynamic_cast<SceneObject*>(Sim::findObject(argv[2]));
     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.
     // Dismount Object.
     object->dismount();
     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.
    // Upper left bound.
    Vector2 v1;
    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.
     // Set View Limit Off.
     object->setViewLimitOff();
     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();
     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.
    // The mask.
    U32 mask = 0;
    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.
    // The mask.
    U32 mask = 0;
    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.
     // Set Render Masks.
    if( argc < 4 )
    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();
    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();
    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.
     // The colors.
     F32 red;
     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.
     // Get the background color.
     const ColorF& color = object->getBackgroundColor();
     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.
     // Fetch flag.
     const bool useBackgroundColor = dAtob(argv[2]);
     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.
     // Get the flag.
     return object->getUseBackgroundColor();
     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]) );
     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();
     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]) );
     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();
     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.
    // The mask.
    U32 mask = 0;
    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.
    // The mask.
    U32 mask = 0;
    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.
     // Calculate Use Invisible Flag.
     bool useInvisible = argc >= 5 ? dAtob(argv[4]) : true;
     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]));
    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
     // Find the SimObject
     SimObject* pSimObject = Sim::findObject( argv[2] );
     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
     // Find the SimObject
     SimObject* pSimObject = Sim::findObject( argv[2] );
     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.
     // Set Lock Mouse.
     object->setLockMouse( dAtob(argv[2]) );
     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.
     // Get Lock Mouse.
     return object->getLockMouse();
     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.
    // The new position.
    Vector2 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.
     // Fetch Mouse Position.
     Vector2 worldMousePoint = object->getMousePosition();
     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.
    // The new position.
    Vector2 srcPoint;
    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.
    // The new position.
    Vector2 srcPoint;
    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.
    // The new position.
    Point2I srcPoint;
    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.
    // The new position.
    Vector2 srcPoint;
    Vector2 srcPoint;
@@ -1403,3 +1542,5 @@ ConsoleMethod(SceneWindow, getIsWindowPoint, bool, 3, 4, "(X / Y) Checks if Worl
     // Check if point is in window bounds.
     // 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 )) );
     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
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,41 +20,55 @@
 // IN THE SOFTWARE.
 // 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] );
    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]  );
    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]  );
    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]  );
    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] );
     bool flag = dAtob( argv[2] );
     object->setActive( flag  );
     object->setActive( flag  );
 }
 }
+
+ConsoleMethodGroupEndWithDocs(GuiImageButtonCtrl)

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,25 +20,33 @@
 // IN THE SOFTWARE.
 // 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();
     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] );
    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?
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
     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]) );
    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?
     // Are we in static mode?
     if ( !object->isStaticFrameProvider() )
     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.
     // Set animation.
     object->setAnimation( argv[2] );
     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?
     // Are we in static mode?
     if ( object->isStaticFrameProvider() )
     if ( object->isStaticFrameProvider() )
@@ -104,3 +120,5 @@ ConsoleMethod( GuiSpriteCtrl, getAnimation, const char*, 2, 2,  "() - Gets the c
     // Get animation.
     // Get animation.
     return DYNAMIC_VOID_CAST_TO(GuiSpriteCtrl, ImageFrameProvider, object)->getAnimation();
     return DYNAMIC_VOID_CAST_TO(GuiSpriteCtrl, ImageFrameProvider, object)->getAnimation();
 }
 }
+
+ConsoleMethodGroupEndWithDocs(GuiSpriteCtrl)

+ 5 - 12
engine/source/2d/scene/DebugStats.h

@@ -81,8 +81,7 @@ public:
 
 
         // Batching.
         // Batching.
         if ( batchTrianglesSubmitted > maxBatchTrianglesSubmitted ) maxBatchTrianglesSubmitted = batchTrianglesSubmitted;
         if ( batchTrianglesSubmitted > maxBatchTrianglesSubmitted ) maxBatchTrianglesSubmitted = batchTrianglesSubmitted;
-        if ( batchDrawCallsStrictSingle > maxBatchDrawCallsStrictSingle ) maxBatchDrawCallsStrictSingle = batchDrawCallsStrictSingle;
-        if ( batchDrawCallsStrictMultiple > maxBatchDrawCallsStrictMultiple ) maxBatchDrawCallsStrictMultiple = batchDrawCallsStrictMultiple;
+        if ( batchDrawCallsStrict > maxBatchDrawCallsStrict ) maxBatchDrawCallsStrict = batchDrawCallsStrict;
         if ( batchDrawCallsSorted > maxBatchDrawCallsSorted ) maxBatchDrawCallsSorted = batchDrawCallsSorted;
         if ( batchDrawCallsSorted > maxBatchDrawCallsSorted ) maxBatchDrawCallsSorted = batchDrawCallsSorted;
         if ( batchFlushes > maxBatchFlushes ) maxBatchFlushes = batchFlushes;
         if ( batchFlushes > maxBatchFlushes ) maxBatchFlushes = batchFlushes;
         if ( batchBlendStateFlush > maxBatchBlendStateFlush ) maxBatchBlendStateFlush = batchBlendStateFlush;
         if ( batchBlendStateFlush > maxBatchBlendStateFlush ) maxBatchBlendStateFlush = batchBlendStateFlush;
@@ -151,11 +150,8 @@ public:
         batchMaxVertexBuffer = 0;
         batchMaxVertexBuffer = 0;
         batchMaxTriangleDrawn = 0;
         batchMaxTriangleDrawn = 0;
 
 
-        batchDrawCallsStrictSingle = 0;
-        maxBatchDrawCallsStrictSingle = 0;
-
-        batchDrawCallsStrictMultiple = 0;
-        maxBatchDrawCallsStrictMultiple = 0;
+        batchDrawCallsStrict = 0;
+        maxBatchDrawCallsStrict = 0;
 
 
         batchDrawCallsSorted = 0;
         batchDrawCallsSorted = 0;
         maxBatchDrawCallsSorted = 0;
         maxBatchDrawCallsSorted = 0;
@@ -244,11 +240,8 @@ public:
     U32     batchMaxVertexBuffer;
     U32     batchMaxVertexBuffer;
     U32     batchMaxTriangleDrawn;
     U32     batchMaxTriangleDrawn;
 
 
-    U32     batchDrawCallsStrictSingle;
-    U32     maxBatchDrawCallsStrictSingle;
-
-    U32     batchDrawCallsStrictMultiple;
-    U32     maxBatchDrawCallsStrictMultiple;
+    U32     batchDrawCallsStrict;
+    U32     maxBatchDrawCallsStrict;
 
 
     U32     batchDrawCallsSorted;
     U32     batchDrawCallsSorted;
     U32     maxBatchDrawCallsSorted;
     U32     maxBatchDrawCallsSorted;

+ 1 - 2
engine/source/2d/scene/Scene.cc

@@ -954,8 +954,7 @@ void Scene::sceneRender( const SceneRenderState* pSceneRenderState )
     pDebugStats->renderRequests                 = 0;
     pDebugStats->renderRequests                 = 0;
     pDebugStats->renderFallbacks                = 0;
     pDebugStats->renderFallbacks                = 0;
     pDebugStats->batchTrianglesSubmitted        = 0;
     pDebugStats->batchTrianglesSubmitted        = 0;
-    pDebugStats->batchDrawCallsStrictSingle     = 0;
-    pDebugStats->batchDrawCallsStrictMultiple   = 0;
+    pDebugStats->batchDrawCallsStrict           = 0;
     pDebugStats->batchDrawCallsSorted           = 0;
     pDebugStats->batchDrawCallsSorted           = 0;
     pDebugStats->batchFlushes                   = 0;
     pDebugStats->batchFlushes                   = 0;
     pDebugStats->batchBlendStateFlush           = 0;
     pDebugStats->batchBlendStateFlush           = 0;

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
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,11 +20,15 @@
 // IN THE SOFTWARE.
 // 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 )
     if ( argc == 2 )
         return object->addSprite( SpriteBatchItem::LogicalPosition() );
         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();
     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();
     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();
     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/
     // Fetch the batch layout type/
     CompositeSprite::BatchLayoutType batchLayoutType = CompositeSprite::getBatchLayoutTypeEnum( argv[2] );
     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() );
     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.
     // Fetch batch isolated.
     const bool batchIsolated = dAtob(argv[2]);
     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();
     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..
     // Fetch batch culling..
     const bool batchCulling = dAtob(argv[2]);
     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();
     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.
     // Fetch render sort mode.
     SceneRenderQueue::RenderSort batchSortMode = SceneRenderQueue::getRenderSortEnum( argv[2] );
     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() );
     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;
     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();
     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;
     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();
     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.
     // Fetch angle.
     const F32 angle = mDegToRad( dAtof(argv[2]) );
     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() );
     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]) );
     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]) );
     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] );
     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();
     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();
     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.
     // Fetch frame.
     const U32 frame = argc >=4 ? dAtoi(argv[3]) : 0;
     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();
     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.
     // Fetch frame.
     const U32 frame = dAtoi(argv[2]);
     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();
     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] );
     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();
     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();
     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.
     // Fetch visible.
     const bool visible = dAtob(argv[2]);
     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();
     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;
     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();
     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.
     // Fetch angle.
     const F32 angle = mDegToRad( dAtof(argv[2]) );
     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() );
     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.
     // Fetch depth.
     const F32 depth = dAtof(argv[2]);
     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();
     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;
     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();
     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.
     // Fetch flipX.
     const bool flipX = dAtob(argv[2]);
     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();
     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]);
     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();
     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;
     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();
     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] );
     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();
     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.
     // Fetch blend mode.
     const bool blendMode = dAtob(argv[2]);
     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();
    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.
     // Fetch source blend factor.
     GLenum blendFactor = SceneObject::getSrcBlendFactorEnum(argv[2]);
     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() );
    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.
     // Fetch destination blend factor.
     GLenum blendFactor = SceneObject::getDstBlendFactorEnum(argv[2]);
     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() );
    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.
     // The colors.
     F32 red;
     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.
     // Get Blend color.
     ColorF blendColor = object->getSpriteBlendColor();
     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]) );
     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();
     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]));
     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();
     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] ) );
     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();
     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] );
     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();
     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.
     // Fetch sprite batch query and clear results.
     SpriteBatchQuery* pSpriteBatchQuery = object->getSpriteBatchQuery( true );
     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.
     // Fetch sprite batch query and clear results.
     SpriteBatchQuery* pSpriteBatchQuery = object->getSpriteBatchQuery( true );
     SpriteBatchQuery* pSpriteBatchQuery = object->getSpriteBatchQuery( true );
@@ -1084,10 +1218,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.
     // Fetch sprite batch query and clear results.
     SpriteBatchQuery* pSpriteBatchQuery = object->getSpriteBatchQuery( true );
     SpriteBatchQuery* pSpriteBatchQuery = object->getSpriteBatchQuery( true );
@@ -1201,3 +1337,5 @@ ConsoleMethod(CompositeSprite, pickRay, const char*, 4, 6,  "(startx/y, endx/y)
     // Return buffer.
     // Return buffer.
     return pBuffer;
     return pBuffer;
 }
 }
+
+ConsoleMethodGroupEndWithDocs(CompositeSprite)

+ 161 - 137
engine/source/2d/sceneobject/ImageFont_ScriptBinding.h

@@ -1,137 +1,161 @@
-//-----------------------------------------------------------------------------
-// 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.
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    // Set Image.
-    return object->setImage( argv[2] );
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ImageFont, getImage, const char*, 2, 2,   "() - Gets current image asset..\n"
-                                                        "@return The current image asset.")
-{
-    // Get Image.
-    return object->getImage();
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ImageFont, setText, void, 3, 3,   "(text) - Set the text to render.\n")
-{
-    object->setText(argv[2]);
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ImageFont, getText, const char*, 2, 2,    "() - Gets the text being rendered.\n")
-{
-    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.")
-{
-
-    object->setTextAlignment( ImageFont::getTextAlignmentEnum(argv[2]) );
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ImageFont, getTextAlignment, const char*, 2, 2,   "() - Gets the text alignment.\n"
-                                                                "@return The text alignment of 'left', 'center' or 'right'.")
-{
-    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.")
-{
-    F32 width, height;
-
-    U32 elementCount = Utility::mGetStringElementCount(argv[2]);
-
-    // ("width height")
-    if ((elementCount == 2) && (argc == 3))
-    {
-        width = dAtof(Utility::mGetStringElement(argv[2], 0));
-        height = dAtof(Utility::mGetStringElement(argv[2], 1));
-    }
-
-    // (width, [height])
-    else if (elementCount == 1)
-    {
-        width = dAtof(argv[2]);
-
-        if (argc > 3)
-            height = dAtof(argv[3]);
-        else
-            height = width;
-    }
-    // Invalid
-    else
-    {
-        Con::warnf("ImageFont::setFontSize() - Invalid number of parameters!");
-        return;
-    }
-
-    // Set character size.
-    object->setFontSize(Vector2(width, height));
-
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ImageFont, getFontSize, const char*, 2, 2,    "() - Gets the size of the font characters.\n"
-                                                            "@return The size of the font characters.")
-{
-    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 character padding.
-   object->setFontPadding( dAtoi(argv[2]) );
-
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ImageFont, getFontPadding, S32, 2, 2,     "() - Gets the font padding.\n"
-                                                        "@return The font padding.")
-{
-    return object->getFontPadding();
-}
+//-----------------------------------------------------------------------------
+// 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(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] );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets current image asset..
+    @return The current image asset.
+*/
+ConsoleMethodWithDocs(ImageFont, getImage, ConsoleString, 2, 2, ())
+{
+    // Get Image.
+    return object->getImage();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Set the text to render.
+*/
+ConsoleMethodWithDocs(ImageFont, setText, ConsoleVoid, 3, 3, (text))
+{
+    object->setText(argv[2]);
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the text being rendered.
+*/
+ConsoleMethodWithDocs(ImageFont, getText, ConsoleString, 2, 2, ())
+{
+    return object->getText().getPtr8();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the text alignment.
+    @return The text alignment of 'left', 'center' or 'right'.
+*/
+ConsoleMethodWithDocs(ImageFont, getTextAlignment, ConsoleString, 2, 2, ())
+{
+    return ImageFont::getTextAlignmentDescription(object->getTextAlignment());
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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;
+
+    U32 elementCount = Utility::mGetStringElementCount(argv[2]);
+
+    // ("width height")
+    if ((elementCount == 2) && (argc == 3))
+    {
+        width = dAtof(Utility::mGetStringElement(argv[2], 0));
+        height = dAtof(Utility::mGetStringElement(argv[2], 1));
+    }
+
+    // (width, [height])
+    else if (elementCount == 1)
+    {
+        width = dAtof(argv[2]);
+
+        if (argc > 3)
+            height = dAtof(argv[3]);
+        else
+            height = width;
+    }
+    // Invalid
+    else
+    {
+        Con::warnf("ImageFont::setFontSize() - Invalid number of parameters!");
+        return;
+    }
+
+    // Set character size.
+    object->setFontSize(Vector2(width, height));
+
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the size of the font characters.
+    @return The size of the font characters.
+*/
+ConsoleMethodWithDocs(ImageFont, getFontSize, ConsoleString, 2, 2, ())
+{
+    return object->getFontSize().scriptThis();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the font padding.
+    @return The font padding.
+*/
+ConsoleMethodWithDocs(ImageFont, getFontPadding, ConsoleInt, 2, 2, ())
+{
+    return object->getFontPadding();
+}
+
+ConsoleMethodGroupEndWithDocs(ImageFont)

+ 237 - 195
engine/source/2d/sceneobject/ParticlePlayer_ScriptBinding.h

@@ -1,195 +1,237 @@
-//-----------------------------------------------------------------------------
-// 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.
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    object->setParticle( argv[2] );
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(ParticlePlayer, getParticleAsset, const char*, 2, 2,  "() Gets the particle asset Id.\n"
-                                                                    "@return The particle asset Id.")
-{
-    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.")
-{
-    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.")
-{
-    return object->getCameraIdleDistance();
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    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.")
-{
-    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.")
-{
-    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.")
-{
-    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.")
-{
-    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.")
-{
-    return object->getForceScale();
-}
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    // Fetch the reset-particle flag.
-    const bool resetParticles = argc >= 3 ? dAtob(argv[2]) : true;
-
-    return object->play( resetParticles );
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-    // Fetch the wait-for-particles flag.
-   const bool waitForParticles = argc >= 3 ? dAtob(argv[2]) : true;
-
-   // Fetch the kill-effect flag.
-   const bool killEffect = argc >= 4 ? dAtob(argv[3]) : false;
-
-   // Stop playing.
-   object->stop( 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." )
-{
-   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.")
-{
-    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.")
-{
-    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.")
-{
-    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.")
-{
-    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.")
-{
-    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.")
-{
-    return object->getEmitterVisible( dAtob(argv[2]) );
-}
+//-----------------------------------------------------------------------------
+// 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(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] );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the particle asset Id.
+    @return The particle asset Id.
+*/
+ConsoleMethodWithDocs(ParticlePlayer, getParticleAsset, ConsoleString, 2, 2, ())
+{
+    return object->getParticle();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+//-----------------------------------------------------------------------------
+
+/*! 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;
+
+    return object->play( resetParticles );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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;
+
+   // Fetch the kill-effect flag.
+   const bool killEffect = argc >= 4 ? dAtob(argv[3]) : false;
+
+   // Stop playing.
+   object->stop( waitForParticles, killEffect );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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)

+ 223 - 194
engine/source/2d/sceneobject/SceneObjectSet_ScriptBinding.h

@@ -1,194 +1,223 @@
-//-----------------------------------------------------------------------------
-// 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.
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(SceneObjectSet, dumpObjects, void, 2, 2, "() Dumps the object data within the set\n"
-              "@return No return value")
-{
-   SceneObjectSet::iterator itr;
-   for(itr = object->begin(); itr != object->end(); itr++)
-   {
-      SceneObject *obj = *itr;
-      bool isSet = dynamic_cast<SceneObjectSet *>(obj) != 0;
-      const char *name = obj->getName();
-      if(name)
-         Con::printf("   %d,\"%s\": %s %s", obj->getId(), name,
-         obj->getClassName(), isSet ? "(g)":"");
-      else
-         Con::printf("   %d: %s %s", obj->getId(), obj->getClassName(),
-         isSet ? "(g)" : "");
-   }
-}
-
-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")
-{
-   for(S32 i = 2; i < argc; i++)
-   {
-      SceneObject *obj = Sim::findObject<SceneObject>(argv[i]);
-      if(obj)
-         object->addObject(obj);
-      else
-         Con::printf("Set::add: Object \"%s\" doesn't exist", argv[i]);
-   }
-}
-
-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")
-{
-   for(S32 i = 2; i < argc; i++)
-   {
-      SceneObject *obj = Sim::findObject<SceneObject>(argv[i]);
-      if(obj && object->find(object->begin(),object->end(),obj) != object->end())
-         object->removeObject(obj);
-      else
-         Con::printf("Set::remove: Object \"%s\" does not exist in set", argv[i]);
-   }
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(SceneObjectSet, deleteObjects, void, 2, 2,    "() Deletes all the objects in the SceneObjectSet.\n"
-                                                    "@return No return value")
-{
-    object->deleteObjects();
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(SceneObjectSet, clear, void, 2, 2, "() Clears the SceneObjectSet\n"
-              "@return No return value")
-{
-   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" )
-{
-   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.")
-{
-   SceneObject* pObject = Sim::findObject<SceneObject>(argv[2]);
-   SceneObject* pTarget	 = Sim::findObject<SceneObject>(argv[3]);
-
-   if(pObject && pTarget)
-   {
-      object->reOrder(pObject,pTarget);
-   }
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(SceneObjectSet, getCount, S32, 2, 2, "() @return Returns the number of objects in the SceneObjectSet")
-{
-   return object->size();
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(SceneObjectSet, getObject, S32, 3, 3, "(objIndex) @return Returns the ID of the desired object or -1 on failure")
-{
-   S32 objectIndex = dAtoi(argv[2]);
-   if(objectIndex < 0 || objectIndex >= S32(object->size()))
-   {
-      Con::printf("Set::getObject index out of range.");
-      return -1;
-   }
-   return ((*object)[objectIndex])->getId();
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(SceneObjectSet, isMember, bool, 3, 3, "(object) @return Returns true if specified object is a member of the set, and false otherwise")
-{
-   SceneObject *testObject = Sim::findObject<SceneObject>(argv[2]);
-   if(!testObject)
-   {
-      Con::printf("SceneObjectSet::isMember: %s is not an object.", argv[2]);
-      return false;
-   }
-
-   for(SceneObjectSet::iterator i = object->begin(); i != object->end(); i++)
-   {
-      if(*i == testObject)
-      {
-         return true;
-      }
-   }
-
-   return false;
-}
-
-//-----------------------------------------------------------------------------
-
-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.")
-{
-
-   StringTableEntry pcName = StringTable->insert(argv[2]);
-   bool searchChildren = false;
-   if (argc > 3)
-      searchChildren = dAtob(argv[3]);
-
-   SceneObject* child = object->findObjectByInternalName(pcName, searchChildren);
-   if(child)
-      return child->getId();
-   return 0;
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(SceneObjectSet, bringToFront, void, 3, 3, "(object) Brings object to front of set.\n"
-              "@return No return value.")
-{
-   SceneObject *obj = Sim::findObject<SceneObject>(argv[2]);
-   if(!obj)
-      return;
-   object->bringObjectToFront(obj);
-}
-
-//-----------------------------------------------------------------------------
-
-ConsoleMethod(SceneObjectSet, pushToBack, void, 3, 3, "(object) Sends item to back of set.\n"
-              "@return No return value.")
-{
-   SceneObject *obj = Sim::findObject<SceneObject>(argv[2]);
-   if(!obj)
-      return;
-   object->pushObjectToBack(obj);
-}
+//-----------------------------------------------------------------------------
+// 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(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++)
+   {
+      SceneObject *obj = *itr;
+      bool isSet = dynamic_cast<SceneObjectSet *>(obj) != 0;
+      const char *name = obj->getName();
+      if(name)
+         Con::printf("   %d,\"%s\": %s %s", obj->getId(), name,
+         obj->getClassName(), isSet ? "(g)":"");
+      else
+         Con::printf("   %d: %s %s", obj->getId(), obj->getClassName(),
+         isSet ? "(g)" : "");
+   }
+}
+
+/*! 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++)
+   {
+      SceneObject *obj = Sim::findObject<SceneObject>(argv[i]);
+      if(obj)
+         object->addObject(obj);
+      else
+         Con::printf("Set::add: Object \"%s\" doesn't exist", argv[i]);
+   }
+}
+
+/*! 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++)
+   {
+      SceneObject *obj = Sim::findObject<SceneObject>(argv[i]);
+      if(obj && object->find(object->begin(),object->end(),obj) != object->end())
+         object->removeObject(obj);
+      else
+         Con::printf("Set::remove: Object \"%s\" does not exist in set", argv[i]);
+   }
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Deletes all the objects in the SceneObjectSet.
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneObjectSet, deleteObjects, ConsoleVoid, 2, 2, ())
+{
+    object->deleteObjects();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Clears the SceneObjectSet
+    @return No return value
+*/
+ConsoleMethodWithDocs(SceneObjectSet, clear, ConsoleVoid, 2, 2, ())
+{
+   object->clear();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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 );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]);
+
+   if(pObject && pTarget)
+   {
+      object->reOrder(pObject,pTarget);
+   }
+}
+
+//-----------------------------------------------------------------------------
+
+/*! @return Returns the number of objects in the SceneObjectSet
+*/
+ConsoleMethodWithDocs(SceneObjectSet, getCount, ConsoleInt, 2, 2, ())
+{
+   return object->size();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! @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()))
+   {
+      Con::printf("Set::getObject index out of range.");
+      return -1;
+   }
+   return ((*object)[objectIndex])->getId();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! @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)
+   {
+      Con::printf("SceneObjectSet::isMember: %s is not an object.", argv[2]);
+      return false;
+   }
+
+   for(SceneObjectSet::iterator i = object->begin(); i != object->end(); i++)
+   {
+      if(*i == testObject)
+      {
+         return true;
+      }
+   }
+
+   return false;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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]);
+   bool searchChildren = false;
+   if (argc > 3)
+      searchChildren = dAtob(argv[3]);
+
+   SceneObject* child = object->findObjectByInternalName(pcName, searchChildren);
+   if(child)
+      return child->getId();
+   return 0;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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)
+      return;
+   object->bringObjectToFront(obj);
+}
+
+//-----------------------------------------------------------------------------
+
+/*! 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


+ 67 - 32
engine/source/2d/sceneobject/Scroller_ScriptBinding.h

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,99 +20,127 @@
 // IN THE SOFTWARE.
 // 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]) );
    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]) );
    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();
    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();
    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());
    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]));
    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();
    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();
    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());
    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]));
    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();
    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();
    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.
    // The new position.
    F32 repeatX;
    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.
    // The new position.
    F32 scrollX;
    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.
     // Renormalise Angle.
     F32 angle = mFmod(dAtof(argv[2]), 360.0f);
     F32 angle = mFmod(dAtof(argv[2]), 360.0f);
@@ -202,9 +234,11 @@ ConsoleMethod(Scroller, setScrollPolar, void, 4, 4, "(angle, scrollSpeed) Sets A
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
 
 
-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.
    // The new position.
    F32 scrollX;
    F32 scrollX;
@@ -238,3 +272,4 @@ ConsoleMethod(Scroller, setScrollPosition, void, 3, 4, "(positionX / positionY)
    object->setScrollPosition(scrollX, scrollY);
    object->setScrollPosition(scrollX, scrollY);
 }
 }
 
 
+ConsoleMethodGroupEndWithDocs(Scroller)

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,9 +20,13 @@
 // IN THE SOFTWARE.
 // 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.
     // Calculate Element Count.
     const U32 elementCount = Utility::mGetStringElementCount( argv[2] );
     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.
     // Set Polygon Primitive.
     object->setPolyPrimitive( dAtoi(argv[2]) );
     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.
     // Set Collision Poly Custom.
     object->setPolyCustom( dAtoi(argv[2]), argv[3] );
     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.
    // 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.
    // 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.
     // The colors.
     F32 red;
     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.
     // Get line color.
     ColorF color = object->getLineColor();
     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.
     // Set Line Alpha.
     object->setLineAlpha( dAtof(argv[2]) );
     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.
     // The colors.
     F32 red;
     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.
     // Get line color.
     ColorF color = object->getFillColor();
     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.
     // Set Fill Alpha.
     object->setFillAlpha( dAtof(argv[2]) );
     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.
     // Set Fill Mode.
     object->setFillMode( dAtob(argv[2]) );
     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();
     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]));
     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();
     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();
     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]));
     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();
     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();
     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.
     // Set Flip.
     object->setFlip( dAtob(argv[2]), dAtob(argv[3]) );
     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.
     // Create Returnable Buffer.
     char* pBuffer = Con::getReturnBuffer(32);
     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.
     // Set Flip.
     object->setFlipX( dAtob(argv[2]) );
     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.
     // Set Flip.
     object->setFlipY( dAtob(argv[2]) );
     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();
    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();
    return object->getFlipY();
-}
+}
+
+ConsoleMethodGroupEndWithDocs(ShapeVector)

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,11 +20,14 @@
 // IN THE SOFTWARE.
 // 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.
     // Set Flip.
     object->setFlip( dAtob(argv[2]), dAtob(argv[3]) );
     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.
     // Create Returnable Buffer.
     char* pBuffer = Con::getReturnBuffer(32);
     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.
     // Set Flip.
     object->setFlipX( dAtob(argv[2]) );
     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.
     // Set Flip.
     object->setFlipY( dAtob(argv[2]) );
     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();
    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();
    return object->getFlipY();
-}
+}
+
+ConsoleMethodGroupEndWithDocs(Sprite)

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

@@ -20,9 +20,15 @@
 // IN THE SOFTWARE.
 // 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.
    // If the value isn't specified, the default is true.
    bool callback = 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.
    // If the value isn't specified, the default is true.
    bool callback = 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.
    // If the value isn't specified, the default is true.
    bool callback = 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();
    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();
    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();
    return object->getLeaveCallback();
 }
 }
 
 
+//-----------------------------------------------------------------------------
+
+ConsoleMethodGroupEndWithDocs(Trigger)

+ 16 - 7
engine/source/assets/assetBase.cc

@@ -44,6 +44,15 @@ IMPLEMENT_CONOBJECT( AssetBase );
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
+StringTableEntry assetNameField = StringTable->insert( "AssetName" );
+StringTableEntry assetDescriptionField = StringTable->insert( "AssetDescription" );
+StringTableEntry assetCategoryField = StringTable->insert( "AssetCategory" );
+StringTableEntry assetAutoUnloadField = StringTable->insert( "AssetAutoUnload" );
+StringTableEntry assetInternalField = StringTable->insert( "AssetInternal" );
+StringTableEntry assetPrivateField = StringTable->insert( "AssetPrivate" );
+
+//-----------------------------------------------------------------------------
+
 AssetBase::AssetBase() :
 AssetBase::AssetBase() :
     mAcquireReferenceCount( 0 ),
     mAcquireReferenceCount( 0 ),
     mpOwningAssetManager( NULL ),
     mpOwningAssetManager( NULL ),
@@ -71,12 +80,12 @@ void AssetBase::initPersistFields()
     Parent::initPersistFields();
     Parent::initPersistFields();
 
 
     // Asset configuration.
     // Asset configuration.
-    addProtectedField( ASSET_BASE_ASSETNAME_FIELD, TypeString, 0, &setAssetName, &getAssetName, &writeAssetName, "The name of the asset.  The is not a unique identification like an asset Id." );
-    addProtectedField( ASSET_BASE_ASSETDESCRIPTION_FIELD, TypeString, 0, &setAssetDescription, &getAssetDescription, &writeAssetDescription, "The simple description of the asset contents." );
-    addProtectedField( ASSET_BASE_CATEGORY_FIELD, TypeString, 0, &setAssetCategory, &getAssetCategory, &writeAssetCategory, "An arbitrary category that can be used to categorized assets." );
-    addProtectedField( ASSET_BASE_AUTOUNLOAD_FIELD, TypeBool, 0, &setAssetAutoUnload, &getAssetAutoUnload, &writeAssetAutoUnload, "Whether the asset is automatically unloaded when an asset is released and has no other acquisitions or not." );
-    addProtectedField( ASSET_BASE_ASSETINTERNAL_FIELD, TypeBool, 0, &setAssetInternal, &getAssetInternal, &writeAssetInternal, "Whether the asset is used internally only or not." );
-    addProtectedField( ASSET_BASE_ASSETPRIVATE_FIELD, TypeBool, 0, &defaultProtectedNotSetFn, &getAssetPrivate, &defaultProtectedNotWriteFn, "Whether the asset is private or not." );
+    addProtectedField( assetNameField, TypeString, 0, &setAssetName, &getAssetName, &writeAssetName, "The name of the asset.  The is not a unique identification like an asset Id." );
+    addProtectedField( assetDescriptionField, TypeString, 0, &setAssetDescription, &getAssetDescription, &writeAssetDescription, "The simple description of the asset contents." );
+    addProtectedField( assetCategoryField, TypeString, 0, &setAssetCategory, &getAssetCategory, &writeAssetCategory, "An arbitrary category that can be used to categorized assets." );
+    addProtectedField( assetAutoUnloadField, TypeBool, 0, &setAssetAutoUnload, &getAssetAutoUnload, &writeAssetAutoUnload, "Whether the asset is automatically unloaded when an asset is released and has no other acquisitions or not." );
+    addProtectedField( assetInternalField, TypeBool, 0, &setAssetInternal, &getAssetInternal, &writeAssetInternal, "Whether the asset is used internally only or not." );
+    addProtectedField( assetPrivateField, TypeBool, 0, &defaultProtectedNotSetFn, &getAssetPrivate, &defaultProtectedNotWriteFn, "Whether the asset is private or not." );
 }
 }
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
@@ -340,4 +349,4 @@ void AssetBase::setOwned( AssetManager* pAssetManager, AssetDefinition* pAssetDe
 
 
     // Flag asset as initialized.
     // Flag asset as initialized.
     mAssetInitialized = true;
     mAssetInitialized = true;
-}
+}

+ 13 - 6
engine/source/assets/assetBase.h

@@ -41,12 +41,19 @@ class AssetManager;
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
-#define ASSET_BASE_ASSETNAME_FIELD         "AssetName"
-#define ASSET_BASE_ASSETDESCRIPTION_FIELD  "AssetDescription"
-#define ASSET_BASE_CATEGORY_FIELD          "AssetCategory"
-#define ASSET_BASE_ASSETINTERNAL_FIELD     "AssetInternal"
-#define ASSET_BASE_ASSETPRIVATE_FIELD      "AssetPrivate"
-#define ASSET_BASE_AUTOUNLOAD_FIELD        "AssetAutoUnload"
+extern StringTableEntry assetNameField;
+extern StringTableEntry assetDescriptionField;
+extern StringTableEntry assetCategoryField;
+extern StringTableEntry assetInternalField;
+extern StringTableEntry assetPrivateField;
+extern StringTableEntry assetAutoUnloadField;
+
+//#define ASSET_BASE_ASSETNAME_FIELD         "AssetName"
+//#define ASSET_BASE_ASSETDESCRIPTION_FIELD  "AssetDescription"
+//#define ASSET_BASE_ASSETCATEGORY_FIELD     "AssetCategory"
+//#define ASSET_BASE_ASSETINTERNAL_FIELD     "AssetInternal"
+//#define ASSET_BASE_ASSETPRIVATE_FIELD      "AssetPrivate"
+//#define ASSET_BASE_AUTOUNLOAD_FIELD        "AssetAutoUnload"
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,16 +20,24 @@
 // IN THE SOFTWARE.
 // 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();
     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();
     return object->getAssetId();
-}
+}
+
+ConsoleMethodGroupEndWithDocs(AssetBase)

+ 5 - 0
engine/source/assets/assetFieldTypes.cc

@@ -50,6 +50,11 @@
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
+StringTableEntry assetLooseIdSignature = StringTable->insert( ASSET_ID_SIGNATURE );
+StringTableEntry assetLooseFileSignature = StringTable->insert( ASSET_LOOSEFILE_SIGNATURE );
+
+//-----------------------------------------------------------------------------
+
 ConsoleType( assetLooseFilePath, TypeAssetLooseFilePath, sizeof(StringTableEntry), ASSET_LOOSE_FILE_FIELD_PREFIX )
 ConsoleType( assetLooseFilePath, TypeAssetLooseFilePath, sizeof(StringTableEntry), ASSET_LOOSE_FILE_FIELD_PREFIX )
 ConsoleType( assetIdString, TypeAssetId, sizeof(StringTableEntry), ASSET_ID_FIELD_PREFIX )
 ConsoleType( assetIdString, TypeAssetId, sizeof(StringTableEntry), ASSET_ID_FIELD_PREFIX )
 
 

+ 5 - 0
engine/source/assets/assetFieldTypes.h

@@ -48,4 +48,9 @@ DefineConsoleType( TypeAssetLooseFilePath )
 #define ASSET_LOOSEFILE_SIGNATURE       "@assetFile"
 #define ASSET_LOOSEFILE_SIGNATURE       "@assetFile"
 #define ASSET_LOOSE_FILE_FIELD_PREFIX   "@assetFile="
 #define ASSET_LOOSE_FILE_FIELD_PREFIX   "@assetFile="
 
 
+//-----------------------------------------------------------------------------
+
+extern StringTableEntry assetLooseIdSignature;
+extern StringTableEntry assetLooseFileSignature;
+
 #endif // _ASSET_FIELD_TYPES_H_
 #endif // _ASSET_FIELD_TYPES_H_

+ 6 - 6
engine/source/assets/assetManager.cc

@@ -795,7 +795,7 @@ bool AssetManager::renameDeclaredAsset( const char* pAssetIdFrom, const char* pA
     assetDeclaredUpdateVisitor.setAssetIdTo( assetIdTo );
     assetDeclaredUpdateVisitor.setAssetIdTo( assetIdTo );
 
 
     // Update asset file declaration.
     // Update asset file declaration.
-    if ( !assetDeclaredUpdateVisitor.parse( pAssetDefinition->mAssetBaseFilePath ) )
+    if ( !mTaml.parse( pAssetDefinition->mAssetBaseFilePath, assetDeclaredUpdateVisitor ) )
     {
     {
         // No, so warn.
         // No, so warn.
         Con::warnf("Asset Manager: Cannot rename declared asset Id '%s' to asset Id '%s' as the declared asset file could not be parsed: %s",
         Con::warnf("Asset Manager: Cannot rename declared asset Id '%s' to asset Id '%s' as the declared asset file could not be parsed: %s",
@@ -1192,7 +1192,7 @@ bool AssetManager::refreshAsset( const char* pAssetId )
             TamlAssetDeclaredVisitor assetDeclaredVisitor;
             TamlAssetDeclaredVisitor assetDeclaredVisitor;
 
 
             // Parse the filename.
             // Parse the filename.
-            if ( !assetDeclaredVisitor.parse( pAssetDefinition->mAssetBaseFilePath ) )
+            if ( !mTaml.parse( pAssetDefinition->mAssetBaseFilePath, assetDeclaredVisitor ) )
             {
             {
                 // Warn.
                 // Warn.
                 Con::warnf( "Asset Manager: Failed to parse file containing asset declaration: '%s'.\nDependencies are now incorrect!", pAssetDefinition->mAssetBaseFilePath );
                 Con::warnf( "Asset Manager: Failed to parse file containing asset declaration: '%s'.\nDependencies are now incorrect!", pAssetDefinition->mAssetBaseFilePath );
@@ -2381,7 +2381,7 @@ bool AssetManager::scanDeclaredAssets( const char* pPath, const char* pExtension
         dSprintf( assetFileBuffer, sizeof(assetFileBuffer), "%s/%s", fileInfo.pFullPath, fileInfo.pFileName );
         dSprintf( assetFileBuffer, sizeof(assetFileBuffer), "%s/%s", fileInfo.pFullPath, fileInfo.pFileName );
 
 
         // Parse the filename.
         // Parse the filename.
-        if ( !assetDeclaredVisitor.parse( assetFileBuffer ) )
+        if ( !mTaml.parse( assetFileBuffer, assetDeclaredVisitor ) )
         {
         {
             // Warn.
             // Warn.
             Con::warnf( "Asset Manager: Failed to parse file containing asset declaration: '%s'.", assetFileBuffer );
             Con::warnf( "Asset Manager: Failed to parse file containing asset declaration: '%s'.", assetFileBuffer );
@@ -2575,7 +2575,7 @@ bool AssetManager::scanReferencedAssets( const char* pPath, const char* pExtensi
         typeReferenceFilePath referenceFilePath = StringTable->insert( assetFileBuffer );
         typeReferenceFilePath referenceFilePath = StringTable->insert( assetFileBuffer );
 
 
         // Parse the filename.
         // Parse the filename.
-        if ( !assetReferencedVisitor.parse( referenceFilePath ) )
+        if ( !mTaml.parse( referenceFilePath, assetReferencedVisitor ) )
         {
         {
             // Warn.
             // Warn.
             Con::warnf( "Asset Manager: Failed to parse file containing asset references: '%s'.", referenceFilePath );
             Con::warnf( "Asset Manager: Failed to parse file containing asset references: '%s'.", referenceFilePath );
@@ -2730,7 +2730,7 @@ void AssetManager::renameAssetReferences( StringTableEntry assetIdFrom, StringTa
         }
         }
 
 
         // Update asset file declaration.
         // Update asset file declaration.
-        if ( !assetReferencedUpdateVisitor.parse( referencedAssetItr->value ) )
+        if ( !mTaml.parse( referencedAssetItr->value, assetReferencedUpdateVisitor ) )
         {
         {
             // No, so warn.
             // No, so warn.
             Con::warnf("Asset Manager: Cannot rename referenced asset Id '%s' to asset Id '%s' as the referenced asset file could not be parsed: %s",
             Con::warnf("Asset Manager: Cannot rename referenced asset Id '%s' to asset Id '%s' as the referenced asset file could not be parsed: %s",
@@ -2780,7 +2780,7 @@ void AssetManager::removeAssetReferences( StringTableEntry assetId )
         }
         }
 
 
         // Update asset file declaration.
         // Update asset file declaration.
-        if ( !assetReferencedUpdateVisitor.parse( referencedAssetItr->value ) )
+        if ( !mTaml.parse( referencedAssetItr->value, assetReferencedUpdateVisitor ) )
         {
         {
             // No, so warn.
             // No, so warn.
             Con::warnf("Asset Manager: Cannot remove referenced asset Id '%s' as the referenced asset file could not be parsed: %s",
             Con::warnf("Asset Manager: Cannot remove referenced asset Id '%s' as the referenced asset file could not be parsed: %s",

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,9 +20,13 @@
 // IN THE SOFTWARE.
 // 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.
     // Fetch module definition.
     ModuleDefinition* pModuleDefinition = Sim::findObject<ModuleDefinition>( argv[2] );
     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.
     // Fetch module definition.
     ModuleDefinition* pModuleDefinition = Sim::findObject<ModuleDefinition>( argv[2] );
     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.
     // Fetch module definition.
     ModuleDefinition* pModuleDefinition = Sim::findObject<ModuleDefinition>( argv[2] );
     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.
     // Fetch asset.
     AssetBase* pAssetBase = Sim::findObject<AssetBase>( argv[2] );
     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.
     // Fetch module definition.
     ModuleDefinition* pModuleDefinition = Sim::findObject<ModuleDefinition>( argv[2] );
     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.
     // Remove the declared asset Id.
     return object->removeDeclaredAsset( argv[2] );
     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] );
     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] );
     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] );
     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] );
     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] );
     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] );
     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.
     // Fetch module definition.
     ModuleDefinition* pModuleDefinition = object->getAssetModuleDefinition( argv[2] );
     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] );
     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] );
     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] );
     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] );
     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] );
     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] );
     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] );
     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] );
     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.
     // Fetch asset Id.
     const char* pAssetId = argv[2];
     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.
     // Release asset.
     return object->releaseAsset( argv[2] );
     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.
     // Purge assets.
     object->purgeAssets();
     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.
     // Fetch asset Id.
     const char* pAssetId = argv[2];
     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] );
     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.
     // Refresh assets without flag.
     if ( argc == 2 )
     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.
     // Save asset tags.
     return object->saveAssetTags();
     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.
     // Restore asset tags.
     return object->restoreAssetTags();
     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.
     // Fetch the asset tags manifest.
     AssetTagsManifest* pAssetTagsManifest = object->getAssetTags();
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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.
     // Fetch asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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();
     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();
     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();
     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();
     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();
     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();
     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();
     return object->dumpDeclaredAssets();
 }
 }
+
+ConsoleMethodGroupEndWithDocs(AssetManager)

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,17 +20,23 @@
 // IN THE SOFTWARE.
 // 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();
     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.
     // Find asset query.
     AssetQuery* pAssetQuery = Sim::findObject<AssetQuery>( argv[2] );
     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();
     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.
     // Fetch result index.
     const S32 resultIndex = dAtoi(argv[2]);
     const S32 resultIndex = dAtoi(argv[2]);
@@ -76,3 +86,5 @@ ConsoleMethod(AssetQuery, getAsset, const char*, 3, 3,  "(int resultIndex) - Get
 
 
     return object->at(resultIndex);
     return object->at(resultIndex);
 }
 }
+
+ConsoleMethodGroupEndWithDocs(AssetQuery)

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,54 +20,68 @@
 // IN THE SOFTWARE.
 // 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] );
     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] );
     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] );
     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] );
     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();
     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.
     // Fetch tag index.
     const U32 tagIndex = dAtoi(argv[2]);
     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] );
     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.
     // Fetch asset Id.
     const char* pAssetId = argv[2];
     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] );
     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] );
     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] );
     return object->hasTag( argv[2], argv[3] );
-}
+}
+
+ConsoleMethodGroupEndWithDocs(AssetTagsManifest)

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

@@ -23,16 +23,12 @@
 #ifndef _TAML_ASSET_DECLARED_UPDATE_VISITOR_H_
 #ifndef _TAML_ASSET_DECLARED_UPDATE_VISITOR_H_
 #define _TAML_ASSET_DECLARED_UPDATE_VISITOR_H_
 #define _TAML_ASSET_DECLARED_UPDATE_VISITOR_H_
 
 
-#ifndef _TAML_XMLPARSER_H_
-#include "persistence//taml/tamlXmlParser.h"
+#ifndef _TAML_VISITOR_H_
+#include "persistence/taml/tamlVisitor.h"
 #endif
 #endif
 
 
-#ifndef _STRINGUNIT_H_
-#include "string/stringUnit.h"
-#endif
-
-#ifndef _STRINGTABLE_H_
-#include "string/stringTable.h"
+#ifndef _TAML_PARSER_H_
+#include "persistence\/taml/tamlParser.h"
 #endif
 #endif
 
 
 #ifndef _ASSET_FIELD_TYPES_H_
 #ifndef _ASSET_FIELD_TYPES_H_
@@ -44,64 +40,18 @@
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
-class TamlAssetDeclaredUpdateVisitor : public TamlXmlVisitor
+class TamlAssetDeclaredUpdateVisitor : public TamlVisitor
 {
 {
-protected:
-    virtual bool visit( TiXmlElement* pXmlElement, TamlXmlParser& xmlParser )
-    {
-        // Debug Profiling.
-        PROFILE_SCOPE(TamlAssetDeclaredUpdateVisitor_VisitElement);
-
-        // Finish if this is not the root element.
-        if ( pXmlElement != pXmlElement->GetDocument()->RootElement() )
-            return true;
-
-        // Fetch asset field names.
-        StringTableEntry assetNameField = StringTable->insert( ASSET_BASE_ASSETNAME_FIELD );
-
-        // Iterate attributes.
-        for ( TiXmlAttribute* pAttribute = pXmlElement->FirstAttribute(); pAttribute; pAttribute = pAttribute->Next() )
-        {
-            // Insert attribute name.
-            StringTableEntry attributeName = StringTable->insert( pAttribute->Name() );
-
-            // Asset name?
-            if ( attributeName != assetNameField )
-                continue;
-
-            // Is this the asset Id we're looking for?
-            if ( dStricmp( pAttribute->Value(), mAssetNameFrom ) != 0 )
-            {
-                // No, so warn.
-                Con::warnf("Cannot rename asset Name '%s' to asset Name '%s' as the declared asset Name was %s",
-                    mAssetNameFrom, mAssetNameTo, pAttribute->Value() );
-
-                // Stop processing!
-                return false;
-            }
-
-            // Assign new value.
-            pAttribute->SetValue( mAssetNameTo );
-
-            // Stop processing!
-            return false;
-        }
-
-        return true;
-    }
-
-    virtual bool visit( TiXmlAttribute* pAttribute, TamlXmlParser& xmlParser ) { return true; }
+private:    
+    StringTableEntry mAssetIdFrom;
+    StringTableEntry mAssetIdTo;
+    StringTableEntry mAssetNameFrom;
+    StringTableEntry mAssetNameTo;
 
 
 public:
 public:
     TamlAssetDeclaredUpdateVisitor() {}
     TamlAssetDeclaredUpdateVisitor() {}
     virtual ~TamlAssetDeclaredUpdateVisitor() {}
     virtual ~TamlAssetDeclaredUpdateVisitor() {}
 
 
-    bool parse( const char* pFilename )
-    {
-        TamlXmlParser parser;
-        return parser.parse( pFilename, *this, true );
-    }
-
     void setAssetIdFrom( const char* pAssetIdFrom )
     void setAssetIdFrom( const char* pAssetIdFrom )
     {
     {
         // Sanity!
         // Sanity!
@@ -148,11 +98,35 @@ public:
     }
     }
     const char* getAssetIdTo( void ) const { return mAssetIdTo; }
     const char* getAssetIdTo( void ) const { return mAssetIdTo; }
 
 
-private:    
-    StringTableEntry mAssetIdFrom;
-    StringTableEntry mAssetIdTo;
-    StringTableEntry mAssetNameFrom;
-    StringTableEntry mAssetNameTo;
+    virtual bool wantsPropertyChanges( void ) { return true; }
+    virtual bool wantsRootOnly( void ) { return true; }
+
+    virtual bool visit( const TamlParser& parser, TamlVisitor::PropertyState& propertyState )
+    {
+        // Debug Profiling.
+        PROFILE_SCOPE(TamlAssetDeclaredUpdateVisitor_Visit);
+
+        // Finish if not the asset name field.
+        if ( propertyState.getPropertyName() != assetNameField )
+            return true;
+
+        // Is this the asset Id we're looking for?
+        if ( dStricmp( propertyState.getPropertyValue(), mAssetNameFrom ) != 0 )
+        {
+            // No, so warn.
+            Con::warnf("Cannot rename asset Name '%s' to asset Name '%s' as the declared asset Name was %s",
+                mAssetNameFrom, mAssetNameTo, propertyState.getPropertyValue() );
+
+            // Stop processing!
+            return false;
+        }
+
+        // Assign new value.
+        propertyState.updatePropertyValue( mAssetNameTo );
+
+        // Stop processing!
+        return false;
+    }
 };
 };
 
 
 #endif // _TAML_ASSET_DECLARED_UPDATE_VISITOR_H_
 #endif // _TAML_ASSET_DECLARED_UPDATE_VISITOR_H_

+ 78 - 130
engine/source/assets/tamlAssetDeclaredVisitor.h

@@ -23,8 +23,12 @@
 #ifndef _TAML_ASSET_DECLARED_VISITOR_H_
 #ifndef _TAML_ASSET_DECLARED_VISITOR_H_
 #define _TAML_ASSET_DECLARED_VISITOR_H_
 #define _TAML_ASSET_DECLARED_VISITOR_H_
 
 
-#ifndef _TAML_XMLPARSER_H_
-#include "persistence//taml/tamlXmlParser.h"
+#ifndef _TAML_VISITOR_H_
+#include "persistence/taml/tamlVisitor.h"
+#endif
+
+#ifndef _TAML_PARSER_H_
+#include "persistence\/taml/tamlParser.h"
 #endif
 #endif
 
 
 #ifndef _ASSET_FIELD_TYPES_H_
 #ifndef _ASSET_FIELD_TYPES_H_
@@ -44,113 +48,104 @@
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
-class TamlAssetDeclaredVisitor : public TamlXmlVisitor
+class TamlAssetDeclaredVisitor : public TamlVisitor
 {
 {
-protected:
-    virtual bool visit( TiXmlElement* pXmlElement, TamlXmlParser& xmlParser )
-    {
-        // Debug Profiling.
-        PROFILE_SCOPE(TamlAssetDeclaredVisitor_VisitElement);
+public:
+    typedef StringTableEntry typeAssetId;
+    typedef Vector<typeAssetId> typeAssetIdVector;
+    typedef Vector<StringTableEntry> typeLooseFileVector;
 
 
-        // Finish if this is not the root element.
-        if ( pXmlElement != pXmlElement->GetDocument()->RootElement() )
-            return true;
+private:
+    AssetDefinition         mAssetDefinition;
+    typeAssetIdVector       mAssetDependencies;
+    typeLooseFileVector     mAssetLooseFiles;
+
+public:
+    TamlAssetDeclaredVisitor() { mAssetDefinition.reset(); }
+    virtual ~TamlAssetDeclaredVisitor() {}
+
+
+    inline AssetDefinition& getAssetDefinition( void ) { return mAssetDefinition; }
+    inline typeAssetIdVector& getAssetDependencies( void ) { return mAssetDependencies; }
+    inline typeLooseFileVector& getAssetLooseFiles( void ) { return mAssetLooseFiles; }
+
+    void clear( void ) { mAssetDefinition.reset(); mAssetDependencies.clear(); mAssetLooseFiles.clear(); }
+
+    virtual bool wantsPropertyChanges( void ) { return false; }
+    virtual bool wantsRootOnly( void ) { return false; }
 
 
-        // Fetch asset field names.
-        StringTableEntry assetNameField = StringTable->insert( ASSET_BASE_ASSETNAME_FIELD );
-        StringTableEntry assetDescriptionField = StringTable->insert( ASSET_BASE_ASSETDESCRIPTION_FIELD );
-        StringTableEntry assetCategoryField = StringTable->insert( ASSET_BASE_CATEGORY_FIELD );
-        StringTableEntry assetAutoUnloadField = StringTable->insert( ASSET_BASE_AUTOUNLOAD_FIELD );
-        StringTableEntry assetInternalField = StringTable->insert( ASSET_BASE_ASSETINTERNAL_FIELD );
+    virtual bool visit( const TamlParser& parser, TamlVisitor::PropertyState& propertyState )
+    {    
+        // Debug Profiling.
+        PROFILE_SCOPE(TamlAssetDeclaredVisitor_Visit);
+
+        // Fetch property name and value.
+        StringTableEntry propertyName = propertyState.getPropertyName();
+        const char* pPropertyValue = propertyState.getPropertyValue();
 
 
-        // Iterate attributes.
-        for ( TiXmlAttribute* pAttribute = pXmlElement->FirstAttribute(); pAttribute; pAttribute = pAttribute->Next() )
+        // Is this the root object?
+        if ( propertyState.isRootObject() )
         {
         {
-            // Insert attribute name.
-            StringTableEntry attributeName = StringTable->insert( pAttribute->Name() );
+            // Yes, so is the asset type set yet?
+            if ( mAssetDefinition.mAssetType == StringTable->EmptyString )
+            {
+                // No, set set asset type and base file-path.
+                mAssetDefinition.mAssetType = propertyState.getObjectName();
+                mAssetDefinition.mAssetBaseFilePath = parser.getParsingFilename();
+            }
 
 
             // Asset name?
             // Asset name?
-            if ( attributeName == assetNameField )
+            if ( propertyName == assetNameField )
             {
             {
                 // Yes, so assign it.
                 // Yes, so assign it.
-                mAssetDefinition.mAssetName = StringTable->insert( pAttribute->Value() );
-                continue;
+                mAssetDefinition.mAssetName = StringTable->insert( pPropertyValue );
+                return true;
             }
             }
             // Asset description?
             // Asset description?
-            else if ( attributeName == assetDescriptionField )
+            else if ( propertyName == assetDescriptionField )
             {
             {
                 // Yes, so assign it.
                 // Yes, so assign it.
-                mAssetDefinition.mAssetDescription = StringTable->insert( pAttribute->Value() );
-                continue;
+                mAssetDefinition.mAssetDescription = StringTable->insert( pPropertyValue );
+                return true;
             }
             }
             // Asset description?
             // Asset description?
-            else if ( attributeName == assetCategoryField )
+            else if ( propertyName == assetCategoryField )
             {
             {
                 // Yes, so assign it.
                 // Yes, so assign it.
-                mAssetDefinition.mAssetCategory = StringTable->insert( pAttribute->Value() );
-                continue;
+                mAssetDefinition.mAssetCategory = StringTable->insert( pPropertyValue );
+                return true;
             }
             }
             // Asset auto-unload?
             // Asset auto-unload?
-            else if ( attributeName == assetAutoUnloadField )
+            else if ( propertyName == assetAutoUnloadField )
             {
             {
                 // Yes, so assign it.
                 // Yes, so assign it.
-                mAssetDefinition.mAssetAutoUnload = dAtob( pAttribute->Value() );
-                continue;
+                mAssetDefinition.mAssetAutoUnload = dAtob( pPropertyValue );
+                return true;
             }
             }
             // Asset internal?
             // Asset internal?
-            else if ( attributeName == assetInternalField )
+            else if ( propertyName == assetInternalField )
             {
             {
                 // Yes, so assign it.
                 // Yes, so assign it.
-                mAssetDefinition.mAssetInternal = dAtob( pAttribute->Value() );
-                continue;
+                mAssetDefinition.mAssetInternal = dAtob( pPropertyValue );
+                return true;
             }
             }
         }
         }
 
 
-        // Did we get an asset name?
-        if ( mAssetDefinition.mAssetName == StringTable->EmptyString )
-        {
-            // No, so reset everything.
-            clear();
-
-            // Stop processing!
-            return false;
-        }
-
-        // Set asset file-path.
-        mAssetDefinition.mAssetBaseFilePath = StringTable->insert( xmlParser.getParsingFilename() );
-
-        // Set asset type.
-        mAssetDefinition.mAssetType = StringTable->insert( pXmlElement->Value() );
+        // Fetch property word count.
+        const U32 propertyWordCount = StringUnit::getUnitCount( pPropertyValue, ASSET_ASSIGNMENT_TOKEN );
 
 
-        return true;
-    }
-
-    virtual bool visit( TiXmlAttribute* pAttribute, TamlXmlParser& xmlParser )
-    {
-        // Debug Profiling.
-        PROFILE_SCOPE(TamlAssetDeclaredVisitor_VisitAttribute);
-
-        // Sanity!
-        AssertFatal( mAssetDefinition.mAssetName != StringTable->EmptyString, "Cannot generate asset dependencies without asset name." );
-
-        // Fetch asset reference.
-        const char* pAssetReference = pAttribute->Value();
-
-        // Fetch field word count.
-        const U32 fieldWordCount = StringUnit::getUnitCount( pAssetReference, ASSET_ASSIGNMENT_TOKEN );
-
-        // Finish if there are not two words.
-        if ( fieldWordCount != 2 )
+        // Finish if there's not two words.
+        if ( propertyWordCount != 2 )
             return true;
             return true;
 
 
         // Fetch the asset signature.
         // Fetch the asset signature.
-        StringTableEntry assetSignature = StringTable->insert( StringUnit::getUnit( pAssetReference, 0, ASSET_ASSIGNMENT_TOKEN ) );
+        StringTableEntry assetSignature = StringTable->insert( StringUnit::getUnit( pPropertyValue, 0, ASSET_ASSIGNMENT_TOKEN ) );
 
 
         // Is this an asset Id signature?
         // Is this an asset Id signature?
-        if ( assetSignature == StringTable->insert(ASSET_ID_SIGNATURE) )
+        if ( assetSignature == assetLooseIdSignature )
         {
         {
             // Yes, so get asset Id.
             // Yes, so get asset Id.
-            typeAssetId assetId = StringTable->insert( StringUnit::getUnit( pAssetReference, 1, ASSET_ASSIGNMENT_TOKEN ) );
+            typeAssetId assetId = StringTable->insert( StringUnit::getUnit( pPropertyValue, 1, ASSET_ASSIGNMENT_TOKEN ) );
 
 
             // Finish if the dependency is itself!
             // Finish if the dependency is itself!
             if ( mAssetDefinition.mAssetId == assetId )
             if ( mAssetDefinition.mAssetId == assetId )
@@ -168,42 +163,20 @@ protected:
             mAssetDependencies.push_back( assetId );
             mAssetDependencies.push_back( assetId );
         }
         }
         // Is this a loose-file signature?
         // Is this a loose-file signature?
-        else if ( assetSignature == StringTable->insert(ASSET_LOOSEFILE_SIGNATURE) )
+        else if ( assetSignature == assetLooseFileSignature )
         {
         {
             // Yes, so get loose-file reference.
             // Yes, so get loose-file reference.
-            const char* pAssetLooseFile = StringUnit::getUnit( pAssetReference, 1, ASSET_ASSIGNMENT_TOKEN );
+            const char* pAssetLooseFile = StringUnit::getUnit( pPropertyValue, 1, ASSET_ASSIGNMENT_TOKEN );
 
 
-            char assetFilePathBuffer[1024];
+            // Fetch asset path only.
+            char assetBasePathBuffer[1024];
+            dSprintf( assetBasePathBuffer, sizeof(assetBasePathBuffer), "%s", mAssetDefinition.mAssetBaseFilePath );
+            char* pFinalSlash = dStrrchr( assetBasePathBuffer, '/' );
+            if ( pFinalSlash != NULL ) *pFinalSlash = 0;
 
 
-            // Is the asset loose-file expando specified?
-            if ( *pAssetLooseFile == '#' )
-            {
-                // Yes, so fetch relative path.
-                char parsingFileBuffer[1024];
-                dStrcpy( parsingFileBuffer, xmlParser.getParsingFilename() );
-                
-                // Find the final slash.
-                char* pLastSlash = dStrrchr( parsingFileBuffer, '/' );
-
-                // Is this the last slash?
-                if ( pLastSlash == NULL )
-                {
-                    // No, so warn.
-                    Con::warnf( "Failed to parse the loose-file path '%s' in asset file '%s'.", pAssetLooseFile, parsingFileBuffer );
-                    return true;
-                }
-
-                // Remove parsing file.
-                *pLastSlash = 0;
-
-                // Format expanded path taking into account any missing slash.
-                dSprintf( assetFilePathBuffer, sizeof(assetFilePathBuffer), "%s/%s", parsingFileBuffer, pAssetLooseFile + (pAssetLooseFile[1] == '/' ? 2 : 1 ) );               
-            }
-            else
-            {
-                // No, so expand the path in the usual way.
-                Con::expandPath( assetFilePathBuffer, sizeof(assetFilePathBuffer), pAssetLooseFile );
-            }
+            // Expand the path in the usual way.
+            char assetFilePathBuffer[1024];
+            Con::expandPath( assetFilePathBuffer, sizeof(assetFilePathBuffer), pAssetLooseFile, assetBasePathBuffer );
 
 
             // Insert asset loose-file.
             // Insert asset loose-file.
             mAssetLooseFiles.push_back( StringTable->insert( assetFilePathBuffer ) );
             mAssetLooseFiles.push_back( StringTable->insert( assetFilePathBuffer ) );
@@ -211,31 +184,6 @@ protected:
 
 
         return true;
         return true;
     }
     }
-
-public:
-    TamlAssetDeclaredVisitor() { mAssetDefinition.reset(); }
-    virtual ~TamlAssetDeclaredVisitor() {}
-
-    bool parse( const char* pFilename )
-    {
-        TamlXmlParser parser;
-        return parser.parse( pFilename, *this, false );
-    }
-
-    typedef StringTableEntry typeAssetId;
-    typedef Vector<typeAssetId> typeAssetIdVector;
-    typedef Vector<StringTableEntry> typeLooseFileVector;
-
-    inline AssetDefinition& getAssetDefinition( void ) { return mAssetDefinition; }
-    inline typeAssetIdVector& getAssetDependencies( void ) { return mAssetDependencies; }
-    inline typeLooseFileVector& getAssetLooseFiles( void ) { return mAssetLooseFiles; }
-
-    void clear( void ) { mAssetDefinition.reset(); mAssetDependencies.clear(); mAssetLooseFiles.clear(); }
-
-private:
-    AssetDefinition         mAssetDefinition;
-    typeAssetIdVector       mAssetDependencies;
-    typeLooseFileVector     mAssetLooseFiles;
 };
 };
 
 
 #endif // _TAML_ASSET_DECLARED_VISITOR_H_
 #endif // _TAML_ASSET_DECLARED_VISITOR_H_

+ 48 - 50
engine/source/assets/tamlAssetReferencedUpdateVisitor.h

@@ -23,8 +23,12 @@
 #ifndef _TAML_ASSET_REFERENCED_UPDATE_VISITOR_H_
 #ifndef _TAML_ASSET_REFERENCED_UPDATE_VISITOR_H_
 #define _TAML_ASSET_REFERENCED_UPDATE_VISITOR_H_
 #define _TAML_ASSET_REFERENCED_UPDATE_VISITOR_H_
 
 
-#ifndef _TAML_XMLPARSER_H_
-#include "persistence//taml/tamlXmlParser.h"
+#ifndef _TAML_VISITOR_H_
+#include "persistence/taml/tamlVisitor.h"
+#endif
+
+#ifndef _TAML_PARSER_H_
+#include "persistence\/taml/tamlParser.h"
 #endif
 #endif
 
 
 #ifndef _STRINGUNIT_H_
 #ifndef _STRINGUNIT_H_
@@ -44,32 +48,58 @@
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
-class TamlAssetReferencedUpdateVisitor : public TamlXmlVisitor
+class TamlAssetReferencedUpdateVisitor : public TamlVisitor
 {
 {
-protected:
-    virtual bool visit( TiXmlElement* pXmlElement, TamlXmlParser& xmlParser ) { return true; }
+private:    
+    StringTableEntry mAssetIdFrom;
+    StringTableEntry mAssetIdTo;
 
 
-    virtual bool visit( TiXmlAttribute* pAttribute, TamlXmlParser& xmlParser )
+public:
+    TamlAssetReferencedUpdateVisitor() {}
+    virtual ~TamlAssetReferencedUpdateVisitor() {}
+
+    void setAssetIdFrom( const char* pAssetIdFrom )
+    {
+        // Sanity!
+        AssertFatal( pAssetIdFrom != NULL, "Asset Id from cannot be NULL." );
+
+        mAssetIdFrom = StringTable->insert( pAssetIdFrom );
+    }
+    StringTableEntry getAssetIdFrom( void ) const { return mAssetIdFrom; }
+
+    void setAssetIdTo( const char* pAssetIdTo )
+    {
+        // Sanity!
+        AssertFatal( pAssetIdTo != NULL, "Asset Id to cannot be NULL." );
+
+        mAssetIdTo = StringTable->insert( pAssetIdTo );
+    }
+    const char* getAssetIdTo( void ) const { return mAssetIdTo; }
+
+    virtual bool wantsPropertyChanges( void ) { return true; }
+    virtual bool wantsRootOnly( void ) { return false; }
+
+    virtual bool visit( const TamlParser& parser, TamlVisitor::PropertyState& propertyState )
     {
     {
         // Debug Profiling.
         // Debug Profiling.
-        PROFILE_SCOPE(TamlAssetReferencedUpdateVisitor_VisitAttribute);
+        PROFILE_SCOPE(TamlAssetReferencedUpdateVisitor_Visit);
 
 
-        // Fetch attribute value.
-        const char* pAttributeValue = pAttribute->Value();
+        // Fetch the property value.
+        const char* pPropertyValue = propertyState.getPropertyValue();
 
 
-        // Fetch attribute value word count.
-        const U32 valueWordCount = StringUnit::getUnitCount( pAttributeValue, ASSET_ASSIGNMENT_TOKEN );
+        // Fetch property value word count.
+        const U32 valueWordCount = StringUnit::getUnitCount( pPropertyValue, ASSET_ASSIGNMENT_TOKEN );
 
 
         // Finish if not two words.
         // Finish if not two words.
         if ( valueWordCount != 2 )
         if ( valueWordCount != 2 )
             return true;
             return true;
 
 
-        // Skip if this is not an asset signature.
-        if ( dStricmp( StringUnit::getUnit( pAttributeValue, 0, ASSET_ASSIGNMENT_TOKEN), ASSET_ID_SIGNATURE ) != 0 )
+        // Finish if this is not an asset signature.
+        if ( dStricmp( StringUnit::getUnit( pPropertyValue, 0, ASSET_ASSIGNMENT_TOKEN), assetLooseIdSignature ) != 0 )
             return true;
             return true;
 
 
         // Get the asset value.
         // Get the asset value.
-        const char* pAssetValue = StringUnit::getUnit( pAttributeValue, 1, ASSET_ASSIGNMENT_TOKEN );
+        const char* pAssetValue = StringUnit::getUnit( pPropertyValue, 1, ASSET_ASSIGNMENT_TOKEN );
 
 
         // Finish if not the asset Id we're looking for.
         // Finish if not the asset Id we're looking for.
         if ( dStricmp( pAssetValue, mAssetIdFrom ) != 0 )
         if ( dStricmp( pAssetValue, mAssetIdFrom ) != 0 )
@@ -78,52 +108,20 @@ protected:
         // Is the target asset empty?
         // Is the target asset empty?
         if ( mAssetIdTo == StringTable->EmptyString )
         if ( mAssetIdTo == StringTable->EmptyString )
         {
         {
-            // Yes, so set the attribute as empty.
-            pAttribute->SetValue( StringTable->EmptyString );
+            // Yes, so update the property as empty.
+            propertyState.updatePropertyValue( StringTable->EmptyString );
             return true;
             return true;
         }
         }
 
 
         // Format asset.
         // Format asset.
         char assetBuffer[1024];
         char assetBuffer[1024];
-        dSprintf( assetBuffer, sizeof(assetBuffer), "%s%s%s", ASSET_ID_SIGNATURE, ASSET_ASSIGNMENT_TOKEN, mAssetIdTo );
+        dSprintf( assetBuffer, sizeof(assetBuffer), "%s%s%s", assetLooseIdSignature, ASSET_ASSIGNMENT_TOKEN, mAssetIdTo );
 
 
         // Assign new value.
         // Assign new value.
-        pAttribute->SetValue( assetBuffer );
+        propertyState.updatePropertyValue( assetBuffer );
 
 
         return true;
         return true;
     }
     }
-
-public:
-    TamlAssetReferencedUpdateVisitor() {}
-    virtual ~TamlAssetReferencedUpdateVisitor() {}
-
-    bool parse( const char* pFilename )
-    {
-        TamlXmlParser parser;
-        return parser.parse( pFilename, *this, true );
-    }
-
-    void setAssetIdFrom( const char* pAssetIdFrom )
-    {
-        // Sanity!
-        AssertFatal( pAssetIdFrom != NULL, "Asset Id from cannot be NULL." );
-
-        mAssetIdFrom = StringTable->insert( pAssetIdFrom );
-    }
-    StringTableEntry getAssetIdFrom( void ) const { return mAssetIdFrom; }
-
-    void setAssetIdTo( const char* pAssetIdTo )
-    {
-        // Sanity!
-        AssertFatal( pAssetIdTo != NULL, "Asset Id to cannot be NULL." );
-
-        mAssetIdTo = StringTable->insert( pAssetIdTo );
-    }
-    const char* getAssetIdTo( void ) const { return mAssetIdTo; }
-
-private:    
-    StringTableEntry mAssetIdFrom;
-    StringTableEntry mAssetIdTo;
 };
 };
 
 
 #endif // _TAML_ASSET_REFERENCED_UPDATE_VISITOR_H_
 #endif // _TAML_ASSET_REFERENCED_UPDATE_VISITOR_H_

+ 35 - 36
engine/source/assets/tamlAssetReferencedVisitor.h

@@ -23,8 +23,12 @@
 #ifndef _TAML_ASSET_REFERENCED_VISITOR_H_
 #ifndef _TAML_ASSET_REFERENCED_VISITOR_H_
 #define _TAML_ASSET_REFERENCED_VISITOR_H_
 #define _TAML_ASSET_REFERENCED_VISITOR_H_
 
 
-#ifndef _TAML_XMLPARSER_H_
-#include "persistence//taml/tamlXmlParser.h"
+#ifndef _TAML_VISITOR_H_
+#include "persistence/taml/tamlVisitor.h"
+#endif
+
+#ifndef _TAML_PARSER_H_
+#include "persistence/taml/tamlParser.h"
 #endif
 #endif
 
 
 #ifndef _ASSET_FIELD_TYPES_H_
 #ifndef _ASSET_FIELD_TYPES_H_
@@ -36,32 +40,47 @@
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
-class TamlAssetReferencedVisitor : public TamlXmlVisitor
+class TamlAssetReferencedVisitor : public TamlVisitor
 {
 {
-protected:
-    virtual bool visit( TiXmlElement* pXmlElement, TamlXmlParser& xmlParser ) { return true; }
+public:
+    typedef StringTableEntry typeAssetId;
+    typedef HashMap<typeAssetId, StringTableEntry> typeAssetReferencedHash;
+
+private:
+    typeAssetReferencedHash mAssetReferenced;
+
+public:
+    TamlAssetReferencedVisitor() {}
+    virtual ~TamlAssetReferencedVisitor() {}
+
+    const typeAssetReferencedHash& getAssetReferencedMap( void ) const { return mAssetReferenced; }
+
+    void clear( void ) { mAssetReferenced.clear(); }
+
+    virtual bool wantsPropertyChanges( void ) { return false; }
+    virtual bool wantsRootOnly( void ) { return false; }
 
 
-    virtual bool visit( TiXmlAttribute* pAttribute, TamlXmlParser& xmlParser )
-    {
+    virtual bool visit( const TamlParser& parser, TamlVisitor::PropertyState& propertyState )
+    {    
         // Debug Profiling.
         // Debug Profiling.
-        PROFILE_SCOPE(TamlAssetReferencedVisitor_VisitAttribute);
+        PROFILE_SCOPE(TamlAssetReferencedVisitor_Visit);
 
 
-        // Fetch asset reference.
-        const char* pAssetReference = pAttribute->Value();
+        // Fetch property value.
+        const char* pPropertyValue = propertyState.getPropertyValue();
 
 
-        // Fetch field word count.
-        const U32 fieldWordCount = StringUnit::getUnitCount( pAssetReference, ASSET_ASSIGNMENT_TOKEN );
+        // Fetch property word count.
+        const U32 propertyWordCount = StringUnit::getUnitCount( pPropertyValue, ASSET_ASSIGNMENT_TOKEN );
 
 
-        // Finish if there are not two words.
-        if ( fieldWordCount != 2 )
+        // Finish if there's not two words.
+        if ( propertyWordCount != 2 )
             return true;
             return true;
 
 
         // Finish if the first word is not an asset signature.
         // Finish if the first word is not an asset signature.
-        if ( StringTable->insert( StringUnit::getUnit( pAssetReference, 0, ASSET_ASSIGNMENT_TOKEN ) ) != StringTable->insert(ASSET_ID_SIGNATURE) )
+        if ( StringTable->insert( StringUnit::getUnit( pPropertyValue, 0, ASSET_ASSIGNMENT_TOKEN ) ) != assetLooseIdSignature )
             return true;
             return true;
 
 
         // Get asset Id.
         // Get asset Id.
-        typeAssetId assetId = StringTable->insert( StringUnit::getUnit( pAssetReference, 1, ASSET_ASSIGNMENT_TOKEN ) );
+        typeAssetId assetId = StringTable->insert( StringUnit::getUnit( pPropertyValue, 1, ASSET_ASSIGNMENT_TOKEN ) );
 
 
         // Finish if we already have this asset Id.
         // Finish if we already have this asset Id.
         if ( mAssetReferenced.contains( assetId ) )
         if ( mAssetReferenced.contains( assetId ) )
@@ -72,26 +91,6 @@ protected:
 
 
         return true;
         return true;
     }
     }
-
-public:
-    TamlAssetReferencedVisitor() {}
-    virtual ~TamlAssetReferencedVisitor() {}
-
-    bool parse( const char* pFilename )
-    {
-        TamlXmlParser parser;
-        return parser.parse( pFilename, *this, false );
-    }
-
-    typedef StringTableEntry typeAssetId;
-    typedef HashMap<typeAssetId, StringTableEntry> typeAssetReferencedHash;
-
-    const typeAssetReferencedHash& getAssetReferencedMap( void ) const { return mAssetReferenced; }
-
-    void clear( void ) { mAssetReferenced.clear(); }
-
-private:
-    typeAssetReferencedHash mAssetReferenced;
 };
 };
 
 
 #endif // _TAML_ASSET_REFERENCED_VISITOR_H_
 #endif // _TAML_ASSET_REFERENCED_VISITOR_H_

+ 193 - 128
engine/source/audio/audioFunctions.cc → engine/source/audio/audio_ScriptBinding.cc

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -153,14 +153,22 @@ static ALenum getEnum(const char * name, U32 flags)
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
+
 ConsoleFunctionGroupBegin(Audio, "Functions dealing with the OpenAL audio layer.\n\n"
 ConsoleFunctionGroupBegin(Audio, "Functions dealing with the OpenAL audio layer.\n\n"
                           "@see www.OpenAL.org for what these functions do. Variances from posted"
                           "@see www.OpenAL.org for what these functions do. Variances from posted"
                           "     behaviour is described below.");
                           "     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")
+/*! @defgroup AudioFunctions Audio
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! Use the OpenALInitDriver function to initialize the OpenAL driver.
+    This must be done before all other OpenAL operations.
+    @return Returns true on successful initialization, false otherwise.
+    @sa OpenALShutdownDriver
+*/
+ConsoleFunctionWithDocs(OpenALInitDriver, ConsoleBool, 1, 1, ())
 {
 {
    if (Audio::OpenALInit())
    if (Audio::OpenALInit())
    {
    {
@@ -175,25 +183,31 @@ ConsoleFunction(OpenALInitDriver, bool, 1, 1, "() Use the OpenALInitDriver funct
 }
 }
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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")
+/*! Use the OpenALShutdownDriver function to stop/shut down the OpenAL driver.
+    After this is called, you must restart the driver with OpenALInitDriver to execute any new sound operations.
+    @return No return value.
+    @sa OpenALInitDriver
+*/
+ConsoleFunctionWithDocs(OpenALShutdownDriver, ConsoleVoid, 1, 1, ())
 {
 {
    Audio::OpenALShutdown();
    Audio::OpenALShutdown();
 }
 }
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-ConsoleFunction(OpenALRegisterExtensions, void, 1, 1, "OpenALRegisterExtensions()"
-                "@note Currently does nothing (possibly deprecated)")
+/*! 
+    @note Currently does nothing (possibly deprecated)
+*/
+ConsoleFunctionWithDocs(OpenALRegisterExtensions, ConsoleVoid, 1, 1, ())
 {
 {
 }
 }
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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")
+/*! Use the alGetString function to get the string equivalent to the specified OpenAL enumerated value.
+    @param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.
+    @return Returns a string corresponding to the passed ALEnum
+*/
+ConsoleFunctionWithDocs(alGetString, ConsoleString, 2, 2, ( ALEnum ))
 {
 {
    ALenum e = getEnum(argv[1], (Context|Get));
    ALenum e = getEnum(argv[1], (Context|Get));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -209,10 +223,12 @@ ConsoleFunction(alGetString, const char *, 2, 2, "( ALEnum ) Use the alGetString
 //--------------------------------------------------------------------------
 //--------------------------------------------------------------------------
 // Soundfile
 // 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")
+/*! Use the alxGetAudioLength function to get the play-length of a specified resource sound file in milliseconds.
+    @param audio-assetId  The asset Id that specifies the audio file to check.
+    @return Returns play-length of the audio file specified by audio-assetId in milliseconds.
+    @sa alxGetStreamDuration, alxGetStreamPosition
+*/
+ConsoleFunctionWithDocs(alxGetAudioLength, ConsoleInt, 2, 2, ( audio-assetId ))
 {
 {
     // Fetch asset Id.
     // Fetch asset Id.
     const char* pAssetId = argv[1];
     const char* pAssetId = argv[1];
@@ -245,9 +261,11 @@ ConsoleFunction(alxGetAudioLength, S32, 2, 2,   "( audio-assetId ) Use the alxGe
 //--------------------------------------------------------------------------
 //--------------------------------------------------------------------------
 // Source
 // 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." )
+/*! Create a source from the specified asset Id.
+    @param audio-assetId The asset Id to create the source from.
+    @return The handle of the created source or 0 on error.
+*/
+ConsoleFunctionWithDocs(alxCreateSource, ConsoleInt, 2, 2, (audio-assetId))
 {
 {
     // Fetch asset Id.
     // Fetch asset Id.
     const char* pAssetId = argv[1];
     const char* pAssetId = argv[1];
@@ -274,12 +292,14 @@ ConsoleFunction(alxCreateSource, S32, 2, 2, "(audio-assetId) - Create a source f
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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*")
+/*! Use the alxSource* function to set a source parameter(s) as specified by the OpenAL enumerated type ALEnum.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.
+    @param value An ALEnum type specific value corresponding to the new value for this enumerated parameters.
+    @return No return value.
+    @sa alxGetSource*, al*Listener*
+*/
+ConsoleFunctionWithDocs(alxSourcef, ConsoleVoid, 4, 4, ( handle , ALEnum , value ))
 {
 {
    ALenum e = getEnum(argv[2], (Source|Set|Float));
    ALenum e = getEnum(argv[2], (Source|Set|Float));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -293,12 +313,14 @@ ConsoleFunction(alxSourcef, void, 4, 4, "( handle , ALEnum , value ) Use the alx
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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*")
+/*! Use the alxSource* function to set a source parameter(s) as specified by the OpenAL enumerated type ALEnum.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.
+    @param x,y,z XYZ floating-point coordinates.
+    @return No return value.
+    @sa alxGetSource*, al*Listener*
+*/
+ConsoleFunctionWithDocs(alxSource3f, ConsoleVoid, 3, 6, ( handle , ALEnum , x , y , z ))
 {
 {
    ALenum e = getEnum(argv[2], (Source|Set|Float3));
    ALenum e = getEnum(argv[2], (Source|Set|Float3));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -328,12 +350,14 @@ ConsoleFunction(alxSource3f, void, 3, 6, "( handle , ALEnum , x , y , z ) Use th
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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*")
+/*! Use the alxSource* function to set a source parameter(s) as specified by the OpenAL enumerated type ALEnum.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.
+    @param value An ALEnum type specific value corresponding to the new value for this enumerated parameters.
+    @return No return value.
+    @sa alxGetSource*, al*Listener*
+*/
+ConsoleFunctionWithDocs(alxSourcei, ConsoleVoid, 4, 4, ( handle , ALEnum , value ))
 {
 {
    ALenum e = getEnum(argv[2], (Source|Set|Int));
    ALenum e = getEnum(argv[2], (Source|Set|Int));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -347,12 +371,14 @@ ConsoleFunction(alxSourcei, void, 4, 4, "( handle , ALEnum , value ) Use the alx
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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*")
+/*! Use the alxGetSource* function to get the current value of a source parameter, as specified by ALEnum.
+    Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of alxGetSource*.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.
+    @return Returns current value of parameter specified by ALEnum for source identified by handle.
+    @sa alxSource*, al*GetListener*
+*/
+ConsoleFunctionWithDocs(alxGetSourcef, ConsoleFloat, 3, 3, ( handle , ALEnum ))
 {
 {
    ALenum e = getEnum(argv[2], (Source|Get|Float));
    ALenum e = getEnum(argv[2], (Source|Get|Float));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -368,12 +394,14 @@ ConsoleFunction(alxGetSourcef, F32, 3, 3, "( handle , ALEnum ) Use the alxGetSou
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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*")
+/*! Use the alxGetSource* function to get the current value of a source parameter, as specified by ALEnum.
+    Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of alxGetSource*.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @param ALEnum A string containing an OpenAL enumerated type name.
+    @return Returns current value of parameter specified by ALEnum for source identified by handle.
+    @sa alxSource*, al*GetListener*
+*/
+ConsoleFunctionWithDocs(alxGetSource3f, ConsoleString, 3, 3, ( handle , ALEnum ))
 {
 {
    ALenum e = getEnum(argv[2], (Source|Get|Float));
    ALenum e = getEnum(argv[2], (Source|Get|Float));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -392,12 +420,14 @@ ConsoleFunction(alxGetSource3f, const char *, 3, 3, "( handle , ALEnum ) Use the
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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*")
+/*! Use the alxGetSource* function to get the current value of a source parameter, as specified by ALEnum.
+    Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of alxGetSource*.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.
+    @return Returns current value of parameter specified by ALEnum for source identified by handle.
+    @sa alxSource*, al*GetListener*
+*/
+ConsoleFunctionWithDocs(alxGetSourcei, ConsoleInt, 3, 3, ( handle , ALEnum ))
 {
 {
    ALenum e = getEnum(argv[2], (Source|Get|Int));
    ALenum e = getEnum(argv[2], (Source|Get|Int));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -413,9 +443,11 @@ ConsoleFunction(alxGetSourcei, S32, 3, 3, "( handle , ALEnum ) Use the alxGetSou
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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." )
+/*! Play the audio asset Id.
+    @param audio-assetId The asset Id to play.
+    @return The handle to the playing audio asset Id or 0 on error.
+*/
+ConsoleFunctionWithDocs(alxPlay, ConsoleInt, 2, 2, (audio-assetId))
 {
 {
     // Fetch asset Id.
     // Fetch asset Id.
     const char* pAssetId = argv[1];
     const char* pAssetId = argv[1];
@@ -440,10 +472,12 @@ ConsoleFunction(alxPlay, S32, 2, 2, "(audio-assetId) - Play the audio asset Id.\
     return handle;
     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")
+/*! Use the alxPause function to pause a currently playing sound as specified by handle.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @return No return value.
+    @sa alxIsPlaying, alxPlay, alxStopAll
+*/
+ConsoleFunctionWithDocs(alxPause, ConsoleBool, 2, 2, ( handle ))
 {
 {
    AUDIOHANDLE handle = dAtoi(argv[1]);
    AUDIOHANDLE handle = dAtoi(argv[1]);
    if(handle == NULL_AUDIOHANDLE)
    if(handle == NULL_AUDIOHANDLE)
@@ -451,10 +485,12 @@ ConsoleFunction(alxPause, bool, 2, 2, "( handle ) Use the alxPause function to p
    return alxPause( handle );
    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")
+/*! Use the alxUnpause function to resume playing a currently paused sound as specified by handle.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @return No return value.
+    @sa alxIsPlaying, alxPlay, alxStopAll
+*/
+ConsoleFunctionWithDocs(alxUnpause, ConsoleVoid, 2, 2, ( handle ))
 {
 {
    AUDIOHANDLE handle = dAtoi(argv[1]);
    AUDIOHANDLE handle = dAtoi(argv[1]);
    if(handle == NULL_AUDIOHANDLE)
    if(handle == NULL_AUDIOHANDLE)
@@ -463,10 +499,12 @@ ConsoleFunction(alxUnpause, void, 2, 2, "( handle ) Use the alxUnpause function
 }
 }
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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")
+/*! Use the alxStop function to stop a currently playing sound as specified by handle.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @return No return value.
+    @sa alxIsPlaying, alxPlay, alxStopAll
+*/
+ConsoleFunctionWithDocs(alxStop, ConsoleVoid, 2, 2, ( handle ))
 {
 {
    AUDIOHANDLE handle = dAtoi(argv[1]);
    AUDIOHANDLE handle = dAtoi(argv[1]);
    if(handle == NULL_AUDIOHANDLE)
    if(handle == NULL_AUDIOHANDLE)
@@ -475,18 +513,22 @@ ConsoleFunction(alxStop, void, 2, 2, "( handle ) Use the alxStop function to sto
 }
 }
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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")
+/*! Use the alxStopAll function to stop all currently playing sounds associated with registered handles.
+    @return No return.
+    @sa alxIsPlaying, alxPlay, alxStop
+*/
+ConsoleFunctionWithDocs(alxStopAll, ConsoleVoid, 1, 1, ())
 {
 {
    alxStopAll();
    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")
+/*! Use the alxIsPlaying function to determine if the sound associated with a previously set-up sound handle is playing or not.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @return Returns 1 if specified handle is being played, 0 otherwise.
+    @sa alxPlay, alxStop, alxStopAll
+*/
+ConsoleFunctionWithDocs(alxIsPlaying, ConsoleBool, 2, 5, ( handle ))
 {
 {
    AUDIOHANDLE handle = dAtoi(argv[1]);
    AUDIOHANDLE handle = dAtoi(argv[1]);
    if(handle == NULL_AUDIOHANDLE)
    if(handle == NULL_AUDIOHANDLE)
@@ -498,11 +540,13 @@ ConsoleFunction(alxIsPlaying, bool, 2, 5, "( handle ) Use the alxIsPlaying funct
 //--------------------------------------------------------------------------
 //--------------------------------------------------------------------------
 // Listener
 // 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*")
+/*! Use the al*Listener* function to set a listener parameter(s) as specified by the OpenAL enumerated type ALEnum.
+    @param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.
+    @param value An ALEnum type specific value corresponding to the new value for this enumerated parameters.
+    @return No return value.
+    @sa al*GetListener*, alxSource*
+*/
+ConsoleFunctionWithDocs(alxListenerf, ConsoleVoid, 3, 3, ( AlEnum , value ))
 {
 {
    ALenum e = getEnum(argv[1], (Listener|Set|Float));
    ALenum e = getEnum(argv[1], (Listener|Set|Float));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -516,11 +560,13 @@ ConsoleFunction(alxListenerf, void, 3, 3, "( AlEnum , value ) Use the al*Listene
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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*")
+/*! Use the al*Listener* function to set a listener parameter(s) as specified by the OpenAL enumerated type ALEnum.
+    @param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.
+    @param x,y,z XYZ floating-point coordinates.
+    @return No return value.
+    @sa al*GetListener*, alxSource*
+*/
+ConsoleFunctionWithDocs(alListener3f, ConsoleVoid, 3, 5, ( ALEnum , x , y , z))
 {
 {
    ALenum e = getEnum(argv[1], (Listener|Set|Float3));
    ALenum e = getEnum(argv[1], (Listener|Set|Float3));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -550,11 +596,13 @@ ConsoleFunction(alListener3f, void, 3, 5, "( ALEnum , x , y , z) Use the al*List
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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*")
+/*! Use the al*GetListener* function to get the current value of a listener parameter, as specified by ALEnum.
+    Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of al*GetListener*.
+    @param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.
+    @return Returns a float (alxGetListenerf), a vector of three floats (alGetListener3f), or an integer value respectively (alGetListeneri).
+    @sa alxGetSource*
+*/
+ConsoleFunctionWithDocs(alxGetListenerf, ConsoleFloat, 2, 2, ( ALEnum ))
 {
 {
    ALenum e = getEnum(argv[1], (Source|Get|Float));
    ALenum e = getEnum(argv[1], (Source|Get|Float));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -570,11 +618,13 @@ ConsoleFunction(alxGetListenerf, F32, 2, 2, "( ALEnum ) Use the al*GetListener*
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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*")
+/*! Use the al*GetListener* function to get the current value of a listener parameter, as specified by ALEnum.
+    Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of al*GetListener*.
+    @param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.
+    @return Returns a float (alxGetListenerf), a vector of three floats (alGetListener3f), or an integer value respectively (alGetListeneri).
+    @sa alxGetSource*
+*/
+ConsoleFunctionWithDocs(alGetListener3f, ConsoleString, 2, 2, ( ALEnum ))
 {
 {
    ALenum e = getEnum(argv[2], (Source|Get|Float));
    ALenum e = getEnum(argv[2], (Source|Get|Float));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -593,11 +643,13 @@ ConsoleFunction(alGetListener3f, const char *, 2, 2, "( ALEnum ) Use the al*GetL
 
 
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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*")
+/*! Use the al*GetListener* function to get the current value of a listener parameter, as specified by ALEnum.
+    Depending on the ALEnum you need to acquire, be sure to use the correct version (i.e. correct return type) of al*GetListener*.
+    @param ALEnum A string containing an OpenAL enumerated type name. See (above) table of ALEnum values for legal values.
+    @return Returns a float (alxGetListenerf), a vector of three floats (alGetListener3f), or an integer value respectively (alGetListeneri).
+    @sa alxGetSource*
+*/
+ConsoleFunctionWithDocs(alGetListeneri, ConsoleInt, 2, 2, ( ALEnum ))
 {
 {
    ALenum e = getEnum(argv[1], (Source|Get|Int));
    ALenum e = getEnum(argv[1], (Source|Get|Int));
    if(e == AL_INVALID)
    if(e == AL_INVALID)
@@ -615,10 +667,12 @@ ConsoleFunction(alGetListeneri, S32, 2, 2, "( ALEnum ) Use the al*GetListener* f
 //--------------------------------------------------------------------------
 //--------------------------------------------------------------------------
 // Channel Volumes
 // 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")
+/*! Use the alxGetChannelVolume function to get the volume setting for a specified channel.
+    @param channelID An integer value, equal to or greater than 0, corresponding to a valid audio channel.
+    @return Returns volume [ 0.0, 1.0 ] for channel specified by channelID.
+    @sa alxSetChannelVolume
+*/
+ConsoleFunctionWithDocs(alxGetChannelVolume, ConsoleFloat, 2, 2, ( channelID ))
 {
 {
    U32 channel = dAtoi(argv[1]);
    U32 channel = dAtoi(argv[1]);
    if(channel >= Audio::AudioVolumeChannels)
    if(channel >= Audio::AudioVolumeChannels)
@@ -631,11 +685,13 @@ ConsoleFunction(alxGetChannelVolume, F32, 2, 2, "( channelID ) Use the alxGetCha
 }
 }
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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")
+/*! Use the alxSetChannelVolume function to set a volume [ 0.0, 1.0 ] for the channel specified by channelID.
+    @param channelID An integer value, equal to or greater than 0, corresponding to a valid audio channel.
+    @param volume A value between 0.0 and 1.0 specifying the new volume for the specified channel.
+    @return Returns true on success and false on failure.
+    @sa alxGetChannelVolume
+*/
+ConsoleFunctionWithDocs(alxSetChannelVolume, ConsoleBool, 3, 3, ( channelD , volume ))
 {
 {
    U32 channel = dAtoi(argv[1]);
    U32 channel = dAtoi(argv[1]);
    F32 volume = mClampF(dAtof(argv[2]), 0.f, 1.f);
    F32 volume = mClampF(dAtof(argv[2]), 0.f, 1.f);
@@ -652,10 +708,12 @@ ConsoleFunction(alxSetChannelVolume, bool, 3, 3, "( channelD , volume ) Use the
 }
 }
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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")
+/*! 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.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @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.
+    @sa alxGetStreamDuration
+*/
+ConsoleFunctionWithDocs(alxGetStreamPosition, ConsoleFloat, 2, 2, ( handle ))
 {
 {
    AUDIOHANDLE handle = dAtoi(argv[1]);
    AUDIOHANDLE handle = dAtoi(argv[1]);
 
 
@@ -666,10 +724,12 @@ ConsoleFunction(alxGetStreamPosition, F32, 2, 2, "( handle ) Use the alxGetStrea
 }
 }
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-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")
+/*! Use the alxGetStreamDuration function to determine the length of a previously set up sound in seconds.
+    @param handle The ID (a non-negative integer) corresponding to a previously set up sound source.
+    @return Returns -1 for invalid handle, and 0.0 to N.M for valid handle indicating length of scheduled sound in seconds.
+    @sa alxGetStreamPosition
+*/
+ConsoleFunctionWithDocs(alxGetStreamDuration, ConsoleFloat, 2, 2, ( handle ))
 {
 {
    AUDIOHANDLE handle = dAtoi(argv[1]);
    AUDIOHANDLE handle = dAtoi(argv[1]);
 
 
@@ -680,9 +740,11 @@ ConsoleFunction(alxGetStreamDuration, F32, 2, 2, "( handle ) Use the alxGetStrea
 }
 }
 
 
 #ifdef TORQUE_OS_IOS
 #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." )
+/*! Play the audio asset Id.
+    @param audio-assetId The asset Id to play.  This *must* be an MP3 to work correctly.
+    @return The playing stream Id.
+*/
+ConsoleFunctionWithDocs(startiOSAudioStream, ConsoleInt, 2, 2, (audio-assetId))
 {
 {
     // Fetch asset Id.
     // Fetch asset Id.
     const char* pAssetId = argv[1];
     const char* pAssetId = argv[1];
@@ -711,7 +773,9 @@ ConsoleFunction(startiOSAudioStream, S32, 2, 2,  "(audio-assetId) - Play the aud
 }
 }
 
 
 //-----------------------------------------------
 //-----------------------------------------------
-ConsoleFunction(stopiOSAudioStream, void, 2, 2, "( streamId ) - Stops playing the audio stream Id." )
+/*! Stops playing the audio stream Id.
+*/
+ConsoleFunctionWithDocs(stopiOSAudioStream, ConsoleVoid, 2, 2, ( streamId ))
 {
 {
     SimObjectId streamId = dAtoi( argv[1] );
     SimObjectId streamId = dAtoi( argv[1] );
     iOSStreamSource* pStream = Sim::findObject<iOSStreamSource>( streamId );
     iOSStreamSource* pStream = Sim::findObject<iOSStreamSource>( streamId );
@@ -726,7 +790,9 @@ ConsoleFunction(stopiOSAudioStream, void, 2, 2, "( streamId ) - Stops playing th
     }
     }
 }
 }
 
 
-ConsoleFunction(setiOSAudioStreamVolume, void, 3, 3, "setiPhoneAudioVolume( Stream ID, float volume )" )
+/*! 
+*/
+ConsoleFunctionWithDocs(setiOSAudioStreamVolume, ConsoleVoid, 3, 3, setiPhoneAudioVolume( Stream ID, float volume ))
 {
 {
     SimObjectId streamId = dAtoi( argv[1] );
     SimObjectId streamId = dAtoi( argv[1] );
     iOSStreamSource* pStream = Sim::findObject<iOSStreamSource>( streamId );
     iOSStreamSource* pStream = Sim::findObject<iOSStreamSource>( streamId );
@@ -741,5 +807,4 @@ ConsoleFunction(setiOSAudioStreamVolume, void, 3, 3, "setiPhoneAudioVolume( Stre
 }
 }
 #endif
 #endif
 
 
-
-ConsoleFunctionGroupEnd(Audio);
+/*! @} */ // group AudioFunctions

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // 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] );
     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.
     // Fetch tag Id.
     const NameTags::TagId tagId = dAtoi(argv[2]);
     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.
     // Fetch tag Id.
     const NameTags::TagId tagId = dAtoi(argv[2]);
     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();
     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.
     // Fetch tag Id.
     const NameTags::TagId tagId = dAtoi(argv[2]);
     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] );
     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.
     // Get buffer.
     const U32 bufferLength = 4096;
     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.
     // Fetch object Id.
     const SimObjectId objectId = (SimObjectId)dAtoi(argv[2]);
     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.
     // Fetch object Id.
     const SimObjectId objectId = (SimObjectId)dAtoi(argv[2]);
     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.
     // Fetch object Id.
     const SimObjectId objectId = (SimObjectId)dAtoi(argv[2]);
     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.
     // Fetch tag Id.
     const NameTags::TagId tagId = dAtoi(argv[2]);
     const NameTags::TagId tagId = dAtoi(argv[2]);
@@ -284,5 +308,6 @@ ConsoleMethod(NameTags, queryTags, const char*, 3, 4,   "(tagIds, [excluded]) Fi
     return pReturnBuffer;
     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/console.h"
 #include "console/consoleTypes.h"
 #include "console/consoleTypes.h"
 
 
+#include "undo_ScriptBinding.h"
+
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // UndoAction
 // UndoAction
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -37,6 +39,11 @@ UndoAction::UndoAction( const UTF8* actionName)
    mUndoManager = NULL;
    mUndoManager = NULL;
 }
 }
 
 
+S32 UndoManager::getRedoCount()
+{
+   return mRedoStack.size();
+}
+
 // Modified to clean up quiet sub actions [KNM | 08/10/11 | ITGB-152]
 // Modified to clean up quiet sub actions [KNM | 08/10/11 | ITGB-152]
 UndoAction::~UndoAction()
 UndoAction::~UndoAction()
 {
 {
@@ -141,12 +148,6 @@ UndoManager& UndoManager::getDefaultManager()
    return *defaultMan;
    return *defaultMan;
 }
 }
 
 
-ConsoleMethod(UndoManager, clearAll, void, 2, 2, "Clears the undo manager."
-              "@return No Return Value")
-{
-   object->clearAll();
-}
-
 void UndoManager::clearAll()
 void UndoManager::clearAll()
 {
 {
    clearStack(mUndoStack); clearStack(mRedoStack);
    clearStack(mUndoStack); clearStack(mRedoStack);
@@ -263,23 +264,11 @@ void UndoManager::redo()
    (*react).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()
 S32 UndoManager::getUndoCount()
 {
 {
    return mUndoStack.size();
    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)
 StringTableEntry UndoManager::getUndoName(S32 index)
 {
 {
    if ((index < getUndoCount()) && (index >= 0))
    if ((index < getUndoCount()) && (index >= 0))
@@ -288,23 +277,6 @@ StringTableEntry UndoManager::getUndoName(S32 index)
    return NULL;
    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)
 StringTableEntry UndoManager::getRedoName(S32 index)
 {
 {
    if ((index < getRedoCount()) && (index >= 0))
    if ((index < getRedoCount()) && (index >= 0))
@@ -346,56 +318,3 @@ void UndoManager::addAction(UndoAction* action)
    // clear the redo stack
    // clear the redo stack
    clearStack(mRedoStack);
    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;
-}

+ 124 - 0
engine/source/collection/undo_ScriptBinding.h

@@ -0,0 +1,124 @@
+//-----------------------------------------------------------------------------
+// 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(UndoManager, SimObject)
+
+/*!  @return Returns the number of redo Actions stored as an integer
+*/
+ConsoleMethodWithDocs(UndoManager, getRedoCount, ConsoleInt, 2, 2, ())
+{
+   return object->getRedoCount();
+}
+
+
+/*! Clears the undo manager.
+    @return No Return Value
+*/
+ConsoleMethodWithDocs(UndoManager, clearAll, ConsoleVoid, 2, 2, ())
+{
+   object->clearAll();
+}
+
+/*!  @return Returns the number of UndoActions stored as an integer
+*/
+ConsoleMethodWithDocs(UndoManager, getUndoCount, ConsoleInt, 2, 2, ())
+{
+   return object->getUndoCount();
+}
+
+/*! Gets the name of the UndoAction at given index. 
+    @param index An integer index value for the desired undo
+    @return The name as a string
+*/
+ConsoleMethodWithDocs(UndoManager, getUndoName, ConsoleString, 3, 3, ( S32 index ))
+{
+   return object->getUndoName(dAtoi(argv[2]));
+}
+
+/*! Gets the name of the Action at given index. 
+    @param index An integer index value for the desired redo
+    @return The name as a string
+*/
+ConsoleMethodWithDocs(UndoManager, getRedoName, ConsoleString, 3, 3, ( S32 index ))
+{
+   return object->getRedoName(dAtoi(argv[2]));
+}
+
+/*! Adds an UndoAction to the manager
+    @param undoManager The manager to add the object to (default NULL)
+    @return No Return Value
+*/
+ConsoleMethodWithDocs(UndoAction, addToManager, ConsoleVoid, 2, 3, ([undoManager]?))
+{
+   UndoManager *theMan = NULL;
+   if(argc == 3)
+   {
+      SimObject *obj = Sim::findObject(argv[2]);
+      if(obj)
+         theMan = dynamic_cast<UndoManager*> (obj);
+   }
+   object->addToManager(theMan);
+}
+
+/*! Pops the top undo action off the stack, resolves it, 
+    and then pushes it onto the redo stack
+*/
+ConsoleMethodWithDocs(UndoManager, undo, ConsoleVoid, 2, 2, ())
+{
+   object->undo();
+}
+
+/*! Pops the top redo action off the stack, resolves it, 
+    and then pushes it onto the undo stack
+*/
+ConsoleMethodWithDocs(UndoManager, redo, ConsoleVoid, 2, 2, ())
+{
+   object->redo();
+}
+
+/*! Gets the name of the action at the top of the undo stack
+    @return The name of the top action on the undo stack
+*/
+ConsoleMethodWithDocs(UndoManager, getNextUndoName, ConsoleString, 2, 2, ())
+{
+   StringTableEntry name = object->getNextUndoName();
+   if(!name)
+      return NULL;
+   char *ret = Con::getReturnBuffer(dStrlen(name) + 1);
+   dStrcpy(ret, name);
+   return ret;
+}
+
+/*! Gets the name of the action at the top of the undo stack
+    @return The name of the top action on the redo stack
+*/
+ConsoleMethodWithDocs(UndoManager, getNextRedoName, ConsoleString, 2, 2, ())
+{
+   StringTableEntry name = object->getNextRedoName();
+   if(!name)
+      return NULL;
+   char *ret = Con::getReturnBuffer(dStrlen(name) + 1);
+   dStrcpy(ret, name);
+   return ret;
+}
+
+ConsoleMethodGroupEndWithDocs(UndoManager)

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // 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.
     // Fetch behavior/component Ids.
     const S32 behaviorId  = dAtoi( argv[1] );
     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] ) ) );
    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;
    bool deleteBehavior = true;
    if (argc > 3)
    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();
    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();
    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] ) );
    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]) );
    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] ) );
    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.
     // Find output behavior.
     BehaviorInstance* pOutputBehavior = dynamic_cast<BehaviorInstance*>( Sim::findObject( argv[2] ) );
     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.
     // Find output behavior.
     BehaviorInstance* pOutputBehavior = dynamic_cast<BehaviorInstance*>( Sim::findObject( argv[2] ) );
     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.
     // Find output behavior.
     BehaviorInstance* pOutputBehavior = dynamic_cast<BehaviorInstance*>( Sim::findObject( argv[2] ) );
     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.
     // Find output behavior.
     BehaviorInstance* pOutputBehavior = dynamic_cast<BehaviorInstance*>( Sim::findObject( argv[2] ) );
     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.
     // Find output behavior.
     BehaviorInstance* pOutputBehavior = dynamic_cast<BehaviorInstance*>( Sim::findObject( argv[2] ) );
     BehaviorInstance* pOutputBehavior = dynamic_cast<BehaviorInstance*>( Sim::findObject( argv[2] ) );
@@ -338,3 +366,4 @@ ConsoleMethod( BehaviorComponent, getBehaviorConnection, const char*, 5, 5,    "
     return pBuffer;
     return pBuffer;
 }
 }
 
 
+ConsoleMethodGroupEndWithDocs(BehaviorComponent)

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,9 +20,15 @@
 // IN THE SOFTWARE.
 // 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();
    const char* pName = object->getTemplateName();
    return pName ? pName : StringTable->EmptyString;
    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
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,8 +20,12 @@
 // IN THE SOFTWARE.
 // 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();
    BehaviorInstance *inst = object->createInstance();
    return inst ? inst->getId() : 0;
    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 *defValue = argc > 5 ? argv[5] : NULL;
     const char *typeInfo = argc > 6 ? argv[6] : 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();
     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.
     // 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.
     // Fetch behavior field.
     BehaviorTemplate::BehaviorField* pField = object->getBehaviorField( dAtoi(argv[2]) );
     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.
     // Fetch behavior field.
     BehaviorTemplate::BehaviorField* pField = object->getBehaviorField( dAtoi(argv[2]) );
     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.
     // Add behavior output.
     return object->addBehaviorOutput( argv[2], argv[3], argv[4] );
     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();
     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.
     // 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] );
     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.
     // Add behavior input.
     return object->addBehaviorInput( argv[2], argv[3], argv[4] );
     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();
     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.
     // 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] );
     return object->hasBehaviorInput( argv[2] );
 }
 }
 
 
+ConsoleMethodGroupEndWithDocs(BehaviorTemplate)

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

@@ -22,6 +22,8 @@
 
 
 #include "component/dynamicConsoleMethodComponent.h"
 #include "component/dynamicConsoleMethodComponent.h"
 
 
+#include "dynamicConsoleMethodComponent_ScriptBinding.h"
+
 IMPLEMENT_CONOBJECT(DynamicConsoleMethodComponent);
 IMPLEMENT_CONOBJECT(DynamicConsoleMethodComponent);
 
 
 //-----------------------------------------------------------
 //-----------------------------------------------------------
@@ -161,22 +163,3 @@ const char *DynamicConsoleMethodComponent::callOnBehaviors( U32 argc, const char
 
 
    return result;
    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 );
-}
-
-//////////////////////////////////////////////////////////////////////////
-

+ 41 - 0
engine/source/component/dynamicConsoleMethodComponent_ScriptBinding.h

@@ -0,0 +1,41 @@
+//-----------------------------------------------------------------------------
+// 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(DynamicConsoleMethodComponent, SimComponent)
+
+/*! Calls script defined method on first behavior that defines it.
+   @param methodName The method's name as a string
+   @param argi Any arguments to pass to the method
+   @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.
+
+*/
+ConsoleMethodWithDocs( DynamicConsoleMethodComponent, callOnBehaviors, ConsoleString, 3, 64 , (methodName, argi))
+{
+   // 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 );
+}
+
+ConsoleMethodGroupEndWithDocs(DynamicConsoleMethodComponent)

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

@@ -27,6 +27,8 @@
 #include "io/stream.h"
 #include "io/stream.h"
 #include "behaviors/behaviorTemplate.h"
 #include "behaviors/behaviorTemplate.h"
 
 
+#include "simComponent_ScriptBinding.h"
+
 SimComponent::SimComponent() : mOwner( NULL )
 SimComponent::SimComponent() : mOwner( NULL )
 {
 {
    mComponentList.clear();
    mComponentList.clear();
@@ -310,75 +312,3 @@ bool SimComponent::callMethodOnComponents( U32 argc, const char* argv[], const c
 
 
    return false;
    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();
-}
-
-

+ 101 - 0
engine/source/component/simComponent_ScriptBinding.h

@@ -0,0 +1,101 @@
+//-----------------------------------------------------------------------------
+// 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(SimComponent, SimObject)
+
+/*! Adds additional components to current list.
+    @param Up to 62 component names
+    @return Returns true on success, false otherwise.
+*/
+ConsoleMethodWithDocs( SimComponent, addComponents, ConsoleBool, 3, 64, ( compObjName, compObjName2, ... ))
+{
+   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;
+}
+
+/*! Removes components by name from current list.
+    @param objNamex Up to 62 component names
+    @return Returns true on success, false otherwise.
+*/
+ConsoleMethodWithDocs( SimComponent, removeComponents, ConsoleBool, 3, 64, ( compObjName, compObjName2, ... ))
+{
+   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;
+}
+
+/*! Get the current component count
+    @return The number of components in the list as an integer
+*/
+ConsoleMethodWithDocs( SimComponent, getComponentCount, ConsoleInt, 2, 2, ())
+{
+   return object->getComponentCount();
+}
+
+/*! Get the component corresponding to the given index.
+    @param idx An integer index value corresponding to the desired component.
+    @return The id of the component at the given index as an integer
+*/
+ConsoleMethodWithDocs( SimComponent, getComponent, ConsoleInt, 3, 3, (idx))
+{
+   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;
+}
+
+/*! Sets or unsets the enabled flag
+    @param enabled Boolean value
+    @return No return value
+*/
+ConsoleMethodWithDocs(SimComponent, setEnabled, ConsoleVoid, 3, 3, (enabled))
+{
+   object->setEnabled(dAtob(argv[2]));
+}
+
+/*! Check whether SimComponent is currently enabled
+    @return true if enabled and false if not
+*/
+ConsoleMethodWithDocs(SimComponent, isEnabled, ConsoleBool, 2, 2, ())
+{
+   return object->isEnabled();
+}
+
+ConsoleMethodGroupEndWithDocs(SimComponent)

+ 14 - 123
engine/source/console/console.cc

@@ -19,6 +19,7 @@
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 // IN THE SOFTWARE.
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
+
 #include "platform/platform.h"
 #include "platform/platform.h"
 #include "platform/platformTLS.h"
 #include "platform/platformTLS.h"
 #include "platform/threads/thread.h"
 #include "platform/threads/thread.h"
@@ -38,6 +39,9 @@
 #include "memory/safeDelete.h"
 #include "memory/safeDelete.h"
 #include <stdarg.h>
 #include <stdarg.h>
 
 
+#include "output_ScriptBinding.h"
+#include "expando_ScriptBinding.h"
+
 #ifndef _HASHTABLE_H
 #ifndef _HASHTABLE_H
 #include "collection/hashTable.h"
 #include "collection/hashTable.h"
 #endif
 #endif
@@ -185,10 +189,6 @@ ConsoleConstructor::ConsoleConstructor(const char* className, const char* usage)
    ns = true;
    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
 namespace Con
 {
 {
 
 
@@ -225,34 +225,6 @@ StringTableEntry gCurrentFile;
 StringTableEntry gCurrentRoot;
 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()
 void init()
 {
 {
    AssertFatal(active == false, "Con::init should only be called once.");
    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 )  
 #if defined( _MSC_VER )  
 #include <windows.h>  
 #include <windows.h>  
 
 
@@ -1717,95 +1699,4 @@ bool stripRepeatSlashes( char* pDstPath, const char* pSrcPath, S32 dstSize )
     return false;
     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
 } // end of Console namespace
-
-#endif

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

@@ -129,7 +129,11 @@ struct EnumTable
 
 
 typedef const char *StringTableEntry;
 typedef const char *StringTableEntry;
 
 
+/// @defgroup tsScripting TorqueScript Bindings
+/// TorqueScrit bindings
+
 /// @defgroup console_callbacks Scripting Engine Callbacks
 /// @defgroup console_callbacks Scripting Engine Callbacks
+/// @ingroup tsScripting
 ///
 ///
 /// The scripting engine makes heavy use of callbacks to represent
 /// The scripting engine makes heavy use of callbacks to represent
 /// function exposed to the scripting language. StringCallback,
 /// 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
 /// @defgroup console_types Scripting Engine Type Functions
+/// @ingroup tsScripting
 ///
 ///
 /// @see Con::registerType
 /// @see Con::registerType
 /// @{
 /// @{
@@ -508,6 +513,9 @@ namespace Con
    /// @see Con::errorf()
    /// @see Con::errorf()
    void errorf(ConsoleLogEntry::Type type, const char *_format, ...);
    void errorf(ConsoleLogEntry::Type type, const char *_format, ...);
 
 
+   /// clear the console log
+   void cls( void );
+
    /// Prints a separator to the console.
    /// Prints a separator to the console.
    inline void printSeparator( void ) { printf("--------------------------------------------------------------------------------"); }
    inline void printSeparator( void ) { printf("--------------------------------------------------------------------------------"); }
 
 
@@ -778,9 +786,21 @@ public:
 #define conmethod_nullify(val)
 #define conmethod_nullify(val)
 #define conmethod_return_void               conmethod_nullify(void
 #define conmethod_return_void               conmethod_nullify(void
 #define conmethod_return_bool               return (bool
 #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)
 #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
 // Console function macros
 #  define ConsoleFunctionGroupBegin(groupName, usage) \
 #  define ConsoleFunctionGroupBegin(groupName, usage) \
       static ConsoleConstructor gConsoleFunctionGroup##groupName##__GroupBegin(NULL,#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 ConsoleConstructor g##name##obj(NULL,#name,c##name,usage1,minArgs,maxArgs);  \
       static returnType c##name(SimObject *, S32 argc, const char **argv)
       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) \
 #  define ConsoleFunctionGroupEnd(groupName) \
       static ConsoleConstructor gConsoleFunctionGroup##groupName##__GroupEnd(NULL,#groupName,NULL);
       static ConsoleConstructor gConsoleFunctionGroup##groupName##__GroupEnd(NULL,#groupName,NULL);
 
 
@@ -800,27 +825,53 @@ public:
 #  define ConsoleMethodGroupBegin(className, groupName, usage) \
 #  define ConsoleMethodGroupBegin(className, groupName, usage) \
       static ConsoleConstructor className##groupName##__GroupBegin(#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 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)
       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)                       \
 #  define ConsoleStaticMethod(className,name,returnType,minArgs,maxArgs,usage1)                       \
       static inline returnType c##className##name(S32, const char **);                                \
       static inline returnType c##className##name(S32, const char **);                                \
       static returnType c##className##name##caster(SimObject *object, S32 argc, const char **argv) {  \
       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                                                                       \
       static ConsoleConstructor                                                                       \
          className##name##obj(#className,#name,c##className##name##caster,usage1,minArgs,maxArgs);    \
          className##name##obj(#className,#name,c##className##name##caster,usage1,minArgs,maxArgs);    \
       static inline returnType c##className##name(S32 argc, const char **argv)
       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) \
 #  define ConsoleMethodGroupEnd(className, groupName) \
       static ConsoleConstructor className##groupName##__GroupEnd(#className,#groupName,NULL);
       static ConsoleConstructor className##groupName##__GroupEnd(#className,#groupName,NULL);
 
 
+#  define ConsoleMethodRootGroupEndWithDocs(className)
+#  define ConsoleMethodGroupEndWithDocs(className)
+
 #else
 #else
 
 
 // These do nothing if we don't want doc information.
 // 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 "console/compiler.h"
 #include "memory/frameAllocator.h"
 #include "memory/frameAllocator.h"
 
 
+#include "consoleDoc_ScriptBinding.h"
+
 //--- Information pertaining to this page... ------------------
 //--- Information pertaining to this page... ------------------
 /// @file
 /// @file
 ///
 ///
 /// For specifics on using the consoleDoc functionality, see @ref console_autodoc
 /// 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.
 /// Helper table to convert type ids to human readable names.
 const char *typeNames[] = 
 const char *typeNames[] = 
 {
 {

+ 70 - 0
engine/source/console/consoleDoc_ScriptBinding.h

@@ -0,0 +1,70 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+
+ConsoleFunctionGroupBegin(ConsoleDoc, "Console self-documentation functions. These output psuedo C++ suitable for feeeding through Doxygen or another auto documentation tool.");
+
+/*! @addtogroup ConsoleOutput Console Output
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! dumps all declared console classes to the console.
+    This will dump all classes and methods that were registered from within the engine, AND from the console via scripts.
+    @param dumpScript Specifies whether or not classes defined in script should be dumped.
+    @param dumpEngine Specifies whether or not classes defined in the engine should be dumped.
+*/
+ConsoleFunctionWithDocs(dumpConsoleClasses, ConsoleVoid, 1, 3, (bool dumpScript = true, bool dumpEngine = true))
+{
+   bool dumpScript = true;
+   if( argc > 1 )
+      dumpScript = dAtob( argv[1] );
+   
+   bool dumpEngine = true;
+   if( argc > 2 )
+      dumpEngine = dAtob( argv[2] );
+
+   Namespace::dumpClasses( dumpScript, dumpEngine );
+}
+
+/*! Dumps all declared console functions to the console.
+    This will dump all funtions that were registered from within the engine, AND from the console via scripts.
+    @param dumpScript Specifies whether or not functions defined in script should be dumped.
+    @param dumpEngine Specifies whether or not functions defined in the engine should be dumped.
+    @sa dumpConsoleMethods
+*/
+ConsoleFunctionWithDocs(dumpConsoleFunctions, ConsoleVoid, 1, 3, (bool dumpScript = true, bool dumpEngine = true))
+{
+   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);
+
+/*! @} */ // group ConsoleOutput

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

@@ -34,6 +34,8 @@
 #include "io/fileStream.h"
 #include "io/fileStream.h"
 #include "console/compiler.h"
 #include "console/compiler.h"
 
 
+#include "consoleExprEvalState_ScriptBinding.h"
+
 extern ExprEvalState gEvalState;
 extern ExprEvalState gEvalState;
 
 
 void ExprEvalState::pushFrame(StringTableEntry frameName, Namespace *ns)
 void ExprEvalState::pushFrame(StringTableEntry frameName, Namespace *ns)
@@ -71,31 +73,3 @@ ExprEvalState::~ExprEvalState()
    while(stack.size())
    while(stack.size())
       popFrame();
       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);
-
-}

+ 61 - 0
engine/source/console/consoleExprEvalState_ScriptBinding.h

@@ -0,0 +1,61 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+/*! @defgroup Callstack Call Stack
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! 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.
+    @return No return value
+*/
+ConsoleFunctionWithDocs(backtrace, ConsoleVoid, 1, 1, ())
+{
+   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);
+
+}
+
+/*! @} */ // group Callstack

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


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

@@ -22,6 +22,8 @@
 #include "console/consoleLogger.h"
 #include "console/consoleLogger.h"
 #include "console/consoleTypes.h"
 #include "console/consoleTypes.h"
 
 
+#include "consoleLogger_ScriptBinding.h"
+
 Vector<ConsoleLogger *> ConsoleLogger::mActiveLoggers;
 Vector<ConsoleLogger *> ConsoleLogger::mActiveLoggers;
 bool ConsoleLogger::smInitialized = false;
 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();
-}

+ 45 - 0
engine/source/console/consoleLogger_ScriptBinding.h

@@ -0,0 +1,45 @@
+//-----------------------------------------------------------------------------
+// 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(ConsoleLogger, SimObject)
+
+/*! Attaches this object to the console and begins logging
+    @return Returns true on success, and false on failure.
+*/
+ConsoleMethodWithDocs( ConsoleLogger, attach, ConsoleBool, 2, 2, ())
+{
+   ConsoleLogger *logger = static_cast<ConsoleLogger *>( object );
+   return logger->attach();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Detaches this object from the console and stops logging 
+    @return Returns true on success, and false on failure.
+*/
+ConsoleMethodWithDocs( ConsoleLogger, detach, ConsoleBool, 2, 2, ())
+{
+   ConsoleLogger *logger = static_cast<ConsoleLogger *>( object );
+   return logger->detach();
+}
+
+ConsoleMethodGroupEndWithDocs(ConsoleLogger)

+ 2 - 33
engine/source/console/consoleNamespace.cc

@@ -34,6 +34,8 @@
 #include "io/fileStream.h"
 #include "io/fileStream.h"
 #include "console/compiler.h"
 #include "console/compiler.h"
 
 
+#include "consoleNamespace_ScriptBinding.h"
+
 U32 Namespace::mCacheSequence = 0;
 U32 Namespace::mCacheSequence = 0;
 DataChunker Namespace::mCacheAllocator;
 DataChunker Namespace::mCacheAllocator;
 DataChunker Namespace::mAllocator;
 DataChunker Namespace::mAllocator;
@@ -619,36 +621,3 @@ void Namespace::relinkPackages()
    for(U32 i = 0; i < mOldNumActivePackages; i++)
    for(U32 i = 0; i < mOldNumActivePackages; i++)
       activatePackage(mActivePackages[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 );

+ 67 - 0
engine/source/console/consoleNamespace_ScriptBinding.h

@@ -0,0 +1,67 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+ConsoleFunctionGroupBegin( Packages, "Functions relating to the control of packages.");
+
+/*! @defgroup PackageFunctions Packages
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! Use the isPackage function to check if the name or ID specified in packageName is a valid package.
+    @param packagename The name or ID of an existing package.
+    @return Returns true if packageName is a valid package, false otherwise.
+    @sa activatePackage, deactivatePackage
+*/
+ConsoleFunctionWithDocs(isPackage, ConsoleBool,2,2, ( packageName ))
+{
+   StringTableEntry packageName = StringTable->insert(argv[1]);
+   return Namespace::isPackage(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.
+    This pushes the newly activated package onto the top of the package stack.
+    @param packagename The name or ID of an existing package.
+    @return No return value.
+    @sa deactivatePackage, isPackage
+*/
+ConsoleFunctionWithDocs(activatePackage, ConsoleVoid,2,2, ( packageName ))
+{
+   StringTableEntry packageName = StringTable->insert(argv[1]);
+   Namespace::activatePackage(packageName);
+}
+
+/*! Use the deactivatePackage function to deactivate a package definition and to pop any definitions from this package off the package stack.
+    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.
+    @param packagename The name or ID of an existing package.
+    @return No return value.
+    @sa activatePackage, isPackage
+*/
+ConsoleFunctionWithDocs(deactivatePackage, ConsoleVoid,2,2, ( packageName ))
+{
+   StringTableEntry packageName = StringTable->insert(argv[1]);
+   Namespace::deactivatePackage(packageName);
+}
+
+ConsoleFunctionGroupEnd(Packages);
+
+/*! @} */ // group PackageFunctions

+ 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 *a = *((const AbstractClassRep **) aptr);
    const AbstractClassRep *b = *((const AbstractClassRep **) bptr);
    const AbstractClassRep *b = *((const AbstractClassRep **) bptr);
@@ -581,40 +581,3 @@ AbstractClassRep* ConsoleObject::getClassRep() const
 {
 {
    return NULL;
    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;
-}

+ 317 - 0
engine/source/console/core_ScriptBinding.dox

@@ -0,0 +1,317 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+// Warning!  This file is not real C++ code!
+// It is designed to provide types, operators, and more that are needed by Doxygen
+// to create a TorqueScript reference.
+
+// As long as this file ends in .dox, compilers should ignore it, but Doxygen won't.
+// This means the psuedo-code in here will not be seen by your compiler but it will
+// be seen by the Doxygen code parser.
+
+// Add any constructs here that you want to use to "fake-out" Doxygen while creating
+// the Torquescript doc.
+
+//-----------------------------------------------------
+// TorqueScript Functions
+//-----------------------------------------------
+
+// Most functions will be defined in _ScriptBinding.h files.
+// Here we are only defining a doxygen group, called TorqueScriptFunctions,
+// for all functions to live within.  This is necessary as Doxygen ignores global
+// functions unless they in a group.  But it also helps organize the "modules" page of
+// the Doxygen output.
+// Clusters of functions -- such as vector functions or event scheduling functions --
+// should be kept within a subgroup of the TorqueScriptFunction umbrella group.
+// As groups are created, in various _ScriptBinding.h files, they should be marked as
+// @ingroup TorqueScriptFunctions like so:
+//
+// /*! @defgroup VectorMathFunctions Vector Math
+//    @ingroup TorqueScriptFunctions
+//    @{
+// */
+//
+// <functions, functions, functions!>
+//
+// /*! @} */ // group VectorMathFunctions
+
+/*!
+   @defgroup TorqueScriptFunctions Function Categories
+*/
+
+//-----------------------------------------------
+// TorqueScript Data Types
+//-----------------------------------------------
+
+// "Define" and document generic data types here.  Doxygen does not really understand
+// how to define a language, so we need to fake it out with some C++ concept.  We will
+// use "typedef" as it seems the most innocuous.  Of course, typedef requires two arguments
+// so use "typedef type" then your data type.
+
+// Wrap all data types in a group.  This will help organize Doxygen's output "module" page.
+/*!
+   @defgroup TorqueScriptTypes Data Types
+      @{
+*/
+
+/*! Integers are whole numbers.
+
+	~~~
+	123
+	0xc001   // you can use 0x followed by hexadecimal digits
+	~~~
+*/
+typedef type Integer;
+
+/*! Float, is a floating point number which can hold decimal values.
+
+	~~~
+	1.234
+	1234e-3  // you can use scientific notion
+	~~~
+*/
+typedef type Float;
+
+/*! Text, such as names or phrases, are supported as strings.
+
+	Numbers can also be stored in ::String format. Standard strings are stored in double-quotes.
+
+	@par Example
+	~~~
+	"abcd"
+	~~~
+
+	@par Example
+	~~~
+	$UserName = "Heather";
+	~~~
+	
+	Tagged strings are special in that they contain string data, but also have a special numeric tag associated with them. Tagged strings are used for sending string data across a network. The value of a tagged string is only sent once, regardless of how many times you actually do the sending.
+
+	On subsequent sends, only the tag value is sent. Tagged values must be de-tagged when printing. You will not need to use a tagged string often unless you are in need of sending strings across a network often, like a chat system.
+
+	@par Example
+	~~~
+		$a = 'This is a tagged string';
+		echo("  Tagged string: ", $a);
+		echo("Detagged string: ", detag('$a'));
+	~~~
+	The output will be similar to this:
+	~~~
+		24
+		____
+	~~~
+
+	The second echo will be blank unless the string has been passed to you over a network.
+*/
+typedef type String;
+
+/*! Boolean "numbers" have only two values - true or false.
+
+	true    (1)
+	false   (0)
+
+	The constant `true` evaluates to the number 1 in TorqueScript, and the constant `false` evaluates to the number 0. However, non-zero values are also considered true. Think of booleans as "on/off" switches, often used in conditional statements.
+
+	@par Example
+	~~~
+	$lightsOn = true;
+	
+	if($lightsOn)
+		echo("Lights are turned on");
+	~~~
+*/
+typedef type Boolean;
+
+/*!  Arrays are data structures used to store consecutive values of the same data type.
+
+	+ $TestArray[n]   (Single-dimension)
+	+ $TestArray[m,n] (Multidimensional)
+	+ $TestArray[m_n] (Multidimensional)
+
+	@par Example
+	~~~
+	$userNames[0] = "Heather";
+	$userNames[1] = "Nikki";
+	$userNames[2] = "Mich";
+	echo($userNames[0]);
+	echo($userNames[1]);
+	echo($userNames[2]);
+	~~~
+*/
+typedef type Array;
+
+/*! Vector2 is a ::String of two numbers (::Float or ::Integer) separated by a space.
+
+	It is a special case of a Vector.  Note that TorqueScript does not check that you have exactly
+	two elements.  The type Vector2 is used here to remind you what is expected by a function, for instance.
+*/
+typedef type Vector2;
+
+/*! Vector is a ::String of any number of values separated by spaces between each.
+
+	~~~
+	%position = "25 32";
+	%color = %red SPC %blue SPC %green SPC %alpha;
+	~~~
+*/
+typedef type Vector;
+
+/*! Void is actually not a real type.  It simply represents the absense of a type.
+*/
+typedef type Void;
+
+/*! @} */ // data types
+//-----------------------------------------------
+// End TorqueScript Data Types
+//-----------------------------------------------
+
+//-----------------------------------------------
+// TorqueScript Operators
+//-----------------------------------------------
+
+// "Define" and document TorqueScript operators here.  Doxygen does not really understand
+// how to define a language, so we need to fake it out with some C++ concept.  As with
+// data types (above), we will use "typedef" as it seems the most innocuous.  Of course,
+// typedef requires two arguments so use "typedef type" then your operator.
+
+// Wrap all operators in a group.  This will help organize Doxygen's output "module" page.
+/*!
+   @defgroup Operators Operators
+   @{
+*/
+
+/*! @defgroup StringOperators String Operators
+	@{
+*/
+
+/*! Concatenates two Strings into a single ::String separated by a space.
+
+	Note: such a ::String can be decomposed with getWord()
+
+	@par example
+	~~~
+	%newString = "Hello" SPC "World";
+	echo(%newString);
+
+	OUTPUT:
+	Hello World
+	~~~
+*/
+typedef type SPC;
+
+/*! Concatenates two strings into a single ::String separated by a tab.
+
+	Note: such a ::String can be decomposed with getField()
+
+	@par example
+	~~~
+	%newString = "Hello" TAB "World";
+	echo(%newString);
+
+	OUTPUT:
+	Hello	World
+	~~~
+*/
+typedef type TAB;
+
+/*! Concatenates two strings into a single ::String with no separation.
+
+	@par example
+	~~~
+	%newString = "Hello" @ "World";
+	echo(%newString);
+
+	OUTPUT:
+	HelloWorld
+	~~~
+*/
+typedef type operator @;
+
+/*! Concatenates two strings into a single ::String separated by a new-line.
+
+	@par example
+	~~~
+	%newString = "Hello" NL "World";
+	echo(%newString);
+
+	OUTPUT: 
+	Hello
+	World
+	~~~
+*/
+typedef type NL;
+
+/*! @} */ // string operators
+
+/*! @defgroup mathOperators Arithmetic Operators
+	@{
+*/
+
+
+/*! @} */ // arithmetic operators
+
+/*! @defgroup constructionOperators Construction Operators
+	@{
+*/
+
+/*!	create a new object
+
+	@par Format
+	@code
+	%myID = new class([name])
+	{
+		[field = value;]
+		...
+	};
+	@endcode
+
+	@par Where
+	+ *myID* is the return ID that can be used to access the object in the form `%%myID.myFunction`.\n
+	+ `new` is the keyword telling the engine to create an instance of the following *class*.\n
+	+ *class* is any class declared in the engine or in script that has been derived from SimObject.\n
+	+ *name* (optional) is the object's name for referencing in the form `name.myFunction` (without % or $ before it).\n
+	+ *field* - You may initialize static or dynamic class fields here, one at a time.\n
+
+	@par Example
+	@code
+	// An SceneObject named 'Truck'
+	// with two static fields and one dynamic field to define
+	new SceneObject(Truck) 
+	{
+	   position = "0 0";
+	   size = "5 5";
+	   myField = 100;
+	};
+	
+	// A nameless object (tracked by a variable), with no fields to set
+	%myObject = new SimSet();
+	@endcode
+*/
+typedef type new;
+
+/*! @} */ // constructionOperators operators
+
+/*! @} */ // all operators
+//-----------------------------------------------
+// End TorqueScript Operators
+//-----------------------------------------------

+ 371 - 0
engine/source/console/documenting_ScriptPage.md

@@ -0,0 +1,371 @@
+# Documenting TorqueScript
+
+## Introduction
+
+This references describes how the TorqueScript manual is created.  It covers the tool used, the location of the documentation
+text, and the process of adding or editing all the documentation types.  The end result is a single manual that can be referenced on-line or downloaded, and that contains information about classes, functions, operators, sub-systems,
+general information, etc.
+
+As a bit of background, TorqueScript is a scripting language written specifically for Torque.  The compiling and running
+of the script code is a part of the engine itself.  Our goal here is to extract just the internal documentation that refers
+to TorqueScript.
+
+The manual is created using [Doxygen](doxygen.org), so its helpful to get some experience with that tool and
+ also to refer to its manual for documenting features.  This reference only covers Doxygen lightly but probably
+enough to get started.  It also covers our use of its high-level features to get what we want.  For now, we'll just
+say that Doxygen is a feature-rich tool to extract documents out of a code base.  A C++ comment can be laced with 
+special commands which Doxygen recognizes.  These sections are explicity about return types from functions, code examples, and
+other features.  The end result is an organized "manual" of pages, with the code explained and with cross-referenced links
+between the concepts.  The docs can be output in many formats including HTML, pdf, and chm.
+
+## Documentation As an Ongoing Project
+
+First, thanks in advance for any contribution to our collective knowledge to the TorqueScript documention!
+There are also fertile bits of information over at the
+[Torque Developer Network](http://tdn.garagegames.com/wiki/TDN_Home) (free login required) that could be yanked
+over.  For instance, there are TDN sections for each [class](http://tdn.garagegames.com/wiki/TGB/Reference), and
+each [global function](http://docs.garagegames.com/tge/official/content/documentation/Reference/Console%20Functions/TorqueScript_Console_Functions_21.html), at least.
+
+While many of the basics are done, there is always more to cover.  Whether you know of tricks for creating better
+game loops, gotchas to watch for, a bit of architecture that has gone undocumented, or anything else really, we could
+use your help.  The goal of this project is to collect great information about Torque2D and get it into the source itself,
+where it will live with the code.
+
+## How to "Compile" the Torque2D Manual
+
+If we want to see our docs as we go, the first thing we'll need is the ability to see the output from Doxygen as
+we make edits.  Once we know how, this can be done in less than 5 seconds.  Here are the steps:
+
+1. Go to the directory `Torque2D/tools/documentation`
+     You should see, among files and directories
+     + `config` - a directory containing a few files that are used to tell Doxygen how to proceed.
+     + `output` - a directory where the results will go.  If it doesn't exist for you, simple make a new `output` directory.
+	 (If you run `doxygen` without this directory, it will fail.)
+     + `doxygen.exe` - currently Torque2D comes with a Windows copy of Doxygen.  But you can download a newer version or a
+	 version for almost any platform, which you may need to do now.  It's free!
+2. Start a command line tool in the `documentation` directory.
+    I use Windows PowerShell (which I open by clicking the Window's Start menu and typing "powershell" into the search box).
+3. Run Doxgyen from a command line feeding it the `config\torqueScriptReference.cfg` file.  I also like to pipe the output
+to a file, as you see below.  Doxygen is very verbose!
+	@code
+	> .\doxygen.exe config\torqueScriptReference.cfg > output\info-ts.log
+	@endcode
+4. Afterwards, the directory `output/torqueScriptDocs` should have been produced, and inside of it, you should
+have both `html` and `xml` output.  To see the results, click `html/index.html` to open it in a browser.
+Click around and get accustomed to the manual if you haven't already.  As you make changes, "recompile" the manual
+and simply refresh in your browser to see the results.
+
+## About ScriptBinding and ScriptPage Files
+
+We create two manuals with one Torque2D code base -- one is an engine reference and the other is this TorqueScript language reference.
+This is unusual for Doxygen, and in order to have it create both, some cleverness was required.
+However, we were able to achieve a pretty strong manual just by using a few techniques.
+
+First, know that a file should be suffixed with `ScriptBinding.*` or `ScriptPage.*` to be included.  We tell Doxygen
+to only read these files while creating the scripting manual (and vice-versa when creating the engine manual).
+As you may expect then, these specially-named files contain the TorqueScript-related functions and not the engine code.
+When Doxygen sees a file of code, it will add them to the doc, so it is important
+to not have Doxygen run on any file that you don't want documented at the time.
+
+As an example, most TorqueScript methods and functions are in files suffixed with `ScriptBinding.h`.
+Comments in `SimObject_ScriptBinding.h` are gleened by Doxygen, but not comments in `SimObject.h` or `SimObject.cpp`.
+
+> You may notice a few binding functions (ConsoleMethod(), ConsoleFunction(), etc.) not in the ScriptBinding files.  You may also
+> notice that these don't produce docs.  These are older bindings, which work but have not been updated to the new format.
+> (For what it's worth, migrating them to ScriptBinding files isn't just for documentation purposes.)
+
+## Documenting Classes, Methods, and Global Functions
+
+Documenting code "symbols" is by far the bulk of the good documentation. Each class, method, or function can have a 
+description as complex as you want.  For methods and functions, 
+you can (and hopefully will) explicitly state the parameters and return type.  You can put example code with each symbol if it helps.  
+Finally, we should probably keep a "see also" section for related methods and functions.
+
+Here is an edited version of comments for SimObject::getId() as an example of how to accomplish several of these practices.
+Almost every type of symbol doc is included here:
+
+@verbatim
+/*! get the unique numeric ID -- or "handle" -- of this object.
+
+	@param param1 a pretend param for this call since there wasn't one :)
+	@return Returns the numeric ID.
+
+	The id is provided for you by the simulator upon object creation.  You can not change it
+	and it likely will not be reused by any other object after this object is deleted.
+
+	@par Example
+	@code
+	new SimObject(example);
+	echo(example.getId());
+	> 1752
+	@endcode
+
+	@par Caveat
+	You can not access the id directly.  That is, you can not access `%%object.id`.
+	If you do set `%%object.id` you will only succeed in creating a dynamic field named
+	`id` -- an unrelated field to the actual object's id.
+
+	@par Example
+	@code
+	%example = SimObject();
+	echo(%example.getId());
+	> 1753
+
+	... 
+
+	I'm pretending I need one more paragraph here to show off lists.  I can use
+	+ a list symbol such as "+" here on each line of a list
+	+ a second element in my list
+
+	@see getName, setName
+*/
+ConsoleMethodWithDocs(SimObject, getId, ConsoleInt, 2, 2, ())
+{
+   return object->getId();
+}
+@endverbatim
+
+Knowing a bit about Doxygen does help, but you can get pretty far just trying the ideas above and experimenting.  The following
+are several notes about the above example:
+
++ The entire doxygen comment section is surrounded by `/*!` and `*/` comment enclosings.  There are
+other options, but this author prefers to set these at beginning and end and then not have to decorate every line.
++ This type of description is placed directly above the symbol it is documenting.
++ We have a `@param`, `@return`, and `@see` (for "see also" sections). Those are easy.
++ Any other text is just part of the detailed description.
++ We can create "sections" just like the `param` and `return` sections by using `@par <section>` like we did with "@par Caveat".  Just remember to start the paragraph immediately after that line.
++ We also wanted to create a couple of examples so we start each one with "@par Example" and follow that with a block of code between "@code" and "@endcode".
++ We can also use backticks around a phrase to make it represent in-line code.
++ In Doxygen, percent `%` is a command character.  TorqueScript is also full of `%` however.
+In code sections between "@code" and "@endcode" you won'th have a problem, but in regular text
+or even in in-line code sections, we have to use two percent signs to create one.
++ Note that I'm using `+` to start a list.  You can use `*` or `-` just like in markdown.  However, because
+some people like to have a `*` at the beginning of every line of comments, Doxygen likes to eat those up, so
+it's best to just avoid them.
++ Obvious function names and class names will be automatically cross-referenced.  They are "obvious"
+when they have a camel case letter in them somewhere.  If your function does not, try putting "::" in front of it
+or "()" after it.  To reference something in another class, you have to use className::methodName.  Doxygen explains
+all this in its docs.  One last point though: let's suppose you want to avoid a link.  Use "%" in front of the camel
+cased word that happens to be another class or function.
+
+## Documenting Global Function Groups
+
+All of the global functions in TorqueScript are documented individually as described above.
+However, it is best to keep related functions clustered together.  Doxygen provides the idea of a "group"
+(which is sometimes called a "module") to cluster things, so we use it to group global function categories.
+See the [modules](modules.html) page for what we mean.
+
+We also take advantage of Doxygen's ability to have groups within groups to keep better organized.
+All of the categories groups are a subgroup of the `TorqueScriptFunctions` main group, as you might
+have noticed if you clicked the modules link above.
+
+To document a group of functions, let's suppose they are in the same file together.  If they are not, we can
+modify the following formulas.  Go to that file, say the console output functions in `output_ScriptBinding.h`.
+Near the top of the file, before any functions, tell Doxygen this will be a group as follows:
+
+@verbatim
+/*! @defgroup ConsoleOutputFunctions Console Output
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+@endverbatim
+
+What this does is start a new group `ConsoleOutputFunctions` and also gives it the more human-readable name "Console Output".
+Then it puts this group within the `TorqueScriptFunctions` main group.  And finally it starts the group with "@{".
+
+Now go to the bottom of the file, somewhere after all the functions and put the following:
+
+@verbatim
+/*! @} */ // group ConsoleOutputFunctions
+@endverbatim
+
+This line ends the group with "@}".  The comment after that is just to be friendly.
+
+This should effectively put all the documented functions between "@{" and "@}" into a group together.
+
+## Documenting Sub-Systems
+
+A Sub-system is a collection of components, such as classes and functions, that work together to form a bigger whole.
+An example is the %Taml module or the Module Manager.  This is another great use of the "group" concept (see above for
+another example).  This time, however, we want to write a description of the sub-system itself.  Doxygen supports this
+by letting you document the group, as if it were a code symbol itself.  These docs then become the "detailed description"
+portion of the group page.
+
+The question is where should all this text be placed?  It isn't related directly to one class.
+The solution is to make a special file for the sub-system documentaion and place it near the other code to which it
+relates.  Typically, the files (classes) that make up a sub-system are placed in a directory together, so this is often
+a great place for the sub-system "group" file.
+
+The file should end with `.dox` which is a special Doxygen file extension.  Doxygen will read these files as if they were
+code, but the C++ compiler will not.  (And remember, our files should also end in `ScriptPage.*` to be seen while building
+the scripting manual.  Therefore, your file should be something like `mySubSystem_ScriptPage.dox`.
+
+While there are no examples of TorqueScript sub-systems documented yet, we can see an example for the Torque2D engine
+manual at `Torque2D\engine\source\persistence\taml\taml.dox`.  (Note the lack of a ScriptPage suffix because this is not
+scripting docs!)  In the case of the taml file, it is mostly a markdown formatted file.  Section headers
+begin with #, and URLs and other markdown data are also marked appropriately.
+
+However, the entire file markdown file is placed in a Doxygen comment block with `/*!` at the top and `*/` at the bottom.
+The entire file effectively becomes a giant comment.  We then add to the comment Doxygen commands to turn the entire
+file into a "group" description like so at the top:
+
+@code
+/*! @defgroup tamlGroup TAML Reference
+  ... the entire contents in markdown
+*/
+@endcode
+
+For a little cross-referencing sweetness, classes related to this sub-system were marked with the following
+comment.  This causes them to be included in the sub-system "group" and have a link each to the group description.
+
+@code
+/// @ingroup tamlGroup
+/// @see tamlGroup
+@endcode
+
+Again, this was done for an engine subsytem, but the same *could* be done for TorqueScript systems or modules.
+
+## Documenting General Information
+
+Sometimes your docs are not really related to any one class, or even one sub-system.  This page on creating documents is
+one example.  The TorqueScript Syntax page is another.
+
+Doxygen provides one last concept we will talk about, called a "page."  The way we keep pages is the most markdown-like
+and the least like Doxygen comments yet.  To create these, simply create a markdown file (extension .md).  The top header
+of the file (the section header that starts with a single hash #), will be the name of the page in the final document.
+
+As usual, this markdown file should be suffixed with `_ScriptPage.*`, for instance "syntax_ScriptPage.md"
+
+We try to keep the pages close to the code it relates to, but rememer "pages" tend to be unrelated to particular classes,
+modules, etc.  Therefore the pages have been kept in the `Torque2D\engine\source\console` directory since it most
+represents the entire TorqueScript interpreter in general.  For example this document is `documenting_ScriptPage.md`
+within the `console` directory.
+
+The content of the file requires no doxygen commands such as @@defgroup or @@param (although @@code has come in useful as will be
+described in the appendix).  It is read as pure markdown (with a few
+exceptions).  Doxygen will successfully create links for any symbols is recongizes however.  (To force the link off, put a
+percent % in front of the text.
+
+## Documenting Operations, Types, etc.
+
+*This topic is more advanced.  You can possibly skip it.*
+
+Another type of module documentation is for non-functions.  This includes TorqueScript types (String, Boolean, etc.) and
+operators (SPC, new, etc.).
+
+To do this, we are playing a bit of a trick.  Remember that Doxygen was not created to document your language that you created
+(such as TorqueScript).  What we will do is make a psuedo-code file full of pretend C++ constructs, called
+`Torque2D\engine\source\console\core_ScriptBinding.dox`  The C++ compiler won't be interested, but when Doxygen sees
+the file it will parse it as real code.
+
+The solution we have employed is to have one special file located in the same directory as the TorqueScript interpreter code.
+C++ compilers will not bother to compile a .dox file but doxygen will read it.  For all practical purposes, though,
+this is a C++ file in form.
+
+We will not go into the details here, but read that file and add to it to create lists of operators or
+types in groups.
+
+## Converting "Old" Documents to "New"
+
+*If you read the appendix on how documenting TorqueScript is done with Doxygen, this may make more sense to you.*
+
+You may find, from time to time, snippets of an older form of documentation for TorqueScript in the code base.  One of the
+Appendices explains in more detail, but basically, documents used to be a "usage" string as part of a macro call like this:
+
+@code
+ConsoleFunction(myFunction, void, 4, 4, "(id) very long string of documents..."
+						"@param including parameters and other doxygen commands!")
+@endcode
+
+These macro calls appeared with the source code in the same file, for instance in `SimObject.cc`.  For readability reasons,
+these functions were mostly pulled to their own files, such as `SimObject_ScriptBinding.h`, but not all of them have made it.
+(We could use help in moving the stragglers as well!)
+
+The new documentation process takes advantage of these binding files being separate.  Additionally it needs a new macro that
+does not take the usage string, called ConsoleFunctionWithDocs, etc.  For instance this is the new form:
+
+@code
+/*! very long string of documents
+    @param which is a good thing now
+*/
+ConsoleFunctionWithDocs(myFunction, void, 3, 3, (id))
+@endcode
+
+Ultimately, when all the functions and methods are complete, the macro name may change back to not include the "WithDocs" ending.
+For now, this is what you are seeing!
+
+## Appendix A: Doxygen Command and Markup Caveats
+
+It will probably be necessary to limit yourself some when trying to grab a markdown page and move it to the source base for
+Doxygen's use.  While Doxygen claims to handle markdown, including GitHub flavored markdown, in practice we have run into a
+few edge cases.  Below are a few of them.
+
++ lists starting with `*` may not work.  This is because it seems like the line is part of a comment surrounded with *.
+If you use `+` or `-` it will work.
+
++ doxygen understands "fencepost" code blocks (~~~) or (~~~{.cpp}) but we have seen some issues.  Specifically, doxygen
+will eat double-slash `//` comments within them!  This is probably a bug.  Luckily Doxygen understands its own commands
+embedded in markdown, so you can use @@code and @@endcode around code sections.  This will preserver comments inside of those sections.
+
++ starting a word with % such as %%myVar is very common in TorqueScript, but Doxygen reserves % to mean "do not create a link here".
+For instance, if you don't want SimObject to become a link, use `%%SimObject`.  For TorqueScript variables use two percents before your
+variables to see one.  This is not necessary in code sections!  But it is necessary in in-line code and regular text.  :)
+
++ GitHub flavored markdown provides for easier numbered lists.  Simply start each item with `1.` and they will be re-numbered.
+However this does not work in Doxygen.  Number each item correctly.
+
++ **Blockquotes** markdown lets you put a `>` at the beginning of a paragraph. All the following lines will be part of one
+section of blockquotes.  However, in Doxygen, you appears to need a `>` after every new line.
+
+## Appendix B.  How Documenting TorqueScript Works
+
+For several years, Torque2D produced a TorqueScript manual in a different way than described in this reference.
+
+As a bit of back story, don't forget that we want to be able to produce a manual for Torque2D's C++ engine as well
+as produce a manual for TorqueScript.  So running Doxygen on the code produced only the Torque2D manual.  This is "as it should be."
+
+Back then, to create a TorqueScript manual one would compile Torque2D, and run it.  From within the program one would call
+dumpConsoleFunctions() and other functions to produce a "psuedo-code" output file.  The file was suspiciously like a program itself,
+complete with documentation of the "functions" and "classes".  This file would then be run through Doxygen and viola!, a
+second reference manual was produced.
+
+The problem with using the above method had two specific drawbacks worth removing if possible.  First, it required several steps -- 
+compiling the code, running it against some script calls, running Doxygen on the output of the dump -- and so it was impractical to 
+add and modify new docs as easily as Doxygen is designed to do.
+
+Second, the script documents had to be hidden from Doxygen on the normal 
+pass lest it include confusing bits of information in the engine docs!  To do so, the docs appeared in a (large) string for each TorqueScript
+call or class.  This was harder to work with than simple comments.  A less important issue, but still a real one, was the possibility that
+all these strings, compiled into the engine, could be expensive in space.  (Though the strings could be skipped at compile time if
+TORQUE_SHIPPING was defined.)
+
+The new solution employed a different clever solution.  Now, the TorqueScript function bindings are documented just like any other code
+-- in comment sections with the code.  And "compiling" the documents is no harder than running Doxygen on the code base.
+The way we get Doxygen to pick between documenting the engine or  
+TorqueScript is that TorqueScript functions are in special files ending with `_ScriptBinding.*` or `_ScriptPage.*`.  These files are skipped when 
+creating docs for the engine.  Likewise, they are the only files used when creating the script reference.
+
+
+> Normally, Doxygen is used to create a cross-referenced document for a C++ code base.  Note that our desire here is
+> to document a class and function binding library, along with the syntax, operators, types, etc. of TorqueScript.
+> But Doxygen is so useful and capable that it was worth working out a way to use it for our purposes.  As a matter of fact,
+> we can also produce a Torque2D engine document from the same code base!
+
+## Appendix C.  Some Unusual Doxygen Facts
+
+Doxygen tries to be a lot of things in a lot of formats, and this has sometimes caused odd edge-case bugs.  This is a
+quick list of a few quirks I wanted to save somewhere:
+
+Of course, normally Doxygen data is saved in comments and the `@` commands are how you tell it about constructs from
+parameter lists to what group to put things in.   But you can use markdown for many formatting commands like bold,
+lists, blockquotes, etc.  (I don't think Doxygen has any other kind of formatting, except that you can use direct
+html apparently).
+
+Now a `.dox` file is read by Doxygen just like a source code file.   The commands to Doxygen must be in comments, and
+you can even have source code in it (and we do) but the compiler won't see it.  If you wanted to use an entire `.dox` file
+as one big description (and we do), you still need to encase the entire thing in a comment block.
+
+Finally `.md` files are an exception.  Doxygen reads and uses the text in these without the comment blocks.  This makes a natural "page" construct.  I'm not sure any other construct can be created this way.  However, if
+you sneak in an `@` command or two, those will work!  (And doxygen isn't great at all markdown syntax, sadly.)  In this way,
+you *could* put class info or group info inside of a `.md` perhaps.
+

+ 129 - 0
engine/source/console/expando_ScriptBinding.h

@@ -0,0 +1,129 @@
+//-----------------------------------------------------------------------------
+// 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.
+
+/*! @defgroup PathExpandoFunctions Path Expando
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! Expands an expando or relative path into a full path.
+*/
+ConsoleFunctionWithDocs(expandPath, ConsoleString, 2, 2, (string path))
+{
+    char* ret = Con::getReturnBuffer( 1024 );
+    Con::expandPath(ret, 1024, argv[1]);
+    return ret;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Collapses a path into either an expando path or a relative path.
+*/
+ConsoleFunctionWithDocs(collapsePath, ConsoleString, 2, 2, (string path))
+{
+    char* ret = Con::getReturnBuffer( 1024 );
+    Con::collapsePath(ret, 1024, argv[1]);
+    return ret;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Adds the expando to the path.  If it already exists then it is replaced.
+*/
+ConsoleFunctionWithDocs(addPathExpando, ConsoleVoid, 3, 3, (string expando, string path))
+{
+    Con::addPathExpando(argv[1], argv[2]);
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Removes the specified path expando.
+*/
+ConsoleFunctionWithDocs(removePathExpando, ConsoleVoid, 2, 2, (string expando))
+{
+    Con::removePathExpando(argv[1]);
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Checks whether the specified path expando is current set or not.
+*/
+ConsoleFunctionWithDocs(isPathExpando, ConsoleBool, 2, 2, (string expando))
+{
+    return Con::isPathExpando(argv[1]);
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the expando path count.
+*/
+ConsoleFunctionWithDocs(getPathExpandoCount, ConsoleInt, 1, 1, ())
+{
+    return Con::getPathExpandoCount();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the path expando key (the expando name) at the specified index.
+*/
+ConsoleFunctionWithDocs(getPathExpandoKey, ConsoleString, 2, 2, (int expandoIndex))
+{
+    // Fetch expando index.
+    const S32 expandoIndex = dAtoi(argv[1]);
+
+    // Is the expando index in range?
+    if ( expandoIndex < 0 || expandoIndex >= (S32) Con::getPathExpandoCount() )
+    {
+        // No, so warn.
+        Con::warnf("getPathExpandoKey() - Expando index of '%d' is out of bounds.  Current expando count is '%d'.",
+            expandoIndex,
+            Con::getPathExpandoCount() );
+        return StringTable->EmptyString;
+    }
+
+    // Fetch path expando key.
+    return Con::getPathExpandoKey( expandoIndex );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the path expando value (the expando path) at the specified index.
+*/
+ConsoleFunctionWithDocs(getPathExpandoValue, ConsoleString, 2, 2, (int expandoIndex))
+{
+    // Fetch expando index.
+    const S32 expandoIndex = dAtoi(argv[1]);
+
+    // Is the expando index in range?
+    if ( expandoIndex < 0 || expandoIndex >= (S32) Con::getPathExpandoCount() )
+    {
+        // No, so warn.
+        Con::warnf("getPathExpandoValue() - Expando index of '%d' is out of bounds.  Current expando count is '%d'.",
+            expandoIndex,
+            Con::getPathExpandoCount() );
+        return StringTable->EmptyString;
+    }
+
+    // Fetch path expando value.
+    return Con::getPathExpandoValue( expandoIndex );
+}
+
+/*! @} */ // group PathExpandoFunctions

+ 57 - 0
engine/source/console/inputManagement_ScriptBinding.h

@@ -0,0 +1,57 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+ConsoleFunctionGroupBegin( InputManagement, "Functions that let you deal with input from scripts" );
+
+/*! @defgroup InputManagement Input Management
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! Use the deactivateDirectInput function to de-activate polling of direct input devices (keyboard, mouse, joystick, et cetera).
+    @return No return value.
+    @sa activateDirectInput
+*/
+ConsoleFunctionWithDocs( deactivateDirectInput, ConsoleVoid, 1, 1, ())
+{
+   TORQUE_UNUSED( argc );
+   TORQUE_UNUSED( argv );
+   if ( Input::isActive() )
+      Input::deactivate();
+}
+
+//--------------------------------------------------------------------------
+/*! Use the activateDirectInput function to activate polling of direct input devices (keyboard, mouse, joystick, et cetera).
+    @return No return value.
+    @sa deactivateDirectInput
+*/
+ConsoleFunctionWithDocs( activateDirectInput, ConsoleVoid, 1, 1, ())
+{
+   TORQUE_UNUSED( argc );
+   TORQUE_UNUSED( argv );
+   if ( !Input::isActive() )
+      Input::activate();
+}
+
+ConsoleFunctionGroupEnd( InputManagement );
+
+/*! @} */ // end group InputManagement

+ 845 - 0
engine/source/console/metaScripting_ScriptBinding.cc

@@ -0,0 +1,845 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+#include "platform/platform.h"
+#include "console/console.h"
+#include "console/consoleInternal.h"
+#include "console/ast.h"
+#include "io/resource/resourceManager.h"
+#include "io/fileStream.h"
+#include "console/compiler.h"
+
+#if defined(TORQUE_OS_IOS) || defined(TORQUE_OS_OSX)
+#include <ifaddrs.h>
+#include <arpa/inet.h>
+#endif
+
+// Buffer for expanding script filenames.
+static char pathBuffer[1024];
+
+static U32 execDepth = 0;
+
+extern S32 QSORT_CALLBACK ACRCompare(const void *aptr, const void *bptr);
+
+ConsoleFunctionGroupBegin(MetaScripting, "Functions that let you manipulate the scripting engine programmatically.");
+
+/*! @defgroup MetaScriptingFunctions Meta-Scripting
+		@ingroup TorqueScriptFunctions
+		@{
+*/
+
+/*! Use the call function to dynamically build and call a function.
+    @param funcName A string containing the unadorned name of a function to be executed.
+    @param args .. - Any arguments that should be passed to the function.
+    @return Returns a string containing the results from the function that is built and called.
+    @sa eval
+*/
+ConsoleFunctionWithDocs(call, ConsoleString, 2, 0, ( funcName, [args ... ]?))
+{
+   return Con::execute(argc - 1, argv + 1);
+}
+
+static StringTableEntry getDSOPath(const char *scriptPath)
+{
+   const char *slash = dStrrchr(scriptPath, '/');
+   return StringTable->insertn(scriptPath, slash - scriptPath, true);
+}
+
+/*! Returns the DSO path of the given filename
+    @param scriptFileName A string contains the file to search for
+    @return Returns either the requested pathname as a string, or an empty string if not found.
+*/
+ConsoleFunctionWithDocs(getDSOPath, ConsoleString, 2, 2, (scriptFileName))
+{
+   Con::expandPath(pathBuffer, sizeof(pathBuffer), argv[1]);  
+
+   const char *filename = getDSOPath(pathBuffer);
+   if(filename == NULL || *filename == 0)
+      return "";
+
+   return filename;
+}
+
+/*! Use the compile function to pre-compile a script file without executing the contents.
+    @param fileName A path to the script to compile.
+    @return Returns 1 if the script compiled without errors and 0 if the file did not compile correctly or if the path is wrong. Also, ff the path is invalid, an error will print to the console.
+    @sa exec
+*/
+ConsoleFunctionWithDocs(compile, ConsoleBool, 2, 2, ( fileName ))
+{
+   TORQUE_UNUSED( argc );
+   char nameBuffer[512];
+   char* script = NULL;
+   U32 scriptSize = 0;
+
+   FileTime comModifyTime, scrModifyTime;
+
+   Con::expandPath(pathBuffer, sizeof(pathBuffer), argv[1]);
+
+   // Figure out where to put DSOs
+   StringTableEntry dsoPath = getDSOPath(pathBuffer);
+
+   // If the script file extention is '.ed.cs' then compile it to a different compiled extention
+   bool isEditorScript = false;
+   const char *ext = dStrrchr( pathBuffer, '.' );
+   if( ext && ( dStricmp( ext, ".cs" ) == 0 ) )
+   {
+      const char* ext2 = ext - 3;
+      if( dStricmp( ext2, ".ed.cs" ) == 0 )
+         isEditorScript = true;
+   }
+   else if( ext && ( dStricmp( ext, ".gui" ) == 0 ) )
+   {
+      const char* ext2 = ext - 3;
+      if( dStricmp( ext2, ".ed.gui" ) == 0 )
+         isEditorScript = true;
+   }
+
+   const char *filenameOnly = dStrrchr(pathBuffer, '/');
+   if(filenameOnly)
+      ++filenameOnly;
+   else
+      filenameOnly = pathBuffer;
+
+   if( isEditorScript )
+      dStrcpyl(nameBuffer, sizeof(nameBuffer), dsoPath, "/", filenameOnly, ".edso", NULL);
+   else
+      dStrcpyl(nameBuffer, sizeof(nameBuffer), dsoPath, "/", filenameOnly, ".dso", NULL);
+   
+   ResourceObject *rScr = ResourceManager->find(pathBuffer);
+   ResourceObject *rCom = ResourceManager->find(nameBuffer);
+
+   if(rCom)
+      rCom->getFileTimes(NULL, &comModifyTime);
+   if(rScr)
+      rScr->getFileTimes(NULL, &scrModifyTime);
+
+   Stream *s = ResourceManager->openStream(pathBuffer);
+   if(s)
+   {
+      scriptSize = ResourceManager->getSize(pathBuffer);
+      script = new char [scriptSize+1];
+      s->read(scriptSize, script);
+      ResourceManager->closeStream(s);
+      script[scriptSize] = 0;
+   }
+
+   if (!scriptSize || !script)
+   {
+      delete [] script;
+      Con::errorf(ConsoleLogEntry::Script, "compile: invalid script file %s.", pathBuffer);
+      return false;
+   }
+   // compile this baddie.
+// -Mat reducing console noise
+#if defined(TORQUE_DEBUG)
+   Con::printf("Compiling %s...", pathBuffer);
+#endif
+   CodeBlock *code = new CodeBlock();
+   code->compile(nameBuffer, pathBuffer, script);
+   delete code;
+   code = NULL;
+
+   delete[] script;
+   return true;
+}
+
+/*! 
+*/
+ConsoleFunctionWithDocs(compilePath, ConsoleString, 2, 2, ( path ))
+{
+    if ( !Con::expandPath(pathBuffer, sizeof(pathBuffer), argv[1]) )
+        return "-1 0";
+    
+    const char *compileArgs[2] = { "compile", NULL };
+    
+    S32 failedScripts = 0;
+    S32 totalScripts = 0;
+    ResourceObject *match = NULL;
+    
+    while ( (match = ResourceManager->findMatch( pathBuffer, &compileArgs[1], match )) )
+    {
+        if ( !ccompile( NULL, 1, compileArgs ) )
+            failedScripts++;
+        
+        totalScripts++;
+    }
+    
+    char* result = Con::getReturnBuffer(32);
+    dSprintf( result, 32, "%d %d", failedScripts, totalScripts );
+   return result;
+}
+
+static bool scriptExecutionEcho = false;
+/*! Whether to echo script file execution or not.
+*/
+ConsoleFunctionWithDocs(setScriptExecEcho, ConsoleVoid, 2, 2, (echo?))
+{
+    scriptExecutionEcho = dAtob(argv[1]);
+}
+
+/*! Use the exec function to compile and execute a normal script, or a special journal script.
+    If $Pref::ignoreDSOs is set to true, the system will use .cs before a .dso file if both are found.
+    @param fileName A string containing a path to the script to be compiled and executed.
+    @param nocalls A boolean value. If this value is set to true, then all function calls encountered while executing the script file will be skipped and not called. This allows us to re-define function definitions found in a script file, without re-executing other worker scripts in the same file.
+    @param journalScript A boolean value. If this value is set tot true, and if a journal is being played, the engine will attempt to read this script from the journal stream. If no journal is playing, this field is ignored.
+    @return Returns true if the file compiled and executed w/o errors, false otherwise.
+    @sa compile
+*/
+ConsoleFunctionWithDocs(exec, ConsoleBool, 2, 4, ( fileName, [nocalls]?, [journalScript ]?))
+{
+   execDepth++;
+
+#ifdef TORQUE_ALLOW_JOURNALING
+   bool journal = false;
+
+   if(journalDepth >= execDepth)
+      journalDepth = execDepth + 1;
+   else
+      journal = true;
+#endif //TORQUE_ALLOW_JOURNALING
+
+   bool noCalls = false;
+   bool ret = false;
+
+   if(argc >= 3 && dAtoi(argv[2]))
+      noCalls = true;
+
+#ifdef TORQUE_ALLOW_JOURNALING
+   if(argc >= 4 && dAtoi(argv[3]) && !journal)
+   {
+      journal = true;
+      journalDepth = execDepth;
+   }
+#endif //TORQUE_ALLOW_JOURNALING
+
+   // Determine the filename we actually want...
+   Con::expandPath(pathBuffer, sizeof(pathBuffer), argv[1]);
+
+   // Figure out where to put DSOs
+   StringTableEntry dsoPath = getDSOPath(pathBuffer);
+
+   const char *ext = dStrrchr(pathBuffer, '.');
+
+   if(!ext)
+   {
+      // We need an extension!
+      Con::errorf(ConsoleLogEntry::Script, "exec: invalid script file name %s.", pathBuffer);
+      execDepth--;
+      return false;
+   }
+
+   // Check Editor Extensions
+   bool isEditorScript = false;
+
+#ifdef TORQUE_ALLOW_DSO_GENERATION
+   // If the script file extension is '.ed.cs' then compile it to a different compiled extension
+   if( dStricmp( ext, ".cs" ) == 0 )
+   {
+      const char* ext2 = ext - 3;
+      if( dStricmp( ext2, ".ed.cs" ) == 0 )
+         isEditorScript = true;
+   }
+   else if( dStricmp( ext, ".gui" ) == 0 )
+   {
+      const char* ext2 = ext - 3;
+      if( dStricmp( ext2, ".ed.gui" ) == 0 )
+         isEditorScript = true;
+   }
+#endif //TORQUE_ALLOW_DSO_GENERATION
+
+   // rdbhack: if we can't find the script file in the game directory, look for it
+   //   in the Application Data directory. This makes it possible to keep the user
+   //   ignorant of where the files are actually saving to, thus eliminating the need
+   //   for the script functions: execPrefs, getUserDataDirectory, etc.
+   //
+   //   This works because we know that script files located in the prefs path will 
+   //   not have compiled versions (it checks for this further down). Otherwise this
+   //   would be a big problem!
+   
+   StringTableEntry scriptFileName = StringTable->EmptyString;
+
+
+//Luma : This is redundant, we wont be building dso's on the device - 
+//plus saving dso to the user directory when attempting build for the
+//release tests on iPhone is irrelevant.
+#ifdef TORQUE_ALLOW_DSO_GENERATION
+
+   if(!ResourceManager->find(pathBuffer))
+   {
+      // NOTE: this code is pretty much a duplication of code much further down in this
+      //       function...
+
+      // our work just got a little harder.. if we couldn't find the .cs, then we need to
+      // also look for the .dso BEFORE we can try the prefs path.. UGH
+      const char *filenameOnly = dStrrchr(pathBuffer, '/');
+      if(filenameOnly)
+         ++filenameOnly;
+      else
+         filenameOnly = pathBuffer;
+
+      // we could skip this step and rid ourselves of a bunch of nonsense but we can't be
+      // certain the dso path is the same as the path given to use in scriptFileNameBuffer
+      char pathAndFilename[1024]; 
+      Platform::makeFullPathName(filenameOnly, pathAndFilename, sizeof(pathAndFilename), dsoPath);
+
+      char nameBuffer[1024];
+      if( isEditorScript ) // this should never be the case since we are a PLAYER not a TOOL, but you never know
+         dStrcpyl(nameBuffer, sizeof(nameBuffer), pathAndFilename, ".edso", NULL);
+      else
+         dStrcpyl(nameBuffer, sizeof(nameBuffer), pathAndFilename, ".dso", NULL);
+
+      if(!ResourceManager->find(nameBuffer))
+         scriptFileName = Platform::getPrefsPath(Platform::stripBasePath(pathBuffer));
+      else
+         scriptFileName = StringTable->insert(pathBuffer);
+   }
+   else
+      scriptFileName = StringTable->insert(pathBuffer);
+#else //TORQUE_ALLOW_DSO_GENERATION
+
+    //Luma : Just insert the file name.
+    scriptFileName = StringTable->insert(pathBuffer);
+
+#endif //TORQUE_ALLOW_DSO_GENERATION
+
+    //Luma : Something screwed up so get out early
+   if(scriptFileName == NULL || *scriptFileName == 0)
+   {
+      execDepth--;
+      return false;
+   }
+
+#ifdef TORQUE_ALLOW_JOURNALING
+   
+   bool compiled = dStricmp(ext, ".mis") && !journal && !Con::getBoolVariable("Scripts::ignoreDSOs");
+#else
+   bool compiled = dStricmp(ext, ".mis")  && !Con::getBoolVariable("Scripts::ignoreDSOs");
+#endif //TORQUE_ALLOW_JOURNALING
+
+   // [tom, 12/5/2006] stripBasePath() messes up if the filename is not in the exe
+   // path, current directory or prefs path. Thus, getDSOFilename() will also mess
+   // up and so this allows the scripts to still load but without a DSO.
+   if(Platform::isFullPath(Platform::stripBasePath(pathBuffer)))
+      compiled = false;
+
+   // [tom, 11/17/2006] It seems to make sense to not compile scripts that are in the
+   // prefs directory. However, getDSOPath() can handle this situation and will put
+   // the dso along with the script to avoid name clashes with tools/game dsos.
+#ifdef TORQUE_ALLOW_DSO_GENERATION
+    // Is this a file we should compile? (anything in the prefs path should not be compiled)
+    StringTableEntry prefsPath = Platform::getPrefsPath();
+
+   if( dStrlen(prefsPath) > 0 && dStrnicmp(scriptFileName, prefsPath, dStrlen(prefsPath)) == 0)
+      compiled = false;
+#endif //TORQUE_ALLOW_DSO_GENERATION
+
+   // If we're in a journaling mode, then we will read the script
+   // from the journal file.
+#ifdef TORQUE_ALLOW_JOURNALING
+   if(journal && Game->isJournalReading())
+   {
+      char fileNameBuf[256];
+      bool fileRead;
+      U32 fileSize;
+
+      Game->getJournalStream()->readString(fileNameBuf);
+      Game->getJournalStream()->read(&fileRead);
+      if(!fileRead)
+      {
+         Con::errorf(ConsoleLogEntry::Script, "Journal script read (failed) for %s", fileNameBuf);
+         execDepth--;
+         return false;
+      }
+      Game->journalRead(&fileSize);
+      char *script = new char[fileSize + 1];
+      Game->journalRead(fileSize, script);
+      script[fileSize] = 0;
+      Con::printf("Executing (journal-read) %s.", scriptFileName);
+      CodeBlock *newCodeBlock = new CodeBlock();
+      newCodeBlock->compileExec(scriptFileName, script, noCalls, 0);
+      delete [] script;
+
+      execDepth--;
+      return true;
+   }
+#endif //TORQUE_ALLOW_JOURNALING
+
+   // Ok, we let's try to load and compile the script.
+   ResourceObject *rScr = ResourceManager->find(scriptFileName);
+   ResourceObject *rCom = NULL;
+
+   char nameBuffer[512];
+   char* script = NULL;
+   U32 scriptSize = 0;
+   U32 version;
+
+   Stream *compiledStream = NULL;
+   FileTime comModifyTime, scrModifyTime;
+
+   // Check here for .edso
+   //bool edso = false;
+   //if( dStricmp( ext, ".edso" ) == 0  && rScr )
+   //{
+   //   edso = true;
+   //   rCom = rScr;
+   //   rScr = NULL;
+
+   //   rCom->getFileTimes( NULL, &comModifyTime );
+   //   dStrcpy( nameBuffer, scriptFileName );
+   //}
+
+   // If we're supposed to be compiling this file, check to see if there's a DSO
+   if(compiled /*&& !edso*/)
+   {
+      const char *filenameOnly = dStrrchr(scriptFileName, '/');
+      if(filenameOnly)
+         ++filenameOnly; //remove the / at the front
+      else
+         filenameOnly = scriptFileName;
+
+      char pathAndFilename[1024];
+      Platform::makeFullPathName(filenameOnly, pathAndFilename, sizeof(pathAndFilename), dsoPath);
+
+      if( isEditorScript )
+         dStrcpyl(nameBuffer, sizeof(nameBuffer), pathAndFilename, ".edso", NULL);
+      else
+         dStrcpyl(nameBuffer, sizeof(nameBuffer), pathAndFilename, ".dso", NULL);
+
+      rCom = ResourceManager->find(nameBuffer);
+
+      if(rCom)
+         rCom->getFileTimes(NULL, &comModifyTime);
+      if(rScr)
+         rScr->getFileTimes(NULL, &scrModifyTime);
+   }
+
+   // Let's do a sanity check to complain about DSOs in the future.
+   //
+   // MM:	This doesn't seem to be working correctly for now so let's just not issue
+   //		the warning until someone knows how to resolve it.
+   //
+   //if(compiled && rCom && rScr && Platform::compareFileTimes(comModifyTime, scrModifyTime) < 0)
+   //{
+   //Con::warnf("exec: Warning! Found a DSO from the future! (%s)", nameBuffer);
+   //}
+
+    // If we had a DSO, let's check to see if we should be reading from it.
+    if((compiled && rCom) && (!rScr || Platform::compareFileTimes(comModifyTime, scrModifyTime) >= 0))
+    {
+      compiledStream = ResourceManager->openStream(nameBuffer);
+      if (compiledStream)
+      {
+         // Check the version!
+         compiledStream->read(&version);
+         if(version != DSO_VERSION)
+         {
+            Con::warnf("exec: Found an old DSO (%s, ver %d < %d), ignoring.", nameBuffer, version, DSO_VERSION);
+            ResourceManager->closeStream(compiledStream);
+            compiledStream = NULL;
+         }
+      }
+    }
+
+#ifdef TORQUE_ALLOW_JOURNALING
+   // If we're journalling, let's write some info out.
+   if(journal && Game->isJournalWriting())
+      Game->getJournalStream()->writeString(scriptFileName);
+#endif //TORQUE_ALLOW_JOURNALING
+
+   if(rScr && !compiledStream)
+   {
+      // If we have source but no compiled version, then we need to compile
+      // (and journal as we do so, if that's required).
+
+       //Con::errorf( "No DSO found! : %s", scriptFileName );
+       
+      Stream *s = ResourceManager->openStream(scriptFileName);
+       
+#ifdef	TORQUE_ALLOW_JOURNALING
+      if(journal && Game->isJournalWriting())
+         Game->getJournalStream()->write(bool(s != NULL));
+#endif	//TORQUE_ALLOW_JOURNALING
+
+      if(s)
+      {
+         scriptSize = ResourceManager->getSize(scriptFileName);
+         script = new char [scriptSize+1];
+         s->read(scriptSize, script);
+
+#ifdef	TORQUE_ALLOW_JOURNALING
+         if(journal && Game->isJournalWriting())
+         {
+            Game->journalWrite(scriptSize);
+            Game->journalWrite(scriptSize, script);
+         }
+#endif	//TORQUE_ALLOW_JOURNALING
+         ResourceManager->closeStream(s);
+         script[scriptSize] = 0;
+      }
+
+      if (!scriptSize || !script)
+      {
+         delete [] script;
+         Con::errorf(ConsoleLogEntry::Script, "exec: invalid script file %s.", scriptFileName);
+         execDepth--;
+         return false;
+      }
+
+//Luma: Sven -
+// no dsos in the editor, seems to fail with so many console changes and version crap. Leaving it to
+// work with cs files as is, as they are included with the source either way.
+
+//Also, no DSO generation on iPhone
+#ifdef TORQUE_OS_IOS
+      if(false) 
+#else
+      if(compiled)
+#endif
+      {
+         // compile this baddie.
+         #if defined(TORQUE_DEBUG)
+         Con::printf("Compiling %s...", scriptFileName);
+         #endif
+         CodeBlock *code = new CodeBlock();
+         code->compile(nameBuffer, scriptFileName, script);
+         delete code;
+         code = NULL;
+
+         compiledStream = ResourceManager->openStream(nameBuffer);
+         if(compiledStream)
+         {
+            compiledStream->read(&version);
+         }
+         else
+         {
+            // We have to exit out here, as otherwise we get double error reports.
+            delete [] script;
+            execDepth--;
+            return false;
+         }
+      }
+   }
+   else
+   {
+#ifdef	TORQUE_ALLOW_JOURNALING
+      if(journal && Game->isJournalWriting())
+         Game->getJournalStream()->write(bool(false));
+#endif	//TORQUE_ALLOW_JOURNALING
+   }
+    
+    //Luma : Load compiled script here
+   if(compiledStream)
+   {
+      // Delete the script object first to limit memory used
+      // during recursive execs.
+      delete [] script;
+      script = 0;
+
+      // We're all compiled, so let's run it.
+      
+      //Luma: Profile script executions 
+      F32 st1 = (F32)Platform::getRealMilliseconds();
+
+      CodeBlock *code = new CodeBlock;
+      code->read(scriptFileName, *compiledStream);
+      ResourceManager->closeStream(compiledStream);
+      code->exec(0, scriptFileName, NULL, 0, NULL, noCalls, NULL, 0);
+
+        F32 et1 = (F32)Platform::getRealMilliseconds();
+        
+        F32 etf = et1 - st1;
+
+        if ( scriptExecutionEcho )
+            Con::printf("Loaded compiled script %s. Took %.0f ms", scriptFileName, etf);
+
+      ret = true;
+   }
+   else if(rScr) //Luma : Load normal cs file here.
+   {
+         // No compiled script,  let's just try executing it
+         // directly... this is either a mission file, or maybe
+         // we're on a readonly volume.
+        
+         CodeBlock *newCodeBlock = new CodeBlock();
+         StringTableEntry name = StringTable->insert(scriptFileName);
+
+      
+      //Luma: Profile script executions 
+         F32 st1 = (F32)Platform::getRealMilliseconds();
+         
+         newCodeBlock->compileExec(name, script, noCalls, 0);
+
+         F32 et1 = (F32)Platform::getRealMilliseconds();
+
+         F32 etf = et1 - st1;
+         
+        if ( scriptExecutionEcho )
+            Con::printf("Executed %s. Took %.0f ms", scriptFileName, etf);
+
+         ret = true;
+   }
+   else
+   {
+      // Don't have anything.
+      Con::warnf(ConsoleLogEntry::Script, "Missing file: %s!", pathBuffer);
+      ret = false;
+   }
+
+   delete [] script;
+   execDepth--;
+   return ret;
+}
+
+/*! Use the eval function to execute any valid script statement.
+    If you choose to eval a multi-line statement, be sure that there are no comments or comment blocks embedded in the script string.
+    @param script A string containing a valid script statement. This may be a single line statement or multiple lines concatenated together with new-line characters.
+    @return Returns the result of executing the script statement.
+    @sa call
+*/
+ConsoleFunctionWithDocs(eval, ConsoleString, 2, 2, ( script ))
+{
+   TORQUE_UNUSED( argc );
+   return Con::evaluate(argv[1], false, NULL);
+}
+
+/*! Grabs the relevant data for the variable represented by the given string
+    @param varName A String representing the variable to check
+    @return Returns a string containing component data for the requested variable or an empty string if not found.
+*/
+ConsoleFunctionWithDocs(getVariable, ConsoleString, 2, 2, (string varName))
+{
+   return Con::getVariable(argv[1]);
+}
+
+/*! Checks whether given name represents a current valid function.
+    @param funcName The name of the function to check.
+    @return Returns either true if the string represents a valid function or false if not.
+*/
+ConsoleFunctionWithDocs(isFunction, ConsoleBool, 2, 2, (string funcName))
+{
+   return Con::isFunction(argv[1]);
+}
+
+/*! Checks whether the given method name represents a valid method within the given namespace.
+    @param namespace A string representing the namespace in which the method should reside.
+    @param method The name of the method in question.
+    @return Returns a boolean value which is true if the given mathod name represents a valid method in the namespace and false otherwise.
+*/
+ConsoleFunctionWithDocs(isMethod, ConsoleBool, 3, 3, (string namespace, string method))
+{
+   Namespace* ns = Namespace::find( StringTable->insert( argv[1] ) );
+   Namespace::Entry* nse = ns->lookup( StringTable->insert( argv[2] ) );
+   if( !nse )
+      return false;
+
+   return true;
+}
+
+/*! Attempts to extract a mod directory from path. Returns empty string on failure.
+*/
+ConsoleFunctionWithDocs(getModNameFromPath, ConsoleString, 2, 2, (string path))
+{
+   StringTableEntry modPath = Con::getModNameFromPath(argv[1]);
+   return modPath ? modPath : "";
+}
+
+//----------------------------------------------------------------
+
+/*! 
+*/
+ConsoleFunctionWithDocs(getPrefsPath, ConsoleString, 1, 2, ([fileName]?))
+{
+   const char *filename = Platform::getPrefsPath(argc > 1 ? argv[1] : NULL);
+   if(filename == NULL || *filename == 0)
+      return "";
+     
+   return filename;
+}
+
+/*! 
+*/
+ConsoleFunctionWithDocs(execPrefs, ConsoleBool, 2, 4, (fileName, [nocalls]?, [journalScript]?))
+{
+   const char *filename = Platform::getPrefsPath(argv[1]);
+   if (filename == NULL || *filename == 0)
+      return false;
+
+   if ( !Platform::isFile(filename) )
+    return false;
+
+   argv[0] = "exec";
+   argv[1] = filename;
+   return dAtob(Con::execute(argc, argv));
+}
+
+/*! Use the export function to save all global variables matching the specified name pattern in wildCard to a file, either appending to that file or over-writing it.
+    @param wildCard A string identifying what variable(s) to export. All characters used to create a global are allowed and the special symbol \*\, meaning 0 or more instances of any character.
+    @param fileName A string containing a path to a file in which to save the globals and their definitions.
+    @param append A boolean value. If this value is true, the file will be appended to if it exists, otherwise it will be created/over-written.
+    @return No return value
+*/
+ConsoleFunctionWithDocs(export, ConsoleVoid, 2, 4, ( wildCard, [fileName]?, [append]?))
+{
+    // Fetch the wildcard.
+    const char* pWildcard = argv[1];
+
+    // Fetch the filename.
+    const char* pFilename = NULL;
+    if ( argc >= 3 )
+    {
+        Con::expandPath( pathBuffer, sizeof(pathBuffer), argv[2] );
+        pFilename = pathBuffer;
+    }
+
+    // Fetch append flag.
+    const bool append = argc >= 4 ? dAtob(argv[3] ) : false;
+
+    // Export the variables.
+    gEvalState.globalVars.exportVariables( pWildcard, pFilename, append );
+}
+
+/*! Use the deleteVariables function to delete any global variable matching the wildCard statement.
+    @param wildCard A string identifying what variable(s) to delete. All characters used to create a global are allowed and the special symbol \*\, meaning 0 or more instances of any character.
+    @return No return value
+*/
+ConsoleFunctionWithDocs(deleteVariables, ConsoleVoid, 2, 2, ( wildCard ))
+{
+   TORQUE_UNUSED( argc );
+   gEvalState.globalVars.deleteVariables(argv[1]);
+}
+
+//----------------------------------------------------------------
+
+/*! Use the trace function to enable (or disable) function call tracing. If enabled, tracing will print a message every time a function is entered, showing what arguments it received, and it will print a message every time a function is exited, showing the return value (or last value of last statement) for that function.
+    @param enable A boolean value. If set to true, tracing is enabled, otherwise it is disabled.
+    @return No return value
+*/
+ConsoleFunctionWithDocs(trace, ConsoleVoid, 2, 2, ( enable ))
+{
+   TORQUE_UNUSED( argc );
+   gEvalState.traceOn = dAtob(argv[1]);
+   Con::printf("Console trace is %s", gEvalState.traceOn ? "on." : "off.");
+}
+
+//----------------------------------------------------------------
+
+#if defined(TORQUE_DEBUG) || defined(INTERNAL_RELEASE)
+/*! Use the debug function to cause the engine to issue a debug break and to break into an active debugger.
+    For this to work, the engine must have been compiled with either TORQUE_DEBUG, or INTERNAL_RELEASE defined
+    @return No return value.
+*/
+ConsoleFunctionWithDocs(debug, ConsoleVoid, 1, 1, ())
+{
+   TORQUE_UNUSED( argc );
+   TORQUE_UNUSED( argv );
+   Platform::debugBreak();
+}
+#endif
+
+#if defined(TORQUE_OS_IOS) || defined(TORQUE_OS_OSX)
+//Some code for allowing torsion to connect, this code returns the ipads local ip address
+//code was obtained from http://blog.zachwaugh.com/post/309927273/programmatically-retrieving-ip-address-of-iphone
+//adapted to iT2D by me
+/*! Gets the Apple hardware local IP on wifi. Should work on OS X and iOS
+*/
+ConsoleFunctionWithDocs(getAppleDeviceIPAddress, ConsoleString, 1, 1, ())
+{
+    char *address = Con::getReturnBuffer(32);
+    dStrcpy(address, "error");
+    struct ifaddrs *interfaces = NULL;
+    struct ifaddrs *temp_addr = NULL;
+    int success = 0;
+
+    // retrieve the current interfaces - returns 0 on success
+    success = getifaddrs(&interfaces);
+    if (success == 0)
+    {
+        // Loop through linked list of interfaces
+        temp_addr = interfaces;
+        while(temp_addr != NULL)
+        {
+            if(temp_addr->ifa_addr->sa_family == AF_INET)
+            {
+                // Check if interface is en0 which is the wifi connection on the iPhone
+                // Note: Could be different on MacOSX and simulator and may need modifying
+                if(dStrcmp(temp_addr->ifa_name, "en0") == 0)
+                {
+                    dStrcpy(address, inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr));
+                }
+            }
+
+            temp_addr = temp_addr->ifa_next;
+        }
+    }
+
+    // Free memory
+    freeifaddrs(interfaces);
+
+    return address;
+}
+#endif
+
+
+//----------------------------------------------------------------
+
+/*! 
+*/
+ConsoleFunctionWithDocs( enumerateConsoleClasses, ConsoleString, 1, 2, ([baseClass]?))
+{
+
+   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;
+}
+
+/*! @} */ // group MetaScriptFunctions

+ 223 - 0
engine/source/console/output_ScriptBinding.h

@@ -0,0 +1,223 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+ConsoleFunctionGroupBegin( Output, "Functions to output to the console." );
+
+/*! @addtogroup ConsoleOutput Console Output
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! Use the echo function to print messages to the console.
+    @param text Any valid text string.
+    @param ... Any additional valid text string(s).
+    @return No return value.
+    @sa error, warn
+*/
+ConsoleFunctionWithDocs(echo, ConsoleVoid, 2, 0, ( text, [...]* ))
+{
+   U32 len = 0;
+   S32 i;
+   for(i = 1; i < argc; i++)
+      len += dStrlen(argv[i]);
+
+   char *ret = Con::getReturnBuffer(len + 1);
+   ret[0] = 0;
+   for(i = 1; i < argc; i++)
+      dStrcat(ret, argv[i]);
+
+   Con::printf("%s", ret);
+   ret[0] = 0;
+}
+
+/*! Prints a separator to the console.
+*/
+ConsoleFunctionWithDocs(echoSeparator, ConsoleVoid, 0, 0, ())
+{
+    Con::printSeparator();
+}
+
+/*! Use the warn function to print warning messages to the console. These messages usually yellow or orange.
+    @param text Any valid text string.
+    @param ... Any additional valid text string(s).
+    @return No return value.
+    @sa warn, error
+*/
+ConsoleFunctionWithDocs(warn, ConsoleVoid, 2, 0, ( text, [...]* ))
+{
+   U32 len = 0;
+   S32 i;
+   for(i = 1; i < argc; i++)
+      len += dStrlen(argv[i]);
+
+   char *ret = Con::getReturnBuffer(len + 1);
+   ret[0] = 0;
+   for(i = 1; i < argc; i++)
+      dStrcat(ret, argv[i]);
+
+   Con::warnf(ConsoleLogEntry::General, "%s", ret);
+   ret[0] = 0;
+}
+
+/*! Use the error function to print error messages to the console. These messages usually print in red.
+    @param text Any valid text string.
+    @param ... Any additional valid text string(s).
+    @return No return value.
+    @sa echo, warn
+*/
+ConsoleFunctionWithDocs(error, ConsoleVoid, 2, 0, ( text, [...]* ))
+{
+   U32 len = 0;
+   S32 i;
+   for(i = 1; i < argc; i++)
+      len += dStrlen(argv[i]);
+
+   char *ret = Con::getReturnBuffer(len + 1);
+   ret[0] = 0;
+   for(i = 1; i < argc; i++)
+      dStrcat(ret, argv[i]);
+
+   Con::errorf(ConsoleLogEntry::General, "%s", ret);
+   ret[0] = 0;
+}
+
+/*! Use the collapseEscape function to replace all escape sequences ('xx') with an expanded version ('xx').
+    @param text A string, possibly containing escape sequences.
+    @return Returns a copy of text with all escape sequences expanded.
+    @sa collapseEscape
+*/
+ConsoleFunctionWithDocs(expandEscape, ConsoleString, 2, 2, ( text ))
+{
+   TORQUE_UNUSED( argc );
+   char *ret = Con::getReturnBuffer(dStrlen(argv[1])*2 + 1);  // worst case situation
+   expandEscape(ret, argv[1]);
+   return ret;
+}
+
+/*! Use the collapseEscape function to replace all escape sequences ('xx') with a collapsed version ('xx').
+    @param text A string, possibly containing escape sequences.
+    @return Returns a copy of text with all escape sequences converted to an encoding.
+    @sa expandEscape
+*/
+ConsoleFunctionWithDocs(collapseEscape, ConsoleString, 2, 2, ( text ))
+{
+   TORQUE_UNUSED( argc );
+   char *ret = Con::getReturnBuffer(dStrlen(argv[1]) + 1);  // worst case situation
+   dStrcpy( ret, argv[1] );
+   collapseEscape( ret );
+   return ret;
+}
+
+/*! Use the setLogMode function to set the logging level based on bits that are set in the mode argument.
+    This is a general debug method and should be used in all but release cases and perhaps even then.
+    @param mode A bitmask enabling various types of logging. See 'Logging Modes' table below.
+    @return No return value.
+    @sa intputLog
+*/
+ConsoleFunctionWithDocs(setLogMode, ConsoleVoid, 2, 2, ( mode ))
+{
+   TORQUE_UNUSED( argc );
+   Con::setLogMode(dAtoi(argv[1]));
+}
+
+/*! Use the setEchoFileLoads function to enable/disable echoing of file loads (to console).
+    This does not completely disable message, but rather adds additional methods when echoing is set to true. File loads will always echo a compile statement if compiling is required, and an exec statement at all times
+    @param enable A boolean value. If this value is true, extra information will be dumped to the console when files are loaded.
+    @return No return value.
+*/
+ConsoleFunctionWithDocs(setEchoFileLoads, ConsoleVoid, 2, 2, ( enable ))
+{
+   TORQUE_UNUSED( argc );
+   ResourceManager->setFileNameEcho(dAtob(argv[1]));
+}
+
+
+//----------------------------------------------------------------
+
+/*! Use the quit function to stop the engine and quit to the command line.
+    @return No return value
+*/
+ConsoleFunctionWithDocs(quit, ConsoleVoid, 1, 1, ())
+{
+   TORQUE_UNUSED( argc );
+   TORQUE_UNUSED( argv );
+   Platform::postQuitMessage(0);
+}
+
+/*! quitWithErrorMessage(msg)
+     - Quit, showing the provided error message. This is equivalent
+     to an AssertISV.
+    @param Error Message
+    @return No return value
+*/
+ConsoleFunctionWithDocs(quitWithErrorMessage, ConsoleVoid, 2, 2, (msg string))
+{
+   AssertISV(false, argv[1]);
+}
+
+//----------------------------------------------------------------
+
+/*! Open a URL in the user's favorite web browser.
+*/
+ConsoleFunctionWithDocs( gotoWebPage, ConsoleVoid, 2, 2, ( address ))
+{
+   TORQUE_UNUSED( argc );
+   char* protocolSep = dStrstr(argv[1],"://");
+
+   if( protocolSep != NULL )
+   {
+      Platform::openWebBrowser(argv[1]);
+      return;
+   }
+
+   // if we don't see a protocol seperator, then we know that some bullethead
+   // sent us a bad url. We'll first check to see if a file inside the sandbox
+   // with that name exists, then we'll just glom "http://" onto the front of 
+   // the bogus url, and hope for the best.
+   
+   char urlBuf[2048];
+   if(Platform::isFile(argv[1]) || Platform::isDirectory(argv[1]))
+   {
+      dSprintf(urlBuf, sizeof(urlBuf), "file://%s",argv[1]);
+   }
+   else
+      dSprintf(urlBuf, sizeof(urlBuf), "http://%s",argv[1]);
+   
+   Platform::openWebBrowser(urlBuf);
+   return;
+}
+
+//----------------------------------------------------------------
+
+/*! Use the cls function to clear the console output.
+    @return No return value
+*/
+ConsoleFunctionWithDocs( cls, ConsoleVoid, 1, 1, ())
+{
+    Con::cls();
+};
+
+//----------------------------------------------------------------
+
+ConsoleFunctionGroupEnd(Output)
+
+/*! @} */ // group ConsoleOutput

+ 941 - 0
engine/source/console/syntax_ScriptPage.md

@@ -0,0 +1,941 @@
+# TorqueScript Syntax {#TorqueScriptSyntax}
+
+## Main Rules
+Like other languages, TorqueScript has certain syntactical rules you need to follow. The language is very forgiving, easy to debug, and is not as strict as a low level language like C++. Observe the following line in a script:
+
+~~~{.cpp}
+// Create test variable with a temporary variable
+%testVariable = 3;
+~~~
+The three most simple rules obeyed in the above code are:
+
+1. Ending a line with a semi-colon (;)
+2. Proper use of white space.
+3. Commenting
+
+The engine will parse code line by line, stopping whenever it reaches a semi-colon. This is referred to as a statement termination, common to other programming languages such as C++, Javascript, etc. The following code will produce an error that may cause your entire script to fail:
+
+~~~{.cpp}
+%testVariable = 3
+%anotherVariable = 4;
+~~~
+
+To the human eye, you are able to discern two separate lines of code with different actions. Here is how the script compiler will read it:
+
+~~~{.cpp}
+%testVariable = 3%anotherVariable = 4;
+~~~
+
+This is obviously not what the original code was meant to do. There are exemptions to this rule, but they come into play when multiple lines of code are supposed to work together for a single action:
+
+~~~{.cpp}
+if(%testVariable == 4)
+  echo("Variable equals 4");
+~~~
+
+We have not covered conditional operators or echo commands yet, but you should notice that the first line does not have a semi-colon. The easiest explanation is that the code is telling the compiler: "Read the first line, do the second line if we meet the requirements." In other words, perform operations between semi-colons. Complex operations require multiple lines of code working together.
+
+The second rule, proper use of whitespace, is just as easy to remember. Whitespace refers to how your script code is separated between operations. Let's look at the first example again:
+
+~~~{.cpp}
+%testVariable = 3;
+~~~
+
+The code is storing a value (3) in a local variable (`%%testVariable`). It is doing so by using a common mathematical operator, the equal sign. TorqueScript recognizes the equal sign and performs the action just as expected. It does not care if there are spaces in the operation:
+
+~~~{.cpp}
+%testVariable=3;
+~~~
+
+The above code works just as well, even without the spaces between the variable, the equal sign, and the 3. The whitespace rule makes a lot more sense when combined with the semi-colon rule and multiple lines of code working together. The following will compile and run without error:
+
+~~~{.cpp}
+if(%testVariable == 4) echo("Variable equals 4");
+~~~
+
+## Comments
+The last rule is optional, but should be used as often as possible if you want to create clean code. Whenever you write code, you should try to use comments. Comments are a way for you to leave notes in code which are not compiled into the game. The compiler will essentially skip over these lines.
+
+There are two different comment syntax styles. The first one uses the two slashes, `//`. This is used for single line comments:
+
+Example:
+~~~{.cpp}
+// This comment line will be ignored
+// This second line will also be ignored
+%testVariable = 3;
+// This third line will also be ignored
+~~~
+
+In the last example, the only line of code that will be executed has to do with `%%testVariable`. If you need to comment large chunks of code, or leave a very detailed message, you can use the `/*comment*/` syntax. The `/*` starts the commenting, the `*/` ends the commenting, and anything in between will be considered a comment.
+
+Example:
+
+~~~{.cpp}
+/*
+While attending school, an instructor taught a mantra I still use:
+
+"Read. Read Code. Code."
+
+Applying this to Torque 2D development is easy: 
+
+READ the documentation first. 
+
+READ CODE written by other Torque developers.
+
+CODE your own prototypes based on what you have learned.
+*/
+~~~
+
+As you can see, the comment makes full use of whitespace and multiple lines. While it is important to comment what the code does, you can also use this to temporarily remove unwanted code until a better solution is found:
+
+Example:
+
+~~~{.cpp}
+// Why are you using multiple if statements. Why not use a switch$?
+/*
+if(%testVariable == "Mich")
+  echo("User name: ", %testVariable);
+
+if(%testVariable == "Heather")
+  echo("User Name: ", %testVariable);
+
+if(%testVariable == "Nikki")
+  echo("User Name: ", %testVariable);
+*/
+~~~
+
+# Variables
+
+## Usage
+Now that you know the two most basic rules of writing code in TorqueScript, this is the best time to learn about variables. A variable is a letter, word, or phrase linked to a value stored in your game's memory and used during operations. Creating a variable is a one line process. The following code creates a variable by naming it and assigning a value:
+
+~~~{.cpp}
+%localVariable = 3;
+~~~
+
+You can assign any type value to the variable you want. This is referred to as a language being type-insensitive. TorqueScript does not care (insensitive) what you put in a variable, even after you have created it. The following code is completely valid:
+
+~~~{.cpp}
+%localVariable = 27;
+%localVariable = "Heather";
+%localVariable = "7 7 7";
+~~~
+
+The main purpose of the code is to show that TorqueScript treats all data types the same way. It will interpret and convert the values internally, so you do not have to worry about typecasting. That may seem a little confusing. After all, when would you want a variable that can store a number, a string, or a vector?
+
+You will rarely need to, which is why you want to start practicing good programming habits. An important practice is proper variable naming. The following code will make a lot more sense, considering how the variables are named:
+
+~~~{.cpp}
+%userName = "Heather";
+%userAge = 27;
+%userScores = "7 7 7";
+~~~
+
+Earlier, I mentioned that TorqueScript is more forgiving than low level programming languages. While it expects you to obey the basic syntax rules, it will allow you to get away with small mistakes or inconsistency. The best example is variable case sensitivity. At some point in school you learned the difference between upper case and lower case letters.
+
+With variables, TorqueScript is not case sensitive. You can create a variable and refer to it during operations without adhering to case rules:
+
+~~~{.cpp}
+%userName = "Heather";
+echo(%Username);
+~~~
+
+In the above code, `%%userName` and `%%Username` are the same variable, even though they are using different capitalization. You should still try to remain consistent in your variable naming and usage, but you will not be punished if you slip up occasionally.
+
+## Variable Types
+There are two types of variables you can declare and use in TorqueScript: local and global. Both are created and referenced similarly:
+
+~~~{.cpp}
+%localVariable = 1;
+$globalVariable = 2;
+~~~
+
+As you can see, local variable names are preceded by the percent sign `(%%)`. Global variables are preceded by the dollar sign `($)`. Both types can be used in the same manner: operations, functions, equations, etc. The main difference has to do with how they are scoped.
+
+In programming, scoping refers to where in memory a variable exists and its life. A local variable is meant to only exist in specific blocks of code, and its value is discarded when you leave that block. Global variables are meant to exist and hold their value during your entire programs execution. Look at the following code to see an example of a local variable:
+
+~~~{.cpp}
+function test()
+{
+   %userName = "Heather";
+   echo(%userName);
+}
+~~~
+
+We will cover functions a little later, but you should know that functions are blocks of code that only execute when you call them by name. This means the variable, `%%userName`, does not exist until the test() function is called. When the function has finished all of its logic, the `%%userName` variable will no longer exist. If you were to try to access the %%userName variable outside of the function, you will get nothing.
+
+Most variables you will work with are local, but you will eventually want a variables that last for your entire game. These are extremely important values used throughout the project. This is when global variables become useful. For the most part, you can declare global variables whenever you want:
+
+~~~{.cpp}
+$PlayerName = "Heather";
+
+function printPlayerName()
+{
+   echo($PlayerName);
+}
+
+function setPlayerName()
+{
+   $PlayerName = "Nikki";
+}
+
+~~~
+
+The above code makes full use of a global variable that holds a player's name. The first declaration of the variable happens outside of the functions, written anywhere in your script. Because it is global, you can reference it in other locations, including separate script files. Once declared, your game will hold on to the variable until shutdown.
+
+## Data Types
+TorqueScript implicitly supports several variable data-types: numbers, strings, booleans, and arrays and vectors. If you wish to test the various data types, you can use the echo(...) command. For example:
+
+~~~{.cpp}
+%meaningOfLife = 42;
+echo(%meaningOfLife);
+
+$name = "Heather";
+echo($name);
+~~~
+
+The echo will post the results in the console, which can be accessed by pressing the ctrl+tilde key (`~`) while in game.
+
+## Numbers
+TorqueScript handles standard numeric types
+
+~~~{.cpp}
+123     (Integer)
+1.234   (floating point)
+1234e-3 (scientific notation)
+0xc001  (hexadecimal)
+~~~
+
+## Strings
+Text, such as names or phrases, are supported as strings. Numbers can also be stored in string format. Standard strings are stored in double-quotes.
+
+~~~{.cpp}
+"abcd"
+~~~
+
+Example:
+
+~~~{.cpp}
+$UserName = "Heather";
+~~~
+
+Strings with single quotes are called "tagged strings."
+
+~~~{.cpp}
+'abcd'  (tagged string)
+~~~
+
+Tagged strings are special in that they contain string data, but also have a special numeric tag associated with them. Tagged strings are used for sending string data across a network. The value of a tagged string is only sent once, regardless of how many times you actually do the sending.
+
+On subsequent sends, only the tag value is sent. Tagged values must be de-tagged when printing. You will not need to use a tagged string often unless you are in need of sending strings across a network often, like a chat system.
+
+Example:
+
+~~~{.cpp}
+$a = 'This is a tagged string';
+echo("  Tagged string: ", $a);
+echo("Detagged string: ", detag('$a'));
+~~~
+
+The output will be similar to this:
+
+~~~{.cpp}
+24
+___
+~~~
+
+The second echo will be blank unless the string has been passed to you over a network.
+
+## String Operators
+There are special values you can use to concatenate strings and variables. Concatenation refers to the joining of multiple values into a single variable. The following is the basic syntax:
+
+~~~{.cpp}
+"string 1" operation "string 2"
+~~~
+
+You can use string operators similarly to how you use mathematical operators (=, +, -, *). You have four operators at your disposal:
+
+**String Operators**
+
+| Operator | Name | Example | Explanation |
+|-------------|:-------------:|:-------------:|------------|
+| @ | String concatenation | `$c @ $d` | Concatenates strings $c and $d into a single string. Numeric literals/variables convert to strings. |
+| NL | New Line | `$c NL $d` | Concatenates strings $c and $d into a single string separated by new-line. |
+| TAB | Tab | `$c TAB $d` | Concatenates strings $c and $d into a single string separated by tab. |
+| SPC | Space | `$c SPC $d` | Concatenates strings $c and $d into a single string separated by space. Note: such a string can be decomposed with getWord() |
+
+The `@` symbol will concatenate two strings together exactly how you specify, without adding any additional whitespace:
+
+Note: Do not type in OUTPUT: ___. This is placed in the sample code to show you what the console would display
+
+Example:
+~~~{.cpp}
+%newString = "Hello" @ "World";
+echo(%newString);
+
+OUTPUT: HelloWorld
+~~~
+
+Notice how the two strings are joined without any spaces. If you include whitespace, it will be concatenated along with the values:
+
+Example:
+~~~{.cpp}
+%newString = "Hello " @ "World";
+echo(%newString);
+
+OUTPUT: Hello World
+~~~
+
+String operators work with variables as well:
+
+Example:
+~~~{.cpp}
+%hello = "Hello ";
+%world = "World";
+
+echo(%hello @ %world);
+
+OUTPUT: Hello World
+~~~
+
+The rest of the operators will apply whitespace for you, so you do not have to include it in your values:
+
+Example:
+~~~{.cpp}
+echo("Hello" @ "World");
+echo("Hello" TAB "World");
+echo("Hello" SPC "World");
+echo("Hello" NL "World");
+
+OUTPUT:
+HelloWorld
+Hello   World
+Hello World
+Hello
+World
+~~~
+
+## Booleans
+Like most programming languages, TorqueScript also supports Booleans. Boolean numbers have only two values- true or false.
+
+<pre>
+true    (1)
+false   (0)
+</pre>
+
+Again, as in many programming languages the constant "true" evaluates to the number 1 in TorqueScript, and the constant "false" evaluates to the number 0. However, non-zero values are also considered true. Think of booleans as "on/off" switches, often used in conditional statements.
+
+Example:
+~~~{.cpp}
+$lightsOn = true;
+
+if($lightsOn)
+  echo("Lights are turned on");
+~~~
+
+## Arrays
+Arrays are data structures used to store consecutive values of the same data type.
+
+~~~{.cpp}
+$TestArray[n]   (Single-dimension)
+$TestArray[m,n] (Multidimensional)
+$TestArray[m_n] (Multidimensional)
+~~~
+
+If you have a list of similar variables you wish to store together, try using an array to save time and create cleaner code. The syntax displayed above uses the letters 'n' and 'm' to represent where you will input the number of elements in an array. The following example shows code that could benefit from an array:
+
+Example:
+~~~{.cpp}
+$firstUser = "Heather";
+$secondUser = "Nikki";
+$thirdUser = "Mich";
+
+echo($firstUser);
+echo($secondUser);
+echo($thirdUser);
+~~~
+
+Instead of using a global variable for each user name, we can put those values into a single array:
+
+Example:
+~~~{.cpp}
+$userNames[0] = "Heather";
+$userNames[1] = "Nikki";
+$userNames[2] = "Mich";
+
+echo($userNames[0]);
+echo($userNames[1]);
+echo($userNames[2]);
+~~~
+
+Now, let's break the code down. Like any other variable declaration, you can create an array by giving it a name and value:
+
+~~~{.cpp}
+$userNames[0] = "Heather";
+~~~
+
+What separates an array declaration from a standard variable is the use of brackets []. The number you put between the brackets is called the index. The index will access a specific element in an array, allowing you to view or manipulate the data. All the array values are stored in consecutive order.
+
+If you were able to see an array on paper, it would look something like this:
+
+~~~{.cpp}
+[0] [1] [2]
+~~~
+
+In our example, the data looks like this:
+
+~~~{.cpp}
+["Heather"] ["Nikki"] ["Mich"]
+~~~
+
+Like other programming languages, the index is always a numerical value and the starting index is always 0. Just remember, index 0 is always the first element in an array. As you can see in the above example, we create the array by assigning the first index (0) a string value ("Heather").
+
+The next two lines continue filling out the array, progressing through the index consecutively.
+
+~~~{.cpp}
+$userNames[1] = "Nikki";
+$userNames[2] = "Mich";
+~~~
+
+The second array element (index 1) is assigned a different string value ("Nikki"), as is the third (index 2). At this point, we still have a single array structure, but it is holding three separate values we can access. Excellent for organization.
+
+
+The last section of code shows how you can access the data that has been stored in the array. Again, you use a numerical index to point to an element in the array. If you want to access the first element, use 0:
+
+~~~{.cpp}
+echo($userNames[0]);
+~~~
+
+In a later section, you will learn about looping structures that make using arrays a lot simpler. Before moving on, you should know that an array does not have to be a single, ordered list. TorqueScript also supports multidimensional arrays.
+
+An single-dimensional array contains a single row of values. A multidimensional array is essentially an array of arrays, which introduces columns as well. The following is a visual of what a multidimensional looks like with three rows and three columns:
+
+~~~{.cpp}
+[x] [x] [x]
+[x] [x] [x]
+[x] [x] [x]
+~~~
+
+Defining this kind of array in TorqueScript is simple. The following creates an array with 3 rows and 3 columns.
+
+Example:
+~~~{.cpp}
+$testArray[0,0] = "a";
+$testArray[0,1] = "b";
+$testArray[0,2] = "c";
+
+$testArray[1,0] = "d";
+$testArray[1,1] = "e";
+$testArray[1,2] = "f";
+
+$testArray[2,0] = "g";
+$testArray[2,1] = "h";
+$testArray[2,2] = "i";
+~~~
+
+Notice that we are are now using two indices, both starting at 0 and stopping at 2. We can use these as coordinates to determine which array element we are accessing:
+
+~~~{.cpp}
+[0,0] [0,1] [0,2]
+[1,0] [1,1] [1,2]
+[2,0] [2,1] [2,2]
+~~~
+
+In our example, which progresses through the alphabet, you can visualize the data in the same way:
+
+~~~{.cpp}
+[a] [b] [c]
+[d] [e] [f]
+[g] [h] [i]
+~~~
+
+The first element `[0,0]` points to the letter 'a'. The last element `[2,2]` points to the letter 'i'.
+
+## Vectors
+"Vectors" are a helpful data-type which are used throughout Torque 2D. For example, many fields on SceneObjects take numeric values in sets of 2 or 3. These are stored as strings and interpreted as "vectors".
+
+~~~{.cpp}
+"1.0 1.0"  (2 element vector)
+~~~
+
+The most common example of a vector would be a world position. Like most 2D coordinate systems, an object's position is stored as `(X Y)`. You can use a two element vector to hold this data:
+
+Example:
+~~~{.cpp}
+%position = "25 32";
+~~~
+
+You can separate the values using spaces or tabs (both are acceptable whitespace). Another example is storing color data in a four element vector. The values that make up a color are "Red Blue Green Alpha," which are all numbers. You can create a vector for color using hard numbers, or variables:
+
+Example:
+~~~{.cpp}
+%firstColor = "100 100 100 1.0";
+echo(%firstColor);
+
+%red = 128;
+%blue = 255;
+%green = 64;
+%alpha = 1.0;
+
+%secondColor = %red SPC %blue SPC %green SPC %alpha;
+echo(%secondColor);
+~~~
+
+# Operators
+Operators in TorqueScript behave very similarly to operators in real world math and other programming languages. You should recognize quite a few of these from math classes you took in school, but with small syntactical changes. The rest of this section will explain the syntax and show a brief example, but we will cover these in depth in later guides.
+
+**Arithmetic Operators**
+
+| Operator | Name | Example | Explanation |
+|:-------------:|:-------------:|:-------------:|------------|
+| * | multiplication | `$a * $b` | Multiply $a and $b. |
+| / | division | `$a / $b` | Divide $a by $b. |
+| % | modulo | `$a % $b` | Remainder of $a divided by $b. |
+| + | addition | `$a + $b` | Add $a and $b. |
+| - | subtraction | `$a - $b` | Subtract $b from $a. |
+| ++ | auto-increment (post-fix only) | $a++ | Increment $a. The value of $a++ is that of the incremented variable: auto-increment is post-fix in syntax, but pre-increment in sematics (the variable is incremented, before the return value is calculated). This behavior is unlike that of C and C++. |
+| \-- | auto-decrement (post-fix only) | $b\-- | Decrement $b. The value of $a\-- is that of the decremented variable: auto-decrement is post-fix in syntax, but pre-decrement in sematics (the variable is decremented, before the return value is calculated). This behavior is unlike that of C and C++. |
+
+**Relational Operators**
+
+Used in comparing values and variables against each other. Relations can be arithmetic, logical, and string:
+
+| Operator | Name | Example | Explanation |
+|:-------------:|:-------------:|:-------------:|------------|
+| `<` | Less than | `$a < $b` | 1 if $a is less than $b (0 otherwise.) |
+| `>` | More than | `$a > $b` | 1 if $a is greater than $b (0 otherwise.) |
+| `<=` | Less than or Equal to | `$a <= $b` | 1 if $a is less than or equal to $b (0 otherwise.) |
+| `>=` | More than or Equal to | `$a >= $b` | 1 if $a is greater than or equal to $b (0 otherwise.) |
+| `==` | Equal to | `$a == $b` | 1 if $a is equal to $b (0 otherwise.) |
+| `!=` | Not equal to | `$a != $b` | 1 if $a is not equal to % b (0 otherwise.) |
+| `!` | Logical NOT | `!$a` | 1 if $a is 0 (0 otherwise.) |
+| `&&` | Logical AND | `$a && $b` | 1 if $a and $b are both non-zero (0 otherwise.) |
+| `$=` | String equal to | `$c $= $d` | 1 if $c equal to $d . |
+| `!$=` | String not equal to | `$c !$= $d` | 1 if $c not equal to $d. |
+
+One additional operator is the logical OR, represented by `||`. Example:
+
+~~~{.cpp}
+$a || $b
+~~~
+OR will return 1 if either `$a` or `$b` is non-zero (0 otherwise.)
+
+**Bitwise Operators**
+
+Used for comparing and shifting bits
+
+| Operator | Name | Example | Explanation |
+|:-------------:|:-------------:|:-------------:|------------|
+| ~ | Bitwise complement | ~$a | flip bits 1 to 0 and 0 to 1. (i.e. ~10b == 01b) |
+| & | Bitwise AND | $a & $b | composite of elements where bits in same position are 1. (i.e. 1b & 1b == 1b) |
+| ^ | Bitwise XOR | $a ^ $b | composite of elements where bits in same position are opposite. (i.e. 100b & 101b == 001b) |
+| << | Left Shift | $a << 3 | element shifted left by 3 and padded with zeros. (i.e. 11b << 3d == 11000b) |
+| >> | Right Shift | $a >> 3 | element shifted right by 3 and padded with zeros. (i.e. 11010b >> 3d == 00011b) |
+
+One additional operator is the bitwise OR, represented by `|`. Example:
+
+~~~{.cpp}
+$a | $b
+~~~
+This will return composite of elements where bits 1 in either of the two elements. (i.e. `100b & 001b == 101b`).
+
+**Assignment Operators**
+
+Used for setting the value of variables.
+
+| Operator | Name | Example | Explanation |
+|:-------------:|:-------------:|:-------------:|------------|
+| Assignment | $a = $b; | Assign value of $b to $a. | Note: the value of an assignment is the value being assigned, so $a = $b = $c is legal. |
+| op= | Assignment Operators | $a op= $b; | Equivalent to $a = $a op $b, where op can be any of: `*` `/` `%` `+` `-` `&` `^` `<<` `>>` \| |
+
+# Control Statements
+TorqueScript provides basic branching structures that will be familiar to programmers that have used other languages. If you are completely new to programming, you use branching structures to control your game's flow and logic. This section builds on everything you have learned about TorqueScript so far.
+
+## if, then, else
+This type of structure is used to test a condition, then perform certain actions if the condition passes or fails. You do not always have to use the full structure, but the following syntax shows the extent of the conditional:
+
+~~~{.cpp}
+if(<boolean expression>) 
+{
+   pass logic
+}
+else 
+{
+   alternative logic
+}
+~~~
+
+Remember how boolean values work? Essentially, a bool can either be true (1) or false (0). The condition (boolean) is always typed into the parenthesis after the "if" syntax. Your logic will be typed within the brackets {}. The following example uses specific variable names and conditions to show how this can be used:
+
+Example:
+~~~{.cpp}
+// Global variable that controls lighting
+$lightsShouldBeOn = true;
+
+// Check to see if lights should be on or off
+if($lightsShouldBeOn)
+{
+   // True. Call turn on lights function
+   turnOnLights();
+
+   echo("Lights have been turned on");
+}
+else
+{
+   // False. Turn off the lights
+   turnOffLights();
+
+   echo("Lights have been turned off");
+}
+~~~
+
+Brackets for single line statements are optional. If you are thinking about adding additional logic to the code, then you should use the brackets anyway. If you know you will only use one logic statement, you can use the following syntax:
+
+Example:
+~~~{.cpp}
+// Global variable that controls lighting
+$lightsShouldBeOn = true;
+
+// Check to see if lights should be on or off
+if($lightsShouldBeOn)
+  turnOnLights();   // True. Call turn on lights function
+else
+  turnOffLights(); // False. Turn off the lights
+~~~
+
+## switch and switch$
+If your code is using several cascading if-then-else statements based on a single value, you might want to use a switch statement instead. Switch statements are easier to manage and read. There are two types of switch statements, based on data type: numeric (`switch`) and string (`switch$`).
+
+Switch Syntax:
+~~~{.cpp}
+switch(<numeric expression>) 
+{
+   case value0:
+       statements;
+   case value1:
+       statements;
+   case value3:
+       statements;
+   default:
+       statements;
+}
+~~~
+
+As the above code demonstrates, start by declaring the switch statement by passing in a value to the `switch(...)` line. Inside of the brackets `{}`, you will list out all the possible cases that will execute based on what value being tested. It is wise to always use the default case, anticipating rogue values being passed in.
+
+Example:
+~~~{.cpp}
+switch($ammoCount)
+{
+   case 0:
+      echo("Out of ammo, time to reload");
+      reloadWeapon();
+   case 1:
+      echo("Almost out of ammo, warn user");
+      lowAmmoWarning();
+   case 100:
+      echo("Full ammo count");
+      playFullAmmoSound();
+   default:
+      doNothing();
+}
+~~~
+
+`switch` only properly evaluates numerical values. If you need a switch statement to handle a string value, you will want to use `switch$`. The `switch$` syntax is similar to what you just learned:
+
+Switch$ Syntax:
+~~~{.cpp}
+switch$ (<string expression>) 
+{
+   case "string value 0":
+       statements;
+
+   case "string value 1":
+       statements;
+...
+   case "string value N":
+       statements;
+
+   default:
+       statements;
+}
+~~~
+
+Appending the `$` sign to switch will immediately cause the parameter passed in to be parsed as a string. The following code applies this logic:
+
+Example:
+~~~{.cpp}
+// Print out specialties
+switch($userName)
+{
+   case "Heather":
+      echo("Sniper");
+   case "Nikki":
+      echo("Demolition");
+   case "Mich":
+      echo("Meat shield");
+   default:
+      echo("Unknown user");
+}
+~~~
+
+# Loops
+As the name implies, this structure type is used to repeat logic in a loop based on an expression. The expression is usually a set of variables that increase by count, or a constant variable changed once a loop has hit a specific point.
+
+## For Loop
+~~~{.cpp}
+for(expression0; expression1; expression2) 
+{
+    statement(s);
+}
+~~~
+
+One way to label the expressions in this syntax are `(startExpression; testExpression; countExpression)`. Each expression is separated by a semi-colon.
+
+Example:
+~~~{.cpp}
+for(%count = 0; %count < 3; %count++) 
+{
+    echo(%count);
+}
+
+OUTPUT:
+0
+1
+2
+~~~
+
+The first expression creates the local variable `%count` and initializing it to 0. In the second expression determines when to stop looping, which is when the `%count` is no longer less than 3. Finally, the third expression increases the count the loop relies on.
+
+## While Loop
+A while loop is a much simpler looping structure compared to a for loop.
+
+~~~{.cpp}
+while(expression) 
+{
+    statements;
+}
+~~~
+
+As soon as the expression is met, the while loop will terminate:
+
+Example:
+~~~{.cpp}
+%countLimit = 0;
+
+while(%countLimit <= 5)
+{
+   echo("Still in loop");
+   %count++;
+}
+echo("Loop was terminated");
+~~~
+
+# Functions
+Much of your TorqueScript experience will come down to calling existing functions and writing your own. Functions are a blocks of code that only execute when you call them by name. Basic functions in TorqueScript are defined as follows:
+
+~~~{.cpp}
+// function - Is a keyword telling TorqueScript we are defining a new function.
+// function_name - Is the name of the function we are creating.
+// ... - Is any number of additional arguments.
+// statements - Your custom logic executed when function is called
+// return val - The value the function will give back after it has completed. Optional.
+
+function function_name([arg0],...,[argn]) 
+{
+    statements;
+    [return val;]
+}
+~~~
+
+The `function` keyword, like other TorqueScript keywords, is case sensitive. You must type it exactly as shown above. The following is an example of a custom function that takes in two parameters, then executes code based on those arguments.
+
+TorqueScript can take any number of arguments, as long as they are comma separated. If you call a function and pass fewer parameters than the function's definition specifies, the un-passed parameters will be given an empty string as their default value.
+
+Example:
+~~~{.cpp}
+function echoRepeat (%echoString, %repeatCount) 
+{
+   for (%count = 0; %count < %repeatCount; %count++)
+   {
+      echo(%echoString);
+   }
+}
+~~~
+You can cause this function to execute by calling it in the console, or in another function:
+
+~~~{.cpp}
+echoRepeat("hello!", 5);
+
+OUTPUT:
+"hello!"
+"hello!"
+"hello!"
+"hello!"
+"hello!"
+~~~
+
+If you define a function and give it the same name as a previously defined function, TorqueScript will completely override the old function. This still applies even if you change the number of parameters used; the older function will still be overridden.
+
+**Console Methods**
+Console Methods are C++ functions that have been exposed to TorqueScript, which are attached to specific objects.
+
+**Console Functions**
+Console Functions are written in C++, then exposed to TorqueScript. These are global functions you can call at any time, and are usually very helpful or important. Throughout this document, I have been using a ConsoleFunction: `echo(...)`. The `echo` function definition exists in C++:
+
+
+C++ echo:
+
+~~~{.cpp}
+ConsoleFunction(echo, void, 2, 0, "echo(text [, ... ])")
+{
+   U32 len = 0;
+   S32 i;
+   for(i = 1; i < argc; i++)
+      len += dStrlen(argv[i]);
+
+   char *ret = Con::getReturnBuffer(len + 1);
+   ret[0] = 0;
+   for(i = 1; i < argc; i++)
+      dStrcat(ret, argv[i]);
+
+   Con::printf("%s", ret);
+   ret[0] = 0;
+}
+~~~
+
+Instead of having to write that out every time, or create a TorqueScript equivalent, the ConsoleFunction macro in C++ exposes the command for you. This is much cleaner, and more convenient. We will cover all the ConsoleFunctions later.
+
+**Objects**
+The most complex aspect of TorqueScript involves dealing with game objects. One thing to remember is that everything in TorqueScript is a string. However, when accessing a sprite, sceneObject, or any other object, a string is converted to an object ID under the hood.
+
+*Syntax*
+Even though objects are originally created in C++, they are exposed to script in a way that allows them to be declared using the following syntax:
+
+Object Definition:
+~~~{.cpp}
+// In TorqueScript
+%objectID = new ObjectType(Name) 
+{   
+   [existing_field0 = InitialValue0;]
+   ...
+   [existing_fieldN = InitialValueN;]
+
+   [dynamic_field0 = InitialValue0;]
+   ...
+   [dynamic_fieldN = InitialValueN;]
+};
+~~~
+
+Syntax Breakdown:
+
+**%objectID** - Is the variable where the object's handle will be stored.
+new - Is a key word telling the engine to create an instance of the following ObjectType.
+
+**ObjectType** - Is any class declared in the engine or in script that has been derived from SimObject or a subclass of SimObject. SimObject-derived objects are what we were calling "game world objects" above.
+
+**Name (optional)** - Is any expression evaluating to a string, which will be used as the object's name.
+
+**existing_fieldN** - You may initialize existing class members (fields) here. Note: In order to modify a member of a C++-defined class, the member must be exposed to the Console. This concept is discussed in detail later.
+
+**dynamic_fieldN** - Lastly, you may create new fields (which will exist only in Script) for your new object. These are unique to the instance of the object you are creating.
+
+**Handles vs Names**
+Every game object added to a level can be accessed by two parameters:
+
+**Handle** - A unique numeric ID generated when the object is created
+
+**Name** - This is an optional parameter given to an object when it is created.
+
+Example:
+
+~~~{.cpp}
+// In this example, Truck is the name of the object
+new SceneObject(Truck) 
+{
+   position = "0 0";
+   size = "5 5";
+};
+~~~
+
+**Object Fields**
+Objects instantiated via script may have data members (referred to as Fields)
+
+**Methods**
+In addition to the creation of stand-alone functions, TorqueScript allows you to create and call methods attached to objects. Some of the more important ConsoleMethods are already written in C++, then exposed to script. You can call these methods by using the dot (.) notation.
+
+Syntax:
+~~~{.cpp}
+objHandle.function_name();
+
+objName.function_name();
+~~~
+
+Example:
+~~~{.cpp}
+new SceneObject(Truck) 
+{
+   position = "0 0";
+   size = "5 5";
+};
+
+// Write all the objects methods to the console log
+Truck.dump();
+
+// Get the ID of an object, using the object's name
+$objID = Truck.getID();
+
+// Print the ID to the console
+echo("Object ID: ", $objID);
+
+// Get the object's position, using the object's handle
+%position = $objID.getPosition();
+
+// Print the position to the console
+echo("Object Position: ", %position);
+~~~
+
+The above example shows how you can call an object's method by using its name or a variable containing its handle (unique ID number). Additionally, TorqueScript supports the creation of methods that have no associated C++ counterpart.
+
+Syntax:
+
+~~~{.cpp}
+// function - Is a keyword telling TorqueScript we are defining a new function.
+// ClassName::- Is the class type this function is supposed to work with.
+// function_name - Is the name of the function we are creating.
+// ... - Is any number of additional arguments.
+// statements - Your custom logic executed when function is called
+// %this- Is a variable that will contain the handle of the 'calling object'.
+// return val - The value the function will give back after it has completed. Optional.
+function Classname::func_name(%this, [arg0],...,[argn]) 
+{
+   statements;
+   [return val;]
+}
+~~~
+
+At a minimum, Console Methods require that you pass them an object handle. You will often see the first argument named %this. People use this as a hint, but you can name it anything you want. As with Console functions any number of additional arguments can be specified separated by commas.
+
+As a simple example, let's say there is an object called Samurai, derived from the Player class. It is likely that a specific appearance and play style will be given to the samurai, so custom ConsoleMethods can be written. Here is a sample:
+
+Example:
+~~~{.cpp}
+function Samurai::sheatheSword(%this)
+{
+    echo("Katana sheathed");
+}
+~~~
+
+When you create a Samurai object, it will be given an ID. Let's pretend the handle (ID number) is `1042`. We can call its ConsoleMethod once it is defined, using the period syntax:
+
+Example:
+~~~{.cpp}
+1042.sheatheSword();
+
+OUTPUT: "Katana sheathed"
+~~~
+
+Notice that no parameters were passed into the function. The `%this` parameter is inherent, and the original function did not require any other parameters.
+
+# Conclusion
+This guide covered the basics of TorqueScript syntax. Compared to other languages, such as C++, it is easier to learn and work with. However, no one is expected to become a TorqueScript master over night, or even in a week. You will most likely need to refer back to this documentation several times for reminders.

+ 84 - 0
engine/source/console/taggedStrings_ScriptBinding.h

@@ -0,0 +1,84 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+#include "string/stringUnit.h"
+
+ConsoleFunctionGroupBegin( TaggedStrings, "Functions dealing with tagging/detagging strings.");
+
+/*! @defgroup TaggedStrings Tagged Strings
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! Use the detag function to convert a tag to a string. This can only be used in the proper context, i.e. to parse values passed to a client command or to a server command. See 'Remote Procedure Call Samples' below.
+    @param tagID A numeric tag ID corresponding to a previously tagged string.
+    @return Returns the string associated with the tag ID.
+    @sa commandToClient, commandToServer
+*/
+ConsoleFunctionWithDocs(detag, ConsoleString, 2, 2, ( tagID ))
+{
+   TORQUE_UNUSED( argc );
+   if(argv[1][0] == StringTagPrefixByte)
+   {
+      const char *word = dStrchr(argv[1], ' ');
+      if(word == NULL)
+         return "";
+      char *ret = Con::getReturnBuffer(dStrlen(word + 1) + 1);
+      dStrcpy(ret, word + 1);
+      return ret;
+   }
+   else
+      return argv[1];
+}
+
+/*! Use the getTag function to retrieve the tag ID associated with a previously tagged string.
+    @param taggedString A previously tagged string.
+    @return Returns the tag ID of the string. If the string was not previously tagged, it gets tagged and the new tag ID is returned
+*/
+ConsoleFunctionWithDocs(getTag, ConsoleString, 2, 2, ( taggedString ))
+{
+   TORQUE_UNUSED( argc );
+   if(argv[1][0] == StringTagPrefixByte)
+   {
+      const char * space = dStrchr(argv[1], ' ');
+
+      U32 len;
+      if(space)
+         len = space - argv[1];
+      else
+         len = dStrlen(argv[1]) + 1;
+
+      char * ret = Con::getReturnBuffer(len);
+      dStrncpy(ret, argv[1] + 1, len - 1);
+      ret[len - 1] = 0;
+
+      return(ret);
+   }
+   else
+      return(argv[1]);
+}
+
+ConsoleFunctionGroupEnd( TaggedStrings );
+
+/*! @} */ // group TaggedStrings
+
+

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

@@ -30,6 +30,8 @@
 #include "io/fileStream.h"
 #include "io/fileStream.h"
 #include "platform/threads/thread.h"
 #include "platform/threads/thread.h"
 
 
+#include "profiler_ScriptBinding.h"
+
 #ifdef TORQUE_ENABLE_PROFILER
 #ifdef TORQUE_ENABLE_PROFILER
 ProfilerRootData *ProfilerRootData::sRootList = NULL;
 ProfilerRootData *ProfilerRootData::sRootList = NULL;
 Profiler *gProfiler = 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
 #endif

+ 84 - 0
engine/source/debug/profiler_ScriptBinding.h

@@ -0,0 +1,84 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+#ifdef TORQUE_ENABLE_PROFILER
+
+extern Profiler *gProfiler;
+
+ConsoleFunctionGroupBegin( Profiler, "Profiler functionality.");
+
+/*! @defgroup ProfilerFunctions Profiler
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! Enables (or disables) a marker for the profiler
+    @param markerName The name of the marker to (un)set
+    @param enable Boolean value. Set if true, unset if false
+    @return No Return Value
+*/
+ConsoleFunctionWithDocs(profilerMarkerEnable, ConsoleVoid, 3, 3, (string markerName, bool enable))
+{
+   if(gProfiler)
+      gProfiler->enableMarker(argv[1], dAtob(argv[2]));
+}
+
+/*! Use the profileEnable function to enable (or disable) engine profiling.
+    @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.
+    @return No return value.
+*/
+ConsoleFunctionWithDocs(profilerEnable, ConsoleVoid, 2, 2, ( enable ))
+{
+   if(gProfiler)
+      gProfiler->enable(dAtob(argv[1]));
+}
+
+/*! Use the profilerDump function to dump engine profile statistics to the console.
+    @return No return value
+*/
+ConsoleFunctionWithDocs(profilerDump, ConsoleVoid, 1, 1, ())
+{
+   if(gProfiler)
+      gProfiler->dumpToConsole();
+}
+
+/*! Dump profiling stats to a file.
+*/
+ConsoleFunctionWithDocs(profilerDumpToFile, ConsoleVoid, 2, 2, (string filename))
+{
+   if(gProfiler)
+      gProfiler->dumpToFile(argv[1]);
+}
+
+/*! Resets the profiler, clearing all of its data.
+*/
+ConsoleFunctionWithDocs(profilerReset, ConsoleVoid, 1, 1, ())
+{
+   if(gProfiler)
+      gProfiler->reset();
+}
+
+ConsoleFunctionGroupEnd( Profiler );
+
+/*! @} */ // group ProfilerFunctions
+
+#endif

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,9 +20,12 @@
 // IN THE SOFTWARE.
 // 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.
     // Fetch a return buffer.  This may be excessive but it avoids reallocation code.
     S32 bufferSize = 1024 * 65;
     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.
     // Fetch enabled flag.
     const bool enabled = dAtob(argv[2]);
     const bool enabled = dAtob(argv[2]);
@@ -51,3 +56,4 @@ ConsoleMethod( RemoteDebugger1, setNextStatementBreak, void, 3, 3,  "(bool enabl
     object->setNextStatementBreak( enabled );
     object->setNextStatementBreak( enabled );
 }
 }
 
 
+ConsoleMethodGroupEndWithDocs(RemoteDebugger1)

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // 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
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 // IN THE SOFTWARE.
 // 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
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,11 +20,13 @@
 // IN THE SOFTWARE.
 // 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.
     // Fetch debugger version.
     const S32 debuggerVersion = dAtoi(argv[1]);
     const S32 debuggerVersion = dAtoi(argv[1]);

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

@@ -31,6 +31,7 @@
 #include "console/compiler.h"
 #include "console/compiler.h"
 #include "game/gameInterface.h"
 #include "game/gameInterface.h"
 
 
+#include "telnetDebugger_ScriptBinding.h"
 
 
 //
 //
 // Enhanced TelnetDebugger for Torsion
 // 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.
 // 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)
 static void debuggerConsumer(ConsoleLogEntry::Level level, const char *line)
 {
 {
    if (TelDebugger)
    if (TelDebugger)

+ 59 - 0
engine/source/debug/telnetDebugger_ScriptBinding.h

@@ -0,0 +1,59 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+/*! @defgroup TelnetDebuggerFunctions Telnet Debugger
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! 
+    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.
+    @param password The password for this port. Set this to a NULL string to clear the password for the port.
+    @return No return value
+*/
+ConsoleFunctionWithDocs( dbgSetParameters, ConsoleVoid, 3, 4, (int port, string password, bool waitForClient))
+{
+   if (TelDebugger)
+       TelDebugger->setDebugParameters(dAtoi(argv[1]), argv[2], argc > 3 ? dAtob(argv[3]) : false );
+}
+
+/*! 
+    @return Returns true if a script debugging client is connected else return false.
+*/
+ConsoleFunctionWithDocs( dbgIsConnected, ConsoleBool, 1, 1, ())
+{
+   return TelDebugger && TelDebugger->isConnected();
+}
+
+/*! 
+    Forcibly disconnects any attached script debugging client.
+    @return No Return Value
+*/
+ConsoleFunctionWithDocs( dbgDisconnect, ConsoleVoid, 1, 1, ())
+{
+   if (TelDebugger)
+       TelDebugger->disconnect();
+}
+
+/*! @} */ // group TelnetDebuggerFunctions

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

@@ -28,6 +28,8 @@
 #include "game/gameConnection.h"
 #include "game/gameConnection.h"
 #include "io/resource/resourceManager.h"
 #include "io/resource/resourceManager.h"
 
 
+#include "gameConnection_ScriptBinding.h"
+
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 #define MAX_MOVE_PACKET_SENDS 4
 #define MAX_MOVE_PACKET_SENDS 4
 
 
@@ -86,24 +88,6 @@ void GameConnection::setJoinPassword(const char *password)
    mJoinPassword = dStrdup(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()
 void GameConnection::onTimedOut()
 {
 {
    if(isConnectionToServer())
    if(isConnectionToServer())
@@ -423,54 +407,8 @@ void GameConnection::handleConnectionMessage(U32 message, U32 sequence, U32 ghos
    Parent::handleConnectionMessage(message, sequence, ghostCount);
    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()
 void GameConnection::consoleInit()
 {
 {
    Con::addVariable("Pref::Net::LagThreshold", TypeS32, &mLagThresholdMS);
    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();
-}

+ 101 - 0
engine/source/game/gameConnection_ScriptBinding.h

@@ -0,0 +1,101 @@
+//-----------------------------------------------------------------------------
+// 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(GameConnection, NetConnection)
+
+/*! Use the setJoinPassword method to set the password required to connect to this server-side GameConnection.
+    Pass a NULL string to clear the password.
+    @param password A string representing the case insensitive password to use for this server-side GameConnection.
+    @return No return value.
+    @sa setConnectArgs
+*/
+ConsoleMethodWithDocs(GameConnection, setJoinPassword, ConsoleVoid, 3, 3, ( password ))
+{
+   object->setJoinPassword(argv[2]);
+}
+
+/*! 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.
+    @param name Generally, the first argument is the name of the player.
+    @param arg1 ... , arg15 - 15 additional arguments may be passed.
+    @return No return value.
+    @sa setJoinPassword
+*/
+ConsoleMethodWithDocs(GameConnection, setConnectArgs, ConsoleVoid, 3, 17, ( name, [arg1, ..., arg15 ]? ))
+{
+   object->setConnectArgs(argc - 2, argv + 2);
+}
+
+/*! Use the activateGhosting method to GameConnection instance to start ghosting objects to the client.
+    This is called on each client connection by the server.
+    @return No return value.
+    @sa resetGhosting
+*/
+ConsoleMethodWithDocs( GameConnection, activateGhosting, ConsoleVoid, 2, 2, ())
+{
+   object->activateGhosting();
+}
+
+/*! 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.
+    @return No return value.
+    @sa activateGhosting
+*/
+ConsoleMethodWithDocs( GameConnection, resetGhosting, ConsoleVoid, 2, 2, ())
+{
+   object->resetGhosting();
+}
+
+
+/*! 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.
+    @param reason A string explaining while the connection is being severed.
+    @return No return value
+*/
+ConsoleMethodWithDocs( GameConnection, delete, ConsoleVoid, 2, 3, ( [ reason ]? ))
+{
+   if (argc == 3)
+      object->setDisconnectReason(argv[2]);
+   object->deleteObject();
+}
+
+/*! Get the server connection if any.
+*/
+ConsoleStaticMethodWithDocs(GameConnection, getServerConnection, ConsoleInt, 2, 2, ())
+{
+   if(GameConnection::getConnectionToServer())
+      return GameConnection::getConnectionToServer()->getId();
+   else
+   {
+      Con::errorf("GameConnection::getServerConnection - no connection available.");
+      return -1;
+   }
+}
+
+ConsoleMethodGroupEndWithDocs(GameConnection)
+
+//---------------------------------------
+
+//added for a lack of a better place
+/*! Purge resources from the resource manager.
+*/
+ConsoleFunctionWithDocs( purgeResources, ConsoleVoid, 1, 1, ())
+{
+   ResourceManager->purge();
+}

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

@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2013 GarageGames, LLC
 // Copyright (c) 2013 GarageGames, LLC
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -21,22 +21,28 @@
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
 #ifdef TORQUE_ALLOW_JOURNALING
 #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]);
    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;
    bool jBreak = (argc > 2)? dAtob(argv[2]): false;
    Game->playJournal(argv[1],jBreak);
    Game->playJournal(argv[1],jBreak);
 }
 }
-#endif //TORQUE_ALLOW_JOURNALING
+
+#endif //TORQUE_ALLOW_JOURNALING

+ 12 - 55
engine/source/game/version.cc

@@ -26,6 +26,8 @@
 #include "string/stringTable.h"
 #include "string/stringTable.h"
 #include "io/resource/resourceManager.h"
 #include "io/resource/resourceManager.h"
 
 
+#include "version_ScriptBinding.h"
+
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
 static const U32 csgVersionNumber = TORQUE_GAME_ENGINE;
 static const U32 csgVersionNumber = TORQUE_GAME_ENGINE;
@@ -52,78 +54,33 @@ const char* getCompileTimeString()
 {
 {
    return __DATE__ " at " __TIME__;
    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.")
+void setProductName(StringTableEntry productName)
 {
 {
-   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);
+	sgProductName = productName;
 }
 }
 
 
+//-----------------------------------------------------------------------------

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

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

+ 117 - 0
engine/source/game/version_ScriptBinding.h

@@ -0,0 +1,117 @@
+//-----------------------------------------------------------------------------
+// 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.
+//-----------------------------------------------------------------------------
+
+/*! @defgroup BuildInfoFunctions Build Info
+	@ingroup TorqueScriptFunctions
+	@{
+*/
+
+/*! Use the isDebugBuild function to determine if this is a debug build.
+    @return Returns true if this is a debug build, otherwise false.
+    @sa getBuildString, getCompileTimeString, getVersionNumber, getVersionString
+*/
+ConsoleFunctionWithDocs(isDebugBuild, ConsoleBool, 1, 1, ())
+{
+#ifdef TORQUE_DEBUG
+   return true;
+#else
+   return false;
+#endif
+}
+
+/*! Use the getVersionNumber function to get the version number of the currently executing engine.
+    @return Returns an integer representing the engine's version number.
+    @sa getBuildString, getCompileTimeString, getVersionString, isDebugBuild
+*/
+ConsoleFunctionWithDocs( getVersionNumber, ConsoleInt, 1, 1, ())
+{
+   return getVersionNumber();
+}
+
+/*! Use the getVersionString function to get the version name and number for the currently executing engine.
+    @return Returns a string containing a name and an integer representing the engine's version type and version number.
+    @sa getBuildString, getCompileTimeString, getVersionNumber, isDebugBuild
+*/
+ConsoleFunctionWithDocs( getVersionString, ConsoleString, 1, 1, ())
+{
+   return getVersionString();
+}
+
+/*! Use the getCompileTimeString function to determine when the currently running engine was built.
+    @return Returns a string containing \Month Day Year at Hour:Minute:Second\ showing when this executable was built.
+    @sa getBuildString, getVersionNumber, getVersionString, isDebugBuild
+*/
+ConsoleFunctionWithDocs( getCompileTimeString, ConsoleString, 1, 1, ())
+{
+   return getCompileTimeString();
+}
+
+/*! Use the getBuildString function to determine if this build is a \Debug\ release, or a \Release\ build.
+    @return Returns a string, either \Debug\ for a debug build, or \Release\ for a release build.
+    @sa getCompileTimeString, getVersionNumber, getVersionString, isDebugBuild
+*/
+ConsoleFunctionWithDocs( getBuildString, ConsoleString, 1, 1, ())
+{
+#ifdef TORQUE_DEBUG
+   return "Debug";
+#else
+   return "Release";
+#endif
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the engine version.
+*/
+ConsoleFunctionWithDocs( getEngineVersion, ConsoleString, 1, 1, ())
+{
+    return T2D_ENGINE_VERSION;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Returns iPhone Tools Version
+*/
+ConsoleFunctionWithDocs( getiPhoneToolsVersion, ConsoleString, 1, 1, ())
+{
+    return T2D_IPHONETOOLS_VERSION;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Sets the company and product information.
+*/
+ConsoleFunctionWithDocs(setCompanyAndProduct, ConsoleVoid, 3, 3, (company, product))
+{
+   setCompanyName(StringTable->insert(argv[1]));
+   setProductName(StringTable->insert(argv[2]));
+
+   Con::setVariable("$Game::CompanyName", getCompanyName());
+   Con::setVariable("$Game::ProductName", getProductName());
+
+   char appDataPath[1024];
+   dSprintf(appDataPath, sizeof(appDataPath), "%s/%s/%s", Platform::getUserDataDirectory(), getCompanyName(), getProductName());
+   
+   ResourceManager->addPath(appDataPath);
+}
+
+/*! @{ */ // group BuildInfoFunctions

+ 2 - 109
engine/source/graphics/PNGImage.cpp

@@ -25,6 +25,8 @@
 #include "platform/platformGL.h"
 #include "platform/platformGL.h"
 #include "platform/platform.h"
 #include "platform/platform.h"
 
 
+#include "PNGImage_ScriptBinding.h"
+
 #define min(a,b) (a <= b ? a : b)
 #define min(a,b) (a <= b ? a : b)
 
 
 IMPLEMENT_CONOBJECT(PNGImage);
 IMPLEMENT_CONOBJECT(PNGImage);
@@ -473,112 +475,3 @@ bool PNGImage::CleanMemoryUsage()
 
 
     return true;
     return true;
 }
 }
-
-ConsoleFunction(CaptureScreenArea, bool, 7, 7, "(posX, posY, width, height, fileName, fileType) Capture a specific area of the screen")
-{
-    GLint positionX = dAtoi(argv[1]);
-    GLint positionY = dAtoi(argv[2]);
-    U32 width = dAtoi(argv[3]);
-    U32 height = dAtoi(argv[4]);
-    
-    FileStream fStream;
-    if(!fStream.open(argv[5], FileStream::Write))
-    { 
-        Con::printf("Failed to open file '%s'.", argv[5]);
-        return false;
-    }
-
-    // Read gl pixels here
-    glReadBuffer(GL_FRONT);
-   
-    Point2I extent;
-    extent.x = width;
-    extent.y = height;
-
-    U8 * pixels = new U8[extent.x * extent.y * 4];
-    glReadPixels(positionX, positionY, extent.x, extent.y, GL_RGB, GL_UNSIGNED_BYTE, pixels);
-
-    GBitmap * bitmap = new GBitmap;
-    bitmap->allocateBitmap(U32(extent.x), U32(extent.y));
-   
-    // flip the rows
-    for(U32 y = 0; y < (U32)extent.y; y++)
-        dMemcpy(bitmap->getAddress(0, extent.y - y - 1), pixels + y * extent.x * 3, U32(extent.x * 3));
-
-    if ( dStrcmp( argv[6], "JPEG" ) == 0 )
-        bitmap->writeJPEG(fStream);
-    else if( dStrcmp( argv[6], "PNG" ) == 0)
-        bitmap->writePNG(fStream);
-    else
-        bitmap->writePNG(fStream);
-
-    fStream.close();
-
-    delete [] pixels;
-    delete bitmap;
-
-    return true;
-}
-
-ConsoleMethod(PNGImage, CreateBaseImage, bool, 5, 5, "(width, height, imageType) Create the base image to merge onto ")
-{
-    U32 width = dAtoi(argv[2]);
-    U32 height = dAtoi(argv[3]);
-
-    return object->Create(width, height, (PNGImageType)dAtoi(argv[4]));
-}
-
-ConsoleMethod(PNGImage, MergeOn, bool, 5, 5, "(x, y, imageFile) Add an image to the spritesheet")
-{
-    U32 width = dAtoi(argv[2]);
-    U32 height = dAtoi(argv[3]);
-
-    // File name is argv[4]
-    FileStream fStream;
-
-    if(!fStream.open(argv[4], FileStream::Read))
-    { 
-        Con::printf("Failed to open file '%s'.", argv[4]);
-        return false;
-    }
-
-    PNGImage* newImage = new PNGImage();
-
-    bool didReadImage = newImage->Read(argv[4]);
-
-    if(!didReadImage)
-    {
-        newImage->CleanMemoryUsage();
-
-        delete newImage;
-        return false;
-    }
-
-    fStream.close();
-
-    bool didMergeOn = object->MergeOn(width, height, newImage);
-
-    newImage->CleanMemoryUsage();
-    delete newImage;
-
-    return didMergeOn;
-}
-
-ConsoleMethod(PNGImage, SaveImage, bool, 3, 3, "(fileName) Save the new spritesheet to a file")
-{
-    FileStream fStream;
-
-    if(!fStream.open(argv[2], FileStream::Write))
-    { 
-        Con::printf("Failed to open file '%s'.", argv[2]);
-        return false;
-    }
-
-    fStream.close();
-
-    object->Write(argv[2]);
-
-    object->CleanMemoryUsage();
-
-    return true;
-}

+ 94 - 0
engine/source/graphics/PNGImage_ScriptBinding.h

@@ -0,0 +1,94 @@
+//-----------------------------------------------------------------------------
+// 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(PNGImage, SimObject)
+
+/*! Create the base image to merge onto 
+*/
+ConsoleMethodWithDocs(PNGImage, CreateBaseImage, ConsoleBool, 5, 5, (width, height, imageType))
+{
+    U32 width = dAtoi(argv[2]);
+    U32 height = dAtoi(argv[3]);
+
+    return object->Create(width, height, (PNGImageType)dAtoi(argv[4]));
+}
+
+/*! Add an image to the spritesheet
+*/
+ConsoleMethodWithDocs(PNGImage, MergeOn, ConsoleBool, 5, 5, (x, y, imageFile))
+{
+    U32 width = dAtoi(argv[2]);
+    U32 height = dAtoi(argv[3]);
+
+    // File name is argv[4]
+    FileStream fStream;
+
+    if(!fStream.open(argv[4], FileStream::Read))
+    { 
+        Con::printf("Failed to open file '%s'.", argv[4]);
+        return false;
+    }
+
+    PNGImage* newImage = new PNGImage();
+
+    bool didReadImage = newImage->Read(argv[4]);
+
+    if(!didReadImage)
+    {
+        newImage->CleanMemoryUsage();
+
+        delete newImage;
+        return false;
+    }
+
+    fStream.close();
+
+    bool didMergeOn = object->MergeOn(width, height, newImage);
+
+    newImage->CleanMemoryUsage();
+    delete newImage;
+
+    return didMergeOn;
+}
+
+/*! Save the new spritesheet to a file
+*/
+ConsoleMethodWithDocs(PNGImage, SaveImage, ConsoleBool, 3, 3, (fileName))
+{
+    FileStream fStream;
+
+    if(!fStream.open(argv[2], FileStream::Write))
+    { 
+        Con::printf("Failed to open file '%s'.", argv[2]);
+        return false;
+    }
+
+    fStream.close();
+
+    object->Write(argv[2]);
+
+    object->CleanMemoryUsage();
+
+    return true;
+}
+
+ConsoleMethodGroupEndWithDocs(PNGImage)

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