Sfoglia il codice sorgente

docs/modules: copyedits (#130)

* docs/modules: copyedits

* features.adoc: correct a glitch
Stephen Gold 4 anni fa
parent
commit
497bf2d548
100 ha cambiato i file con 288 aggiunte e 288 eliminazioni
  1. 1 1
      docs/modules/ROOT/pages/getting-started/build_jme3_sources_with_netbeans.adoc
  2. 3 3
      docs/modules/ROOT/pages/getting-started/features.adoc
  3. 2 2
      docs/modules/contributions/pages/ai/jme3_ai.adoc
  4. 3 3
      docs/modules/contributions/pages/ai/recast.adoc
  5. 1 1
      docs/modules/contributions/pages/ai/steer_behaviours.adoc
  6. 7 7
      docs/modules/contributions/pages/effect/particles/particles.adoc
  7. 2 2
      docs/modules/contributions/pages/es/entitysystem/advanced.adoc
  8. 69 69
      docs/modules/contributions/pages/es/entitysystem/detailed.adoc
  9. 12 12
      docs/modules/contributions/pages/es/entitysystem/interviews.adoc
  10. 2 2
      docs/modules/contributions/pages/es/entitysystem/introduction.adoc
  11. 11 11
      docs/modules/contributions/pages/es/entitysystem/points.adoc
  12. 6 6
      docs/modules/contributions/pages/es/entitysystem/terms.adoc
  13. 2 2
      docs/modules/contributions/pages/es/entitysystem/usage.adoc
  14. 1 1
      docs/modules/contributions/pages/gui/tonegodgui/button.adoc
  15. 1 1
      docs/modules/contributions/pages/gui/tonegodgui/checkbox.adoc
  16. 1 1
      docs/modules/contributions/pages/gui/tonegodgui/combobox.adoc
  17. 2 2
      docs/modules/contributions/pages/gui/tonegodgui/customcontrols.adoc
  18. 2 2
      docs/modules/contributions/pages/gui/tonegodgui/element.adoc
  19. 1 1
      docs/modules/contributions/pages/gui/tonegodgui/indicator.adoc
  20. 3 3
      docs/modules/contributions/pages/gui/tonegodgui/quickstart.adoc
  21. 1 1
      docs/modules/contributions/pages/gui/tonegodgui/slider.adoc
  22. 1 1
      docs/modules/contributions/pages/gui/tonegodgui/spinner.adoc
  23. 1 1
      docs/modules/contributions/pages/gui/tonegodgui/styles.adoc
  24. 3 3
      docs/modules/contributions/pages/gui/tonegodgui/tonegodgui_quickstart.adoc
  25. 1 1
      docs/modules/contributions/pages/gui/tonegodgui/xmllayouts.adoc
  26. 1 1
      docs/modules/contributions/pages/lanscapes/vegetationsystem/grass.adoc
  27. 1 1
      docs/modules/contributions/pages/lanscapes/vegetationsystem/trees.adoc
  28. 1 1
      docs/modules/contributions/pages/tools/navigation.adoc
  29. 2 2
      docs/modules/core/pages/app/simpleapplication.adoc
  30. 2 2
      docs/modules/core/pages/app/state/capture_audio_video_to_a_file.adoc
  31. 1 1
      docs/modules/core/pages/asset/asset_manager.adoc
  32. 1 1
      docs/modules/core/pages/cinematic/cinematics.adoc
  33. 1 1
      docs/modules/core/pages/cinematic/motionpath.adoc
  34. 1 1
      docs/modules/core/pages/collision/collision_and_intersection.adoc
  35. 1 1
      docs/modules/core/pages/collision/terrain_collision.adoc
  36. 4 4
      docs/modules/core/pages/effect/effects_overview.adoc
  37. 3 3
      docs/modules/core/pages/effect/post-processor_water.adoc
  38. 1 1
      docs/modules/core/pages/gui/loading_screen.adoc
  39. 1 1
      docs/modules/core/pages/gui/nifty_gui_java_interaction.adoc
  40. 1 1
      docs/modules/core/pages/gui/nifty_gui_java_layout.adoc
  41. 1 1
      docs/modules/core/pages/gui/nifty_gui_projection.adoc
  42. 1 1
      docs/modules/core/pages/gui/nifty_gui_scenarios.adoc
  43. 5 5
      docs/modules/core/pages/input/combo_moves.adoc
  44. 1 1
      docs/modules/core/pages/input/input_handling.adoc
  45. 1 1
      docs/modules/core/pages/jme3tools/optimize/texture_atlas.adoc
  46. 2 2
      docs/modules/core/pages/light/light_and_shadow.adoc
  47. 1 1
      docs/modules/core/pages/material/how_to_use_materials.adoc
  48. 1 1
      docs/modules/core/pages/material/j3m_material_files.adoc
  49. 1 1
      docs/modules/core/pages/material/material_definitions.adoc
  50. 1 1
      docs/modules/core/pages/material/material_specification.adoc
  51. 1 1
      docs/modules/core/pages/material/materials_overview.adoc
  52. 1 1
      docs/modules/core/pages/math/quaternion.adoc
  53. 2 2
      docs/modules/core/pages/renderer/camera.adoc
  54. 1 1
      docs/modules/core/pages/renderer/making_the_camera_follow_a_character.adoc
  55. 1 1
      docs/modules/core/pages/scene/control/custom_controls.adoc
  56. 2 2
      docs/modules/core/pages/scene/control/level_of_detail.adoc
  57. 2 2
      docs/modules/core/pages/scene/custom_meshes.adoc
  58. 3 3
      docs/modules/core/pages/scene/mesh.adoc
  59. 1 1
      docs/modules/core/pages/scene/shape/shape.adoc
  60. 3 3
      docs/modules/core/pages/scene/spatial.adoc
  61. 12 12
      docs/modules/core/pages/shader/jme3_shadernodes.adoc
  62. 3 3
      docs/modules/core/pages/system/appsettings.adoc
  63. 1 1
      docs/modules/core/pages/system/jme3_srgbpipeline.adoc
  64. 4 4
      docs/modules/core/pages/terrain/terrain.adoc
  65. 1 1
      docs/modules/core/pages/ui/hud.adoc
  66. 1 1
      docs/modules/core/pages/util/sky.adoc
  67. 5 5
      docs/modules/networking/pages/monkey_zone.adoc
  68. 2 2
      docs/modules/networking/pages/networking.adoc
  69. 1 1
      docs/modules/physics/pages/bullet_multithreading.adoc
  70. 1 1
      docs/modules/physics/pages/bullet_pitfalls.adoc
  71. 3 3
      docs/modules/physics/pages/collision/physics_listeners.adoc
  72. 1 1
      docs/modules/physics/pages/control/ragdoll.adoc
  73. 2 2
      docs/modules/physics/pages/control/softbody.adoc
  74. 5 5
      docs/modules/physics/pages/control/vehicles.adoc
  75. 1 1
      docs/modules/physics/pages/control/walking_character.adoc
  76. 7 7
      docs/modules/physics/pages/physics.adoc
  77. 2 2
      docs/modules/sdk/pages/android.adoc
  78. 2 2
      docs/modules/sdk/pages/android_cheat_sheet.adoc
  79. 3 3
      docs/modules/sdk/pages/application_deployment.adoc
  80. 1 1
      docs/modules/sdk/pages/asset_packs.adoc
  81. 1 1
      docs/modules/sdk/pages/code_editor.adoc
  82. 1 1
      docs/modules/sdk/pages/debugging_profiling_testing.adoc
  83. 1 1
      docs/modules/sdk/pages/development.adoc
  84. 1 1
      docs/modules/sdk/pages/development/extension_library.adoc
  85. 1 1
      docs/modules/sdk/pages/development/scene.adoc
  86. 2 2
      docs/modules/sdk/pages/development/sceneexplorer.adoc
  87. 1 1
      docs/modules/sdk/pages/development/setup.adoc
  88. 1 1
      docs/modules/sdk/pages/increasing_heap_memory.adoc
  89. 2 2
      docs/modules/sdk/pages/ios.adoc
  90. 2 2
      docs/modules/sdk/pages/neotexture.adoc
  91. 11 11
      docs/modules/sdk/pages/plugin/shaderblow.adoc
  92. 2 2
      docs/modules/sdk/pages/project_creation.adoc
  93. 1 1
      docs/modules/sdk/pages/scene_composer.adoc
  94. 1 1
      docs/modules/sdk/pages/troubleshooting.adoc
  95. 1 1
      docs/modules/sdk/pages/vehicle_creator.adoc
  96. 1 1
      docs/modules/sdk/pages/version_control.adoc
  97. 3 3
      docs/modules/sdk/pages/what_s_an_ide.adoc
  98. 1 1
      docs/modules/tutorials/nav.adoc
  99. 1 1
      docs/modules/tutorials/pages/beginner/hello_animation.adoc
  100. 2 2
      docs/modules/tutorials/pages/beginner/hello_asset.adoc

+ 1 - 1
docs/modules/ROOT/pages/getting-started/build_jme3_sources_with_netbeans.adoc

@@ -131,7 +131,7 @@ include::partial$source-structure-link.adoc[]
 ====
 When you build the engine from the root node, part of the build process includes building the header files for the jme3-bullet-native subproject. This updates the timestamp on the header files, even though you did not edit them. This will then mark them as modified, which will add them to your next commit.
 
-To prevent them from being commited, before you do anything else:
+To prevent them from being committed, before you do anything else:
 
 .  In the Projects window, open the `jme3-bullet-native` subproject node.
 .  Navigate to the `Source Packages/<default package>` folder.

+ 3 - 3
docs/modules/ROOT/pages/getting-started/features.adoc

@@ -138,7 +138,7 @@ Converting to j3o:
 
 l|.gltf, .bin, .glb, custom extensions
 a|3D model
-a|Blender version 2.78c onwards, +
+a|Blender version 2.78c onward, +
 See:
 
 * link:https://hub.jmonkeyengine.org/t/jme-gltf-support/39174[gltf] forum post
@@ -245,7 +245,7 @@ a|OGG Vorbis music and sounds
 
 *  Multi-threaded asset loading via HTTP
 *  Loading scenes from .ZIP files
-*  Sharable AssetPacks
+*  Shareable AssetPacks
 
 
 == Special Effects
@@ -266,7 +266,7 @@ a|OGG Vorbis music and sounds
 
 == Terrain
 
-*  xref:core:terrain/terrain.adoc[Geomipmapped hightmap terrain]
+*  xref:core:terrain/terrain.adoc[Geomipmapped heightmap terrain]
 *  xref:tutorials:how-to/modeling/blender/blender_ogre_compatibility.adoc[Ogre Compatibility]
 *  xref:core:util/sky.adoc[SkyBox and SkyDome]
 *  Terrain lighting

+ 2 - 2
docs/modules/contributions/pages/ai/jme3_ai.adoc

@@ -201,7 +201,7 @@ private void createNavMesh() {
     //the surface of the original geometry.
     //Constraints >= 0, default=25
     generator.setContourMaxDeviation(5.0f);
-    //Time allowed before generation process times out in miliseconds.
+    //Time allowed before generation process times out in milliseconds.
     //default=10000
     generator.setTimeout(40000);
 
@@ -295,7 +295,7 @@ After the mesh generates, you need to link all of its cells together so it can b
 navMesh.loadFromMesh(optiMesh);
 ----
 
-If you look at the second contructor for the `NavMesh` class you will see this is all it does. You would use this constructor if you were loading a `Mesh` from a geometry that had already been optimized and saved into your `Assets` folder for example.
+If you look at the second constructor for the `NavMesh` class you will see this is all it does. You would use this constructor if you were loading a `Mesh` from a geometry that had already been optimized and saved into your `Assets` folder for example.
 
 [source, java]
 ----

+ 3 - 3
docs/modules/contributions/pages/ai/recast.adoc

@@ -115,7 +115,7 @@ if (!RecastBuilder.erodeWalkableArea(context, config.getWalkableRadius(), compac
 }
 
 // Partition the heightfield so that we can use simple algorithm later to triangulate the walkable areas.
-// There are 3 martitioning methods, each with some pros and cons:
+// There are 3 partitioning methods, each with some pros and cons:
 // 1) Watershed partitioning
 //   - the classic Recast partitioning
 //   - creates the nicest tessellation
@@ -124,8 +124,8 @@ if (!RecastBuilder.erodeWalkableArea(context, config.getWalkableRadius(), compac
 //   - the are some corner cases where this method creates produces holes and overlaps
 //      - holes may appear when a small obstacles is close to large open area (triangulation can handle this)
 //      - overlaps may occur if you have narrow spiral corridors (i.e stairs), this make triangulation to fail
-//   * generally the best choice if you precompute the nacmesh, use this if you have large open areas
-// 2) Monotone partioning
+//   * generally the best choice if you precompute the navmesh, use this if you have large open areas
+// 2) Monotone partitioning
 //   - fastest
 //   - partitions the heightfield into regions without holes and overlaps (guaranteed)
 //   - creates long thin polygons, which sometimes causes paths with detours

+ 1 - 1
docs/modules/contributions/pages/ai/steer_behaviours.adoc

@@ -30,7 +30,7 @@ Finally, do not forget to import the `com.jme3.ai.agents.behaviors.npc.steering`
 
 == Overview
 
-*Avaliable behaviours:*
+*Available behaviours:*
 
 *  Move
 *  Seek

+ 7 - 7
docs/modules/contributions/pages/effect/particles/particles.adoc

@@ -77,7 +77,7 @@ public class HelloParticles1_SimpleFire extends SimpleApplication {
         ParticleController pCtrl = new ParticleController(
 // The name of the emitter
                 "SimpleFire",
-// Use a simple point mesh (the fastest but most limitted mesh type) with the specified
+// Use a simple point mesh (the fastest but most limited mesh type) with the specified
 // image (from jME3-testdata). The image actually contains a 2x2 grid of sprites.
                 new PointMesh(assetManager, "Effects/Explosion/flame.png", 2, 2),
 // Allow at most 32 particles at any time
@@ -125,7 +125,7 @@ image:effect/particles/particles1.jpg[particles1.jpg,width="",height=""]
         ParticleController pCtrl = new ParticleController(
 // The name of the emitter
                 "SimpleFire",
-// Use a simple point mesh (the fastest but most limitted mesh type) with the specified
+// Use a simple point mesh (the fastest but most limited mesh type) with the specified
 // image (from jME3-testdata). The image actually contains a 2x2 grid of sprites.
                 new PointMesh(assetManager, "Effects/Explosion/flame.png", 2, 2),
 // Allow at most 50 particles at any time, the particles are lasting longer this time
@@ -226,7 +226,7 @@ image:effect/particles/runecircle.png[runecircle.png,width="256",height=""]
         pCtrl = new ParticleController(
 // The name of the emitter
                 "SpellBase",
-// Use a simple point mesh (the fastest but most limitted mesh type) with the specified
+// Use a simple point mesh (the fastest but most limited mesh type) with the specified
 // image (from jME3-testdata). The image actually contains a 2x2 grid of sprites.
                 new PointMesh(assetManager, "Textures/flame.png", 2, 2),
 // Allow at most 76 particles at any time
@@ -303,7 +303,7 @@ Now lets set fire to the monkey! (No monkeys were harmed during the making of th
         ParticleController pCtrl = new ParticleController(
 // The name of the emitter
                 "SimpleFire",
-// Use a simple point mesh (the fastest but most limitted mesh type) with the specified
+// Use a simple point mesh (the fastest but most limited mesh type) with the specified
 // image (from jME3-testdata). The image actually contains a 2x2 grid of sprites.
                 new PointMesh(assetManager, "Textures/flame.png", 2, 2),
 // Allow at most 1200 particles at any time, the particles are lasting longer this time
@@ -314,7 +314,7 @@ Now lets set fire to the monkey! (No monkeys were harmed during the making of th
 // And at most 5 seconds
                 5,
 // A MeshSource scans a geometry and picks a random point on the surface of that
-// geometry in order to emit the particle from it. The particle has an inital velocity
+// geometry in order to emit the particle from it. The particle has an initial velocity
 // of 1wu/s along the normal of the triangle from which it is emitted.
                 new MeshSource(g),
 // Emit particles at regular intervals, 10 particles every second
@@ -328,7 +328,7 @@ Now lets set fire to the monkey! (No monkeys were harmed during the making of th
 // from the emitter and then allow the GravityInfluencer to change the direction
 // of motion but constrain the speed
                 new SpeedInfluencer(0.25f, 0.25f),
-// Fade the paticles through a range of colours
+// Fade the particles through a range of colours
                 new MultiColorInfluencer(
                     new MultiColorInfluencer.Stage(0, new ColorRGBA(1, 1, 0.1f, 1)),
                     new MultiColorInfluencer.Stage(0.25f, new ColorRGBA(1, 0, 0, 0.25f)),
@@ -488,7 +488,7 @@ Results in something that looks like this:
 
 You can see that while dramatic the fire is left behind each particle, this is because although it is emitted from the face of the particle at its current position it has no knowledge of how that particle is moving.
 
-To allow for this we also offer a different emitter, this allows one ParticleController to act as the source for another. The emitted particles are then able to start with the same velocity and rotation of the particle they are being emitted from and then move onwards from there as appropriate.
+To allow for this we also offer a different emitter, this allows one ParticleController to act as the source for another. The emitted particles are then able to start with the same velocity and rotation of the particle they are being emitted from and then move onward from there as appropriate.
 
 Leave everything else the same but change the MeshSource into
 

+ 2 - 2
docs/modules/contributions/pages/es/entitysystem/advanced.adoc

@@ -81,14 +81,14 @@ All information of the components are stored in an SQL Database, this is done vi
 Therefore all Components need an empty constructor when they are stored in a database.
 Otherwise it is not possible to load the Component.
 
-Because SQL librarys can be different this Entity System only concentrate on working with hsqldb.
+Because SQL libraries can be different this Entity System only concentrate on working with hsqldb.
 link:http://hsqldb.org/[http://hsqldb.org/]
 
 
 === Hybrid
 
 Because saving/loading the component objects from a SQL Database is slow this does not work for components who are changed recently. (PositionComponent)
-On the other hand checking weather an entity owns a special component ist faster in a SQL database.
+On the other hand checking whether an entity owns a special component is faster in a SQL database.
 To keep both benefits there is the Hybrid approach:
 
 *  Components are put into a Hashmap.

+ 69 - 69
docs/modules/contributions/pages/es/entitysystem/detailed.adoc

@@ -13,7 +13,7 @@ This wiki is dedicated to who want to do research about Entity System.
 
 You should 've read a brief introduction here: xref:es/entitysystem/introduction.adoc[entitysystem:introduction]
 
-And if you still have some concerning you are in the right place!
+And if you still have some concerns you are in the right place!
 
 
 [IMPORTANT]
@@ -27,8 +27,8 @@ This wiki is a collection of known sources, authors from internet and our forum.
 
 'Cause:
 
-.  You may read famous T-machine article about entity systems in mmorpg.
-.  You may come from Unity, UDK, or other engine used it
+.  You may read famous T-machine article about entity systems in MMORPGs.
+.  You may come from Unity, UDK, or another engine that used it
 .  You may come from Database and web world
 .  You read a lot of articles, forums and try few projects with dramatic debates
 
@@ -38,12 +38,12 @@ But:
 .  You doubt ES concept, find its impossible to do ES right
 .  You want to learn more
 
-I hope this page will help you 30% the way to reach the destination. It's the place where we concern about the design wisdoms of ES, and consider its detailed implementation in Java, eventually integrate in JME3 for a real-time game.
+I hope this page will help you 30% the way to reach the destination. It's the place where we concern about the design wisdom of ES, and consider its detailed implementation in Java, eventually integrate in JME3 for a real-time game.
 
 
 [IMPORTANT]
 ====
-Before you start, I also want to mention that there are fews implementation of ES in JME3, after read this page, you can judge the design of each one arcodingly and choose one. Also read the interviews with each authors about their approaches!
+Before you start, I also want to mention that there are few implementations of ES in JME3, after read this page, you can judge the design of each one accordingly and choose one. Also read the interviews with each authors about their approaches!
 ====
 
 
@@ -68,13 +68,13 @@ Before you start, I also want to mention that there are fews implementation of E
 
 Entity System in turn is the Core and fundamental and most obvious implementation design of COP (Component oriented programming) in real-time application scale!!!
 
-In fact the implementation detail of Entity system is various, some may resembling database core, some may have troubles with OOP incompatibility, some may appear to get all the good of Functional language…
+In fact the implementation details of Entity systems vary, some may resemble database core, some may have troubles with OOP incompatibility, some may appear to get all the good of Functional language…
 
 but note that Entity System really stand on its own terminology on this single page:
 
 [WARNING]
 ====
-We are talking about the ES within COP, but implemented by an pure OOP like Java.
+We are talking about the ES within COP, but implemented by a pure OOP like Java.
 
 ====
 
@@ -119,7 +119,7 @@ _Examples for Components can be:
 
 Components are *added* to the Entities.
 
-There can *only exists one component* of the same class for one entity at the same time.
+There can *only exist one component* of the same class for one entity at the same time.
 
 As you can see *Entities are made flexible up of different Components*. _You need your Armored Robot?_ No Problem, you only need to combine the right components. Besides you are able to remove/change/add components during the game +++<strike>which is a huge benefit of Entity Systems.</strike>+++
 
@@ -155,13 +155,13 @@ from Data oriented architecture:
 Short explanation
 
 .  Decoupling : each piece can work together without aware of each other.
-.  Resuable : can be easily bring to use again somewhere else
-.  Primitive unit : each piece from a simplest form which contain, fullfil it self.
+.  Reusable : can be easily bring to use again somewhere else
+.  Primitive unit : each piece from a simplest form which contains, fulfills itself.
 .  Data who decide: data decide each and every result, activities of the software
 .  Everything is Data: all piece in the software system is Data
 .  Repository existence: exist a place to keep all the data, the one door to reach them
 .  Homogeneous data : data is treat the same
-.  Regular workload : software that run at regular rate, kind of ballance trade off between performance and complexity
+.  Regular workload : software that run at regular rate, kind of balance trade off between performance and complexity
 .  Simple dataflow: the flow of the data is easy to watch, inspect, start stop, manipulate. As the root reason for regular workload!
 
 
@@ -174,7 +174,7 @@ Ideas similarities here actually is resulted from with decades of history of rev
 
 [IMPORTANT]
 ====
-Here is some terms will be mentioned below but ussually have misunderstaned or misplaced because of their confusioness. Try to do another research to make sure you understand clearly all the terms first!
+Here are some terms that will be mentioned below but usually have misunderstood or misplaced because of their confusions. Try to do another research to make sure you understand clearly all the terms first!
 ====
 
 
@@ -190,7 +190,7 @@ Here is a short one to help you get start quickly : xref:es/entitysystem/terms.a
 == What is NOT an ES ?
 
 From more 'open' perspective the core elements can be viewed as, but remember the name as a noun can be mislead:
-_This resulted as a dicussion of @pspeed and toolforger, eventually is form a skeptical question, it's really interesting by how we all see this problem confused at first!!_
+_This resulted as a discussion of @pspeed and toolforger, eventually is form a skeptical question, it's really interesting by how we all see this problem confused at first!!_
 
 ]
 Entity -> ID. It just binds the components together, in the sense that there is one function that creates a bunch of components with the same ID, and one function to destroy all components for an ID. An entity is the set of objects that have the same ID, entities don’t exist as coherent objects inside the code.
@@ -202,7 +202,7 @@ System -> Processor. A function that operates on a slice of components.
 This often result in mislead skepticism about the design. So get back to read it carefully one more time and some gotchas and practical wisdom below.
 
 
-== Gotchas & Practical wisdoms
+== Gotchas & Practical wisdom
 
 
 [TIP]
@@ -228,17 +228,17 @@ Entity should just be interpreted as a bunch of its Component. GameObject or any
 
 === Has ~ Is?
 
-From software designer POV, Relationship in COP is a sensitive topic; by nature, Component is against (or overide) Relation.
+From software designer POV, Relationship in COP is a sensitive topic; by nature, Component is against (or override) Relation.
 
-The deception '`Has`' relationship between Entity and its Component actually represent everything in various meaning from the literature '`Is`' , or literature '`Has`'.. to '`related to`'. BUT keep in mind, this is blury and its almost always implemented as indirect acess, not like a property in an object but envolve processing-lookup under the curtain! So you may find this difficult to extract and detect these different from your tranditional OOP software design!
+The deception '`Has`' relationship between Entity and its Component actually represent everything in various meaning from the literature '`Is`' , or literature '`Has`'.. to '`related to`'. BUT keep in mind, this is blurry and it's almost always implemented as indirect access, not like a property in an object but involves processing-lookup under the curtain! So you may find this difficult to extract and detect these different from your traditional OOP software design!
 
 
 === Some insights
 
-This is the place to share the "`real`" world difficuties when working with ES, here in JME3 or in other engines. In Practical wisdoms will raise some known solutions for them. This section may revive some part of the Cons or known issues sections but practically.
+This is the place to share the "`real`" world difficulties when working with ES, here in JME3 or in other engines. In Practical Wisdom, we will raise some known solutions for them. This section may revive some part of the Cons or known issues sections but practically.
 
 
-=== Practical wisdoms
+=== Practical wisdom
 
 
 == ES done right
@@ -248,22 +248,22 @@ Because this topic is so debatable, there is no solid candidate for ES done righ
 
 === Why debatable [Short]?
 
-Because apply to each game, the scenarios and usecases are vary difference. Situation changes, a design which should be right can be a failure!  You may see the point.
+Because apply to each game, the scenarios and usecases are very different. Situation changes, a design which should be right can be a failure!  You may see the point.
 
-This topic start flame in almost every dicussions I've come through, someone should be like OOP versus COP, ES is not for all,..etc. At first, the debate should focus into a specific scope, specific genre. Here (this page) we still arrange the statements like general scope. But later in the interviews you can see some "`real`" applications and implementations.
+This topic start flame in almost every discussions I've come through, someone should be like OOP versus COP, ES is not for all,..etc. At first, the debate should focus into a specific scope, specific genre. Here (this page) we still arrange the statements like general scope. But later in the interviews you can see some "`real`" applications and implementations.
 
 
 ==== Should be?
 
-Theoricaly an Java ES done right should be:
+Theoretically a Java ES done right should be:
 
 .  Pure data : very debatable
 ..  – Mutable : as bean with setter and getter
-..  – Immutate : as bean with getter, should be replace if changed.
+..  – Immutable : as bean with getter, should be replaced if changed.
 
-.  Multi-threading, concurency enable : very debatable
-..  – As my experience, pure data or not is not clear contract to multi-threading success. Consider other things happen outside of ES scope, so it not an solid waranty that those component will not be touched by any other thread.
-..  – Also if there is a contract that no other thread touching those data, in Java style via synchonization or other paradigm like actor… multi-threading also consider success but just more complicated!
+.  Multi-threading, concurrency enable : very debatable
+..  – As my experience, pure data or not is not clear contract to multi-threading success. Consider other things happen outside of ES scope, so it not an solid warranty that those component will not be touched by any other thread.
+..  – Also if there is a contract that no other thread touching those data, in Java style via synchronization or other paradigm like actor… multi-threading also consider success but just more complicated!
 
 .  Communication: very debatable
 ..  – Event messaging enable
@@ -272,26 +272,26 @@ Theoricaly an Java ES done right should be:
 .  Is database (and other kind of persistent) friendly
 ..  – Save to XML?
 ..  – Send over network?
-..  – Change sets are resembling Databse concept, what about tranactions?
+..  – Change sets are resembling Database concept, what about transactions?
 
-.  Is enterprise friendly (expanable/ extensible/ modulizable)
+.  Is enterprise friendly (expandable/ extensible/ modularizable)
 ..  – Spring, as lazy loaded, injected?
 
 .  Script possibilities
 ..  – Can be script, non trivial work in pure data!
 ..  – Can be use with other JVM language than java like groovy, or scala, jython?
 
-.  Restrictions and limitation
+.  Restrictions and limitations
 ..  – No dynamic Java object methods in Component ? What about Entities and Systems ( Processors)
-..  – An overal way to manage and config Systems, freely chose? How to hook to its routine?
+..  – An overall way to manage and config Systems, freely chose? How to hook to its routine?
 
-.  Depedencies
-..  – The separation of components are clear, as no dependencies at all. Hard cored, scripted or injected will break the overal contract!
-..  – The separation of Entities. What about depedencies of entities? Ex: parent/ child relationship in JME spatial. How the framework handle that?
+.  Dependencies
+..  – The separation of components are clear, as no dependencies at all. Hard cored, scripted or injected will break the overall contract!
+..  – The separation of Entities. What about dependencies of entities? Ex: parent/ child relationship in JME spatial. How the framework handle that?
 ..  – The separation of Systems. Ex: any contract about that?
 
 
-Detailed explaination : xref:es/entitysystem/points.adoc[points]
+Detailed explanation : xref:es/entitysystem/points.adoc[points]
 
 
 == Design
@@ -331,7 +331,7 @@ This is a short checklist that help you open your mind before going to design an
 
 .  Mainly to handles/ manage your data and entities.
 .  Usually in MMO where BLOB happen.
-.  Batch/ cache processing enviroment, device. GPU, others.
+.  Batch/ cache processing environment, device, GPU, others.
 
 
 === Why not?
@@ -380,7 +380,7 @@ A lot of good things come if done "`right`"!
 .  Communication made simple
 .  What you see is what you have → composing
 .  Reusable with prefab
-.  Batch / Concurent processing/caching as in modern CPU, GPU
+.  Batch / Concurrent processing/caching as in modern CPU, GPU
 .  … ten more
 
 //link:http://piemaster.net/2011/07/entity-component-primer/[http://piemaster.net/2011/07/entity-component-primer/]
@@ -396,19 +396,19 @@ A lot of good things come if done "`right`"!
 
 
 .  No OOP: COP Done "`right`" means forget about almost all OOP things: Pure data, Class become Type, no inheritance, encapsulation…etc , no best of both world!
-.  Spliting dilemma: Same with OOP Classify problem: How to split, how to change the data when you change the splits?
-. Duplicated component: Same root as confusion in component spliting but, this problem about how can we made a more than one component of a kind per object entity… Ex: Car with 4 wheels, the component will be a 1stWheel, 2ndWheel, or a single list of WheelComponent… ?
+.  Splitting dilemma: Same with OOP Classify problem: How to split, how to change the data when you change the splits?
+.  Duplicated component: Same root as confusion in component splitting but, this problem about how can we made a more than one component of a kind per object entity… Ex: Car with 4 wheels, the component will be a 1stWheel, 2ndWheel, or a single list of WheelComponent… ?
 .  Data resampling problem in game, data such as textures, text, 3d models everything … should be crafted: made, converted again to suite with existing data model – that’s the component in the ES.
-.  Mindset change problem: One will have to re-code a fews time to implement an ES, in initial, half ass and full level.
+.  Mindset change problem: One will have to re-code a few times to implement an ES, in initial, half ass and full level.
 .  Flat table problem: Because ES is a big table by nature, with component set is a row. It’s as efficient even less than a big table, which form the flat table problem as seen in many indexed base database. Tree, Graph and other data structure will almost immediately break the ES contract!!
 .  Observation problem: As update beat over listening method, ES restrict the observation methods a lot.
-.  Sercurity problem : No encapsulation, kind of no private POJO mean no java power in protecting data, a lot of security holes! ES implementations and COP forget all about sercurity danger as Component contracted to be processed by Processor but not hiding its content.
-.  Scale : In theory, ES should scale well..!!! But read this carefully or mislead it, enterprise system need much more than just a way to orginize your data!!!
+.  Security problem : No encapsulation, kind of no private POJO mean no java power in protecting data, a lot of security holes! ES implementations and COP forget all about security danger as Component contracted to be processed by Processor but not hiding its content.
+.  Scale : In theory, ES should scale well..!!! But read this carefully or mislead it, enterprise system need much more than just a way to organize your data!!!
 
 ////
 [TIP]
 ====
-Because a lot of people find interests about the down side of ES, I've listed them carefully here xref:jme3/contributions/entitysystem/detailed/cons.adoc[cons]. After knowing the acceptable solutions from the authors, I will remove or marked the solved problem! [Peace! :p]
+Because a lot of people find interests about the downside of ES, I've listed them carefully here xref:jme3/contributions/entitysystem/detailed/cons.adoc[cons]. After knowing the acceptable solutions from the authors, I will remove or marked the solved problem! [Peace! :p]
 ====
 ////
 
@@ -417,21 +417,21 @@ Because a lot of people find interests about the down side of ES, I've listed th
 
 [WARNING]
 ====
-Of course, ES has its mising features!!!!
+Of course, ES has its missing features!!!!
 ====
 
 
-But for some reason its design's consider good for real=time application like a "`common`" video Game, or "`common`" simmulation; especially common in MMO world.
+But for some reason its designs are considered good for real-time application like a "`common`" video Game, or "`common`" simulation; especially common in MMO world.
 
-Here is a short of '`why`' answers from a software architecture designer view, explain based on its borrowed ideas: [This is very different from various source you've read, because it's not embeded any implementation details!!!]
+Here is a short of '`why`' answers from a software architecture designer view, explain based on its borrowed ideas: [This is very different from various sources you've read, because it's not embedded any implementation details!!!]
 
 .  Decoupling : each piece can work together without aware of each other.
-.  Resuable : can be easily bring to use again somewhere else.
-.  Composable : each piece can work together
+.  Reusable : can be easily put to use again somewhere else.
+.  Composable : pieces can work together
 
 have fundamental relationship with decoupling.
 
-.  Primitive unit : each piece from a simplest form which contain, fullfil it self.
+.  Primitive unit : each piece from a simplest form which contains, fulfills itself.
 
 have fundamental relationship with decoupling.
 
@@ -454,10 +454,10 @@ have fundamental relationship with decoupling.
 ——————————————————————————————
 
 .  Homogeneous data : data is treat the same
-.  Regular workload : software that run at regular rate, kind of ballance trade off between performance and complexity
+.  Regular workload : software that run at regular rate, kind of balance trade off between performance and complexity
 .  Simple dataflow: the flow of the data is easy to watch, inspect, start stop, manipulate. As the root reason for regular workload!
 
-(*) These lead to a lot of simple but efficient algorithm to get high performance in runtime for a software such like a "`common`" video game, which run in console, GPU, CPU which envolve and share the same model with cache and batch intructions, an a certain hearbeat…Notice the bottleneck of CPU-GPU and between different processing unit, platform is the most headache of Game designer for decade is ease with the regular workload; let the game run smoothly and stable, result into nice visual representation..
+(*) These lead to a lot of simple but efficient algorithm to get high performance in runtime for a software such like a "`common`" video game, which run in console, GPU, CPU which involve and share the same model with cache and batch instructions, an a certain heartbeat…Notice the bottleneck of CPU-GPU and between different processing unit, platform is the most headache of Game designer for decade is ease with the regular workload; let the game run smoothly and stable, result into nice visual representation..
 
 
 === ES consider bad design in …?
@@ -475,38 +475,38 @@ It is a bad design choice where:
 
 Even if done right, the ES also have it underlying issues which noticed by its authors, (that means annoying things)!
 
-*Why this section havs things from the Cons section but consider differrently?*
+*Why this section has things from the Cons section but consider differently?*
 
 
-In Cons section descible problem should be concerned, likely to be done wrong, or the limit of the design they can be solve in implementations or not is not important!
+The Cons section describes problems should be concerned, likely to be done wrong, or the limit of the design they can be solved in implementations or not is not important!
 
 
 
-Known issue is the problem persist in even the well designed; or persist due to the underlying infrastructure, application, programming language, etc!!
+Known issue means the problem persists in even the well designed; or persist due to the underlying infrastructure, application, programming language, etc!!
 
 
 
 ==== Communication:
 
-Happen in non pure data solution, when Components don’t function independently of each other. Some means of communication is necessary
+Happens in non pure data solution, when Components don’t function independently of each other. Some means of communication is necessary.
 
 * Two approaches (both viable):
 ** Direct communication using dynamic cast and function calls
 ** Indirect communication using message passing
 
-In pure data solution, by not query or just loop through interested component at one update cycle, the Processor eases out the need of other communication, but in complex scenario, such as combine with outter event handling such as Network, where message passing is nature, the problem still persist!
+In pure data solution, by not query or just loop through interested component at one update cycle, the Processor eases out the need of other communication, but in complex scenario, such as combine with outer event handling such as Network, where message passing is nature, the problem still persist!
 
-//as decribled in reference [6]
+//as describled in reference [6]
 //Read: link:http://acmantwerp.acm.org/wp-content/uploads/2010/10/componentbasedprogramming.pdf[http://acmantwerp.acm.org/wp-content/uploads/2010/10/componentbasedprogramming.pdf]
 
 
 ==== Script
 
-The "`script problem`" happen by the same reason with the "`communication problem`" mixed with "`pure`" data or "`not`" problem. When an component is hard to inspect, its outter relationship hard to define and its property is rejected to change, how can you script it?
+The "`script problem`" happens for the same reason with the "`communication problem`" mixed with "`pure`" data or "`not`" problem. When a component is hard to inspect, its outer relationship hard to define and its property is rejected to change, how can you script it?
 
 Read: link:http://blog.gemserk.com/2011/11/13/scripting-with-artemis/[http://blog.gemserk.com/2011/11/13/scripting-with-artemis/]
 
-Nearly one end up back to half ass solution, not a pure data ES if their really need scripting in.
+Nearly one end up back to half-assed solution, not a pure data ES if their really need scripting in.
 
 
 ==== Arbitrary Routine and Query
@@ -521,7 +521,7 @@ link:https://hub.jmonkeyengine.org/t/in-range-detection-with-lots-of-entities/26
 
 +++<u>@atomix POV:</u>+++
 
-As said, as a long term java developer and also an artist. I can not see a strong, confident reason why we should switch over to COP at the moment.
+As said, as a long term Java developer and also an artist. I can not see a strong, confident reason why we should switch over to COP at the moment.
 
 BLOB is not a problem with a carefully designed software, same as hard as split your components… Deep inheritance even multi inheritance problem can not be reached in an indie project, and even it reached, maintain it always easier than redesign a 3D model to change the export pipeline!!!
 
@@ -529,11 +529,11 @@ Also the tangled wires between inheritance form the nature of programming and ma
 
 *BUT* They have IDE support, profiler, proved technologies, lot more… We talking about a no IDE support paradigm with plain text editor, table and some black magic, tell me more about the company will approve your plan?
 
-Some alternate solution may solve almost your design goal when you likely to use an ES:
+Some alternative solutions may solve almost your design goals when you are likely to use an ES:
 
-.  Smart bean framework : try Spring, EJB. For Enterprise, if you've known EJB and Spring, you will not bet in home grown ES, dont you?
+.  Smart bean framework : try Spring, EJB. For Enterprise, if you've known EJB and Spring, you will not bet in home grown ES, don't you?
 .  Actor framework: try AKKA
-.  If you see java as a failure, try Scala’s trail …
+.  If you see Java as a failure, try Scala’s trail …
 
 
 [WARNING]
@@ -554,10 +554,10 @@ So, my last advice is: If you are not doing MMO *Take a look in other alternativ
 I think this should be in another page or even in a book! :p
 ====
 
-This chapter dedicated to people still who really want to *switch to this new paradigm* after all the warning and awarenesses.
+This chapter dedicated to people still who really want to *switch to this new paradigm* after all the warnings and awarenesses.
 So this chapter will mainly answer the BIG question:
 
-*What should be change to adapt to this new paradigm?*
+*What should be changed to adapt to this new paradigm?*
 
 
 === What will we face
@@ -624,16 +624,16 @@ Post: link:https://hub.jmonkeyengine.org/t/entitymonkey-a-simple-entity-system-f
 Interview:
 
 
-=== Implementation, and scope of each projects:
+=== Implementation and scope of each project:
 
-The comparasions will focus in these below points, follow with the scope, status of each projects
+The comparisons will focus in these below points, follow with the scope, status of each projects
 
 .  Initial philosophy
 .  Pure data or not?
-.  Multi-threading, concurency enable or not?
+.  Multi-threading, concurrency enable or not?
 .  Communication: Event messaging enable or not?
 .  Is database (and other kind of persistent) friendly or not?
-.  Is enterprise friendly (expanable/ extensible/ modulizable) or not?
+.  Is enterprise friendly (expandable/ extensible/ modulizable) or not?
 .  Script possibilities?
 .  Restrictions and limitation
 .  Dependencies
@@ -644,7 +644,7 @@ The comparasions will focus in these below points, follow with the scope, status
 
 [IMPORTANT]
 ====
-The Comparasion table is in Google doc: Help me fill it!!!!
+The comparison table is in Google Docs: Help me fill it!!!!
 ====
 
 
@@ -682,7 +682,7 @@ link:http://gamesfromwithin.com/data-oriented-design[http://gamesfromwithin.com/
 //pass:[[6]] link:http://acmantwerp.acm.org/wp-content/uploads/2010/10/componentbasedprogramming.pdf[http://acmantwerp.acm.org/wp-content/uploads/2010/10/componentbasedprogramming.pdf]
 
 
-*Link to other entitiy system approaches in its own wikidot!*
+*Link to other entity system approaches in its own wikidot!*
 
 pass:[[8]] link:http://entity-systems.wikidot.com/es-approaches[http://entity-systems.wikidot.com/es-approaches]
 

+ 12 - 12
docs/modules/contributions/pages/es/entitysystem/interviews.adoc

@@ -8,7 +8,7 @@
 
 Entity System implementations are various!
 
-As said, we are talking about Component oriented programming Entity System, implemented in Object oriented programming language and enviroment like Java!
+As said, we are talking about Component oriented programming Entity System, implemented in an Object oriented programming language and environment like Java!
 
 So,we are
 
@@ -22,22 +22,22 @@ So,we are
 
 .  Initial philosophy
 .  Pure data or not?
-.  Multi-threading, concurency enable or not?
+.  Multi-threading, concurrency enable or not?
 .  Communication: Event messaging enable or not?
 .  Is database (and other kind of persistent) friendly or not?
-.  Is enterprise friendly (expanable/ extensible/ modulizable) or not?
+.  Is enterprise friendly (expandable/ extensible/ modulizable) or not?
 .  Script possibilities?
 .  Restrictions and limitation
 .  Dependencies
 .  Current status: Long term, stable, community?
 
-The comparasions will focus in these below points, follow with the scope, status of each projects
-Detail explanation of abbove points xref:es/entitysystem/points.adoc[points]
+The comparisons will focus in these below points, follow with the scope, status of each projects
+Detailed explanation of above points xref:es/entitysystem/points.adoc[points]
 
 
 == ES projects interviews
 
-These interviews are short but focus dicussion to help you get a clear view of underlying implementation of each project.
+These interviews are short but focus discussion to help you get a clear view of underlying implementation of each project.
 
 
 === Artemis: General
@@ -56,14 +56,14 @@ Artemis approach
 
 .  Initial philosophy : Lightweight, small footprint and 1.5+
 .  Pure data: No
-.  Multi-threading, concurency: with care
+.  Multi-threading, concurrency: with care
 .  Communication: Event messaging enable or not? No implementation yet
 .  Is database (and other kind of persistent) friendly or not? No implementation yet
-.  Is enterprise friendly (expanable/ extensible/ modulizable) or not? Not clear but because not pure data, consider Yes
+.  Is enterprise friendly (expandable/ extensible/ modulizable) or not? Not clear but because not pure data, consider Yes
 .  Script possibilities? Yes
 .  Restrictions and limitation: Custom System has to be extends base System; Processor base; Aspect base, Has documented about Dependencies between System
 .  External library dependencies : No
-.  Current status: Long term, stable, community? The most early Java ES, more than 3 years, kind of unactive, has a forum.
+.  Current status: Long term, stable, community? The earliest Java ES, more than 3 years, kind of inactive, has a forum.
 
 Read the full review for details
 
@@ -80,7 +80,7 @@ Links: link:https://hub.jmonkeyengine.org/t/zay-es-links-more-chars-because-foru
 
 [IMPORTANT]
 ====
-In my POV, Zay-ES has the most active development status and also the maintainer is a core JME3 dev, that's why all its functions and wisdoms are close to JME3!
+In my POV, Zay-ES has the most active development status and also the maintainer is a core JME3 dev, that's why all its functions and wisdom are close to JME3!
 ====
 
 
@@ -91,10 +91,10 @@ Zay-ES approach
 
 .  Initial philosophy : Lightweight, small footprint and 1.5+
 .  Pure data: Yes
-.  Multi-threading, concurency: free, by design, but still _need better design contract_
+.  Multi-threading, concurrency: free, by design, but still _need better design contract_
 .  Communication: Event messaging enable or not? No implementation yet
 .  Is database (and other kind of persistent) friendly or not? No implementation yet
-.  Is enterprise friendly (expanable/ extensible/ modulizable) or not? Not clear, _lack of design contract_
+.  Is enterprise friendly (expandable/ extensible/ modulizable) or not? Not clear, _lack of design contract_
 .  Script possibilities? Yes
 .  Restrictions and limitation: Free of System implementation, but _lack of design contract_
 .  External library dependencies : No

+ 2 - 2
docs/modules/contributions/pages/es/entitysystem/introduction.adoc

@@ -3,7 +3,7 @@
 :revdate: 2020/07/25
 
 
-Every experienced programer knows that planning a huge project is difficult.
+Every experienced programmer knows that planning a huge project is difficult.
 You need to know exactly what you want your program to do and which
 things should be possible to add later.
 If you do not do this you get unclean code, lose the clear view over the project
@@ -40,7 +40,7 @@ Examples for Components can be:
 
 *  PositionComponent
 *  MovementComponent
-*  CollsisionComponent
+*  CollisionComponent
 
 Components are added to the Entities.
 

+ 11 - 11
docs/modules/contributions/pages/es/entitysystem/points.adoc

@@ -8,15 +8,15 @@
 
 This page revive and explain more about points of design goals and implementations for an ES and its usefulness (means features) to corporate with other Java and game software techs and layers.
 
-Theoricaly an Java ES done right should be:
+Theoretically a Java ES done right should be:
 
 .  Pure data : very debatable
 ..  Mutable : as bean with setter and getter
-..  Immutate : as bean with getter, should be replace if changed.
+..  Immutable : as bean with getter, should be replace if changed.
 
-.  Multi-threading, concurency enable : very debatable
-..  As my experience, pure data or not is not clear contract to multi-threading success. Consider other things happen outside of ES scope, so it not an solid waranty that those component will not be touched by any other thread.
-..  Also if there is a contract that no other thread touching those data, in Java style via synchonization or other paradigm like actor… multi-threading also consider success but just more complicated!
+.  Multi-threading, concurrency enable : very debatable
+..  As my experience, pure data or not is not clear contract to multi-threading success. Consider other things happen outside of ES scope, so it not an solid warranty that those component will not be touched by any other thread.
+..  Also if there is a contract that no other thread touching those data, in Java style via synchronization or other paradigm like actor… multi-threading also consider success but just more complicated!
 
 .  Communication: very debatable
 ..  Event messaging enable
@@ -25,9 +25,9 @@ Theoricaly an Java ES done right should be:
 .  Is database (and other kind of persistent) friendly
 ..  Save to XML (file, serialized)?
 ..  Send over network?
-..  Change sets are resembling Databse concept, what about tranactions?
+..  Change sets are resembling Database concept, what about transactions?
 
-.  Is enterprise friendly (expanable/ extensible/ modulizable)
+.  Is enterprise friendly (expandable/ extensible/ modulizable)
 ..  Spring, as lazy loaded, injected?
 
 .  Script possibilities
@@ -36,9 +36,9 @@ Theoricaly an Java ES done right should be:
 
 .  Restrictions and limitation
 ..  No dynamic Java object methods in Component ? What about Entities and Systems ( Processors)
-..  An overal way to manage and config Systems, freely chose? How to hook to its routine?
+..  An overall way to manage and config Systems, freely chose? How to hook to its routine?
 
-.  Depedencies
-..  The separation of components are clear, as no dependencies at all. Hard cored, scripted or injected will break the overal contract!
-..  The separation of Entities. What about depedencies of entities? Ex: parent/ child relationship in JME spatial. How the framework handle that?
+.  Dependencies
+..  The separation of components are clear, as no dependencies at all. Hard cored, scripted or injected will break the overall contract!
+..  The separation of Entities. What about dependencies of entities? Ex: parent/ child relationship in JME spatial. How the framework handle that?
 ..  The separation of Systems. Ex: any contract about that?

+ 6 - 6
docs/modules/contributions/pages/es/entitysystem/terms.adoc

@@ -41,7 +41,7 @@ We are talking about the ES within COP, but implemented by an pure OOP like Java
 
 == Data driven programming:
 
-You may refer to this "`Data driven programming`" incorrectly in this ES topic, you may talking about: *Data driven design* insted
+You may refer to this "`Data driven programming`" incorrectly in this ES topic, you may talking about: *Data driven design* instead
 
 In computer programming, data-driven programming is a programming paradigm in which the program statements describe the data to be matched and the processing required rather than defining a sequence of steps to be taken
 
@@ -83,21 +83,21 @@ From atomix's overview:
 
 Data oriented architecture is focus in Data arrangement and process(delay of data and the dataflow) and everything is Data, with a repository! It have more aspects than Data driven architecture and not talking about "`the force of generative data`".
 
-In hardware level, data oriented appear in structure and operations of chip set, when input and output are carefullly design to get batch/cache efficient.
+In hardware level, data oriented appear in structure and operations of chip set, when input and output are carefully design to get batch/cache efficient.
 
 In software level, programming language such as Java:
-Data oriented architecture appear as we save everything in a big repository (database… or file repository) then retrive it to do operations. Important note, the consideration that everything is Data is very important. We can load everything as data, code, configs, signal from network, service… Second the existence of the repository is also important, as it the premise of other concept about ports, dataflow, stream, event, process, monitoring etc…
+Data oriented architecture appear as we save everything in a big repository (database… or file repository) then retrieve it to do operations. Important note, the consideration that everything is Data is very important. We can load everything as data, code, configs, signal from network, service… Second the existence of the repository is also important, as it the premise of other concept about ports, dataflow, stream, event, process, monitoring etc…
 
 Compare to service oriented, it care more about the delay of data and the dataflow, not the operation.
 Compare to object oriented, it just only have the data concept, not object, instance or what ever…
 
-Data oriented architecture usually envolve every generic way to descible data, common via XML. They also usually use a data oriented architecture as the base of other.
+Data oriented architecture usually involves every generic way to describe data, commonly via XML. They also usually use a data oriented architecture as the base of other.
 As seen in hardware level, the signal in send in CPU as the repository, via ports, in a stream, trigger interrupt as Event,…
-The same in a software level system, in Java world such as Oracle’s Buisiness Process Management (BPM). They essentially use XML to describle everything and consider everything is Data, also have concept of Ports, Stream, Event, Process…
+The same in a software level system, in Java world such as Oracle’s Business Process Management (BPM). They essentially use XML to describe everything and consider everything is Data, also have concept of Ports, Stream, Event, Process…
 
 So normally Data oriented architecture go along with Data driven… but they are two different thing!
 
 
 === Why so much people in java world get this wrong at first?
 
-But of course Oracle solution are much more complex than a single chipset, as it also envolve EJB, SOAP… with also an candidate for "`Data driven architecture`"… That’s . But EJB and SOAP are essential pieces of BPM "`Data oriented architecture`"!!!
+But of course Oracle solution are much more complex than a single chipset, as it also involve EJB, SOAP… with also an candidate for "`Data driven architecture`"… That’s . But EJB and SOAP are essential pieces of BPM "`Data oriented architecture`"!!!

+ 2 - 2
docs/modules/contributions/pages/es/entitysystem/usage.adoc

@@ -64,7 +64,7 @@ Entity Set entitySet = entitySystem.getEntitySet(MovementComponent.class, Positi
 
 ----
 
-For the single parts of your programm who deal with special components it is recommended to use xref:core:app/state/application_states.adoc[AppStates].
+For the single parts of your program who deal with special components it is recommended to use xref:core:app/state/application_states.adoc[AppStates].
 
 
 == Loop through all entities
@@ -121,7 +121,7 @@ entity.destroy();
 == How to display Spatials if it not allowed to save them into the components?
 
 Use an EntityControl class which is able to display Entitys with visual components.
-In an AppState with a Map containing Entities and and EntitiyControls they can be merged together and updated.
+In an AppState with a Map containing Entities and and EntityControls they can be merged together and updated.
 
 //Have a look at the example:
 //link:http://peeeq.de/uploads/ogerlord/EntityTest.rar[http://peeeq.de/uploads/ogerlord/EntityTest.rar]

+ 1 - 1
docs/modules/contributions/pages/gui/tonegodgui/button.adoc

@@ -130,7 +130,7 @@ button.getIsToggled();
 // Additional state info
 button.clearAltImages();
 
-// Enabling/disabling invternal calls (StillPressed event)
+// Enabling/disabling interval calls (StillPressed event)
 button.setInterval(float intervalsPerSecond); // 0 deactivates
 
 ----

+ 1 - 1
docs/modules/contributions/pages/gui/tonegodgui/checkbox.adoc

@@ -6,7 +6,7 @@
 
 == CheckBox Class
 
-*  CheckBoxs extend the Button class and enable the Toggle setting
+*  CheckBoxes extend the Button class and enable the Toggle setting
 *  They provide a default label (which is only added if the label text is set).
 *  They provide the abstract method onChange for executing code when the CheckBox is altered by the user.
 

+ 1 - 1
docs/modules/contributions/pages/gui/tonegodgui/combobox.adoc

@@ -77,7 +77,7 @@ combo.insertListItem(int index, String caption, Object value);
 // Remove a list item
 combo.removeListItem(int index);
 combo.removeListItem(String caption);
-combo.removeListIten(Object value);
+combo.removeListItem(Object value);
 
 // Sorting methods
 combo.sortList(); // Sorts drop-down list standard alpha-numeric

+ 2 - 2
docs/modules/contributions/pages/gui/tonegodgui/customcontrols.adoc

@@ -107,13 +107,13 @@ screen.add(rcMenu);
 
 ==== STEP 1: Extend the window class and add a few methods
 
-We need to entend the window class in order to add right-click event handling and handle the setOption() method call from our ContextualMenu class.
+We need to extend the window class in order to add right-click event handling and handle the setOption() method call from our ContextualMenu class.
 
 [source,java]
 ----
 
 public abstract class ContextualWindow extends Window implements MouseButtonListener {
-    // Add the 3 standard contructors from the Window class and rename them
+    // Add the 3 standard constructors from the Window class and rename them
 
     // implement all abstract methods from the listener and add the following to right mouse button up:
     @Override

+ 2 - 2
docs/modules/contributions/pages/gui/tonegodgui/element.adoc

@@ -102,7 +102,7 @@ There are additional methods that provide recursive updates to child Elements:
 ----
 
 element.moveTo(float x, float y);
-element.resize(float diffX, floar diffY, Element.Borders dir);
+element.resize(float diffX, float diffY, Element.Borders dir);
 
 ----
 
@@ -123,7 +123,7 @@ el.hideWithEffect();
 
 === Hooks
 
-Overridable hooks are provided for default behavoirs:
+Overridable hooks are provided for default behaviors:
 
 [source,java]
 ----

+ 1 - 1
docs/modules/contributions/pages/gui/tonegodgui/indicator.adoc

@@ -72,7 +72,7 @@ ind.setAlphaMap(String alphaMapPath);
 [source,java]
 ----
 
-// Get the indicators oritentation
+// Get the indicator's orientation
 ind.getOrientation();
 
 // Adjust value ranges

+ 3 - 3
docs/modules/contributions/pages/gui/tonegodgui/quickstart.adoc

@@ -45,10 +45,10 @@ style_map.xml consists of a list of xml documents containing varied styles for v
 
 === Step 2: Adding a Control to the Screen
 
-Might as well start with something interesting as all control contructors follow the same format. Let go with a window and then we’ll add a button to it.
+Might as well start with something interesting as all control constructors follow the same format. Let go with a window and then we’ll add a button to it.
 
 *Constructor 1:* +
-Here are the three contrustor choices for creating the window:
+Here are the three constructor choices for creating the window:
 
 [source,java]
 ----
@@ -110,7 +110,7 @@ Any parameters not specified are derived from the defaults specified in the Wind
 
 [NOTE]
 ====
-The occasional control extends this contructor format, adding an additional Orientation parameter or possibly a boolean flag for controls that provide multiple configurable layouts.
+The occasional control extends this constructor format, adding an additional Orientation parameter or possibly a boolean flag for controls that provide multiple configurable layouts.
 ====
 
 

+ 1 - 1
docs/modules/contributions/pages/gui/tonegodgui/slider.adoc

@@ -6,7 +6,7 @@
 
 == Slider Class
 
-The Slider class provides the same 3 common contrustors shown in the xref:gui/tonegodgui/quickstart.adoc[Quick Start Guide] with the addition of two extra parameters.
+The Slider class provides the same 3 common constructors shown in the xref:gui/tonegodgui/quickstart.adoc[Quick Start Guide] with the addition of two extra parameters.
 
 *  The orientation of the Slider
 *  A boolean flag telling the control whether or not the track should "`surround`" the thumb.

+ 1 - 1
docs/modules/contributions/pages/gui/tonegodgui/spinner.adoc

@@ -11,7 +11,7 @@ The Spinner class provides:
 *  A display area for the current step value
 *  An increment button
 *  A Decrement button
-*  It can be set to cycle (when it reaches heighest step value it cycles to index 0, and reversed for decrement.
+*  It can be set to cycle (when it reaches highest step value it cycles to index 0, and reversed for decrement.
 
 The Spinner class provides the same 3 common constructors as shown in the xref:gui/tonegodgui/quickstart.adoc[Quick Start Guide] with the addition of two extra parameters.
 

+ 1 - 1
docs/modules/contributions/pages/gui/tonegodgui/styles.adoc

@@ -125,7 +125,7 @@ The first 3 are interchangeable and only there for organizational purposes.
 
 The 4th (effects) is more specific, as the effects are stored and retrieved via the EffectManage of the Screen.
 
-The tags for storing properties are fomatted as follows:
+The tags for storing properties are formatted as follows:
 
 *  If the data type has a single value, the value is stored in the single property tag:
 

+ 3 - 3
docs/modules/contributions/pages/gui/tonegodgui/tonegodgui_quickstart.adoc

@@ -36,7 +36,7 @@ guiNode.addControl(screen);
 
 NOTE: style_map.xml consists of a list of xml documents containing varied styles for varied use. You can copy the default style map and replace one, many, all with project specific style (Covered later in this tutorial).
 
-Next, we add a control. Might as well start with something interesting as all control contructors follow the same format. Let go with a window and then we’ll add a button to it. Here are the three contrustor choices for creating the window:
+Next, we add a control. Might as well start with something interesting as all control constructors follow the same format. Let go with a window and then we’ll add a button to it. Here are the three constructor choices for creating the window:
 
 [source,java]
 ----
@@ -89,7 +89,7 @@ screen.addElement(win);
 
 Any parameters not specified are derived from the defaults specified in the Window style information.
 
-NOTE: The occasional control extends this contructor format, adding an additional Orientation parameter or possibly a boolean flag for controls that provide multiple configurable layouts.
+NOTE: The occasional control extends this constructor format, adding an additional Orientation parameter or possibly a boolean flag for controls that provide multiple configurable layouts.
 
 So, now lets add a button to the window that will create more windows!
 
@@ -142,7 +142,7 @@ win.addChild(makeWindow);
 
 [NOTE]
 ====
-For layout purposes, it is suggested that you add all child Elements toa control PRIOR to adding the control to the screen… so, ceate a window, add a button, add window to screen.
+For layout purposes, it is suggested that you add all child Elements to a control PRIOR to adding the control to the screen… so, create a window, add a button, add window to screen.
 
 *A Bit More Info:* All controls are based on the Element class which has access to all default behaviors. Behaviors can be enabled disabled on ANY control or primitive Element.
 ====

+ 1 - 1
docs/modules/contributions/pages/gui/tonegodgui/xmllayouts.adoc

@@ -193,4 +193,4 @@ public void invSubmitButtonClick(MouseButtonEvent evt, boolean isToggled) {
 
 ----
 
-The quickest way of getting the definition of the event method you are creating, is to create a new instance of the class the event is being passed from, implementing it's abstract methods &amp; cutt/paste the needed method.  Then you simply rename it.
+The quickest way of getting the definition of the event method you are creating, is to create a new instance of the class the event is being passed from, implementing it's abstract methods &amp; cut/paste the needed method.  Then you simply rename it.

+ 1 - 1
docs/modules/contributions/pages/lanscapes/vegetationsystem/grass.adoc

@@ -42,7 +42,7 @@ Materials have something called additional renderstate options. They can be foun
 
 *FaceCull:* When using fixed quads it should be set to "`Off`". This means both sides of the quads will be rendered. When using billboarded grass, you can cull the back side, because it never faces the camera.
 
-*Blending mode:* With grass you'd normally be using *Alpha*. The *AlphaTestFallof* parameter should also be set, but the value to use depends a lot on the texture. It may be worth trying a few different values.
+*Blending mode:* With grass you'd normally be using *Alpha*. The *AlphaTestFalloff* parameter should also be set, but the value to use depends a lot on the texture. It may be worth trying a few different values.
 
 *DepthWrite/DepthCheck:* Both of those should normally be checked.
 

+ 1 - 1
docs/modules/contributions/pages/lanscapes/vegetationsystem/trees.adoc

@@ -38,7 +38,7 @@ There are some general principles:
 
 2) If you want to enable physics with the forester, you need to provide the physics space to the Forester object. This is shown in the PhysicsTest.java file.
 
-3) Once that is done, you need to provide a collision shape with your model, obviously. This can be done in several ways. You can do it through the jMP scene composer, or programatically.
+3) Once that is done, you need to provide a collision shape with your model, obviously. This can be done in several ways. You can do it through the jMP scene composer, or programmatically.
 
 When a model is supplied to a tree-layer, and physics is enabled, the model will be checked for collision shapes. The shape is then removed from the model, and added to the tree-layer instead.
 

+ 1 - 1
docs/modules/contributions/pages/tools/navigation.adoc

@@ -42,7 +42,7 @@ Heading is the direction in which a vessel is pointed and is expressed as degree
 Course is the over ground track in which a vessel moves. With wind, water movement and steering error, heading and course are not necessary equal.
 
 *Mercator Projection*
-Mercator projections are a standard within nautical charts an represent rhumb lines (a.k.a loxodromes) as straight segments. A mercator projection is of non- linear scale as it accounts for distortion in latitude as one moves away from the Equator and towards the poles (with the poles being defined as infinity. This notion is illustrated to the right by figure 1.2). These distortions arise from the fact that the earth is an oblate spheriod i.e. a sphere with a flattened top and bottom (the poles). Therefore, as one moves away from the equator, nautical metrics skew to the extend whereby the length of one degree of latitude along the poles covers approximately 1 percent more distance than at the equator.
+Mercator projections are a standard within nautical charts an represent rhumb lines (a.k.a loxodromes) as straight segments. A mercator projection is of non- linear scale as it accounts for distortion in latitude as one moves away from the Equator and towards the poles (with the poles being defined as infinity. This notion is illustrated to the right by figure 1.2). These distortions arise from the fact that the earth is an oblate spheroid i.e. a sphere with a flattened top and bottom (the poles). Therefore, as one moves away from the equator, nautical metrics skew to the extend whereby the length of one degree of latitude along the poles covers approximately 1 percent more distance than at the equator.
 
 
 == Chart Projection

+ 2 - 2
docs/modules/core/pages/app/simpleapplication.adoc

@@ -313,10 +313,10 @@ By default, a SimpleApplication displays Statistics (`new StatsAppState()`), has
 
 The following example shows how you can remove one of the default AppStates, in this case, the FlyCamAppState:
 
-*  Either, in your application's contructor, you create the SimpleApplication with only the AppStates you want to keep:
+*  Either, in your application's constructor, you create the SimpleApplication with only the AppStates you want to keep:
 [source,java]
 ----
-public MyAppliction() {
+public MyApplication() {
   super( new StatsAppState(), new DebugKeysAppState() );
 }
 ----

+ 2 - 2
docs/modules/core/pages/app/state/capture_audio_video_to_a_file.adoc

@@ -83,7 +83,7 @@ This causes jMonkeyEngine to take as much time as it needs to fully
 calculate every frame of the video and audio.  You will see your game
 speed up and slow down depending on how computationally demanding your
 game is, but the final recorded audio and video will be perfectly
-sychronized and will run at exactly the fps which you specified.
+synchronized and will run at exactly the fps which you specified.
 
 [source,java]
 ----
@@ -185,7 +185,7 @@ wall, then the ball should have traveled exactly one game-mile. In
 order to keep sync with the real world, the game throttles its physics
 engine and graphics display.  If the computations involved in running
 the game are too intense, then the game will first skip frames, then
-sacrifice physics accuracy.  If there are particuraly demanding
+sacrifice physics accuracy.  If there are particularly demanding
 computations, then you may only get 1 fps, and the ball may tunnel
 through the floor or obstacles due to inaccurate physics simulation,
 but after the end of one user-hour, that ball will have traveled one

+ 1 - 1
docs/modules/core/pages/asset/asset_manager.adoc

@@ -258,7 +258,7 @@ This ensures that the model's Texture paths keep working between your 3D mesh ed
 
 [IMPORTANT]
 ====
-If you must load custom assets from a non-.j3o ZIP file, you must manually ammend the xref:sdk:default_build_script.adoc[default build script] to copy ZIP files into your distribution. ZIPs are skipped by default.
+If you must load custom assets from a non-.j3o ZIP file, you must manually amend the xref:sdk:default_build_script.adoc[default build script] to copy ZIP files into your distribution. ZIPs are skipped by default.
 ====
 
 

+ 1 - 1
docs/modules/core/pages/cinematic/cinematics.adoc

@@ -111,7 +111,7 @@ Details of the constructor:
 
 To create a MotionEvent, do the following:
 
-.  Create a MotinPath.
+.  Create a MotionPath.
 .  Create a MotionEvent based on the MotionPath.
 .  Configure your MotionEvent (see below).
 .  Add the MotionEvent to a Cinematic.

+ 1 - 1
docs/modules/core/pages/cinematic/motionpath.adoc

@@ -7,7 +7,7 @@ A MotionPath describes the motion of a spatial between waypoints. The path can b
 
 [TIP]
 ====
-If you want to remote-control a whole cutscene with several spatials moving at various times, then we recommened you use MotionPaths together with xref:cinematic/cinematics.adoc[Cinematics].
+If you want to remote-control a whole cutscene with several spatials moving at various times, then we recommend you use MotionPaths together with xref:cinematic/cinematics.adoc[Cinematics].
 ====
 
 

+ 1 - 1
docs/modules/core/pages/collision/collision_and_intersection.adoc

@@ -88,7 +88,7 @@ The following code snippet can be triggered by listeners (e.g. after an input ac
     System.out.println("Where was it hit? " + closest.getContactPoint() );
     System.out.println("Distance? " + closest.getDistance() );
   } else {
-    // how to react when no collision occured
+    // how to react when no collision occurred
   }
 }
 ----

+ 1 - 1
docs/modules/core/pages/collision/terrain_collision.adoc

@@ -274,7 +274,7 @@ You attach the `terrain` and the first-person `player` to the rootNode, and to t
 
 == Conclusion
 
-You see that you can combine snippets of sample code (such as HelloTerrain and HelloCollision), and create a new application from it that combines two features into soemthing new.
+You see that you can combine snippets of sample code (such as HelloTerrain and HelloCollision), and create a new application from it that combines two features into something new.
 
 You should spawn high up in the area and fall down to the map, giving you a few seconds to survey the area.  Then walk around and see how you like the lay of the land.
 

+ 4 - 4
docs/modules/core/pages/effect/effects_overview.adoc

@@ -160,7 +160,7 @@ image:light/light-sources.png[light-sources.png,width="150",height="100"]
 //*  link:{uri-jmonkeyengine}jme3-examples/src/main/java/jme3test/light/TestShadow.java[TestShadow.java] – BasicShadowRenderer. (SceneProcessor)
 //*  link:{uri-jmonkeyengine}jme3-examples/src/main/java/jme3test/light/TestPssmShadow.java[TestPssmShadow.java] – PssmShadowRenderer (SceneProcessor), also known as Parallel-Split Shadow Mapping (PSSM).
 *  link:{uri-jmonkeyengine}jme3-examples/src/main/java/jme3test/post/TestSSAO.java[TestSSAO.java], link:{uri-jmonkeyengine}jme3-examples/src/main/java/jme3test/post/TestSSAO2.java[TestSSAO2.java] – SSAOFilter, also known as Screen-Space Ambient Occlusion shadows (SSOA).
-*  link:{uri-jmonkeyengine}jme3-examples/src/main/java/jme3test/post/TestTransparentSSAO.java[TestTransparentSSAO.java] – SSAOFilter, also known as Screen-Space Ambient Occlusion shadows (SSOA), plus transparancy.
+*  link:{uri-jmonkeyengine}jme3-examples/src/main/java/jme3test/post/TestTransparentSSAO.java[TestTransparentSSAO.java] – SSAOFilter, also known as Screen-Space Ambient Occlusion shadows (SSOA), plus transparency.
 *  More details: xref:light/light_and_shadow.adoc[Light and Shadow]
 
 
@@ -215,7 +215,7 @@ Thanks for your awesome contributions! Keep them coming!
 image:effect/explosion-5.png[explosion-5.png,width="150",height="100"]
 image:effect/particle.png[particle.png,width="150",height="100"]
 
-xref:effect/particle_emitters.adoc[Particle emitter effects] are highly configurable and can have any texture. They can simulate smoke, dust, leaves, meteors, snowflakes, mosquitos, fire, explosions, clusters, embers, sparks…
+xref:effect/particle_emitters.adoc[Particle emitter effects] are highly configurable and can have any texture. They can simulate smoke, dust, leaves, meteors, snowflakes, mosquitoes, fire, explosions, clusters, embers, sparks…
 
 *  link:{uri-jmonkeyengine}jme3-examples/src/main/java/jme3test/effect/TestExplosionEffect.java[TestExplosionEffect.java] – debris, flame, flash, shockwave, smoke, sparks.
 *  link:{uri-jmonkeyengine}jme3-examples/src/main/java/jme3test/effect/TestPointSprite.java[TestPointSprite.java] – cluster of points.
@@ -227,11 +227,11 @@ xref:effect/particle_emitters.adoc[Particle emitter effects] are highly configur
 Here is an extract taken from @nehon in the forum thread (link:{uri-forum}t/how-exactly-do-filters-work/26871[http://hub.jmonkeyengine.org/forum/topic/how-exactly-do-filters-work/])
 
 The methods are called in this order (pretty much the same flow as processors):
-- initFilter() is called once when the FilterPostPorcessor is initialized or when the filter is added to the processor and this one as already been initialized.
+- initFilter() is called once when the FilterPostProcessor is initialized or when the filter is added to the processor and this one as already been initialized.
 
 for each frame the methods are called in that sequence :
 - preFrame() occurs before anything happens
-- postQueue() occcurs once the queues have been populated (there is one queue per bucket and 2 additional queues for the shadows, casters and recievers). Note that geometries in the queues are the one in the view frustum.
+- postQueue() occurs once the queues have been populated (there is one queue per bucket and 2 additional queues for the shadows, casters and receivers). Note that geometries in the queues are the one in the view frustum.
 - postFrame occurs once the main frame has been rendered (the back buffer)
 
 Those methods are optional in a filter, they are only there if you want to hook in the rendering process.

+ 3 - 3
docs/modules/core/pages/effect/post-processor_water.adoc

@@ -30,7 +30,7 @@ The GameDev.net article describes how those effects are achieved, but the main i
 
 == How Did We Implement it in jME3?
 
-jME3 default behavior is to use a forward rendering process, so there is no position buffer rendered that we can take advantage of. But while rendering the main scene to a frame buffer in the FilterPostPorcessor, we can write the hardware depth buffer to a texture, with nearly no additional cost.
+jME3 default behavior is to use a forward rendering process, so there is no position buffer rendered that we can take advantage of. But while rendering the main scene to a frame buffer in the FilterPostProcessor, we can write the hardware depth buffer to a texture, with nearly no additional cost.
 
 There are several ways of reconstructing the world space position of a pixel from the depth buffer. The computational cost is higher than just fetching the position from a position buffer, but the bandwidth and the memory required is a lot lower.
 
@@ -198,7 +198,7 @@ a|Default
 
 a|water.setCenter(Vector3f.ZERO); +
 water.setRadius(260);
-a|Limit the water filter to a semisphere with the given center and radius. Use this for lakes and smaller bodies of water. Skip this for oceans.
+a|Limit the water filter to a hemisphere with the given center and radius. Use this for lakes and smaller bodies of water. Skip this for oceans.
 a|unused
 
 a|water.setShoreHardness(1.0f);
@@ -265,7 +265,7 @@ a|The lower the value, the less reflection can be seen on water. This is a const
 a|0.3f
 
 a|water.setRefractionStrength(-0.1)
-a|This value modifies the current Fresnel term. If you want to weaken reflections use bigger value. If you want to empasize them, use a value smaller than 0.
+a|This value modifies the current Fresnel term. If you want to weaken reflections use bigger value. If you want to emphasize them, use a value smaller than 0.
 a|0.0f
 
 a|water.setReflectionMapSize(256)

+ 1 - 1
docs/modules/core/pages/gui/loading_screen.adoc

@@ -463,7 +463,7 @@ public class TestLoadingScreen1 extends SimpleApplication implements
     }
     //This is the callable that contains the code that is run on the other
     //thread.
-    //Since the assetmananger is threadsafe, it can be used to load data from
+    //Since the assetmanager is threadsafe, it can be used to load data from
     //any thread.
     //We do *not* attach the objects to the rootNode here!
     Callable<Void> loadingCallable = new Callable<Void>() {

+ 1 - 1
docs/modules/core/pages/gui/nifty_gui_java_interaction.adoc

@@ -295,7 +295,7 @@ You can use this for Strings and numeric values (e.g. when you read settings fro
 
 === Java Modifies Nifty Elements and Events
 
-You can also alter the appearance and functions of your nifty elements from Java. Make certain that the element that you want to alter has its `id="name"` attribute set, so you can identy and address it.
+You can also alter the appearance and functions of your nifty elements from Java. Make certain that the element that you want to alter has its `id="name"` attribute set, so you can identify and address it.
 
 Here's an example of how to change an image called `playerhealth`:
 

+ 1 - 1
docs/modules/core/pages/gui/nifty_gui_java_layout.adoc

@@ -490,7 +490,7 @@ The font used is jME3's default font "`Interface/Fonts/Default.fnt`" which is in
 
 === Add Controls
 
-Before you can use any control, you must load a Control Definition first. Thats why we add the following two lines _before_ the screen definitions:
+Before you can use any control, you must load a Control Definition first. That's why we add the following two lines _before_ the screen definitions:
 
 [source,java]
 ----

+ 1 - 1
docs/modules/core/pages/gui/nifty_gui_projection.adoc

@@ -16,7 +16,7 @@ image::gui/nifty-gui.png[nifty-gui.png,width="310",height="250",align="left"]
 
 Typically you define a key (for example escape) to switch the +++<abbr title="Graphical User Interface">GUI</abbr>+++ on and off. Then you xref:gui/nifty_gui_overlay.adoc[overlay] the running game with the +++<abbr title="Graphical User Interface">GUI</abbr>+++ (you will most likely pause the game then).
 
-Alternatively, you can also project the +++<abbr title="Graphical User Interface">GUI</abbr>+++ as a texture onto a mesh textures inside the game. Allthough this looks cool and "`immersive`", this approach is rarely used since it is difficult to record clicks this way. You can only interact with this projected +++<abbr title="Graphical User Interface">GUI</abbr>+++ by keyboard, or programmatically. You can select input fields using the arrow keys, and trigger actions using the return key.
+Alternatively, you can also project the +++<abbr title="Graphical User Interface">GUI</abbr>+++ as a texture onto a mesh textures inside the game. Although this looks cool and "`immersive`", this approach is rarely used since it is difficult to record clicks this way. You can only interact with this projected +++<abbr title="Graphical User Interface">GUI</abbr>+++ by keyboard, or programmatically. You can select input fields using the arrow keys, and trigger actions using the return key.
 
 This +++<abbr title="Graphical User Interface">GUI</abbr>+++ projection variant is less commonly used than the +++<abbr title="Graphical User Interface">GUI</abbr>+++ overlay variant. Usecases for +++<abbr title="Graphical User Interface">GUI</abbr>+++ projection are, for example, a player avatar using an in-game computer screen.
 

+ 1 - 1
docs/modules/core/pages/gui/nifty_gui_scenarios.adoc

@@ -149,7 +149,7 @@ a| looks up `key` in the Nifty properties. Use Nifty.setGlobalproperties(propert
 See also: link:https://github.com/nifty-gui/nifty-gui/raw/1.4/nifty-core/manual/nifty-gui-the-manual-1.3.2.pdf[Nifty GUI - the Manual: XML GUI (Special XML Markup)]
 
 
-== Use ScreenControllers for Mutally Exclusive Functionality
+== Use ScreenControllers for Mutually Exclusive Functionality
 
 Technically you are free to create one ScreenController class for each screen, or reuse the same ScreenController for all or some of them. In the end it may be best to create individual ScreenControllers for functionality that is mutually exclusive.
 

+ 5 - 5
docs/modules/core/pages/input/combo_moves.adoc

@@ -127,7 +127,7 @@ a|Returns the priority of this move
 
 Now that you have specified the combo steps, you want to detect them. You do that in the onAction() method that you get from the ActionListener interface.
 
-Create a HashSet `pressMappings` to track curently pressed mappings, and a ComboMove object `currentMove` to track the current move.
+Create a HashSet `pressMappings` to track currently pressed mappings, and a ComboMove object `currentMove` to track the current move.
 
 We also track the cast time of a combo to determine if it has timed out (see update loop below).
 
@@ -155,7 +155,7 @@ public void onAction(String name, boolean isPressed, float tpf) {
     }
     // ... add more ComboExecs here...
 
-    // If any ComboMoves have been sucessfully triggered:
+    // If any ComboMoves have been successfully triggered:
     if (invokedMoves.size() > 0){
         // identify the move with highest priority
         float priority = 0;
@@ -209,7 +209,7 @@ Test `currentMove.getMoveName()` and proceed to call methods that implement any
 
 == Why Combos?
 
-Depending on the game genre, the designer can reward the players' intrinsical or extrinsical skills:
+Depending on the game genre, the designer can reward the players' intrinsic or extrinsic skills:
 
-*  (intrinsical:) RPGs typically calculate the success of an attack from the character's in-game training level: The player plays the role of a character whose skill level is defined in numbers. RPGs typically do not offer any Combos.
-*  (extrinsical:) Sport and fighter games typically choose to reward the player's "`manual`" skills: The success of a special move solely depends on the player's own dexterity. These games typically offer optional Combos.
+*  (intrinsic:) RPGs typically calculate the success of an attack from the character's in-game training level: The player plays the role of a character whose skill level is defined in numbers. RPGs typically do not offer any Combos.
+*  (extrinsic:) Sport and fighter games typically choose to reward the player's "`manual`" skills: The success of a special move solely depends on the player's own dexterity. These games typically offer optional Combos.

+ 1 - 1
docs/modules/core/pages/input/input_handling.adoc

@@ -277,7 +277,7 @@ You specify the action to be triggered where it says TODO in the Listener code s
 Make use of the distinction between `if` and `else if` in this conditional.
 
 *  If several actions can be triggered simultaneously, test for all of these with a series of bare `if`s. For example, a character can be running forward _and_ to the left.
-*  If certain actions exclude one another, test for them with `else if`, the the rest of the exclusive tests can be skipped and you save some miliseconds. For example, you either shoot or pick something up.
+*  If certain actions exclude one another, test for them with `else if`, the the rest of the exclusive tests can be skipped and you save some milliseconds. For example, you either shoot or pick something up.
 
 
 === ActionListener

+ 1 - 1
docs/modules/core/pages/jme3tools/optimize/texture_atlas.adoc

@@ -98,7 +98,7 @@ Use `makeAtlasBatch` to turn several geometries that are loaded from a j3o file
 [source,java]
 ----
 
- // scene contains many geometries ared attached to one node:
+ // scene contains many geometries attached to one node:
  Node scene = assetManager.loadModel("Scenes/MyScene.j3o");
  // geom is one geometry containing all of these geometries together
  Geometry geom = TextureAtlas.makeAtlasBatch(scene);

+ 2 - 2
docs/modules/core/pages/light/light_and_shadow.adoc

@@ -5,7 +5,7 @@
 
 image::light/shading-ani.gif[Examples of shading and lighting.,width="",height=""]
 
-Light and Shadow are two separate things in 3D engines, although we percieve them together in real life:
+Light and Shadow are two separate things in 3D engines, although we perceive them together in real life:
 
 *  Lighting means that an object is brighter on the side facing the light direction, and darker on the backside. Computationally, this is relatively easy.
 *  Lighting does not mean that objects cast a shadow on the floor or other objects: Activating shadow processing is an additional step described here. Since casting shadows has an impact on performance, drop shadows and ambient occlusion shading are not activated by default.
@@ -237,7 +237,7 @@ Properties you can set:
 Full sample code
 
 *  link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/post/TestSSAO.java[TestSSAO.java] – Screen-Space Ambient Occlusion shadows
-*  link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/post/TestTransparentSSAO.java[TestTransparentSSAO.java] – Screen-Space Ambient Occlusion shadows plus transparancy
+*  link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/post/TestTransparentSSAO.java[TestTransparentSSAO.java] – Screen-Space Ambient Occlusion shadows plus transparency
 *  link:https://hub.jmonkeyengine.org/t/ssao-for-monkeys/13369[Screen Space Ambient Occlusion for jMonkeyEngine (article)]
 
 Ambient Occlusion refers to the shadows which nearby objects cast on each other under an ambient lighting. Screen Space Ambient Occlusion (SSAO) approximates how light radiates in real life.

+ 1 - 1
docs/modules/core/pages/material/how_to_use_materials.adoc

@@ -225,7 +225,7 @@ mat.setColor("GlowColor",ColorRGBA.White);
 ----
 
 .  (Optional) Specify a `GlowMap` texture. +
-This texture outlines in detail where the DiffuseMap texture glows. If you don't supply a GlowMap, the whole material glows everwhere.
+This texture outlines in detail where the DiffuseMap texture glows. If you don't supply a GlowMap, the whole material glows everywhere.
 +
 [source,java]
 ----

+ 1 - 1
docs/modules/core/pages/material/j3m_material_files.adoc

@@ -38,7 +38,7 @@ How this file is structured:
 ..  `shiny bumpy rock` is a descriptive string that you can make up. Choose a name to help you remember for what you intend to use this material.
 ..  After the colon, specify on which xref:material/materials_overview.adoc[Materials] definition you base this Material.
 
-.  Now look up the choosen Material Definition's parameters and their parameter types from the Material table. Add one line for each parameter.
+.  Now look up the chosen Material Definition's parameters and their parameter types from the Material table. Add one line for each parameter.
 **  For example: The series of four numbers in the example above represent RGBA color values.
 
 .  Check the detailed syntax reference below if you are unsure.

+ 1 - 1
docs/modules/core/pages/material/material_definitions.adoc

@@ -90,7 +90,7 @@ Here are examples of the methods that set the different data types:
 *  `mat.setBoolean( "SphereMap",   true);`
 *  `mat.setVector3( "NormalScale", new Vector3f(1f,1f,1f));`
 
-A simpled textured material.
+A simple textured material.
 
 [source,java]
 ----

+ 1 - 1
docs/modules/core/pages/material/material_specification.adoc

@@ -106,7 +106,7 @@ MaterialParameters {
 }
 ----
 
-1 will be used as the default value and sent to the shader if it has not been set by a meterial.setFloat() call.
+1 will be used as the default value and sent to the shader if it has not been set by a material.setFloat() call.
 
 
 === Techniques

+ 1 - 1
docs/modules/core/pages/material/materials_overview.adoc

@@ -301,7 +301,7 @@ a| A color gradient calculated from the model's surface normal's. You can use th
 
 
 [cols="3", options="header"]
-.Transparancy
+.Transparency
 |===
 
 a|Material Option

+ 1 - 1
docs/modules/core/pages/math/quaternion.adoc

@@ -43,7 +43,7 @@ These basic operations allow us to convert various rotation representations to Q
 
 === Angle Axis
 
-You might wish to represent your rotations as Angle Axis pairs. That is, you define a axis of rotation and the angle with which to rotate about this axis. Quaternion defines a method `fromAngleAxis` (and `fromAngleNormalAxis`) to create a Quaternion from this pair. This is acutally used quite a bit in jME demos to continually rotate objects. You can also obtain a Angle Axis rotation from an existing Quaternion using `toAngleAxis`.
+You might wish to represent your rotations as Angle Axis pairs. That is, you define a axis of rotation and the angle with which to rotate about this axis. Quaternion defines a method `fromAngleAxis` (and `fromAngleNormalAxis`) to create a Quaternion from this pair. This is actually used quite a bit in jME demos to continually rotate objects. You can also obtain a Angle Axis rotation from an existing Quaternion using `toAngleAxis`.
 
 
 ==== Example - Rotate a Spatial Using fromAngleAxis

+ 2 - 2
docs/modules/core/pages/renderer/camera.adoc

@@ -141,10 +141,10 @@ a|chaseCam.setChasingSensitivity(5f)
 a|The lower the chasing sensitivity, the slower the camera will follow the target when it moves.
 
 a|chaseCam.setTrailingSensitivity(0.5f)
-a|The lower the traling sensitivity, the slower the camera will begin to go after the target when it moves. Default is 0.5;
+a|The lower the trailing sensitivity, the slower the camera will begin to go after the target when it moves. Default is 0.5;
 
 a|chaseCam.setRotationSensitivity(5f)
-a|The lower the sensitivity, the slower the camera will rotate around the target when the mosue is dragged. Default is 5.
+a|The lower the sensitivity, the slower the camera will rotate around the target when the mouse is dragged. Default is 5.
 
 a|chaseCam.setTrailingRotationInertia(0.1f)
 a|This prevents the camera to stop too abruptly when the target stops rotating before the camera has reached the target's trailing position. Default is 0.1f.

+ 1 - 1
docs/modules/core/pages/renderer/making_the_camera_follow_a_character.adoc

@@ -117,7 +117,7 @@ a|Enable rotation by keeping the middle mouse button pressed (like in Blender).
 a|setToggleRotationTrigger(new MouseButtonTrigger( +
 MouseInput.BUTTON_MIDDLE), +
 new KeyTrigger(KeyInput.KEY_SPACE))
-a|Activate mutiple triggers for the rotation of the camera, e.g. spacebar and middle mouse button, etc.
+a|Activate multiple triggers for the rotation of the camera, e.g. spacebar and middle mouse button, etc.
 
 a|setRotationSensitivity(5f)
 a|How fast the camera rotates. Use values around &lt;1.0f (all bigger values are ignored).

+ 1 - 1
docs/modules/core/pages/scene/control/custom_controls.adoc

@@ -17,7 +17,7 @@ For example, one NPC can be controlled by a PhysicsControl instance and an AICon
 .  Define the custom control and implement its behaviour in the Control's update method:
 **  You can pass arguments into your custom control.
 **  In the control class, the object `spatial` gives you access to the spatial and subspatials that the control is attached to.
-**  Here you modify the `spatial's` transformation (move, scale, rotate), play animations, check its environement, define how it acts and reacts.
+**  Here you modify the `spatial's` transformation (move, scale, rotate), play animations, check its environment, define how it acts and reacts.
 
 .  Add an instance of the Control to a spatial to give it this behavior. The spatial's game state is updated automatically from now on.
 

+ 2 - 2
docs/modules/core/pages/scene/control/level_of_detail.adoc

@@ -54,7 +54,7 @@ If you don't know which to choose, experiment. For example start by trying COLLA
 
 == Generate LOD
 
-You must generate and cache several LODs for each mesh, ranging from many to few polygons. The LOD generator algorithm attempts to collaps vertices automatically, while avoiding ugly artifacts. The LOD generator doesn't generate new meshes, it only creates separate reduced index buffers for the more highly reduced levels.
+You must generate and cache several LODs for each mesh, ranging from many to few polygons. The LOD generator algorithm attempts to collapse vertices automatically, while avoiding ugly artifacts. The LOD generator doesn't generate new meshes, it only creates separate reduced index buffers for the more highly reduced levels.
 
 *  If you create geometries manually (3D models), use the SDK to generate LODs.
 *  If you create geometries programmatically, generate LODs from your Java code.
@@ -117,7 +117,7 @@ lod.bakeLods(LodGenerator.TriangleReductionMethod.PROPORTIONAL,0.25, 0.5f, 0.75f
 
 == Activate the LOD Control
 
-After generating the LODs for the geometry, you create and add a `com.jme3.scene.control.LodControl` to the geometry. Adding the LodControl activates the LOD optimizaton for this geometry.
+After generating the LODs for the geometry, you create and add a `com.jme3.scene.control.LodControl` to the geometry. Adding the LodControl activates the LOD optimization for this geometry.
 
 [source,java]
 ----

+ 2 - 2
docs/modules/core/pages/scene/custom_meshes.adoc

@@ -142,7 +142,7 @@ You store the Mesh data in a buffer.
 **  indices.
 
 .  We assign the data to the appropriate type of buffer inside the `Mesh` object. The three buffer types (`Position`, `TextCoord`, `Index`) are taken from an enum in `com.jme3.scene.VertexBuffer.Type`.
-.  The integer parameter describes the number of components of the values. Vertex postions are 3 float values, texture coordinates are 2 float values, and the indices are 3 ints representing 3 vertices in a triangle.
+.  The integer parameter describes the number of components of the values. Vertex positions are 3 float values, texture coordinates are 2 float values, and the indices are 3 ints representing 3 vertices in a triangle.
 .  To render the mesh in the scene, we need to pre-calculate the bounding volume of our new mesh: Call the `updateBound()` method on it.
 
 [source,java]
@@ -265,7 +265,7 @@ Loop over the colorArray buffer to quickly set some RGBA value for each vertex.
 [source,java]
 ----
 
-// note: the red and green values are arbitray in this example
+// note: the red and green values are arbitrary in this example
 for(int i = 0; i < 4; i++){
    // Red value (is increased by .2 on each next vertex here)
    colorArray[colorIndex++]= 0.1f+(.2f*i);

+ 3 - 3
docs/modules/core/pages/scene/mesh.adoc

@@ -72,10 +72,10 @@ a|Type.InterleavedData
 a| Specifies the source data for various vertex buffers when interleaving is used.
 
 a|Type.BindPosePosition
-a| Inital vertex position, used with animation.
+a| Initial vertex position, used with animation.
 
 a|Type.BindPoseNormal
-a| Inital vertex normals, used with animation
+a| Initial vertex normals, used with animation
 
 a|Type.BoneWeight
 a| Bone weights, used with animation
@@ -97,7 +97,7 @@ a|Mesh method
 a|Description
 
 a|setBound(boundingVolume)
-a|if you need to specifiy a custom optimized bounding volume
+a|if you need to specify a custom optimized bounding volume
 
 a|setStatic()
 a|Locks the mesh so you cannot modify it anymore, thus optimizing its data (faster).

+ 1 - 1
docs/modules/core/pages/scene/shape/shape.adoc

@@ -29,7 +29,7 @@ image::scene/shape/cylinder.png[cylinder.png,width="108",height=""]
 --
 [.right.text-left]
 image::scene/shape/sphere.png[sphere.png,width="108",height=""]
-*  com.jme3.scene.shape.Sphere – A ball or elipsoid.
+*  com.jme3.scene.shape.Sphere – A ball or ellipsoid.
 --
 
 [.float-group]

+ 3 - 3
docs/modules/core/pages/scene/spatial.adoc

@@ -159,7 +159,7 @@ Often after you load a scene or model, you need to access a part of it as an ind
 
 .  Open the model in a 3D mesh editor, or in the jMonkeyEngine SDK's Scene Composer.
 .  Find out the existing names of sub-meshes in the model.
-.  Assign unique names to sub-meshes in the model if neccessary.
+.  Assign unique names to sub-meshes in the model if necessary.
 
 In the following example, the Node `house` is the loaded model. The sub-meshes in the Node are called its children. The String, here `door 12`, is the name of the mesh that you are searching.
 
@@ -173,7 +173,7 @@ Geometry submesh = (Geometry) houseScene.getChild("door 12");
 
 == What is Culling?
 
-There are two types of culling: Face culling, and view frustrum culling.
+There are two types of culling: Face culling, and view frustum culling.
 
 *Face culling* means not drawing certain polygons of a mesh. Face culling behaviour is a property of the material.
 
@@ -193,7 +193,7 @@ Example:
 material.getAdditionalRenderState().setFaceCullMode(FaceCullMode.FrontAndBack);
 ----
 
-*View frustum culling* refers to not drawing (and not even calculating) certain whole models in the scene. At any given moment, half of the scene is behind the player and out of sight anyway. View frustum culling is an optimization to not calculate scene elements that are not visible – elements that are "`outside`" the view frustrum.
+*View frustum culling* refers to not drawing (and not even calculating) certain whole models in the scene. At any given moment, half of the scene is behind the player and out of sight anyway. View frustum culling is an optimization to not calculate scene elements that are not visible – elements that are "`outside`" the view frustum.
 
 The decision what is visible and what not, is done automatically by the engine (`CullHint.Dynamic`). Optionally, you can manually control whether the engine culls individual spatials (and children) from the scene graph:
 

+ 12 - 12
docs/modules/core/pages/shader/jme3_shadernodes.adoc

@@ -98,7 +98,7 @@ All that is not between [] is mandatory.
 **  *ShaderLangAndVersion* : follows the same syntax than the shader declaration in the j3md file : GLSL&lt;version&gt;, version being 100 for glsl 1.0 , 130 for glsl 1.3, 150 for glsl 1.5 and so on. Note that this is the *minimum* glsl version this shader supports
 **  *ShaderPath* the path to the shader code file (relative to the asset folder)
 
-*  +++<u>Documentation</u>+++ : the documentation block. This is mandatory and I really recommend filling this if you want to contribute your shader nodes. This documentation will be read buy the SDK and presented to users willing to add this node to their material definitions. This should contain a brief description of the node and a description for each input and ouput.
+*  +++<u>Documentation</u>+++ : the documentation block. This is mandatory and I really recommend filling this if you want to contribute your shader nodes. This documentation will be read buy the SDK and presented to users willing to add this node to their material definitions. This should contain a brief description of the node and a description for each input and output.
 **  *@input* can be use to prefix an input name so the sdk recognize it and format it accordingly. the syntax id @input &lt;inputName&gt; &lt;description&gt;.
 **  *@output* can be use to prefix an output name so the sdk recognize it and format it accordingly. the syntax id @output &lt;inputName&gt; &lt;description&gt;
 
@@ -112,7 +112,7 @@ All that is not between [] is mandatory.
 
 [NOTE]
 ====
-If you use the same name for an input and an ouput, the generator will consider them as the SAME variable so they should be of the same glsl type.
+If you use the same name for an input and an output, the generator will consider them as the SAME variable so they should be of the same glsl type.
 ====
 
 
@@ -176,8 +176,8 @@ _Example_
 
 ----
 
-This declares a float array with the size depending on the value of the NumberOfElement material parameter. +
-NumberOfElement *HAS* to be declared in the material definition as a material parameter. It will be mapped to a define and used in the shader.
+This declares a float array with the size depending on the value of the NumberOfElements material parameter. +
+NumberOfElements *HAS* to be declared in the material definition as a material parameter. It will be mapped to a define and used in the shader.
 
 [NOTE]
 ====
@@ -255,7 +255,7 @@ For example, let's say we have a Color and ColorMap material parameter, this con
 
 *  +++<u>InputMapping</u>+++ the wiring of the inputs of this node, coming from previous node's outputs or from built in glsl inputs.
 **  *InputVariableName* : the name of the variable to map as declared in the definition.
-**  *Swizzle* : Swizling for the preceding variable. More information on glsl swizzling on this page link:https://www.khronos.org/opengl/wiki/GLSL_Type[https://www.khronos.org/opengl/wiki/GLSL_Type].
+**  *Swizzle* : Swizzling for the preceding variable. More information on glsl swizzling on this page link:https://www.khronos.org/opengl/wiki/GLSL_Type[https://www.khronos.org/opengl/wiki/GLSL_Type].
 **  *NameSpace* : The generator will use variable name space to avoid collision between variable names. Name space can be one of these values :
 ***  *MatParam* : the following variable is a Material Parameter declared in the MaterialParameters block of the materialDefinition.
 ***  *WorldParam* : the following variable is a World Parameter declared in the WorldParameters block of the current technique block. World parameters can be one of those declared in this file : link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/shader/UniformBinding.java[https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/shader/UniformBinding.java]
@@ -266,7 +266,7 @@ For example, let's say we have a Color and ColorMap material parameter, this con
 **  *VarName* : the name of the variable to assign to the input. This variable must be known in name space declared before.
 **  *MappingCondition* : Follows the same rules as the activation condition for the shaderNode, this mapping will be embed in a #ifdef statement n the resulting shader.
 
-*  +++<u>OutputMapping</u>+++ : This block is optional, as mapping of output will be done in input mapping block of following shaderNodes, ecept if you want to output a value to the Global output of the shader.
+*  +++<u>OutputMapping</u>+++ : This block is optional, as mapping of output will be done in input mapping block of following shaderNodes, except if you want to output a value to the Global output of the shader.
 **  *NameSpace* : the name space of the output to assign, this can only be "`Global`" here.
 **  *VarName* : the name of a global output (can be anything, just be aware that 2 different names result in 2 different outputs).
 **  *OutputVariable* : Must be an output of the current node's definition.
@@ -338,7 +338,7 @@ ShaderNodesDefinitions {
         Shader GLSL100: Common/MatDefs/ShaderNodes/Common/commonVert.vert
         Documentation {
             This Node is responsible for computing vertex position in projection space.
-            It also can pass texture coordinates 1 & 2, and vertexColor to the frgment shader as varying (or inputs for glsl >=1.3)
+            It also can pass texture coordinates 1 & 2, and vertexColor to the fragment shader as varying (or inputs for glsl >=1.3)
             @input modelPosition the vertex position in model space (usually assigned with Attr.inPosition or Global.position)
             @input worldViewProjectionMatrix the World View Projection Matrix transforms model space to projection space.
             @input texCoord1 The first texture coordinates of the vertex (usually assigned with Attr.inTexCoord)
@@ -389,7 +389,7 @@ As you can see all the inputs and outputs are not used. That's because most of t
 *+++<u>CommonVert input mapping</u>+++* +
 Here we have the most basic yet mandatory thing in a vertex shader, computing vertex position in projection space. For this we have 2 mappings :
 
-*  *worldViewProjectionMatrix = WorldParam.WorldViewProjectionMatrix* : the input parameter worldViewProjectionMatrix is assigned with the WorldViewProjectionMatrix World parameter declared in the WorlParameters block of the technique.
+*  *worldViewProjectionMatrix = WorldParam.WorldViewProjectionMatrix* : the input parameter worldViewProjectionMatrix is assigned with the WorldViewProjectionMatrix World parameter declared in the WorldParameters block of the technique.
 *  *modelPosition = Global.position.xyz* : the modelPosition (understand the vertex position in the model coordinate space) is assigned with the Global position variable.
 
 
@@ -411,7 +411,7 @@ Also note the swizzle of the Global.position variable. ModelPosition is a vec3 a
 
 *+++<u>CommonVert output mapping</u>+++* +
 
-*  *Global.position = projPosition* : The result of the multiplication of the worldViewProjectionMatrix and the modelPosition is assigned to the Globale position.
+*  *Global.position = projPosition* : The result of the multiplication of the worldViewProjectionMatrix and the modelPosition is assigned to the Global position.
 
 
 [TIP]
@@ -477,13 +477,13 @@ In a very complex material def this variable could already have been assigned wi
 
 [TIP]
 ====
-Note that the Global.color variable will be assigned to gl_FragColor (glsl < 1.5) or declared as a Global ouput of the shader (glsl >= 1.5).
+Note that the Global.color variable will be assigned to gl_FragColor (glsl < 1.5) or declared as a Global output of the shader (glsl >= 1.5).
 ====
 
 
 [TIP]
 ====
-Also note that in case several Global variables are declared, the generator will assign them gl_FragData[i](glsl < 1.5) i being the order the variable has been found in the material def. For glsl >= 1.5 the veriable will just all be declared as shader output in the order they've been found in the declaration.
+Also note that in case several Global variables are declared, the generator will assign them gl_FragData[i](glsl < 1.5) i being the order the variable has been found in the material def. For glsl >= 1.5 the variable will just all be declared as shader output in the order they've been found in the declaration.
 ====
 
 
@@ -560,7 +560,7 @@ Same as for the Vertex shader. Note that the color1 is not declared, because it'
 
 [IMPORTANT]
 ====
-As a rule of thumb you should not assign a value to an input. Inputs are likely to be material paramters or outputs from other shaders and modifying them may cause unexpected behavior, even failure in your resulting shader.
+As a rule of thumb you should not assign a value to an input. Inputs are likely to be material parameters or outputs from other shaders and modifying them may cause unexpected behavior, even failure in your resulting shader.
 ====
 
 

+ 3 - 3
docs/modules/core/pages/system/appsettings.adoc

@@ -30,7 +30,7 @@ public static void main(String[] args) {
 }
 ----
 
-Set the boolean in the AppSettings contructor to true if you want to keep the default settings for values that you do not specify. Set this parameter to false if you want the application to load user settings from previous launches. In either case you can still customize individual settings.
+Set the boolean in the AppSettings constructor to true if you want to keep the default settings for values that you do not specify. Set this parameter to false if you want the application to load user settings from previous launches. In either case you can still customize individual settings.
 
 WARNING: The settings are saved based on the title of your game (default = "`jMonkey Engine 3.x-stable`"). This means that if you have not changed the default title, then remove a setting method call, your settings changes will remain in effect for all projects using the default title. To prevent this, set the title for your game or remember to change the settings back to their link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/system/AppSettings.java#L213[default] and run the project again.
 
@@ -96,7 +96,7 @@ a|640x480 pixels
 
 a|setSamples(4)
 a|Set multisampling to 0 to switch antialiasing off (harder edges, faster.) +
-Set multisampling to 2 or 4 to activate antialising (softer edges, may be slower.) +
+Set multisampling to 2 or 4 to activate antialiasing (softer edges, may be slower.) +
 Depending on your graphic card, you may be able to set multisampling to higher values such as 8, 16, or 32 samples.
 a|0
 
@@ -163,7 +163,7 @@ a|Switch Audio Renderer. Currently there is only one option.
 a|OpenAL
 
 a|setStereo3D(true)
-a|Enable 3D stereo. This feature requires hardware support from the GPU driver. See link:http://en.wikipedia.org/wiki/Quad_buffering[Quad Buffering]. Currently, your everday user's hardware does not support this, so you can ignore it for now.
+a|Enable 3D stereo. This feature requires hardware support from the GPU driver. See link:http://en.wikipedia.org/wiki/Quad_buffering[Quad Buffering]. Currently, your everyday user's hardware does not support this, so you can ignore it for now.
 a|false
 
 |===

+ 1 - 1
docs/modules/core/pages/system/jme3_srgbpipeline.adoc

@@ -29,7 +29,7 @@ image:http://i.imgur.com/uNL7vw8.png[uNL7vw8.png,width="",height=""]
 
 === Implementation
 
-*  To handle proper gamma corrected ouput colors, Opengl expose an ARB extension that allows you to output a color in linear space and have the GPU automatically correct it : link:https://www.opengl.org/registry/specs/ARB/framebuffer_sRGB.txt[https://www.opengl.org/registry/specs/ARB/framebuffer_sRGB.txt]
+*  To handle proper gamma corrected output colors, Opengl expose an ARB extension that allows you to output a color in linear space and have the GPU automatically correct it : link:https://www.opengl.org/registry/specs/ARB/framebuffer_sRGB.txt[https://www.opengl.org/registry/specs/ARB/framebuffer_sRGB.txt]
 *  To handle the input, instead of classic RGBA8 image format, one can use SRGB8_ALPHA8_EXT which is basically RGBA in sRGB. Using this you specify the GPU that the texture is in sRGB space and when fetching  a color from it, the GPU will linearize the color value for you (for free). There are sRGB equivalent to all 8 bits formats (even compressed format like DXT).
 *  But all textures don't need this. For example, normal maps, height maps colors are most probably generated and not hand picked by an artist looking through a monitor. The implementation needs to account for it and expose a way to exclude some textures from the sRGB pipeline.
 

+ 4 - 4
docs/modules/core/pages/terrain/terrain.adoc

@@ -64,7 +64,7 @@ TerraMonkey is a quad tree. Each node is a TerrainQuad, and each leaf is a Terra
 
 == Texture Splatting
 
-When you '`slap`' a texture on a mesh, the whole mesh looks the same. For big meshes (such as terrains) that is undesirable because it looks very boring (your whole landscape would be all rock, or all grass, or all sand). Texture Splatting is a technique that lets you "`paint`" several textures into one combined texure. Each of the splat textures has an opacity value so you can define where it is visible in the final overall texture.
+When you '`slap`' a texture on a mesh, the whole mesh looks the same. For big meshes (such as terrains) that is undesirable because it looks very boring (your whole landscape would be all rock, or all grass, or all sand). Texture Splatting is a technique that lets you "`paint`" several textures into one combined texture. Each of the splat textures has an opacity value so you can define where it is visible in the final overall texture.
 
 The default material for TerraMonkey is TerrainLighting.j3md. This material combines several texture maps to produce the final custom texture. Remember, Diffuse Maps are the main textures that define the look; optionally, each Diffuse Map can be enhanced with a Normal Map; Alpha Maps describe the opacity of each Diffuse Map used (one color –red, green, blue, or alpha– stands for one Diffuse Map's opacity); Glow and Specular Maps define optional effects.
 
@@ -139,12 +139,12 @@ Here are some common examples what this means:
 *  2 Alpha + 6 Diffuse + 6 Normal + 1 Glow + 1 Specular.
 *  1 Alpha + 3 Diffuse + 3 Normal + 1 Glow + 1 Specular (rest unused)
 
-You can hand-paint Alpha, Diffuse, Glow, and Specular maps in a drawing program, like Photoshop. Define each splat texture in the Alpha Map in either Red, Green, Blue, or Alpha (=RGBA). The JmeTests project bundled in the xref:sdk:sdk.adoc[SDK] includes some image files that show you how this works. The example images show a terrain heightmap next to its Alpha Map (which has been prepare for 3 Diffuse Maps), and one examplary Diffuse/Normal Map pair.
+You can hand-paint Alpha, Diffuse, Glow, and Specular maps in a drawing program, like Photoshop. Define each splat texture in the Alpha Map in either Red, Green, Blue, or Alpha (=RGBA). The JmeTests project bundled in the xref:sdk:sdk.adoc[SDK] includes some image files that show you how this works. The example images show a terrain heightmap next to its Alpha Map (which has been prepared for 3 Diffuse Maps), and one exemplary Diffuse/Normal Map pair.
 
 
 == Code Sample: Terrain.j3md
 
-This example shows the simpler material definition `Terrain.j3md`, which only supports 1 Alpha Map, 3 Diffuse Maps, 3 Normal Maps, and does not support Phong illumination. It makes the exmaple shorter – TerrainLighting.j3md works accordingly (The list of material properties see above. Links to extended sample code see above.)
+This example shows the simpler material definition `Terrain.j3md`, which only supports 1 Alpha Map, 3 Diffuse Maps, 3 Normal Maps, and does not support Phong illumination. It makes the example shorter – TerrainLighting.j3md works accordingly (The list of material properties see above. Links to extended sample code see above.)
 
 First, we load our textures and the heightmap texture for the terrain
 
@@ -208,7 +208,7 @@ rootNode.attachChild(terrain);
 
 [TIP]
 ====
-As an alternative to an image-based height map, you can also generate a Hill hightmap:
+As an alternative to an image-based height map, you can also generate a Hill heightmap:
 
 [source,java]
 ----

+ 1 - 1
docs/modules/core/pages/ui/hud.adoc

@@ -120,7 +120,7 @@ hudText = new BitmapText(myFont, false);
 === Positioning HUD Elements
 
 *  When positioning +++<abbr title="Graphical User Interface">GUI</abbr>+++ text and images in 2D, the *bottom left corner* of the screen is `(0f,0f)`, and the *top right corner* is at `(settings.getWidth(),settings.getHeight())`.
-*  If you have several 2D elements in the +++<abbr title="Graphical User Interface">GUI</abbr>+++ bucket that overlap, define their depth order by specifing a Z value. For example use `pic.move(x, y, -1)` to move the picture to the background, or `hudText.setLocalTranslation(x,y,1)` to move text to the foreground.
+*  If you have several 2D elements in the +++<abbr title="Graphical User Interface">GUI</abbr>+++ bucket that overlap, define their depth order by specifying a Z value. For example use `pic.move(x, y, -1)` to move the picture to the background, or `hudText.setLocalTranslation(x,y,1)` to move text to the foreground.
 *  Size and length values in the orthogonal render queue are treated like pixels. A 20*20-wu big quad is rendered 20 pixels wide.
 
 

+ 1 - 1
docs/modules/core/pages/util/sky.adoc

@@ -5,7 +5,7 @@
 
 
 Here is an example for how you add a static horizon (a background landscape and a sky) to a scene.
-Having a discernable horizon with a suitable landscape (or space, or ocean, or whatever) in the background makes scenes look more realistic than just a single-colored "`sky`" background.
+Having a discernible horizon with a suitable landscape (or space, or ocean, or whatever) in the background makes scenes look more realistic than just a single-colored "`sky`" background.
 
 
 == Adding the Sky

+ 5 - 5
docs/modules/networking/pages/monkey_zone.adoc

@@ -23,7 +23,7 @@ The project design follows best practices that make it possible to edit maps, ve
 
 == Implementation
 
-MonkeyZone is a multi-player game with a physics simulation. Both, clients and server, run the physics simulation. The clients send input data from the player group to the server, where they control the entities, and also broadcast to the clients. Additionally, the server sends regular syncronization data for all objects in the game to prevent drifting.
+MonkeyZone is a multi-player game with a physics simulation. Both, clients and server, run the physics simulation. The clients send input data from the player group to the server, where they control the entities, and also broadcast to the clients. Additionally, the server sends regular synchronization data for all objects in the game to prevent drifting.
 When a human user or an AI performs an action (presses a button), the actual logic is done on the server. The results are broadcast as data messages to the entities. When the entity is controlled by an AI, the actual AI code (that determines where the entity should move, and when it should perform an action) is executed on the client.
 ++
 _The way MonkeyZone is implemented is just one of the many possible ways to do a game like this in jME. Some things might be done more efficiently, some might be done in another way completely. MonkeyZone tries to do things the way that are most appropriate to implement the game at hand and it shows nicely how jME3 and the standard Java +++<abbr title="Application Programming Interface">API</abbr>+++ can make game development easier and faster. Also note that the way MonkeyZone is designed is not scalable to a MMO style game, it will only work in a FPS style environment where the whole game world can be loaded at once._
@@ -31,7 +31,7 @@ _The way MonkeyZone is implemented is just one of the many possible ways to do a
 
 === Terminology
 
-The game uses certain terms that might be familiar to you but maybe used in another way, so heres a quick rundown on the terms being used.
+The game uses certain terms that might be familiar to you but maybe used in another way, so here's a quick rundown on the terms being used.
 
 *  Player –	Logical human or AI player that can enter entities and generally act, only exists as PlayerData "`database`" with an id.
 *  Entity –	Spatial with UserData, a world object like character, vehicle, box or factory. The base form is defined only by a String pointing to the j3o which already has all userdata like hitpoints, speed etc.
@@ -53,13 +53,13 @@ xref:core:scene/control/custom_controls.adoc[Controls] are used extensively in M
 
 ==== ...As entity capabilities
 
-Controls attached to Spatials are generally used like an "`array of capabilities`" that the entity posesses. So when an entity has a VehicleControl its expected to be a vehicle, when its got a CharacterControl its expected to be a character.
+Controls attached to Spatials are generally used like an "`array of capabilities`" that the entity possesses. So when an entity has a VehicleControl its expected to be a vehicle, when its got a CharacterControl its expected to be a character.
 Other Controls work completely on their own, like CharacterAnimControl which just uses the CharacterControl of the entity to check if the character is running, jumping etc. and then animates the entity if it has an AnimControl.
 
 
 ==== ... to abstract
 
-Furthermore theres special interfaces for Controls that allow abstraction of different Controls into one base interface. For example ManualControl and AutonomousControl are interfaces for controls that manage the movement of a spatial in a generalized way. This way AI code and e.g. the UserInputControl only have to check for a valid AutonomousControl or ManualControl on the spatial to control and move it. The details of the movement are handled by classes like ManualVehicleControl and AutonomousCharacterControl.
+Furthermore there are special interfaces for Controls that allow abstraction of different Controls into one base interface. For example ManualControl and AutonomousControl are interfaces for controls that manage the movement of a spatial in a generalized way. This way AI code and e.g. the UserInputControl only have to check for a valid AutonomousControl or ManualControl on the spatial to control and move it. The details of the movement are handled by classes like ManualVehicleControl and AutonomousCharacterControl.
 
 
 ==== ... for AI functions
@@ -74,7 +74,7 @@ MonkeyZone includes simple AI functions based on a command queue.
 
 ==== Commands
 
-To implement autonomous AI players MonkeyZone uses a system of Commands that are managed by a CommandControl that is attached to each AI player entity controlled by the user. This CommandControl manages a list of Commands that are executed based on priority. For example theres a MoveCommand, a FollowCommand and an AttackCommand, Commands can however implement more complete behavior than that, e.g. the complete logic for a scavenging entity.
+To implement autonomous AI players MonkeyZone uses a system of Commands that are managed by a CommandControl that is attached to each AI player entity controlled by the user. This CommandControl manages a list of Commands that are executed based on priority. For example there's a MoveCommand, a FollowCommand and an AttackCommand, Commands can however implement more complete behavior than that, e.g. the complete logic for a scavenging entity.
 
 *  Press the WASD keys and use the mouse to move
 *  press space to jump

+ 2 - 2
docs/modules/networking/pages/networking.adoc

@@ -437,7 +437,7 @@ a| ConnectionListener interface method
 a| Purpose
 
 a| public void connectionAdded(Server s, HostedConnection c){}
-a| Implemenent here what happens after a new HostedConnection has joined the Server.
+a| Implement here what happens after a new HostedConnection has joined the Server.
 
 a| public void connectionRemoved(Server s, HostedConnection c){}
 a| Implement here what happens after a HostedConnection has left. E.g. a player has quit the game and the server removes his character.
@@ -470,7 +470,7 @@ a| ErrorListener interface method
 a| Purpose
 
 a| public void handleError(Client c, Throwable t){}
-a| Implemenent here what happens after a exception affects the network .
+a| Implement here what happens after a exception affects the network .
 
 |===
 

+ 1 - 1
docs/modules/physics/pages/bullet_multithreading.adoc

@@ -48,5 +48,5 @@ a|Physics Debug View is rendered accurately.
 
 [TIP]
 ====
-You can add more physics spaces by using multiple PARALLEL bulletAppStates. You would do that if you have sets physical objects that never collide (for example, underground bolders and flying cannon balls above ground), so you put those into separate physics spaces, which improves performances (less collisions to check!).
+You can add more physics spaces by using multiple PARALLEL bulletAppStates. You would do that if you have sets physical objects that never collide (for example, underground boulders and flying cannon balls above ground), so you put those into separate physics spaces, which improves performances (less collisions to check!).
 ====

+ 1 - 1
docs/modules/physics/pages/bullet_pitfalls.adoc

@@ -27,4 +27,4 @@ This usually happens if the ground physics object has large triangles or consist
 *Workaround:*+
 
 *  For meshes with large triangles - Subdivide the mesh in a model editor such as Blender.
-*  For large boxes - seperate into smaller boxes or use a MeshCollisionShape for terrain instead of BoxCollisionShape.
+*  For large boxes - separate into smaller boxes or use a MeshCollisionShape for terrain instead of BoxCollisionShape.

+ 3 - 3
docs/modules/physics/pages/collision/physics_listeners.adoc

@@ -4,7 +4,7 @@
 :keywords: documentation, physics, collision, forces, interaction
 
 
-You can control physical objects (push them around) by applying physical forces to them. Typically, you also want to respond to the resulting collisions, e.g. by substracting health points or by playing a sound. To specify how the game responds to such physics events, you use Physics Listeners.
+You can control physical objects (push them around) by applying physical forces to them. Typically, you also want to respond to the resulting collisions, e.g. by subtracting health points or by playing a sound. To specify how the game responds to such physics events, you use Physics Listeners.
 
 
 == Sample Code
@@ -71,7 +71,7 @@ When your game mechanics however just poll the current state (e.g. getPhysicsLoc
 
 === How to Listen to Physics Ticks
 
-Here's is the declaration of an examplary Physics Control that listens to ticks. (The example shows a RigidBodyControl, but it can also be GhostControl.)
+Here is the declaration of an exemplary Physics Control that listens to ticks. (The example shows a RigidBodyControl, but it can also be GhostControl.)
 
 [source,java]
 ----
@@ -192,7 +192,7 @@ Note that after the collision method has been called the object is not valid any
 
 === Collision Groups
 
-You can improve performance by resricting the number of tests that collision detection has to perform. If you have a case where you are only interested in collisions between certain objects but not others, you can assign sets of physical obejcts to different collision groups.
+You can improve performance by restricting the number of tests that collision detection has to perform. If you have a case where you are only interested in collisions between certain objects but not others, you can assign sets of physical objects to different collision groups.
 
 For example, for a click-to-select, you only care if the selection ray collides with a few selectable objects such as dropped weapons or powerups (one group), but not with non-selectables such as floors or walls (different group).
 

+ 1 - 1
docs/modules/physics/pages/control/ragdoll.adoc

@@ -168,7 +168,7 @@ Read the xref:collision/physics_listeners.adoc[Physics Listeners] documentation
 
 == Best Practices
 
-If you experience weird behaviour in a ragdoll – such as exploding into pieces and then reassembling – check your collision shapes. Verify you did not position the limbs too close to one another when assmebling the ragdoll. You typically see physical nodes being ejected when their collision shapes intersect, which puts physics in an impossible state.
+If you experience weird behaviour in a ragdoll – such as exploding into pieces and then reassembling – check your collision shapes. Verify you did not position the limbs too close to one another when assembling the ragdoll. You typically see physical nodes being ejected when their collision shapes intersect, which puts physics in an impossible state.
 
 
 == Ragdoll Physics using KinematicRagdollControl (deprecated as of JMonkeyEngine v3.3)

+ 2 - 2
docs/modules/physics/pages/control/softbody.adoc

@@ -24,7 +24,7 @@ The dynamics libraries for softbody (.so , .dll …) isn't (yet) prebuild for yo
 === How to :
 
 .   checkout the project from link:https://github.com/Dokthar/jmonkeyengine/tree/bullet_SoftBody[GitHub].
-.   go into the file gradle.propeties and set the line : buildNativeProjecte = true .
+.   go into the file gradle.properties and set the line : buildNativeProject = true .
 .   run the command : ./gradlew build
 .   then build the sdk : ant -f ./sdk/ build-zip (or build the sdk installer)
 .   create a new project and make sure you use the following libraries : jme3-bullet-native and jme3-bullet (instead of jme3-jBullet)
@@ -169,7 +169,7 @@ b.move(3f, 5, 0);
 
 t.addControl(new SoftBodyControl(false));
 soft = t.getControl(SoftBodyControl.class);
-soft.setMass(0, 0); // make the first ndoe static
+soft.setMass(0, 0); // make the first node static
 
 b.addControl(new RigidBodyControl(1));
 rigid = b.getControl(RigidBodyControl.class);

+ 5 - 5
docs/modules/physics/pages/control/vehicles.adoc

@@ -39,7 +39,7 @@ The goal is to create a physical vehicle with wheels that can be steered and tha
 
 .  Create a RigidBodyControl and CollisionShape for the floor
 .  Map key triggers and add input listeners
-**  Navigational commands Left, Right, Foward, Brake.
+**  Navigational commands Left, Right, Forward, Brake.
 
 .  Define the steering actions to be triggered by the key events.
 **  `vehicle.steer()`
@@ -92,7 +92,7 @@ Finally we add the behaviour (VehicleControl) to the visible Geometry (node).
 vehicleNode.addControl(vehicle);
 ----
 
-We configure the physical properties of the vehicle's suspension: Compresion, Damping, Stiffness, and MaxSuspenionForce. Picking workable values for the wheel suspension can be tricky – for background info have a look at these link:https://docs.google.com/Doc?docid=0AXVUZ5xw6XpKZGNuZG56a3FfMzU0Z2NyZnF4Zmo&hl=en[Suspension Settings Tips]. For now, let's work with the following values:
+We configure the physical properties of the vehicle's suspension: Compression, Damping, Stiffness, and MaxSuspenionForce. Picking workable values for the wheel suspension can be tricky – for background info have a look at these link:https://docs.google.com/Doc?docid=0AXVUZ5xw6XpKZGNuZG56a3FfMzU0Z2NyZnF4Zmo&hl=en[Suspension Settings Tips]. For now, let's work with the following values:
 
 [source,java]
 ----
@@ -114,7 +114,7 @@ We create four wheel Geometries and add them to the vehicle. Our wheel geometrie
 
 The `addWheel()` method sets following properties:
 
-*  Vector3f connectionPoint – Coordinate where the suspension connects to the chassis (internally, this is where the Ray is casted downwards).
+*  Vector3f connectionPoint – Coordinate where the suspension connects to the chassis (internally, this is where the Ray is cast downwards).
 *  Vector3f direction – Wheel direction is typically a (0,-1,0) vector.
 *  Vector3f axle – Axle direction is typically a (-1,0,0) vector.
 *  float suspensionRestLength – Suspension rest length in world units
@@ -212,7 +212,7 @@ In the ActionListener, we implement the actions that control the vehicle's direc
 `vehicle.brake(brakeForce)`
 *  For left and right turns, we add a constant to `steeringValue` when the key is pressed, and subtract it when the key is released. +
 `vehicle.steer(steeringValue);`
-*  For acceleration we add a constant to `accelerationValue` when the key is pressed, and substract it when the key is released. +
+*  For acceleration we add a constant to `accelerationValue` when the key is pressed, and subtract it when the key is released. +
 `vehicle.accelerate(accelerationValue);`
 *  Because we can and it's fun, we also add a turbo booster that makes the vehicle jump when you press the assigned key (spacebar). +
 `vehicle.applyImpulse(jumpForce, Vector3f.ZERO);`
@@ -271,7 +271,7 @@ Remember, the standard input listener code that maps the actions to keys can be
 
 == Detecting Collisions
 
-Read the xref:collision/physics_listeners.adoc[Physics Listeners] documentation on how to detect collisions. You would do this if you want to react to collisions with custom events, such as adding points or substracting health.
+Read the xref:collision/physics_listeners.adoc[Physics Listeners] documentation on how to detect collisions. You would do this if you want to react to collisions with custom events, such as adding points or subtracting health.
 
 
 == Best Practices

+ 1 - 1
docs/modules/physics/pages/control/walking_character.adoc

@@ -429,7 +429,7 @@ private void attack() {
 
 Finally, the update loop looks at the directional variables and moves the character accordingly. Since this is a special kinematic CharacterControl, we use the `setWalkDirection()` method.
 
-The variable `airTime` tracks how long the character is off the ground (e.g. when jumping or falling) and adjusts the walk and stand animations acccordingly.
+The variable `airTime` tracks how long the character is off the ground (e.g. when jumping or falling) and adjusts the walk and stand animations accordingly.
 
 [source,java]
 ----

+ 7 - 7
docs/modules/physics/pages/physics.adoc

@@ -32,7 +32,7 @@ Due to some differences in how bullet and jME handle the scene and other objects
 
 *  If you apply forces to the physics object in an update() call they might not get applied because internally bullet still runs at 60fps while your app might run at 120.
 **  You can use the PhysicsTickListener interface and register with the physics space and use the preTick() method to be sure that you actually apply the force in the right moment.
-**  Reading values from the physics objects in the update loop should always yield correct values but they might not change over several fames due to the same reason.
+**  Reading values from the physics objects in the update loop should always yield correct values but they might not change over several frames due to the same reason.
 
 *  Reading or writing from the physics objects during the render phase is not recommended as this is when the physics space is stepped and would cause data corruption. This is why the debug display does not work properly in a threaded BulletAppState
 *  Bullet always uses world coordinates, there is no such concept as nodes so the object will be moved into a world location with no regard to its parent spatial.
@@ -118,7 +118,7 @@ Let's look at the details:
 
 == Create a CollisionShape
 
-A CollisionShape is a simplified shape for which physics are easier to calculate than for the true shape of the model. This simplication approach speeds up the simulation greatly.
+A CollisionShape is a simplified shape for which physics are easier to calculate than for the true shape of the model. This simplification approach speeds up the simulation greatly.
 
 Before you can create a Physics Control, you must create a CollisionShape from the `com.jme3.bullet.collision.shapes` package. (Read the tip under "`Physics Controls Code Samples`" on how to use default CollisionShapes for Boxes and Spheres.)
 [cols="25,40,35", options="header"]
@@ -198,7 +198,7 @@ a| Property
 a| Examples
 
 a| setScale(new Vector3f(2f,2f,2f))
-a| You can change the scale of collisionshapes (whether it be, Simple or Mesh). You cannot change the scale of a CompoundCollisionShape however. A sphere collision shape, will change its radius based on the X component of the vector passed in. You must scale a collision shape before attaching it to the physicsSpace, or you must readd it to the physicsSpace each time the scale changes.
+a| You can change the scale of collisionshapes (whether it be, Simple or Mesh). You cannot change the scale of a CompoundCollisionShape however. A sphere collision shape, will change its radius based on the X component of the vector passed in. You must scale a collision shape before attaching it to the physicsSpace, or you must re-add it to the physicsSpace each time the scale changes.
 a| Scale a player in the Y axis by 2: +
 `new Vector3f(1f,2f,1f)`
 
@@ -285,7 +285,7 @@ a| Examples
 
 a|RigidBodyControl
 a|The most commonly used PhysicsControl. You can use it for dynamic objects (solid objects that freely affected by collisions, forces, or gravity), for static objects (solid but not affected by any forces), or kinematic objects (remote-controlled solid objects).
-a|Impacting projectiles, moving obstacles like crates, rolling and bouncing balls, elevators, flying aircaft or space ships. +
+a|Impacting projectiles, moving obstacles like crates, rolling and bouncing balls, elevators, flying aircraft or space ships. +
 Solid immobile floors, walls, static obstacles.
 
 a|GhostControl
@@ -698,7 +698,7 @@ You can `setApplyPhysicsLocal(true)` for an object to make it move relatively to
 *  *Complex Shape Too Slow?* Breaking the level into manageable pieces helps the engine improve performance: The less CPU-intensive link:http://en.wikipedia.org/wiki/Sweep_and_prune[broadphase] filters out parts of the scene that are out of reach. It only calculates the collisions for objects that are actually close to the action. +
 *Solution:* A huge static city or terrain model should never be loaded as one huge mesh. Divide the scene into multiple physics objects, with each its own CollisionShape. Choose the most simple CollisionShape possible; use mesh-accurate shapes only for the few cases where precision is more important than speed. For example, you can use the very fast `PlaneCollisionShape` for flat streets, floors and the outside edge of the scene, if you keep these pieces separate.
 
-*  *Eject?* If you have physical nodes jittering wildy and being ejected for no apparent reason, it means you have created an impossible state – solid objects overlapping. This can happen when you position solid spatials too close to other solid spatials, e.g. when moving them with setLocalTranslation(). +
+*  *Eject?* If you have physical nodes jittering wildly and being ejected for no apparent reason, it means you have created an impossible state – solid objects overlapping. This can happen when you position solid spatials too close to other solid spatials, e.g. when moving them with setLocalTranslation(). +
 *Solution:* Use the debug mode to make CollisionShapes visible and verify that CollisionShapes do not overlap.
 [source,java]
 ----
@@ -707,7 +707,7 @@ bulletAppState.getPhysicsSpace().enableDebug(assetManager);
 
 
 *  *Buggy?* If you get weird behaviour, such as physical nodes passing through one another, or getting stuck for no reason. +
-*Solution:* Look at the physics space accessors and change the acuracy and other parameters.
+*Solution:* Look at the physics space accessors and change the accuracy and other parameters.
 
-*  *Need more interactivity?* You can actively _control_ a physical game by triggering forces. You may also want to be able _respond_ to collisions, e.g. by substracting health, awarding points, or by playing a sound. +
+*  *Need more interactivity?* You can actively _control_ a physical game by triggering forces. You may also want to be able _respond_ to collisions, e.g. by subtracting health, awarding points, or by playing a sound. +
 *Solution:* To specify how the game responds to collisions, you use xref:collision/physics_listeners.adoc[Physics Listeners].

+ 2 - 2
docs/modules/sdk/pages/android.adoc

@@ -79,7 +79,7 @@ Mobile deployment is a "`one-click`" option next to Desktop/WebStart/Applet depl
 This creates a "`mobile`" folder in your projects directory. This folder contains a complete android project with correct settings to run the application using the AndroidHarness.
 .  (Restart the jMonkeyEngine)
 .  A Mobile Files node appears in the Project window. +
-It lets you edit the MainActivitity.java, the AndroidManifest.xml, and build.properties.
+It lets you edit the MainActivity.java, the AndroidManifest.xml, and build.properties.
 
 image:nvyyd.png[nvyyd.png,width="",height=""]
 
@@ -150,7 +150,7 @@ You can use the jMonkeyEngine SDK to save (theoretically) any jMonkeyEngine app
 *  *Effects:* Android devices do no support 3D features as well as PCs – or even not at all. This restriction includes post-processor filters (depth-of-field blur, bloom, light scattering, cartoon, etc), drop shadows, water effects, 3D Audio. Be prepared that these effects will (at best) slow down the application or (in the worst case) not work at all. Provide the option to switch to a low-fi equivalent!
 *  *Nifty +++<abbr title="Graphical User Interface">GUI</abbr>+++:* Use different base UI layout XML files for the mobile version of your app to account for a different screen resolution.
 
-*Best Practice:* Ideally, you write the core application code in a way that it checks for the environment it's being run on, and automatically adapts the device's limitations by switching off effects, changing input mechanisms etc. Learn how to xref:tutorials:how-to/java/read_graphic_card_capabilites.adoc[read graphic card capabilites] here.
+*Best Practice:* Ideally, you write the core application code in a way that it checks for the environment it's being run on, and automatically adapts the device's limitations by switching off effects, changing input mechanisms etc. Learn how to xref:tutorials:how-to/java/read_graphic_card_capabilites.adoc[read graphic card capabilities] here.
 
 
 == Using Android specific functions

+ 2 - 2
docs/modules/sdk/pages/android_cheat_sheet.adoc

@@ -102,7 +102,7 @@ Grab GameHelper.java and GameHelperUtil.java and add them to the directory you p
 Grab the gamehelper_strings.xml into your mobile/res/values folder\\
 ....
 
-. Add the following jar from the Adroid SDK folder to your project as a library:
+. Add the following jar from the Android SDK folder to your project as a library:
 +
 ....
 <ANDROID SDK INSTALL DIR>\adt-bundle-windows-x86_64-20131030\sdk\extras\android\support\v4\android-support-v4.jar\\
@@ -163,7 +163,7 @@ if (app != null)
 
 This bit is ultra useful for calling AdMob changes and Play Games methods (like updating achievements, leader boards, etc, etc)
 
-EDIT: Keep this as generic as you possibly can as it should plug &amp; play with iOS &amp; Applets if you keep that in mind. Google Play Services/Play Games Services works for all of the above… soooo… anyways.
+EDIT: Keep this as generic as you possibly can as it should plug &amp; play with iOS &amp; Applets if you keep that in mind. Google Play Services/Play Games Services works for all of the above.
 
 
 == Changing the Package Name After Project Creation:

+ 3 - 3
docs/modules/sdk/pages/application_deployment.adoc

@@ -94,7 +94,7 @@ Web Start allows your users to start your application by simply clicking a link
 .  btn:[RMB] click your project and Clean and Build. The `dist` directory is generated.
 .  Upload the contents of the `dist` directory to a public http server.
 .  Either edit the sample launch.html file, or simply add a standard link (A HREF) pointing to your .jnlp file to one of your web pages.
-.  Tell your users to open your page in a webbrowser, and click the link to webstart the application.
+.  Tell your users to open your page in a web browser, and click the link to webstart the application.
 
 Look at the sample launch.html, you can have any custom content around the link. Keep a copy of your launcher file because the jMonkeyEngine SDK will always regenerate its default launch.html.
 Also, see this link:http://www.youtube.com/watch?v=oZnssg8TBWQ[demo video] on creating WebStarts.
@@ -123,7 +123,7 @@ The `dist/Applet` directory now contains all the files necessary for the game to
 
 .  Edit the `dist/Applet/run-applet.html` file in anyway you like. Just keep the Applet code.
 .  Upload the contents of the `dist/Applet` directory to a public http server.
-.  Access the run-applet.html file using a webbrowser
+.  Access the run-applet.html file using a web browser
 .  Click the link to web-start your application.
 
 
@@ -149,7 +149,7 @@ Learn more about xref:ios.adoc[iOS Support] here.
 
 == Tip: Switching Build Configurations
 
-The jMonkeyEngine SDK has a Run Configuration menu in the toolbar. Use it to save your various sets of Project Property configuations, and switch between them.
+The jMonkeyEngine SDK has a Run Configuration menu in the toolbar. Use it to save your various sets of Project Property configurations, and switch between them.
 
 .  Click the `Set Project Configuration` popup in the toolbar and choose Customize.
 .  The Project Properties Run section opens. Under Configuration, click New.

+ 1 - 1
docs/modules/sdk/pages/asset_packs.adoc

@@ -75,7 +75,7 @@ With the "`model`" or "`scene`" types, the AssetPack browser will try to load an
 
 On the "`Add Files`" page you define the path of the files in the AssetPack. The importer tries to generate a proper path from the info entered on the first page. Note that for j3o binary models, the texture paths have to be exactly like they were during conversion. The given paths will also be used when copying the data to the users "`assets`" folder.
 
-With the "`add files`" button you can open a file browser to select files from your harddisk that will be copied into the `assets/` folder of the AssetPack project. With the "`add existing`" button you can add a file thats already in your AssetPack assets folder to a new asset item. This way you can reuse e.g. textures for asset items or make items for an existing collection of asset files that you copied to the projects assets folder.
+With the "`add files`" button you can open a file browser to select files from your harddisk that will be copied into the `assets/` folder of the AssetPack project. With the "`add existing`" button you can add a file that's already in your AssetPack assets folder to a new asset item. This way you can reuse e.g. textures for asset items or make items for an existing collection of asset files that you copied to the projects assets folder.
 
 
 image::assetpackimport2-300x179.jpg[assetpackimport2-300x179.jpg,width="",height="",align="right"]

+ 1 - 1
docs/modules/sdk/pages/code_editor.adoc

@@ -48,7 +48,7 @@ Examples:
 *  Java keywords are *blue*, variables and fields are *green*, parameters are *orange*.
 *  +++<strike>Strikethrough</strike>+++ means deprecated method or field.
 *  +++<u>Gray underline</u>+++ means unused variable or method.
-*  Place the caret in a method or variable and all its ocurrences are marked *tan*.
+*  Place the caret in a method or variable and all its occurrences are marked *tan*.
 *  Place the caret in a method's return type to highlight all exit points
 *  and many more…
 

+ 1 - 1
docs/modules/sdk/pages/debugging_profiling_testing.adoc

@@ -49,7 +49,7 @@ See also:
 
 == Debugging
 
-In the jMonkeyEngine SDK, you have access to a debugger to examine your application for errors such as deadlocks and NullPointerExeptions. You can set breakpoints, watch variables, and execute your code line-by-line to identify the source of a problem.
+In the jMonkeyEngine SDK, you have access to a debugger to examine your application for errors such as deadlocks and NullPointerExceptions. You can set breakpoints, watch variables, and execute your code line-by-line to identify the source of a problem.
 
 .  First, you set breakpoints and/or watches before the problematic lines of code where you suspect the bug.
 **  If you want to watch a variable's value: btn:[RMB] click on a variable and select New Watch from the context menu.

+ 1 - 1
docs/modules/sdk/pages/development.adoc

@@ -25,7 +25,7 @@ If you feel like you want to make an addition to jMonkeyEngine SDK, don't hesita
 *  If you have problems with unresolved classes, check if all needed Libraries are registered in the settings of your Project. To find out which library contains a certain class, just enter the name in the library search field.
 
 
-=== Teminology used here
+=== Terminology used here
 
 *  A "`plugin`" is anything you can tick in the plugin manager of the SDK. It can contain editors, simple "`Java SE Libraries`" that you can add to your projects as jar files and other things like project templates etc.
 *  A "`module`" is the project type that allows you to create plugins, strictly speaking all plugins are modules but there can be modules that are never shown in the plugin list and only exist as dependencies of other modules.

+ 1 - 1
docs/modules/sdk/pages/development/extension_library.adoc

@@ -21,7 +21,7 @@ Adding the library:
 
 *  Right click the Module Project and select New→Other
 *  Under "`Module Development`" select the "`Java SE Library Descriptor`" template and press "`Next`"
-*  If you dont have the external library registered in the jMonkeyEngine SDK yet, click "`Manage Libraries`" and do the following:
+*  If you don't have the external library registered in the jMonkeyEngine SDK yet, click "`Manage Libraries`" and do the following:
 **  Click "`New Library`", enter a name for the library and press OK
 **  In the "`Classpath`" tab, press "`Add JAR/Folder`" and select the jar file(s) needed for the library
 **  In the "`JavaDoc`" tab, press "`Add ZIP/Folder`" and add the javadoc for the library (zipped or folder)

+ 1 - 1
docs/modules/sdk/pages/development/scene.adoc

@@ -121,7 +121,7 @@ return Lookup.getDefault().lookup(SceneUndoRedoManager.class);
 
 ----
 
-To add a undo/redo event that modifies objects on the Scenegraph, theres a special version of AbstractUndoableEdit which executes the undo/redo calls on the scene thread. Simply implement that class and add it to the queue like this:
+To add a undo/redo event that modifies objects on the Scenegraph, there's a special version of AbstractUndoableEdit which executes the undo/redo calls on the scene thread. Simply implement that class and add it to the queue like this:
 
 [source,java]
 ----

+ 2 - 2
docs/modules/sdk/pages/development/sceneexplorer.adoc

@@ -15,7 +15,7 @@ If you want to support special properties of your objects that are not exposed b
 @org.openide.util.lookup.ServiceProvider(service=SceneExplorerNode.class)
 ----
 
- above the body of your class. Thats all, your Spatial type will automatically be used and displayed in the SceneExplorer. Make sure you register a jar with the used classes in the plugin preferences under "`wrapped`" libraries, otherwise the IDE cannot access those classes.
+ above the body of your class. That's all, your Spatial type will automatically be used and displayed in the SceneExplorer. Make sure you register a jar with the used classes in the plugin preferences under "`wrapped`" libraries, otherwise the IDE cannot access those classes.
 
 AbstractSceneExplorerNode brings some other useful features you might want to include like automatic creation of properly threaded properties etc. JmeSpatial for example bases on it. A simple SceneExplorerNode example for an object extending Spatial would be JmeGeometry (see below). Editors for special variable types can be added using the SceneExplorerPropertyEditor interface, which can be registered as a ServiceProvider as well.
 
@@ -201,7 +201,7 @@ public class JmeGhostControl extends AbstractSceneExplorerNode {
 
 == Adding items to the add and tools menus
 
-For adding Spatials, Contols and for general tools theres premade abstract classes that you can use to extend the options. Undo/Redo is handled by the abstract class. AbstractNewSpatial*Wizard*Action allows you to show an AWT wizard before creating the Spatial. You can also just implement the base ServiceProvider class and return any kind of action (such as a wizard), in this case you have to handle the threading yourself!
+For adding Spatials, Controls and for general tools there are premade abstract classes that you can use to extend the options. Undo/Redo is handled by the abstract class. AbstractNewSpatial*Wizard*Action allows you to show an AWT wizard before creating the Spatial. You can also just implement the base ServiceProvider class and return any kind of action (such as a wizard), in this case you have to handle the threading yourself!
 
 
 [IMPORTANT]

+ 1 - 1
docs/modules/sdk/pages/development/setup.adoc

@@ -63,7 +63,7 @@ To add your plugin to the repository, do the following:
 **  Press "`Finish`"
 
 
-And thats it, from now on each time you commit changes to your module it will be built and added to the contributions center automatically and the version number will be extended by the svn revision number (e.g. 0.8.1.1234)
+And that's it, from now on each time you commit changes to your module it will be built and added to the contributions center automatically and the version number will be extended by the svn revision number (e.g. 0.8.1.1234)
 
 
 === Building wrapped library jar files on the server

+ 1 - 1
docs/modules/sdk/pages/increasing_heap_memory.adoc

@@ -14,7 +14,7 @@ The installation directory for Mac and Windows is:
 
 *Windows:* C:\Program Files\jmonkeyplatform
 
-Tweaking the parameters to be right is quite a task because sometimes when specifing a too large value, the JRE might fall back to it's default value of (for example) 32 +++<abbr title="Megabyte">MB</abbr>+++. Also there are different values to increase. Take a look at your Error Message, it will show you whether you ran out of "`Heap Space`" or "`Direct Memory`".
+Tweaking the parameters to be right is quite a task because sometimes when specifying a too large value, the JRE might fall back to it's default value of (for example) 32 +++<abbr title="Megabyte">MB</abbr>+++. Also there are different values to increase. Take a look at your Error Message, it will show you whether you ran out of "`Heap Space`" or "`Direct Memory`".
 
 In the config file you look for default_options="`.`"
 If you ran out of Heap Space increase the Value of -Xmx=512m to like 1024m or even further.

+ 2 - 2
docs/modules/sdk/pages/ios.adoc

@@ -29,7 +29,7 @@ To install the iOS deployment plugin, go to menu:Tools[Plugins] and under "`Avai
 
 - [x] iOS Support
 
-If you dont see it there, check under the "`Installed`" tab as it may already be activated.
+If you don't see it there, check under the "`Installed`" tab as it may already be activated.
 ====
 
 
@@ -71,7 +71,7 @@ Run this command in terminal:
 
  xcode-select --install
 
-or set the header search path in the XCode project settings, in the default project thats +
+or set the header search path in the XCode project settings, in the default project that's +
 
  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/JavaVM.framework/Headers/
 

+ 2 - 2
docs/modules/sdk/pages/neotexture.adoc

@@ -17,7 +17,7 @@ Textures usually make up most of the size of a game distribution. This is why Ne
 
 .  Right-click the `assets/Textures` directory and choose New… &gt; Other.
 .  In the New File Wizard, choose NeoTexture &gt; Empty NeoTextureFile and click Next.
-.  Give the file a name, for exmaple `neoMaterial`.
+.  Give the file a name, for example `neoMaterial`.
 .  A new file `neoMaterial.tgr` is created in the Textures directory and opens in the NeoTexture Editor.
 
 Edit the .tgr file and create your procedural texture: (link:http://neotextureedit.sourceforge.net/[Learn more about creating Procedural Textures here])
@@ -88,7 +88,7 @@ Remember that the layer names in the .tgr file must match the ones declared in t
 
 You can use the .tgr files like normal textures in j3m files, with a syntax like this:
 `Materials/neoMaterial?DiffuseMap.tgr`
-The part between the `?` and the suffix is the name of the node you want to load as a texture. If you dont supply a name, `texture` is used.
+The part between the `?` and the suffix is the name of the node you want to load as a texture. If you don't supply a name, `texture` is used.
 
 To be able to load these textures, you have to register a Locator and a Loader in the AssetManager, note that you can only register one loader per extension so you cannot load .tgr files as materials and as textures with the same assetManager.
 

+ 11 - 11
docs/modules/sdk/pages/plugin/shaderblow.adoc

@@ -40,7 +40,7 @@ Or you can use the forum threads of shaders.
 
 == ColorScale Filter
 
-The ColorScale filter applys a color to the render image. You can use this filter to tint the render according to one particular color without change any material (underwater scene, night scene, fire scene) or to achieve fade-in/fade-out effect.
+The ColorScale filter applies a color to the render image. You can use this filter to tint the render according to one particular color without change any material (underwater scene, night scene, fire scene) or to achieve fade-in/fade-out effect.
 
 Features:
 
@@ -123,14 +123,14 @@ Old Film filter simulate the effect of a classic looking film effect.
 Features:
 
 *  Allow to set the *filter's color*. Default is sepia (ColorRGBA(112f / 255f, 66f / 255f, 20f / 255f, 1.0f)).
-*  Allow to set the *color's density*. Default is 0.7. Shader clamps this value between 0 to 1. The color image gets grayscale when color's densite is set to 0.
+*  Allow to set the *color's density*. Default is 0.7. Shader clamps this value between 0 to 1. The color image gets grayscale when color's density is set to 0.
 *  Allow to set the *noise's density*. Default is 0.4. Shader clamps this value between 0 to 1.
 *  Allow to set the *scratches' density*. Default is 0.3. Shader clamps this value between 0 to 1.
 *  Allow to set the *vignetting's diameter*. Default is 0.9. Shader clamps this value between 0 to 1.4. Vignetting effect is made using two circles. The inner circle represents the region untouched by vignetting. The region between the inner and outer circle represent the area where vignetting starts to take place, which is a gradual fade to black from the inner to outer ring. Any part of the frame outside of the outer ring would be completely black.
 
 [NOTE]
 ====
-I chose to clamp this value inside the frag shader code instead of using java code because I thought this way is faster (better from preformace point of view). You can clamp this values using java code if you want.
+I chose to clamp this value inside the frag shader code instead of using java code because I thought this way is faster (better from performace point of view). You can clamp this value using Java code if you want.
 ====
 
 [cols="2",caption=]
@@ -213,7 +213,7 @@ The Dissolve Shader uses a simple grey scale image as an animated mask to hide a
 
 The shader incrementally clamps off the colour value, dark to light, and uses that for a masking texture to discard pixels.
 It is currently capped for convenience at 255 frames of animation and is only using one colour channel.
-In simple terms, in starts by only discarding the darkest parts of the texture map, then the slightly lighter parts, then the slightly lighter again and again until it eventually cant get any lighter (white), at which point the proccess is complete.
+In simple terms, in starts by only discarding the darkest parts of the texture map, then the slightly lighter parts, then the slightly lighter again and again until it eventually can't get any lighter (white), at which point the process is complete.
 
 [cols="2"]
 |===
@@ -227,10 +227,10 @@ Starting at the top left we have: simple linear dissolve, organic dissolve and p
 And bottom row: organic growth, texture masking, organic burn.
 Mask texture maps on the second image.
 
-The test is occolating the dissolve amount between 0 and 1. It demonstrates 6 different uses for the shader, all running at the same speed. The top row are straight forward dissolves. The bottom row shows 3 potential applications:
+The test is oscillating the dissolve amount between 0 and 1. It demonstrates 6 different uses for the shader, all running at the same speed. The top row are straight forward dissolves. The bottom row shows 3 potential applications:
 
 .  Organic Growth (bottom left) over a mesh, this could work both animating rapidly for a fast grow effect, or set to a fixed value e.g. set to 0.5f is "`50% covered in growth`";
-.  Texture Masking (bottom middle) , I see this is probably where the most practical applications will come from. The demonstration shows a poorely photoshoped clean street, peices of garbage are then scattered around dependant on the dissolve amount, this would work best with a fixed value eg set to .75 is "`75% dirty`". Texture Masking could be also be used for:
+.  Texture Masking (bottom middle) , I see this is probably where the most practical applications will come from. The demonstration shows a poorly photoshopped clean street, pieces of garbage are then scattered around dependant on the dissolve amount, this would work best with a fixed value eg set to .75 is "`75% dirty`". Texture Masking could be also be used for:
 ..  paint damage on a car;
 ..  lacerations on a character;
 ..  the blood shot eye effect that creeps in from the sides of the screen when you’ve taken too much damage in a modern FPS.
@@ -303,7 +303,7 @@ Features:
 .  Allow to set animation speed.
 .  Allow to set mask texture in order to set particle shape.
 .  Allow to set particle color.
-.  Allow to set fog color. Fog color is applyed to the material using for color's alpha value as fog distance factor.
+.  Allow to set fog color. Fog color is applied to the material using for color's alpha value as fog distance factor.
 
 [cols="2"]
 |===
@@ -337,7 +337,7 @@ image:plugin/fakeobject.png[fakeobject.png,width="100",height=""]
 
 [IMPORTANT]
 ====
-Remenber to set the queue bucket to transparent for the spatial.
+Remember to set the queue bucket to transparent for the spatial.
 ====
 
 [source,java]
@@ -373,7 +373,7 @@ final Quad quad = new Quad(3, 3); // Create an spatial. A plane in this case
 final Geometry geom = new Geometry("Particle", quad);
 geom.setMaterial(mat); // Assign the material to the spatial
 TangentBinormalGenerator.generate(geom);
-geom.setQueueBucket(Bucket.Transparent); // Remenber to set the queue bucket to transparent for the spatial
+geom.setQueueBucket(Bucket.Transparent); // Remember to set the queue bucket to transparent for the spatial
 ----
 
 To get green/yellow/blue fog (not transparency):
@@ -397,7 +397,7 @@ link:https://hub.jmonkeyengine.org/t/fakeparticleblow-shader/16443[Forum thread]
 == Forceshield Shader
 
 Forcefield shader adds shield effect to a spatial.
-The spatial will be a sphere most of the cases, but box or oval should be possible to use. Only problem is that it has to be higher-poly because distace is calculated from vertex.
+The spatial will be a sphere most of the cases, but box or oval should be possible to use. Only problem is that it has to be higher-poly because distance is calculated from vertex.
 
 Hits are registred as contact point position using this control and effect animation is based on distance from contact point and time.
 Max number of hits displayed is 4.
@@ -438,7 +438,7 @@ If you experience problems, try higher polygon object.
 // Create spatial to be the shield
 final Sphere sphere = new Sphere(30, 30, 1.2f);
 final Geometry shield = new Geometry("forceshield", sphere);
-shield.setQueueBucket(Bucket.Transparent); // Remenber to set the queue bucket to transparent for the spatial
+shield.setQueueBucket(Bucket.Transparent); // Remember to set the queue bucket to transparent for the spatial
 
 // Create ForceShieldControl
 this.forceShieldControl = new ForceShieldControl(this.assetManager, 0.5f);

+ 2 - 2
docs/modules/sdk/pages/project_creation.adoc

@@ -27,7 +27,7 @@ Let's have a look at the abstract project structure in the Project Explorer. (kb
 
 *  *Project Assets node:* These directories have been created for you to store your games assets, such as fonts, materials, models, shaders, sounds, and textures. For a newly created project, these directories are empty.
 *  *Source Packages node:* This is where you manage your packages and classes. For a newly created project, it contains one package and one class, `Main.java`. Double click `Main.java` to open it in the editor.
-*  *Libraries node:* An overview of all libraies on your game's classpath. The classpath is already set-up for the jme3 framework (including LWJGL, Bullet, Nifty +++<abbr title="Graphical User Interface">GUI</abbr>+++, etc).
+*  *Libraries node:* An overview of all libraries on your game's classpath. The classpath is already set-up for the jme3 framework (including LWJGL, Bullet, Nifty +++<abbr title="Graphical User Interface">GUI</abbr>+++, etc).
 
 
 === Directory Structure
@@ -132,7 +132,7 @@ Add the library to the global library list:
 Add the library to a project:
 
 *  btn:[RMB] select your project and select "`Properties`".
-*  Select "`Libaries`" on the left and then press "`Add Library`".
+*  Select "`Libraries`" on the left and then press "`Add Library`".
 *  Select the library from the list and press btn:[OK].
 
 That's it, your project can now use the external library. If you also linked the javadoc and sources, the SDK will assist you with javadoc popups, code completion (kbd:[Ctrl]+kbd:[Space]) and source navigation (kbd:[Ctrl]+btn:[LMB] ).

+ 1 - 1
docs/modules/sdk/pages/scene_composer.adoc

@@ -13,7 +13,7 @@ Most buttons in the SceneComposer have tooltips that appear when you hover the m
 
 *  Left-click and drag to rotate the camera around the cam center
 *  Right-click and drag to move the cam center
-*  Scoll the mouse wheel to zoom in/out the cam center
+*  Scroll the mouse wheel to zoom in/out the cam center
 *  Left-click a geometry to select it
 *  Right-click a geometry to place the cursor
 

+ 1 - 1
docs/modules/sdk/pages/troubleshooting.adoc

@@ -20,7 +20,7 @@ On some Linux and Windows systems, the SDK might perform unstable and quit with
 
 ==== Heavyweight Canvas
 
-First of all theres the new "`OpenGL`" settings page in the SDK global settings where you can enable the "`Heavyweight Canvas`", which solved some issues for some people. The settings panel can be found under `menu:Tools[Options]` on Windows and Linux and in the main menu (or by pressing Apple-Comma) for MacOSX.
+First of all there's the new "`OpenGL`" settings page in the SDK global settings where you can enable the "`Heavyweight Canvas`", which solved some issues for some people. The settings panel can be found under `menu:Tools[Options]` on Windows and Linux and in the main menu (or by pressing Apple-Comma) for MacOSX.
 
 If you cannot start the SDK, edit the file `config/Preferences/com/jme3/gde/core.properties` in the SDK settings folder (see above). If it doesn't exist, create the file including all folders. Add the line `use_lwjgl_canvas=true`. To try OpenGL1 compatibility mode (works for both canvas settings) add `use_opengl_1=true`.
 

+ 1 - 1
docs/modules/sdk/pages/vehicle_creator.adoc

@@ -15,7 +15,7 @@ Best results when car is facing in z direction (towards you).
 .  Select a Geometry that contains a wheel and press "`make selected spatial wheel`", select the "`front wheel`" checkboxes for front wheels
 .  Do so for all wheels
 
-New wheels will get the current suspension settings, you can edit single wheels via the SceneExplorer (update VehicleControl if wheels dont show up) or apply settings created with the settings generator to wheel groups.
+New wheels will get the current suspension settings, you can edit single wheels via the SceneExplorer (update VehicleControl if wheels don't show up) or apply settings created with the settings generator to wheel groups.
 
 Press the "`test vehicle`" button to drive the vehicle, use WASD to control, Enter to reset.
 

+ 1 - 1
docs/modules/sdk/pages/version_control.adoc

@@ -61,7 +61,7 @@ Of course you can also check out existing repositories and access code from othe
 
 == Updating and Committing Changes (Send and Receive)
 
-Receiving the latest changes from the team's repository is referred to as `updating`. Sending your changes to the team's repository is refered to as `commiting`.
+Receiving the latest changes from the team's repository is referred to as `updating`. Sending your changes to the team's repository is referred to as `committing`.
 
 .  Before making changes, btn:[RMB] click the project and select menu:Subversion[Update] to make sure you have the latest revision.
 **  Get in the habit of updating regularly, always before you edit a version controlled file. It will spare you much grief.

+ 3 - 3
docs/modules/sdk/pages/what_s_an_ide.adoc

@@ -67,10 +67,10 @@ The essential word here is *integrated*: An IDE integrates all development tools
 *  The Build button starts the JDK6 compiler (`ant` and `javac`), the Clean button runs `ant clean`, the Run button runs the application (`ant run` and `java`) – all these tasks are now once-click actions in a toolbar or context menu.
 *  After building and running, the IDE opens the "`Application`" window. This window is what end-users of your applications will see. Here you can test your gameplay.
 
-*The Editor* is the heart of the IDE, and it has tons of great additional capabilties:
+*The Editor* is the heart of the IDE, and it has tons of great additional capabilities:
 
 *  The IDE tries to compile in the background what you write in the Editor. If you made a horrible, but obvious, mistake (forgot semicolon, mixed up data types, made a typo in a method call…) it tells you so immediately through warning colors and icons. This is called syntactic and semantic code highlighting.
-**  You still get Terminal output for errors and warnings (in the "`Output`" window inside the IDE), but this way you erradicate tiny typos and compiletime errors immediately, and you can focus on serious runtime errors in the Output window.
+**  You still get Terminal output for errors and warnings (in the "`Output`" window inside the IDE), but this way you eradicate tiny typos and compiletime errors immediately, and you can focus on serious runtime errors in the Output window.
 
 *  The number of commands in the Java +++<abbr title="Application Programming Interface">API</abbr>+++ is limited. So while you type a method or class name, there is only a limited number of things it can be. If you temporarily forgot what a method was called, the Editor pops up a list of options (plus javadoc comments), and you can simply select it.
 *  Similarly, every class and method only has a limited number of arguments. Again, the IDE pops up a list of expected arguments, so you don't need to search for them in the javadoc.
@@ -81,7 +81,7 @@ The essential word here is *integrated*: An IDE integrates all development tools
 The jMonkeyEngine SDK is the same as NetBeans IDE, plus
 
 *  The New Project Wizards automatically adds the jMonkeyEngine libraries on the classpath and creates a build script.
-*  The javadoc popup dispalys Standard Java and jMonkeyEngine APIs in the editor.
+*  The javadoc popup displays Standard Java and jMonkeyEngine APIs in the editor.
 *  The Palette contains special code snippets from the jMonkeyEngine +++<abbr title="Application Programming Interface">API</abbr>+++ for loading and saving 3D objects, input handling, nodes, lights, materials, rotation constants, etc.
 *  The Projects, SceneComposer, and SceneExplorer windows let you convert, preview, and arrange 3D models before you load them in your Java code.
 *  And more…

+ 1 - 1
docs/modules/tutorials/nav.adoc

@@ -50,7 +50,7 @@
 *** xref:how-to/java/localization.adoc[Localization]
 *** xref:how-to/java/swing_canvas.adoc[Swing Canvas]
 *** xref:how-to/java/logging.adoc[Logging]
-*** xref:how-to/java/read_graphic_card_capabilites.adoc[Read Graphics Capabilites]
+*** xref:how-to/java/read_graphic_card_capabilites.adoc[Read Graphics Capabilities]
 ** Articles
 *** Physically Based Rendering
 **** xref:how-to/articles/pbr/pbr_part1.adoc[PBR – Part one]

+ 1 - 1
docs/modules/tutorials/pages/beginner/hello_animation.adoc

@@ -160,7 +160,7 @@ player.getChild("Subnode").getControl(AnimControl.class);
 
 [NOTE]
 ====
-In response to a question about animations on different channels interefering with each other, *Nehon*, on the jME forum wrote,
+In response to a question about animations on different channels interfering with each other, *Nehon*, on the jME forum wrote,
 
 [quote, Nehon, Team Leader: Retired]
 ____

+ 2 - 2
docs/modules/tutorials/pages/beginner/hello_asset.adoc

@@ -94,7 +94,7 @@ The AssetManager can load files from:
 *  The sub-folders of the `assets` directory of your project.
 *  Optionally, custom paths that you register.
 
-The following is the recommended directory structure for storing assets in your project directoy:
+The following is the recommended directory structure for storing assets in your project directory:
 
 [source]
 ----
@@ -319,7 +319,7 @@ rootNode.attachChild(scene);
 |===
 
 
-== Excercise - How to Load Assets
+== Exercise - How to Load Assets
 
 As an exercise, let's try different ways of loading a scene. You will learn how to load the scene directly, or from a zip file.
 

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