Преглед на файлове

Perlin Noise Generator

Added the NoiseGenerator com object that uses the Perlin Noise algorithm to generate noise, a random value between 0 and 1 given an x/y location. This is most commonly used in terrain generators but has a wide range of other applications for procedurally generated games.
Peter Robinson преди 3 години
родител
ревизия
8156403b77

+ 5 - 0
engine/compilers/VisualStudio 2017/Torque 2D.vcxproj

@@ -512,6 +512,7 @@
     <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc" />
     <ClCompile Include="..\..\source\algorithm\crc.cc" />
     <ClCompile Include="..\..\source\algorithm\hashFunction.cc" />
+    <ClCompile Include="..\..\source\algorithm\Perlin.cc" />
     <ClCompile Include="..\..\source\assets\assetBase.cc" />
     <ClCompile Include="..\..\source\assets\assetFieldTypes.cc" />
     <ClCompile Include="..\..\source\assets\assetManager.cc" />
@@ -671,6 +672,7 @@
     <ClCompile Include="..\..\source\math\math_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\math\mFluid.cpp" />
     <ClCompile Include="..\..\source\math\mPoint.cpp" />
+    <ClCompile Include="..\..\source\math\noise\NoiseGenerator.cc" />
     <ClCompile Include="..\..\source\math\rectClipper.cpp" />
     <ClCompile Include="..\..\source\memory\dataChunker.cc" />
     <ClCompile Include="..\..\source\memory\frameAllocator_ScriptBinding.cc" />
@@ -934,6 +936,7 @@
     <ClInclude Include="..\..\source\algorithm\crctab.h" />
     <ClInclude Include="..\..\source\algorithm\hashFunction.h" />
     <ClInclude Include="..\..\source\algorithm\md5.h" />
+    <ClInclude Include="..\..\source\algorithm\Perlin.h" />
     <ClInclude Include="..\..\source\assets\assetBase.h" />
     <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h" />
     <ClInclude Include="..\..\source\assets\assetDefinition.h" />
@@ -1173,6 +1176,8 @@
     <ClInclude Include="..\..\source\math\matrix_ScriptBinding.h" />
     <ClInclude Include="..\..\source\math\mFluid.h" />
     <ClInclude Include="..\..\source\math\mNormalDistribution.h" />
+    <ClInclude Include="..\..\source\math\noise\NoiseGenerator.h" />
+    <ClInclude Include="..\..\source\math\noise\NoiseGenerator_ScriptBinding.h" />
     <ClInclude Include="..\..\source\math\random_ScriptBinding.h" />
     <ClInclude Include="..\..\source\math\rectClipper.h" />
     <ClInclude Include="..\..\source\math\vector_ScriptBinding.h" />

+ 18 - 0
engine/compilers/VisualStudio 2017/Torque 2D.vcxproj.filters

@@ -202,6 +202,9 @@
     <Filter Include="2d\editorToy">
       <UniqueIdentifier>{598766e4-7dc1-45b8-8acf-f133f4fced82}</UniqueIdentifier>
     </Filter>
+    <Filter Include="math\noise">
+      <UniqueIdentifier>{1ca99a8e-9e94-4ab8-996e-b4835a603512}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\source\audio\audio.cc">
@@ -1327,6 +1330,12 @@
     <ClCompile Include="..\..\source\gui\editor\guiParticleGraphInspector.cc">
       <Filter>gui\editor</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\source\algorithm\Perlin.cc">
+      <Filter>algorithm</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\noise\NoiseGenerator.cc">
+      <Filter>math\noise</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\source\audio\audio.h">
@@ -3040,6 +3049,15 @@
     <ClInclude Include="..\..\source\gui\editor\guiParticleGraphInspector_ScriptBinding.h">
       <Filter>gui\editor</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\Perlin.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\noise\NoiseGenerator.h">
+      <Filter>math\noise</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\noise\NoiseGenerator_ScriptBinding.h">
+      <Filter>math\noise</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="Torque 2D.rc" />

+ 5 - 0
engine/compilers/VisualStudio 2019/Torque 2D.vcxproj

@@ -516,6 +516,7 @@
     <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc" />
     <ClCompile Include="..\..\source\algorithm\crc.cc" />
     <ClCompile Include="..\..\source\algorithm\hashFunction.cc" />
+    <ClCompile Include="..\..\source\algorithm\Perlin.cc" />
     <ClCompile Include="..\..\source\assets\assetBase.cc" />
     <ClCompile Include="..\..\source\assets\assetFieldTypes.cc" />
     <ClCompile Include="..\..\source\assets\assetManager.cc" />
@@ -675,6 +676,7 @@
     <ClCompile Include="..\..\source\math\math_ScriptBinding.cc" />
     <ClCompile Include="..\..\source\math\mFluid.cpp" />
     <ClCompile Include="..\..\source\math\mPoint.cpp" />
+    <ClCompile Include="..\..\source\math\noise\NoiseGenerator.cc" />
     <ClCompile Include="..\..\source\math\rectClipper.cpp" />
     <ClCompile Include="..\..\source\memory\dataChunker.cc" />
     <ClCompile Include="..\..\source\memory\frameAllocator_ScriptBinding.cc" />
@@ -938,6 +940,7 @@
     <ClInclude Include="..\..\source\algorithm\crctab.h" />
     <ClInclude Include="..\..\source\algorithm\hashFunction.h" />
     <ClInclude Include="..\..\source\algorithm\md5.h" />
+    <ClInclude Include="..\..\source\algorithm\Perlin.h" />
     <ClInclude Include="..\..\source\assets\assetBase.h" />
     <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h" />
     <ClInclude Include="..\..\source\assets\assetDefinition.h" />
@@ -1177,6 +1180,8 @@
     <ClInclude Include="..\..\source\math\matrix_ScriptBinding.h" />
     <ClInclude Include="..\..\source\math\mFluid.h" />
     <ClInclude Include="..\..\source\math\mNormalDistribution.h" />
+    <ClInclude Include="..\..\source\math\noise\NoiseGenerator.h" />
+    <ClInclude Include="..\..\source\math\noise\NoiseGenerator_ScriptBinding.h" />
     <ClInclude Include="..\..\source\math\random_ScriptBinding.h" />
     <ClInclude Include="..\..\source\math\rectClipper.h" />
     <ClInclude Include="..\..\source\math\vector_ScriptBinding.h" />

+ 18 - 0
engine/compilers/VisualStudio 2019/Torque 2D.vcxproj.filters

@@ -202,6 +202,9 @@
     <Filter Include="2d\editorToy">
       <UniqueIdentifier>{598766e4-7dc1-45b8-8acf-f133f4fced82}</UniqueIdentifier>
     </Filter>
+    <Filter Include="math\noise">
+      <UniqueIdentifier>{1a2a7ebc-eda6-4a67-b9ab-bc9f437b5d5c}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\source\audio\audio.cc">
@@ -1327,6 +1330,12 @@
     <ClCompile Include="..\..\source\gui\editor\guiParticleGraphInspector.cc">
       <Filter>gui\editor</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\source\algorithm\Perlin.cc">
+      <Filter>algorithm</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\noise\NoiseGenerator.cc">
+      <Filter>math\noise</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\source\audio\audio.h">
@@ -3040,6 +3049,15 @@
     <ClInclude Include="..\..\source\gui\editor\guiParticleGraphInspector_ScriptBinding.h">
       <Filter>gui\editor</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\Perlin.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\noise\NoiseGenerator.h">
+      <Filter>math\noise</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\noise\NoiseGenerator_ScriptBinding.h">
+      <Filter>math\noise</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="Torque 2D.rc" />

Файловите разлики са ограничени, защото са твърде много
+ 0 - 18
engine/compilers/android-studio/app/.cxx/ndkBuild/debug/x86/android_gradle_build.json


+ 0 - 18
engine/compilers/android-studio/app/.cxx/ndkBuild/debug/x86/android_gradle_build_mini.json

@@ -1,18 +0,0 @@
-{
-  "buildFiles": [
-    "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Android.mk",
-    "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Application.mk"
-  ],
-  "cleanCommands": [
-    "C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle\\ndk-build.cmd NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003dC:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Android.mk NDK_APPLICATION_MK\u003dC:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003dC:/Users/Peter/Documents/GitHub/GGTorque2D/Torque2D/engine/compilers/android-studio/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003dC:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\lib clean"
-  ],
-  "buildTargetsCommand": "C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle\\ndk-build.cmd NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003dC:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Android.mk NDK_APPLICATION_MK\u003dC:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003dC:/Users/Peter/Documents/GitHub/GGTorque2D/Torque2D/engine/compilers/android-studio/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003dC:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\lib {LIST_OF_TARGETS_TO_BUILD}",
-  "libraries": {
-    "torque2d-debug-x86": {
-      "artifactName": "torque2d",
-      "buildCommand": "C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle\\ndk-build.cmd NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003dC:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Android.mk NDK_APPLICATION_MK\u003dC:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003dC:/Users/Peter/Documents/GitHub/GGTorque2D/Torque2D/engine/compilers/android-studio/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003dC:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\lib C:/Users/Peter/Documents/GitHub/GGTorque2D/Torque2D/engine/compilers/android-studio/app/build/intermediates/ndkBuild/debug/obj/local/x86/libtorque2d.so",
-      "abi": "x86",
-      "output": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\obj\\local\\x86\\libtorque2d.so"
-    }
-  }
-}

+ 0 - 17
engine/compilers/android-studio/app/.cxx/ndkBuild/debug/x86/build_command.txt

@@ -1,17 +0,0 @@
-Executable : C:\Users\Peter\AppData\Local\Android\Sdk\ndk-bundle\ndk-build.cmd
-arguments : 
-NDK_PROJECT_PATH=null
-APP_BUILD_SCRIPT=C:\Users\Peter\Documents\GitHub\GGTorque2D\Torque2D\engine\compilers\android-studio\app\src\main\jni\Android.mk
-NDK_APPLICATION_MK=C:\Users\Peter\Documents\GitHub\GGTorque2D\Torque2D\engine\compilers\android-studio\app\src\main\jni\Application.mk
-APP_ABI=x86
-NDK_ALL_ABIS=x86
-NDK_DEBUG=1
-APP_PLATFORM=android-19
-NDK_OUT=C:/Users/Peter/Documents/GitHub/GGTorque2D/Torque2D/engine/compilers/android-studio/app/build/intermediates/ndkBuild/debug/obj
-NDK_LIBS_OUT=C:\Users\Peter\Documents\GitHub\GGTorque2D\Torque2D\engine\compilers\android-studio\app\build\intermediates\ndkBuild\debug\lib
-APP_SHORT_COMMANDS=false
-LOCAL_SHORT_COMMANDS=false
--B
--n
-jvmArgs : 
-

+ 20 - 20
engine/compilers/android-studio/app/.cxx/ndkBuild/debug/x86/build_model.json

@@ -1,20 +1,20 @@
 {
   "variant": {
     "module": {
-      "rootBuildGradleFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio",
+      "rootBuildGradleFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio",
       "sdkFolder": "C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk",
       "isNativeCompilerSettingsCacheEnabled": false,
       "isBuildOnlyTargetAbiEnabled": true,
       "splitsAbiFilterSet": [],
-      "intermediatesFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates",
+      "intermediatesFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates",
       "gradleModulePathName": ":app",
-      "moduleRootFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app",
-      "makeFile": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Android.mk",
+      "moduleRootFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app",
+      "makeFile": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Android.mk",
       "buildSystem": "NDK_BUILD",
-      "compilerSettingsCacheFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\.cxx",
-      "cxxFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx",
+      "compilerSettingsCacheFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\.cxx",
+      "cxxFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx",
       "ndkFolder": "C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle",
-      "ndkVersion": "20.0.5594570",
+      "ndkVersion": "22.1.7171670",
       "ndkSupportedAbiList": [
         "ARMEABI_V7A",
         "ARM64_V8A",
@@ -33,10 +33,10 @@
     "cFlagList": [],
     "cppFlagsList": [],
     "variantName": "debug",
-    "soFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\lib",
-    "objFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\obj\\local",
-    "jsonFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug",
-    "gradleBuildOutputFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\cxx\\debug",
+    "soFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\lib",
+    "objFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\obj\\local",
+    "jsonFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug",
+    "gradleBuildOutputFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\cxx\\debug",
     "isDebuggableEnabled": true,
     "validAbiList": [
       "ARMEABI_V7A",
@@ -48,13 +48,13 @@
   },
   "abi": "X86",
   "abiPlatformVersion": 19,
-  "cxxBuildFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86",
-  "jsonFile": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\android_gradle_build.json",
-  "gradleBuildOutputFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\cxx\\debug\\x86",
-  "objFolder": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\obj\\local\\x86",
-  "buildCommandFile": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\build_command.txt",
-  "buildOutputFile": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\build_output.txt",
-  "modelOutputFile": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\build_model.json",
-  "jsonGenerationLoggingRecordFile": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\json_generation_record.json",
-  "compileCommandsJsonFile": "C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\compile_commands.json"
+  "cxxBuildFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86",
+  "jsonFile": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\android_gradle_build.json",
+  "gradleBuildOutputFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\cxx\\debug\\x86",
+  "objFolder": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\obj\\local\\x86",
+  "buildCommandFile": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\build_command.txt",
+  "buildOutputFile": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\build_output.txt",
+  "modelOutputFile": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\build_model.json",
+  "jsonGenerationLoggingRecordFile": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\json_generation_record.json",
+  "compileCommandsJsonFile": "C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\compile_commands.json"
 }

+ 30 - 2
engine/compilers/android-studio/app/.cxx/ndkBuild/debug/x86/json_generation_record.json

@@ -5,10 +5,38 @@
   },
   {
     "level": "INFO",
-    "message": "JSON \u0027C:\\Users\\Peter\\Documents\\GitHub\\GGTorque2D\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\android_gradle_build.json\u0027 was up-to-date"
+    "message": "rebuilding JSON C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\android_gradle_build.json due to:"
   },
   {
     "level": "INFO",
-    "message": "JSON generation completed without problems"
+    "message": "- expected json C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\android_gradle_build.json file is not present, will remove stale json folder"
+  },
+  {
+    "level": "INFO",
+    "message": "- missing previous command file C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\\build_command.txt, will remove stale json folder"
+  },
+  {
+    "level": "INFO",
+    "message": "- command changed from previous, will remove stale json folder"
+  },
+  {
+    "level": "INFO",
+    "message": "removing stale contents from \u0027C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\u0027"
+  },
+  {
+    "level": "INFO",
+    "message": "created folder \u0027C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\.cxx\\ndkBuild\\debug\\x86\u0027"
+  },
+  {
+    "level": "INFO",
+    "message": "executing ndkBuild Executable : C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle\\ndk-build.cmd\narguments : \nNDK_PROJECT_PATH\u003dnull\nAPP_BUILD_SCRIPT\u003dC:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Android.mk\nNDK_APPLICATION_MK\u003dC:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Application.mk\nAPP_ABI\u003dx86\nNDK_ALL_ABIS\u003dx86\nNDK_DEBUG\u003d1\nAPP_PLATFORM\u003dandroid-19\nNDK_OUT\u003dC:/Users/Peter/Documents/GitHub/TorqueGameEngines/Torque2D/engine/compilers/android-studio/app/build/intermediates/ndkBuild/debug/obj\nNDK_LIBS_OUT\u003dC:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\lib\nAPP_SHORT_COMMANDS\u003dfalse\nLOCAL_SHORT_COMMANDS\u003dfalse\n-B\n-n\njvmArgs : \n\n"
+  },
+  {
+    "level": "INFO",
+    "message": "Executable : C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle\\ndk-build.cmd\narguments : \nNDK_PROJECT_PATH\u003dnull\nAPP_BUILD_SCRIPT\u003dC:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Android.mk\nNDK_APPLICATION_MK\u003dC:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Application.mk\nAPP_ABI\u003dx86\nNDK_ALL_ABIS\u003dx86\nNDK_DEBUG\u003d1\nAPP_PLATFORM\u003dandroid-19\nNDK_OUT\u003dC:/Users/Peter/Documents/GitHub/TorqueGameEngines/Torque2D/engine/compilers/android-studio/app/build/intermediates/ndkBuild/debug/obj\nNDK_LIBS_OUT\u003dC:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\lib\nAPP_SHORT_COMMANDS\u003dfalse\nLOCAL_SHORT_COMMANDS\u003dfalse\n-B\n-n\njvmArgs : \n\n"
+  },
+  {
+    "level": "INFO",
+    "message": "JSON generation completed with problem. Exception: Build command failed.\nError while executing process C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle\\ndk-build.cmd with arguments {NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003dC:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Android.mk NDK_APPLICATION_MK\u003dC:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003dC:/Users/Peter/Documents/GitHub/TorqueGameEngines/Torque2D/engine/compilers/android-studio/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003dC:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\build\\intermediates\\ndkBuild\\debug\\lib APP_SHORT_COMMANDS\u003dfalse LOCAL_SHORT_COMMANDS\u003dfalse -B -n}\nAndroid NDK: ERROR:C:\\Users\\Peter\\Documents\\GitHub\\TorqueGameEngines\\Torque2D\\engine\\compilers\\android-studio\\app\\src\\main\\jni\\Android.mk:openal-prebuilt: LOCAL_SRC_FILES points to a missing file    \nAndroid NDK: Check that C:/Users/Peter/Documents/GitHub/TorqueGameEngines/Torque2D/engine/compilers/android-studio/app/src/main/jni/../../../../../../lib/openal/Android/x86/libopenal.so exists  or that its path is correct   \n\nfcntl(): Bad file descriptor\nC:/Users/Peter/AppData/Local/Android/Sdk/ndk-bundle/build//../build/core/prebuilt-library.mk:45: *** Android NDK: Aborting    .  Stop.\n"
   }
 ]

+ 2 - 6
engine/compilers/android-studio/app/.cxx/ndk_locator_record.json

@@ -7,7 +7,7 @@
     },
     {
       "level": "INFO",
-      "message": "ndk.dir in local.properties is C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle"
+      "message": "ndk.dir in local.properties is not set"
     },
     {
       "level": "INFO",
@@ -17,17 +17,13 @@
       "level": "INFO",
       "message": "sdkFolder is C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk"
     },
-    {
-      "level": "INFO",
-      "message": "Considering C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle by ndk.dir"
-    },
     {
       "level": "INFO",
       "message": "Considering C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle in SDK ndk-bundle folder"
     },
     {
       "level": "INFO",
-      "message": "Found requested ndk.dir (C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle) which has version 20.0.5594570"
+      "message": "No user requested version, choosing C:\\Users\\Peter\\AppData\\Local\\Android\\Sdk\\ndk-bundle which is version 22.1.7171670"
     }
   ]
 }

+ 116 - 0
engine/source/algorithm/Perlin.cc

@@ -0,0 +1,116 @@
+//-----------------------------------------------------------------------------
+// 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 "Perlin.h"
+#include <cmath>
+#include <random>
+#include <algorithm>
+#include <numeric>
+
+// THIS IS A DIRECT TRANSLATION TO C++11 FROM THE REFERENCE
+// JAVA IMPLEMENTATION OF THE IMPROVED PERLIN FUNCTION (see http://mrl.nyu.edu/~perlin/noise/)
+// THE ORIGINAL JAVA IMPLEMENTATION IS COPYRIGHT 2002 KEN PERLIN
+
+// THERE IS AN EXTRA METHOD THAT GENERATES A NEW PERMUTATION VECTOR (THIS IS NOT PRESENT IN THE ORIGINAL IMPLEMENTATION)
+
+// Initialize with the reference values for the permutation vector
+PerlinNoise::PerlinNoise() {
+
+	// Initialize the permutation vector with the reference values
+	p = {
+		151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,
+		8,99,37,240,21,10,23,190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,
+		35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,
+		134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,
+		55,46,245,40,244,102,143,54, 65,25,63,161,1,216,80,73,209,76,132,187,208, 89,
+		18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,
+		250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,
+		189,28,42,223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167,
+		43,172,9,129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,
+		97,228,251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,
+		107,49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254,
+		138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180 };
+	// Duplicate the permutation vector
+	p.insert(p.end(), p.begin(), p.end());
+}
+
+// Generate a new permutation vector based on the value of seed
+PerlinNoise::PerlinNoise(U32 seed) {
+	p.resize(256);
+
+	// Fill p with values from 0 to 255
+	std::iota(p.begin(), p.end(), 0);
+
+	// Initialize a random engine with seed
+	std::default_random_engine engine(seed);
+
+	// Suffle  using the above random engine
+	std::shuffle(p.begin(), p.end(), engine);
+
+	// Duplicate the permutation vector
+	p.insert(p.end(), p.begin(), p.end());
+}
+
+F64 PerlinNoise::noise(F64 x, F64 y, F64 z) {
+	// Find the unit cube that contains the point
+	S32 X = (S32)floor(x) & 255;
+	S32 Y = (S32)floor(y) & 255;
+	S32 Z = (S32)floor(z) & 255;
+
+	// Find relative x, y,z of point in cube
+	x -= floor(x);
+	y -= floor(y);
+	z -= floor(z);
+
+	// Compute fade curves for each of x, y, z
+	F64 u = fade(x);
+	F64 v = fade(y);
+	F64 w = fade(z);
+
+	// Hash coordinates of the 8 cube corners
+	S32 A = p[X] + Y;
+	S32 AA = p[A] + Z;
+	S32 AB = p[A + 1] + Z;
+	S32 B = p[X + 1] + Y;
+	S32 BA = p[B] + Z;
+	S32 BB = p[B + 1] + Z;
+
+	// Add blended results from 8 corners of cube
+	F64 res = lerp(w, lerp(v, lerp(u, grad(p[AA], x, y, z), grad(p[BA], x - 1, y, z)), lerp(u, grad(p[AB], x, y - 1, z), grad(p[BB], x - 1, y - 1, z))), lerp(v, lerp(u, grad(p[AA + 1], x, y, z - 1), grad(p[BA + 1], x - 1, y, z - 1)), lerp(u, grad(p[AB + 1], x, y - 1, z - 1), grad(p[BB + 1], x - 1, y - 1, z - 1))));
+	return (res + 1.0) / 2.0;
+}
+
+F64 PerlinNoise::fade(F64 t) {
+	return t * t * t * (t * (t * 6 - 15) + 10);
+}
+
+F64 PerlinNoise::lerp(F64 t, F64 a, F64 b) {
+	return a + t * (b - a);
+}
+
+F64 PerlinNoise::grad(S32 hash, F64 x, F64 y, F64 z) {
+	S32 h = hash & 15;
+	// Convert lower 4 bits of hash into 12 gradient directions
+	F64 u = h < 8 ? x : y,
+		v = h < 4 ? y : h == 12 || h == 14 ? x : z;
+	return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v);
+}

+ 54 - 0
engine/source/algorithm/Perlin.h

@@ -0,0 +1,54 @@
+//-----------------------------------------------------------------------------
+// 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 <vector>
+
+// THIS CLASS IS A TRANSLATION TO C++11 FROM THE REFERENCE
+// JAVA IMPLEMENTATION OF THE IMPROVED PERLIN FUNCTION (see http://mrl.nyu.edu/~perlin/noise/)
+// THE ORIGINAL JAVA IMPLEMENTATION IS COPYRIGHT 2002 KEN PERLIN
+
+// THERE IS AN EXTRA METHOD THAT GENERATES A NEW PERMUTATION VECTOR (THIS IS NOT PRESENT IN THE ORIGINAL IMPLEMENTATION)
+
+#ifndef PERLINNOISE_H
+#define PERLINNOISE_H
+
+#ifndef _UTILITY_H_
+#include "2d/core/Utility.h"
+#endif
+
+class PerlinNoise {
+	// The permutation vector
+	std::vector<S32> p;
+public:
+	// Initialize with the reference values for the permutation vector
+	PerlinNoise();
+	// Generate a new permutation vector based on the value of seed
+	PerlinNoise(U32 seed);
+	// Get a noise value, for 2D images z can have any value
+	F64 noise(F64 x, F64 y, F64 z);
+private:
+	F64 fade(F64 t);
+	F64 lerp(F64 t, F64 a, F64 b);
+	F64 grad(int hash, F64 x, F64 y, F64 z);
+};
+
+#endif

+ 80 - 0
engine/source/math/noise/NoiseGenerator.cc

@@ -0,0 +1,80 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) 2013 GarageGames, LLC
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+//-----------------------------------------------------------------------------
+
+#ifndef _NOISE_GENERATOR_H_
+#include "NoiseGenerator.h"
+#endif
+
+// Script bindings.
+#include "NoiseGenerator_ScriptBinding.h"
+
+//------------------------------------------------------------------------------
+
+IMPLEMENT_CONOBJECT(NoiseGenerator);
+
+//------------------------------------------------------------------------------
+
+NoiseGenerator::NoiseGenerator() :
+	mSeed(0)
+{
+	
+}
+
+//------------------------------------------------------------------------------
+
+NoiseGenerator::~NoiseGenerator()
+{
+}
+
+//------------------------------------------------------------------------------
+
+void NoiseGenerator::setSeed(const U32 seed)
+{
+	mSeed = seed;
+	mPerlin = PerlinNoise(mSeed);
+}
+
+F64 NoiseGenerator::getNoise(F64 x, F64 y)
+{
+	return mPerlin.noise(x,y,0.2f);
+}
+
+F64 NoiseGenerator::getComplexNoise(F64 x, F64 y, S32 octaves, F64 persistence)
+{
+    octaves = mClamp(octaves, 1, 8);
+    persistence = mClampF(persistence, 0.05f, 0.95f);
+
+    F64 total = 0;
+    F64 frequency = 1;
+    F64 amplitude = 1;
+    F64 maxValue = 0;  // Used for normalizing result to 0.0 - 1.0
+    for (S32 i = 0; i < octaves; i++) {
+        total += mPerlin.noise(x * frequency, y * frequency, 0.2f * frequency) * amplitude;
+
+        maxValue += amplitude;
+
+        amplitude *= persistence;
+        frequency *= 2;
+    }
+
+    return total / maxValue;
+}

+ 64 - 0
engine/source/math/noise/NoiseGenerator.h

@@ -0,0 +1,64 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) 2013 GarageGames, LLC
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+//-----------------------------------------------------------------------------
+
+#ifndef _NOISE_GENERATOR_H_
+#define _NOISE_GENERATOR_H_
+
+#ifndef PERLINNOISE_H
+#include "algorithm/Perlin.h"
+#endif
+
+#ifndef _SCRIPT_OBJECT_H_
+#include "sim/scriptObject.h"
+#endif
+
+#ifndef _UTILITY_H_
+#include "2d/core/Utility.h"
+#endif
+
+//-----------------------------------------------------------------------------
+
+class NoiseGenerator : public ScriptObject
+{
+	typedef ScriptObject			Parent;
+
+private:
+	PerlinNoise					mPerlin;
+	U32							mSeed;
+
+public:
+	NoiseGenerator();
+	virtual ~NoiseGenerator();
+
+	void setSeed(const U32 seed);
+	F64 getNoise(F64 x, F64 y);
+	F64 getComplexNoise(F64 x, F64 y, S32 octaves, F64 persistence);
+
+	/// Declare Console Object.
+	DECLARE_CONOBJECT(NoiseGenerator);
+
+private:
+
+protected:
+};
+
+#endif // _NOISE_GENERATOR_H_

+ 83 - 0
engine/source/math/noise/NoiseGenerator_ScriptBinding.h

@@ -0,0 +1,83 @@
+//-----------------------------------------------------------------------------
+// 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(NoiseGenerator, ScriptObject)
+
+/*! Sets the seed for the noise generater.
+@param seed An interger seed value.
+@return No return value.
+*/
+ConsoleMethodWithDocs(NoiseGenerator, setSeed, ConsoleVoid, 3, 3, (int seed))
+{
+	object->setSeed(dAtoi(argv[2]));
+}
+
+//------------------------------------------------------------------------------
+
+/*! Returns the noise for a given x and y value.
+* @param x A floating point value.
+* @param y A floating point value.
+@return A decimal value between 0 and 1.
+*/
+ConsoleMethodWithDocs(NoiseGenerator, getNoise, ConsoleFloat, 3, 4, (float x, float y))
+{
+	// Elements in the first argument.
+	U32 elementCount = Utility::mGetStringElementCount(argv[2]);
+
+	if (elementCount == 1 && argc == 4)
+	{
+		return object->getNoise(dAtof(argv[2]), dAtof(argv[3]));
+	}
+	else if (elementCount == 2 && argc == 3)
+	{
+		return object->getNoise(dAtof(Utility::mGetStringElement(argv[2], 0)), dAtof(Utility::mGetStringElement(argv[2], 1)));
+	}
+	else
+	{
+		Con::warnf("NoiseGenerator::getNoise() - Invalid number of parameters!");
+		return 0.0f;
+	}
+}
+
+//------------------------------------------------------------------------------
+
+/*! Returns the noise for a given x and y value with multiple octaves applied.
+* @param x A floating point value.
+* @param y A floating point value.
+* @param octaves An integer value between 1 and 8. Each octave is a layer of progressively smaller noise that is applied to the final result.
+* @param persistence A decimal value between 0.05 and 0.95. Larger values will cause each octave to have a larger impact on the final result.
+@return A decimal value between 0 and 1.
+*/
+ConsoleMethodWithDocs(NoiseGenerator, getComplexNoise, ConsoleFloat, 6, 6, (float x, float y, int octaves, float persistence))
+{
+	if (argc < 6)
+	{
+		Con::warnf("NoiseGenerator::getComplexNoise() - Invalid number of parameters!");
+		return 0.0f;
+	}
+	else 
+	{
+		return object->getComplexNoise(dAtof(argv[2]), dAtof(argv[3]), dAtoi(argv[4]), dAtof(argv[5]));
+	}
+}
+
+ConsoleMethodGroupEndWithDocs(NoiseGenerator)

Някои файлове не бяха показани, защото твърде много файлове са промени