浏览代码

Fixed broken smart quotes.

mitm 7 年之前
父节点
当前提交
bfde434f31

+ 15 - 15
src/docs/asciidoc/jme3.adoc

@@ -12,10 +12,10 @@ TIP: This is an Admonition. You will see many of these scattered throughout the
 
 == Installation
 
-*  <<bsd_license#,Use jMonkeyEngine 3 for free under the BSD License>>
-*  <<jme3/requirements#,Software and hardware requirements>>
-*  <<jme3/features#,All Supported Features>>
-*  link:https://github.com/jMonkeyEngine/sdk#jmonkeyengine-software-development-kit-sdk-[Download jMonkeyEngine 3 SDK]
+*  <<bsd_license#,Use jMonkeyEngine 3 for free under the BSD License>>
+*  <<jme3/requirements#,Software and hardware requirements>>
+*  <<jme3/features#,All Supported Features>>
+*  link:https://github.com/jMonkeyEngine/sdk#jmonkeyengine-software-development-kit-sdk-[Download jMonkeyEngine 3 SDK]
 
 == SDK Documentation
 
@@ -25,18 +25,18 @@ image::sdk/jmonkeyplatform-docu-2.png[jmonkeyplatform-docu-2.png,width="420",hei
 
 The <<sdk#,jMonkeyEngine SDK>> is our recommended game development environment.
 
-*  <<sdk/comic#,jMonkeyEngine SDK - the Comic>>
-*  <<sdk#,SDK Documentation (All editors, plugins, etc)>>
+*  <<sdk/comic#,jMonkeyEngine SDK - the Comic>>
+*  <<sdk#,SDK Documentation (All editors, plugins, etc)>>
 
 Here are some videos of how the jMonkeyEngine SDK makes your development team's life easier:
 
-*  link:http://www.youtube.com/watch?v=nL7woH40i5c[Video: Importing Models]
-*  link:http://www.youtube.com/watch?v=ntPAmtsQ6eM[Video: Scene Composing]
-*  link:http://www.youtube.com/watch?v=DUmgAjiNzhY[Video: Dragging&amp;Dropping Nodes]
-*  link:http://www.youtube.com/watch?v=Feu3-mrpolc[Video: Working with Materials]
-*  link:http://www.youtube.com/watch?v=oZnssg8TBWQ[Video: WebStart Deployment]
-*  link:http://www.youtube.com/watch?v=MNDiZ9YHIpM[Video: Custom Controls]
-*  Read the <<sdk#,SDK documentation>> for details.
+*  link:http://www.youtube.com/watch?v=nL7woH40i5c[Video: Importing Models]
+*  link:http://www.youtube.com/watch?v=ntPAmtsQ6eM[Video: Scene Composing]
+*  link:http://www.youtube.com/watch?v=DUmgAjiNzhY[Video: Dragging&amp;Dropping Nodes]
+*  link:http://www.youtube.com/watch?v=Feu3-mrpolc[Video: Working with Materials]
+*  link:http://www.youtube.com/watch?v=oZnssg8TBWQ[Video: WebStart Deployment]
+*  link:http://www.youtube.com/watch?v=MNDiZ9YHIpM[Video: Custom Controls]
+*  Read the <<sdk#,SDK documentation>> for details.
 
 
 == Tutorials for Beginners
@@ -333,7 +333,7 @@ Now that you understand the concepts, it's time to make the most of the jMonkeyE
 
 === Sample Projects
 
-*  <<sdk/sample_code#,JmeTests>> – The “official sample project JmeTests.
+*  <<sdk/sample_code#,JmeTests>> – The "`official`" sample project JmeTests.
 *  link:http://code.google.com/p/jmonkeyengine/source/browse/BookSamples/#BookSamples%2Fsrc[BookSamples] – Some more jME3 code samples
 
 These code examples are not supported by the core team and we cannot guarantee their correctness:
@@ -347,7 +347,7 @@ These code examples are not supported by the core team and we cannot guarantee t
 
 == Feedback
 
-jME3 is in development; if a tutorial doesn't work as expected, try using the latest daily build. If that doesn't “fix it then:
+jME3 is in development; if a tutorial doesn't work as expected, try using the latest daily build. If that doesn't "`fix`" it then:
 
 *  <<report_bugs#,Report bugs or issues>>
 *  link:https://hub.jmonkeyengine.org/[Ask (and Answer!) Questions on the Forum]

+ 1 - 1
src/docs/asciidoc/jme3/advanced/android.adoc

@@ -130,7 +130,7 @@ And this is the basics for setting this up.
 ....
 adView = new AdView(this);
 adView.setAdSize(AdSize.FULL_BANNER);
-adView.setAdUnitId(“<WHATEVER AD UNIT ID YOU ARE ASSIGNED THROUGH THE GOOGLE DEV CONSOLE>”);
+adView.setAdUnitId("<WHATEVER AD UNIT ID YOU ARE ASSIGNED THROUGH THE GOOGLE DEV CONSOLE>");
 adView.buildLayer();
 LinearLayout ll = new LinearLayout(this);
 ll.setGravity(Gravity.BOTTOM);

+ 57 - 57
src/docs/asciidoc/jme3/advanced/application_states.adoc

@@ -1,6 +1,6 @@
 = Application States
-:author: 
-:revnumber: 
+:author:
+:revnumber:
 :revdate: 2016/03/17 20:48
 :relfileprefix: ../../
 :imagesdir: ../..
@@ -18,21 +18,21 @@ The `com.jme3.app.state.AppState` class is a customizable jME3 interface that al
 
 There are situations during your game development where you think:
 
-*  Mouse and key inputs are handled differently in-game versus in the main menu. Can I group a set of input handler settings, and activate and deactivate them all in one step?  
+*  Mouse and key inputs are handled differently in-game versus in the main menu. Can I group a set of input handler settings, and activate and deactivate them all in one step?
 *  I have the in-game scene, and a character editor, and a Captain's Quarters screen. Can I group a set of nodes and behaviours, and swap them in and out in one step?
-*  When I pause the game, I want the character's “idle animation to continue, but all other loops and game events should stop. How do I define what happens when the game is paused/unpaused? 
+*  When I pause the game, I want the character's "`idle`" animation to continue, but all other loops and game events should stop. How do I define what happens when the game is paused/unpaused?
 *  I have a conditional block that takes up a lot of space in my simpleUpdate() loop. Can I wrap up this block of code, and switch it on and off in one step?
-*  Can I package everything that belongs in-game, and everything that belongs to the menu screen, and switch between these two “big states in one step? 
+*  Can I package everything that belongs in-game, and everything that belongs to the menu screen, and switch between these two "`big`" states in one step?
 
 You can! This is what AppStates are there for. An AppState class is subset of (or an extension to) your application. Every AppState class has access to all fields in your main application (AssetManager, ViewPort, StateManager, InputManager, RootNode, GuiNode, etc) and hooks into the main update loop. An AppState can contain:
 
-*  a subset of class fields, functions, methods (game state data and accessors), 
-*  a subset of +++<abbr title="Graphical User Interface">GUI</abbr>+++ elements and their listeners, 
-*  a subset of input handlers and mappings, 
-*  a subset of nodes that you load and attach to the rootNode, 
-*  a subset of conditional actions that you branch to in the simpleUpdate() loop, 
+*  a subset of class fields, functions, methods (game state data and accessors),
+*  a subset of +++<abbr title="Graphical User Interface">GUI</abbr>+++ elements and their listeners,
+*  a subset of input handlers and mappings,
+*  a subset of nodes that you load and attach to the rootNode,
+*  a subset of conditional actions that you branch to in the simpleUpdate() loop,
 *  a subset of other AppStates and Controls
-*  … or combinations thereof. 
+*  … or combinations thereof.
 
 
 === Supported Features
@@ -41,10 +41,10 @@ Each AppState lets you define what happens to it in the following situations:
 
 *  *The AppState is initialized:* You load and initialize game data, InputHandlers, AppStates and Controls and attach nodes. +
 The AppState executes its own simpleInitApp() method when it is attached, so to speak.
-*  *The AppState has been enabled (unpaused):* This toggles a boolean isEnabled() to true. Here you attach nodes and listeners that should become active while it's running. 
+*  *The AppState has been enabled (unpaused):* This toggles a boolean isEnabled() to true. Here you attach nodes and listeners that should become active while it's running.
 *  *While the AppState is running/paused:* You can poll isEnabled() to define paused and unpaused game behaviour in the update() loop. In update(), you poll and modify the game state, modify the scene graph, and trigger events. Test if `!isEnabled()`, and write code that skips the running sections of this AppState's `update()` loop. +
-Each AppState has its own update loop, which hooks into the main simpleUpdate() loop (callback). 
-*  *The AppState has been disabled (paused):* This toggles a boolean isEnabled() to false. Here you switch all objects to their specific “paused behaviour. 
+Each AppState has its own update loop, which hooks into the main simpleUpdate() loop (callback).
+*  *The AppState has been disabled (paused):* This toggles a boolean isEnabled() to false. Here you switch all objects to their specific "`paused`" behaviour.
 *  *The AppState is cleaned up:* Here you decide what happens when the AppState is detached. Save this AppState's game state, unregister Controls and InputHandlers, detach related AppStates, detach nodes from the rootNode, etc.
 
 
@@ -59,7 +59,7 @@ AppStates are extremely handy to swap out, or pause/unpause whole sets of other
 
 To implement game logic:
 
-.  Create one AbstractAppState instance for each set of game mechanics. 
+.  Create one AbstractAppState instance for each set of game mechanics.
 .  Implement game behaviour in the AppState's update() method.
 **  You can pass custom data as arguments in the constructor.
 **  The AppState has access to everything inside the app's scope via the Application `app` object.
@@ -91,7 +91,7 @@ a|AppState Method
 a|Usage
 
 a|initialize(asm,app)
-a|When this AppState is added to the game, the RenderThread initializes the AppState and then calls this method. You can modify the scene graph from here (e.g. attach nodes). To get access to the main app, call: 
+a|When this AppState is added to the game, the RenderThread initializes the AppState and then calls this method. You can modify the scene graph from here (e.g. attach nodes). To get access to the main app, call:
 [source,java]
 ----
 super.initialize(stateManager, app);
@@ -110,14 +110,14 @@ a|Your implementations of this interface should return the correct respective bo
 
 a|setEnabled(true) +
 setEnabled(false)
-a|Temporarily enables or disables an AppState. (See AbstractAppState) 
+a|Temporarily enables or disables an AppState. (See AbstractAppState)
 
 a|isEnabled()
 a|Test whether AppState is enabled or disabled. Your implementation should consider the boolean. (See AbstractAppState)
 
 a|stateAttached(asm) +
 stateDetached(asm)
-a|The AppState knows when it is attached to, or detached from, the AppStateManager, and triggers these two methods. Don't modify the scene graph from here! (Typically not used.) 
+a|The AppState knows when it is attached to, or detached from, the AppStateManager, and triggers these two methods. Don't modify the scene graph from here! (Typically not used.)
 
 a|render(RenderManager rm)
 a|Renders the state, plus your optional customizations. (Typically not used.)
@@ -140,19 +140,19 @@ public class MyAppState extends AbstractAppState {
 
     private SimpleApplication app;
 
-    private Node x = new Node("x");  // some custom class fields...    
-    public Node getX(){ return x; }  // some custom methods... 
-    
+    private Node x = new Node("x");  // some custom class fields...
+    public Node getX(){ return x; }  // some custom methods...
+
     @Override
     public void initialize(AppStateManager stateManager, Application app) {
-      super.initialize(stateManager, app); 
+      super.initialize(stateManager, app);
       this.app = (SimpleApplication)app;          // cast to a more specific class
-      
+
       // init stuff that is independent of whether state is PAUSED or RUNNING
       this.app.getRootNode().attachChild(getX()); // modify scene graph...
       this.app.doSomething();                     // call custom methods...
    }
-    
+
    @Override
     public void cleanup() {
       super.cleanup();
@@ -174,7 +174,7 @@ public class MyAppState extends AbstractAppState {
         ...
       }
     }
-    
+
     // Note that update is only called while the state is both attached and enabled.
     @Override
     public void update(float tpf) {
@@ -182,7 +182,7 @@ public class MyAppState extends AbstractAppState {
       this.app.getRootNode().getChild("blah").scale(tpf); // modify scene graph...
       x.setUserData(...);                                 // call some methods...
     }
-    
+
 }
 ----
 
@@ -196,42 +196,42 @@ Definition:
 
 [source,java]
 ----
-public class MyBaseAppState extends BaseAppState {        
-    @Override    
-    protected void initialize(Application app) {        
-        //It is technically safe to do all initialization and cleanup in the         
-        //onEnable()/onDisable() methods. Choosing to use initialize() and         
-        //cleanup() for this is a matter of performance specifics for the         
-        //implementor.        
-        //TODO: initialize your AppState, e.g. attach spatials to rootNode    
+public class MyBaseAppState extends BaseAppState {       
+    @Override   
+    protected void initialize(Application app) {       
+        //It is technically safe to do all initialization and cleanup in the        
+        //onEnable()/onDisable() methods. Choosing to use initialize() and        
+        //cleanup() for this is a matter of performance specifics for the        
+        //implementor.       
+        //TODO: initialize your AppState, e.g. attach spatials to rootNode   
     }
 
-    @Override    
-    protected void cleanup(Application app) {        
-        //TODO: clean up what you initialized in the initialize method,        
-        //e.g. remove all spatials from rootNode    
+    @Override   
+    protected void cleanup(Application app) {       
+        //TODO: clean up what you initialized in the initialize method,       
+        //e.g. remove all spatials from rootNode   
     }
-    
-    //onEnable()/onDisable() can be used for managing things that should     
-    //only exist while the state is enabled. Prime examples would be scene     
-    //graph attachment or input listener attachment.    
-    @Override    
-    protected void onEnable() {        
-        //Called when the state is fully enabled, ie: is attached and         
-        //isEnabled() is true or when the setEnabled() status changes after the         
-        //state is attached.    
+
+    //onEnable()/onDisable() can be used for managing things that should    
+    //only exist while the state is enabled. Prime examples would be scene    
+    //graph attachment or input listener attachment.   
+    @Override   
+    protected void onEnable() {       
+        //Called when the state is fully enabled, ie: is attached and        
+        //isEnabled() is true or when the setEnabled() status changes after the        
+        //state is attached.   
     }
     
-    @Override    
-    protected void onDisable() {        
-        //Called when the state was previously enabled but is now disabled         
-        //either because setEnabled(false) was called or the state is being         
-        //cleaned up.    
-    }        
-    
-    @Override    
-    public void update(float tpf) {        
-        //TODO: implement behavior during runtime    
+    @Override   
+    protected void onDisable() {       
+        //Called when the state was previously enabled but is now disabled        
+        //either because setEnabled(false) was called or the state is being        
+        //cleaned up.   
+    }       
+
+    @Override   
+    public void update(float tpf) {       
+        //TODO: implement behavior during runtime   
     }
     
 }

+ 27 - 28
src/docs/asciidoc/jme3/advanced/asset_manager.adoc

@@ -1,6 +1,6 @@
 = AssetManager
-:author: 
-:revnumber: 
+:author:
+:revnumber:
 :revdate: 2016/03/17 20:48
 :relfileprefix: ../../
 :imagesdir: ../..
@@ -14,9 +14,9 @@ Advantages of the AssetManager:
 *  The paths stay the same, no matter whether the game runs on Windows, Mac, Linux, etc!
 *  The AssetManager automatically caches and optimizes the handling of OpenGL objects. +
 For example, the same textures are not uploaded to the graphics card multiple times when multiple models use them.
-*  The <<sdk/default_build_script#,default build script>> automatically bundles the contents of the `assets` directory into the executable. 
+*  The <<sdk/default_build_script#,default build script>> automatically bundles the contents of the `assets` directory into the executable.
 
-Advanced users can write a custom build and packaging script, and can register custom paths to the AssetManager, but this is up to you then. 
+Advanced users can write a custom build and packaging script, and can register custom paths to the AssetManager, but this is up to you then.
 
 
 == Context
@@ -40,7 +40,7 @@ See also <<jme3/intermediate/best_practices#,Best Practices>>.
 
 === Usage
 
-The `assetManager` object is an com.jme3.asset.AssetManager instance that every com.jme3.app.Application can access. It maintains a root that also includes your project's classpath by default, so you can load any asset that's on the classpath, that is, the top level of your project directory. 
+The `assetManager` object is an com.jme3.asset.AssetManager instance that every com.jme3.app.Application can access. It maintains a root that also includes your project's classpath by default, so you can load any asset that's on the classpath, that is, the top level of your project directory.
 
 You can use the inherited `assetManager` object directly, or use the accessor `app.getAssetManager()`.
 
@@ -52,14 +52,14 @@ Material mat = (Material) assetManager.loadAsset(
     new AssetKey("Common/Materials/RedColor.j3m"));
 ----
 
-This Material is “somewhere in the jME3 JAR; the default Asset Manager is configured to handle a `Common/…` path correctly, so you don't have to specify the whole path when referring to built-in assets (such as default Materials).
+This Material is "`somewhere`" in the jME3 JAR; the default Asset Manager is configured to handle a `Common/…` path correctly, so you don't have to specify the whole path when referring to built-in assets (such as default Materials).
 
 Additionally, you can configure the Asset Manager and add any path to its root. This means, you can load assets from any project directory you specify. The next example shows how you load assets from your project's assets directory.
 
 
 === Asset Directory
 
-By default, jME3 searches for models in a directory named `assets`. 
+By default, jME3 searches for models in a directory named `assets`.
 
 
 [IMPORTANT]
@@ -82,11 +82,11 @@ jMonkeyProjects/MyGame/assets/Models/      # .j3o
 jMonkeyProjects/MyGame/assets/Scenes/      # .j3o
 jMonkeyProjects/MyGame/assets/Shaders/     # .j3f, .vert, .frag
 jMonkeyProjects/MyGame/assets/Sounds/      # .ogg, .wav
-jMonkeyProjects/MyGame/assets/Textures/    # .jpg, .png; also .mesh.xml+.material, .mtl+.obj, .blend (!) 
+jMonkeyProjects/MyGame/assets/Textures/    # .jpg, .png; also .mesh.xml+.material, .mtl+.obj, .blend (!)
 
 ----
 
-These subdirectories are just the most common examples. 
+These subdirectories are just the most common examples.
 
 
 [IMPORTANT]
@@ -108,12 +108,12 @@ After the conversion, you move the .j3o file into the `assets/Models/` or `asset
 
 === Example Code: Loading Assets
 
-Creating a material instance with the definition “Unshaded.j3md:
+Creating a material instance with the definition "`Unshaded.j3md`":
 
 [source,java]
 ----
 
-Material mat_brick = new Material( 
+Material mat_brick = new Material(
     assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
 
 ----
@@ -123,7 +123,7 @@ Applying a texture to the material:
 [source,java]
 ----
 
-mat_brick.setTexture("ColorMap", 
+mat_brick.setTexture("ColorMap",
     assetManager.loadTexture("Textures/Terrain/BrickWall/BrickWall.jpg"));
 
 ----
@@ -170,12 +170,12 @@ rootNode.attachChild(scene);
 
 ----
 
-jME3 also offers a ClasspathLocator, ZipLocator, FileLocator, HttpZipLocator, and UrlLocator (see `com.jme3.asset.plugins`). 
+jME3 also offers a ClasspathLocator, ZipLocator, FileLocator, HttpZipLocator, and UrlLocator (see `com.jme3.asset.plugins`).
 
 
 [IMPORTANT]
 ====
-The custom build script does not automatically include all ZIP files in the executable build. See “Cannot Locate Resource solution below.
+The custom build script does not automatically include all ZIP files in the executable build. See "`Cannot Locate Resource`" solution below.
 ====
 
 
@@ -184,11 +184,11 @@ The custom build script does not automatically include all ZIP files in the exec
 [cols="15,85", options="header"]
 |===
 
-a| Task? 
-a| Solution! 
+a| Task?
+a| Solution!
 
-a| Load a model with materials 
-a| Use the asset manager's `loadModel()` method and attach the Spatial to the rootNode. 
+a| Load a model with materials
+a| Use the asset manager's `loadModel()` method and attach the Spatial to the rootNode.
 [source,java]
 ----
 Spatial elephant = assetManager.loadModel("Models/Elephant/Elephant.mesh.xml");
@@ -202,8 +202,8 @@ rootNode.attachChild(elephant);
 ----
 
 
-a| Load a model without materials 
-a| If you have a model without materials, you have to add a default material to make it visible. 
+a| Load a model without materials
+a| If you have a model without materials, you have to add a default material to make it visible.
 [source,java]
 ----
 Spatial teapot = assetManager.loadModel("Models/Teapot/Teapot.obj");
@@ -213,8 +213,8 @@ rootNode.attachChild(teapot);
 ----
 
 
-a| Load a scene 
-a| You load scenes just like you load models: 
+a| Load a scene
+a| You load scenes just like you load models:
 [source,java]
 ----
 Spatial scene = assetManager.loadModel("Scenes/house/main.scene");
@@ -243,7 +243,7 @@ java.lang.NullPointerException
 
 *Reason:*
 
-If you use the default build script, *original models and scenes (.mesh.xml, .obj, .blend, .zip), are excluded* from the distribution automatically. A stand-alone executable includes converted *.j3o files* (models and scenes) only. The default build script makes sure to bundle existing .j3o files in the distribution, but you need to remember to convert the models (from mesh.xml–&gt;.j3o, or .obj–&gt;.j3o, etc) yourself. 
+If you use the default build script, *original models and scenes (.mesh.xml, .obj, .blend, .zip), are excluded* from the distribution automatically. A stand-alone executable includes converted *.j3o files* (models and scenes) only. The default build script makes sure to bundle existing .j3o files in the distribution, but you need to remember to convert the models (from mesh.xml–&gt;.j3o, or .obj–&gt;.j3o, etc) yourself.
 
 *Solution*
 
@@ -251,9 +251,9 @@ Before building the executable, you must use the jMonkeyEngine SDK's context men
 
 .  Save your original models (.mesh.xml, .scene, .blend, or .obj files, plus textures) into `assets/Textures/`. (!)
 .  Open the jME3 project in the jMonkeyEngine SDK.
-.  Browse to the `assets` directory in the Projects window. 
-.  Right-click an original model in `assets/Textures/`, and choose “Convert to JME3 binary.
-.  The converted file appears in the same directory as the original file. It has the same name and a `.j3o` suffix. 
+.  Browse to the `assets` directory in the Projects window.
+.  Right-click an original model in `assets/Textures/`, and choose "`Convert to JME3 binary`".
+.  The converted file appears in the same directory as the original file. It has the same name and a `.j3o` suffix.
 .  Move the .j3o file into the `assets/Models/` or `assets/Scenes/` directory.
 .  Use the assetManager's `load()` method to load the `.j3o` file.
 
@@ -275,7 +275,7 @@ I use another IDE than jMonkeyEngine SDK for coding (Eclipse, IntelliJ, text edi
 
 *Solution:*
 
-You can code in any IDE, but you must create a so-called codeless project in the jMonkeyEngine SDK to maintain assets. *A code-less jMonkeyEngine project does not meddle with your sources or custom build scripts.* You merely use it to convert models to .j3o binaries. 
+You can code in any IDE, but you must create a so-called codeless project in the jMonkeyEngine SDK to maintain assets. *A code-less jMonkeyEngine project does not meddle with your sources or custom build scripts.* You merely use it to convert models to .j3o binaries.
 
 .  Create your (Eclipse or whatever) project as you like.
 .  Create a directory in your project folder and name it, for example, `assets`. +
@@ -298,4 +298,3 @@ If you don't use the SDK for some reason, you can still convert models to j3o fo
 ====
 Use file version control and let team members check out the project. Your developers open the project in Eclipse (etc) as they are used to. Additionally to their graphic tools, ask your graphic designers to install the jMonkeyEngine SDK, and to check out the codeless project that you just prepared. This makes it easy for non-coding team member to browse and preview game assets, to arrange scenes, and to convert files. At the same time, non-coders don't accidentally mess with code, and developers don't accidentally mess with assets. :)
 ====
-

+ 21 - 22
src/docs/asciidoc/jme3/advanced/audio.adoc

@@ -1,6 +1,6 @@
 = Audio in jME3
-:author: 
-:revnumber: 
+:author:
+:revnumber:
 :revdate: 2016/03/17 20:48
 :keywords: sound, documentation, environment
 :relfileprefix: ../../
@@ -23,7 +23,7 @@ You cannot loop streamed sounds.
 
 The main jME audio class to look at is `com.jme3.audio.AudioNode`. When creating a new audio node you need to declare whether how you want to load this sound:
 
-*  *Buffered:* By default, a new audio node is buffered. This means jME3 loads the whole file into memory before playing. Use this for short sounds. You create a buffered sound  by setting DataType.Buffer, or using no DataType at all: 
+*  *Buffered:* By default, a new audio node is buffered. This means jME3 loads the whole file into memory before playing. Use this for short sounds. You create a buffered sound  by setting DataType.Buffer, or using no DataType at all:
 [source,java]
 ----
 AudioNode boom = new AudioNode(assetManager, "Sound/boom.wav");
@@ -47,13 +47,13 @@ a|AudioNode Method
 a|Usage
 
 a|getStatus()
-a|Returns either AudioSource.Status.Playing, AudioSource.Status.Stopped, or AudioSource.Status.Paused. 
+a|Returns either AudioSource.Status.Playing, AudioSource.Status.Stopped, or AudioSource.Status.Paused.
 
 a|getVolume()
-a|Returns the volume. 
+a|Returns the volume.
 
 a|getPitch()
-a|Returns the pitch. 
+a|Returns the pitch.
 
 |===
 
@@ -75,10 +75,10 @@ a|setTimeOffset(0.5f)
 a|Play the sound starting at a 0.5 second offset from the beginning. Default is 0.
 
 a|setPitch(1)
-a|Makes the sound play in a higher or lower pitch. Default is 1. 2 is twice as high, .5f is half as high. 
+a|Makes the sound play in a higher or lower pitch. Default is 1. 2 is twice as high, .5f is half as high.
 
 a|setVolume(1)
-a|Sets the volume gain. 1 is the default volume, 2 is twice as loud, etc. 0 is silent/mute. 
+a|Sets the volume gain. 1 is the default volume, 2 is twice as loud, etc. 0 is silent/mute.
 
 a|setRefDistance(50f)
 a|The reference distance controls how far a sound can still be heard at 50% of its original volume (_this is assuming an exponential fall-off!_). A sound with a high RefDist can be heard loud over wide distances; a sound with a low refDist can only be heard when the listener is close by. Default is 10 world units.
@@ -106,7 +106,7 @@ a|All 3D effects switched off. This sound is global and plays in headspace (it a
 
 a|setLooping(true)
 a|Configures the sound to be a loop: After the sound plays, it repeats from the beginning, until you call stop() or pause(). Good for music and ambient background noises. +
-*Before 3.1-alpha2, Looping does not work on streamed sounds.* 
+*Before 3.1-alpha2, Looping does not work on streamed sounds.*
 
 |===
 
@@ -124,7 +124,7 @@ setLocalTranslation(…)
 a|Activates 3D audio: The sound appears to come from a certain position, where it is loudest. Position the AudioNode in the 3D scene, or move it with mobile players or NPCs.
 
 a|setReverbEnabled(true)
-a|Reverb is a 3D echo effect that only makes sense with positional AudioNodes. Use Audio Environments to make scenes sound as if they were “outdoors, or “indoors in a large or small room, etc. The reverb effect is defined by the `com.jme3.audio.Environment` that the `audioRenderer` is in. See “Setting Audio Environment Properties below. 
+a|Reverb is a 3D echo effect that only makes sense with positional AudioNodes. Use Audio Environments to make scenes sound as if they were "`outdoors`", or "`indoors`" in a large or small room, etc. The reverb effect is defined by the `com.jme3.audio.Environment` that the `audioRenderer` is in. See "`Setting Audio Environment Properties`" below.
 
 |===
 
@@ -145,7 +145,7 @@ a|AudioNode Method
 a|Usage
 
 a|setDirectional(true) +
-setDirection(…) 
+setDirection(…)
 a|Activates 3D audio: This sound can only be heard from a certain direction. Specify the direction and angle in the 3D scene if you have setDirectional() true. Use this to restrict noises that should not be heard, for example, through a wall.
 
 a|setInnerAngle() +
@@ -157,7 +157,7 @@ a|Set the angle in degrees for the directional audio. The angle is relative to t
 
 [IMPORTANT]
 ====
-Directional 3D sounds require an AudioListener object in the scene (representing the player's ears). 
+Directional 3D sounds require an AudioListener object in the scene (representing the player's ears).
 ====
 
 
@@ -213,7 +213,7 @@ The default AudioListener object `listener` in `SimpleApplication` is the user's
 
 == Setting Audio Environment Properties
 
-Optionally, You can choose from the following environmental presets from `com.jme3.audio.Environment`. This presets influence subtle echo effects (reverb) that evoke associations of different environments in your users. That is, it makes you scene sound “indoors or “outdoors etc. You use Audio Environments together with `setReverbEnabled(true)` on positional AudioNodes (see above).
+Optionally, You can choose from the following environmental presets from `com.jme3.audio.Environment`. This presets influence subtle echo effects (reverb) that evoke associations of different environments in your users. That is, it makes you scene sound "`indoors`" or "`outdoors`" etc. You use Audio Environments together with `setReverbEnabled(true)` on positional AudioNodes (see above).
 
 [cols="11", options="header"]
 |===
@@ -230,7 +230,7 @@ a|reflDelay
 a|lateGain
 a|lateDelay
 
-<a|Garage      
+<a|Garage
 a|1.00f
 a|1.0f
 a|1.0f
@@ -242,7 +242,7 @@ a|0.0039f
 a|0.661f
 a|0.0137f
 
-<a|Dungeon     
+<a|Dungeon
 a|0.75f
 a|1.0f
 a|1.0f
@@ -254,7 +254,7 @@ a|0.0026f
 a|0.930f
 a|0.0103f
 
-<a|Cavern      
+<a|Cavern
 a|0.50f
 a|1.0f
 a|1.0f
@@ -266,7 +266,7 @@ a|0.0103f
 a|0.930f
 a|0.0410f
 
-a|AcousticLab 
+a|AcousticLab
 a|0.50f
 a|1.0f
 a|1.0f
@@ -278,7 +278,7 @@ a|0.0020f
 a|0.810f
 a|0.0080f
 
-<a|Closet      
+<a|Closet
 a|1.00f
 a|1.0f
 a|1.0f
@@ -293,7 +293,7 @@ a|0.0006f
 |===
 
 .  Activate a Environment preset
-**  Either use a default, e.g. make you scene sounds like a dungeon environment: 
+**  Either use a default, e.g. make you scene sounds like a dungeon environment:
 +
 [source,java]
 ----
@@ -310,7 +310,7 @@ audioRenderer.setEnvironment(
 ----
 
 
-.  Activate 3D audio for certain sounds: 
+.  Activate 3D audio for certain sounds:
 +
 [source,java]
 ----
@@ -326,11 +326,10 @@ A sound engineer can create a custom `com.​jme3.​audio.Environment` object a
 ====
 
 
-Advanced users find more info about OpenAL and its features here: link:http://web.archive.org/web/20130327063429/http://connect.creativelabs.com/openal/Documentation/OpenAL_Programmers_Guide.pdf[OpenAL 1.1 Specification]. 
+Advanced users find more info about OpenAL and its features here: link:http://web.archive.org/web/20130327063429/http://connect.creativelabs.com/openal/Documentation/OpenAL_Programmers_Guide.pdf[OpenAL 1.1 Specification].
 
 
 [IMPORTANT]
 ====
 It depends on the hardware whether audio effects are supported (if not, you get the message `OpenAL EFX not available! Audio effects won't work.`)
 ====
-

+ 3 - 3
src/docs/asciidoc/jme3/advanced/audio_environment_presets.adoc

@@ -1,13 +1,13 @@
 = Audio Environment Presets
-:author: 
-:revnumber: 
+:author:
+:revnumber:
 :revdate: 2016/03/17 20:48
 :relfileprefix: ../../
 :imagesdir: ../..
 ifdef::env-github,env-browser[:outfilesuffix: .adoc]
 
 
-Use these presets together with <<jme3/advanced/audio#,Audio>> Nodes to create different “moods for sounds. Environment effects make your audio sound as if the listener were in various places that have different types of echoes. 
+Use these presets together with <<jme3/advanced/audio#,Audio>> Nodes to create different "`moods`" for sounds. Environment effects make your audio sound as if the listener were in various places that have different types of echoes.
 
 Usage: