-To access class fields of the application the way you are used to, initialize them to local variables:
+To access class fields of the SimpleApplication the way you are used to, initialize them to local variables, as shown in the following AppState template:
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/audio.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/audio.html
index 6cbde4b7c..4f87adbc6 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/audio.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/audio.html
@@ -4,35 +4,45 @@
-There are two ways to handle audio data: Short audio files are to be stored entirely in memory, while long audio files (music) is streamed from the hard drive as it is played.
+Place audio files in the assets/Sound/ directory of your project. jME3 supports Ogg Vorbis audio compression (.ogg) and uncompressed PCM Wave (.wav) formats. You can use for example to convert from other formats.
-
-Place audio files in the assets/Sound/ directory of your project. jME3 supports Ogg Vorbis (.ogg) and Wave (.wav) formats. You can use for example to convert from other formats.
-
-
Streaming: There are two ways to load audio data: Short audio files are to be stored entirely in memory (prebuffered), while long audio files, such as music, are streamed from the hard drive as it is played.
+
+
Looping: You can play a sound either once and then stop, or repeatedly (continuously) in a loop.
+You cannot loop streamed sounds.
+
+
Instance: If you play the same audio twice, the playing is queued up and jME plays one after the other. If you play instances of sounds, several instances of the same sound can play at the same time.
-The main class to look at is com.jme3.audio.AudioNode.
+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. You create a buffered sound by setting the boolean to false, or using no boolean at all:
AudioNode boom = new AudioNode(assetManager, "Sound/boom.wav");
+
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 the boolean to false, or using no boolean at all:
AudioNode boom = new AudioNode(assetManager, "Sound/boom.wav");
+AudioNode boom = new AudioNode(assetManager, "Sound/boom.wav", false);
-
Streamed: If it is a long file, you stream the audio, that means, you load and play in parallel until the sound is done. You create a streamed sound by setting the boolean to true:
AudioNode music = new AudioNode(assetManager, "Sound/music.wav", true);
+
Streamed: If it is a long file such as music or a dialog, you stream the audio. Streaming means, you load and play in parallel until the sound is done. You create a streamed sound by setting the boolean to true:
AudioNode music = new AudioNode(assetManager, "Sound/music.wav", true);
@@ -49,14 +59,14 @@ The main class to look at is com.jme3.audio.AudioNode.
getPitch()
Returns the pitch.
-
+
-There are other obvious getters to poll the status of corresponding setters below.
+Note: There are other obvious getters to poll the status of all corresponding setters listed here.
Configures the sound so that, if it is played, it plays repeats from the beginning, until stop() or pause() are called. Good for ambient background noises.
-Does not work for streamed sounds!
+
AudioNode Method
Usage
setPositional(false)
setDirectional(false)
All 3D effects switched off. This sound is global and comes from everywhere. Good for environmental ambient sounds and background music.
-
setTimeOffset(0.5f)
Play the sound starting at a 0.5 second offset from the beginning. Default is 0.
-
-
-
setMaxDistance(100f)
Maximum distance the sound can be heard, in world units. Default is 20.
+
setLooping(true)
Configures the sound to be a loop: When it is played, it repeats from the beginning, until stop() or pause() are called. Good for music and ambient background noises.
+Looping does not work on streamed sounds!
A 3D echo effect that only makes sense to use with positional AudioNodes. The reverb effect is influenced by the environment that the audio renderer is in. See "Setting Environment Properties" below.
Activates 3D audio: This sound can only be heard from
setOuterAngle()
Set the angle in degrees for the directional audio. The angle is relative to the direction. Note: By default, both angles are 360° and the sound can be heard from all directions!
@@ -136,18 +171,18 @@ You play, pause, and stop a node called myAudioNode by using the respective of t
-You can also start playing an instance of this AudioNode. Use the playInstance() method if you need to play the same AudioNode multiple times, possibly simulatenously. Note that changes to the parameters of the original AudioNode do not affect the instances that are already playing!
+You can also start playing instances of an AudioNode. Use the playInstance() method if you need to play the same AudioNode multiple times, possibly simulatenously. Note that changes to the parameters of the original AudioNode do not affect the instances that are already playing!
-The default listener object is the user's ear in the scene. If you use positional audio, you have to move the listener with the player: For example, for a first-person player, you move the listener with the camera. For a third-person player, you move the listener with the player avatar Geometry.
+The default listener object is the user's ear in the scene. If you use 3d audio (positional and directional sounds), you have to move the listener with the player: For example, for a first-person player, you move the listener with the camera. For a third-person player, you move the listener with the player avatar Geometry.
@Override
public void simpleUpdate(float tpf) {
@@ -157,7 +192,7 @@ The default listener object is the user's ear in the scene. If you use posi
}
@@ -186,7 +221,7 @@ Optionally, You can choose from the following environmental presets from c
Closet
1.00f
1.0f
1.0f
1.00f
0.15f
1.0f
0.600f
0.0025f
0.500f
0.0006f
-
+
Activate the preset with setEnvironment(). E.g. in a dungeon environment:
@@ -210,5 +245,5 @@ You can find more info about OpenAL and its advanced features here:
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/capture_audio_video_to_a_file.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/capture_audio_video_to_a_file.html
index 3f974f1dd..4f59994b5 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/capture_audio_video_to_a_file.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/capture_audio_video_to_a_file.html
@@ -582,13 +582,13 @@ public class Advanced extends SimpleApplication {
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/networking.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/networking.html
index 614473f94..bcf18af60 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/networking.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/networking.html
@@ -309,39 +309,20 @@ The ID of the Client and HostedConnection are the same at both ends of a connect
A server has a game version and game name property. Each client expects to communicate with a server with a certain game name and version. Test first whether the game name matches, and then whether game version matches, before sending any messages! If they do not match, you should refuse to connect, because unmatched clients and servers will likely miscommunicate.
-
-
-
-
Accessor
Purpose
-
-
-
myServer.setName()
Specify the game name of the Server (a free-form String)
-
-
-
myServer.setVersion()
Specify the game version of the Server (an integer number)
-
-
-
myClient.getGameName()
Client queries the name of the server it is connected to.
-
-
-
myClient.getVersion()
Client queries the version of the server it is connected to.
-
-
-
-
+
Typically, your networked game defines its own attributes (such as player ID) based on whatever criteria you want. If you want to look up player/client-specific information beyond the game version, you can set this information directly on the Client/HostedConnection object (see Getting Info About a Client).
@@ -414,7 +395,7 @@ The com.jme3.network.ClientStateListener notifies the Client when the Client has
public void clientDisconnected(Client c, DisconnectInfo info){}
Implement here what happens after the server kicks this client. For example, display the DisconnectInfo to the user.
-
+
First implement the ClientStateListener interface in the Client class. Then register it to myClient in MyGameClient's simpleInitApp() method:
@@ -422,7 +403,7 @@ First implement the ClientStateListener interface in the Client class. Then regi
@@ -442,7 +423,7 @@ The com.jme3.network.ConnectionListener notifies the Server whenever new HostedC
public void connectionRemoved(Server s, HostedConnection c){}
Implement here what happens after a HostedConnection has left. E.g. a player has quit the game and the server removes his character.
-
+
First implement the ConnectionListener interface in the Server class. Then register it to myServer in MyGameServer's simpleInitApp() method.
@@ -451,7 +432,7 @@ First implement the ConnectionListener interface in the Server class. Then regis
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/nifty_gui_java_interaction.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/nifty_gui_java_interaction.html
index 469278854..6e06f3e38 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/nifty_gui_java_interaction.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/nifty_gui_java_interaction.html
@@ -92,15 +92,15 @@ The name and package of your custom ScreenController class (here tutorial.
Or the same in a Java syntax, respectively:
-
nifty.addScreen("start", new ScreenBuilder("start") {{
- controller(new tutorial.MyStartScreen());
+
nifty.addScreen("start", new ScreenBuilder("start") {{
+ controller(new tutorial.MyStartScreen())}});
Now the Java class MyStartScreen and this GUI screen (start) are connected. For this example you can also connect the hud screen to MyStartScreen.
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/nifty_gui_scenarios.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/nifty_gui_scenarios.html
index 14ede8906..92a097b0c 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/nifty_gui_scenarios.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/nifty_gui_scenarios.html
@@ -323,7 +323,7 @@ Inside myCustomStyles.xml you define styles like this:
Learn more about how to create styles by looking at the for “nifty-style-black”. Copy it as a template and change it to create your own style.
-
+
Learn more from the NiftyGUI page:
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/ogrecompatibility.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/ogrecompatibility.html
index a2ccc023d..3517ff24e 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/ogrecompatibility.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/ogrecompatibility.html
@@ -10,6 +10,9 @@ Here you can find working combinations of Blender and the OgreXML exporter, with
Blender Version
OgreXML Exporter Version
Notes
+
+
2.6.3
Root bone, no transforms on object, no envelopes
+
2.6.2
Root bone, no transforms on object, no envelopes
@@ -20,9 +23,9 @@ Here you can find working combinations of Blender and the OgreXML exporter, with
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/particle_emitters.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/particle_emitters.html
index d59561086..fb12f109d 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/particle_emitters.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/particle_emitters.html
@@ -225,7 +225,7 @@ The following effect textures are available by default from test-data.jar<
Browse the full source code of all here.
-
+
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/post-processor_water.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/post-processor_water.html
index 5240f87a3..4e2ebf6d6 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/post-processor_water.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/post-processor_water.html
@@ -278,7 +278,7 @@ audioRenderer.playSource(waves);
See also: audio.
-
+
See also:
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/read_graphic_card_capabilites.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/read_graphic_card_capabilites.html
index 83e87bca2..31d88acb3 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/read_graphic_card_capabilites.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/read_graphic_card_capabilites.html
@@ -4,26 +4,69 @@
-You can read the graphic card's capabilities using the com.jme3.renderer.Caps class:
+When different people test your new game, you may get feedback that the game doesn't run on their hardware, or that some details don't look as expected. You need to detect which fetaures the user's hardware supports, and offer a replacement for non-supported features on olde hardware (or deactivate them automatically).
+
+
+
+You can read (and print) the capabilities of the user's graphic card using the com.jme3.renderer.Caps class:
-Replace HelloWorld by the name of the class where you are using this line.
+
+A newer graphic card has modern capabilities, for example OpenGL 2.1 and NonPowerOfTwoTextures:
+
INFO: Running on jMonkeyEngine 3.0.0
+INFO: Using LWJGL 2.8.2
+INFO: Selected display mode: 1280 x 720 x 0 @0Hz
+INFO: Adapter: null
+INFO: Driver Version: null
+INFO: Vendor: ATI Technologies Inc.
+INFO: OpenGL Version: 2.1 ATI-7.14.5
+INFO: Renderer: AMD Radeon HD 6770M OpenGL Engine
+INFO: GLSL Ver: 1.20
+INFO: Timer resolution: 1.000 ticks per second
+INFO: Capabilities: [FrameBuffer, FrameBufferMRT, FrameBufferMultisample,
+OpenGL20, OpenGL21, ARBprogram, GLSL100, GLSL110, GLSL120,
+VertexTextureFetch, TextureArray, FloatTexture,
+FloatColorBuffer, FloatDepthBuffer, PackedFloatTexture, SharedExponentTexture, PackedFloatColorBuffer,
+TextureCompressionLATC, NonPowerOfTwoTextures, MeshInstancing]
-The result looks like the following example:
+Here is an example of the capabilities of an semi-old graphic card that only supports OpenGL 2.0. If you use OpenGL 2.1 features you need to decide whether to branch to a low-quality replacement of the unsupported features (if you still want to support this card); or whether the game will not start at all and displays an error message explaining the user what capabilities his hardware is missing to be able to play the game.
-This would tell you that this user's graphic card only supports OpenGL 2.0 and cannot handle newer OpenGL features.
-
+This next example is lacking NonPowerOfTwoTextures, this tells you that this user's graphic card cannot handle textures with sizes that are not square powers of two (such as "128x128").
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/spatial.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/spatial.html
index 89921c046..2eaec2e26 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/spatial.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/spatial.html
@@ -196,7 +196,66 @@ In the following example, the Node house is the loaded model. The s
+There are two types of colling: Face culling, and view frustrum culling.
+
+
+
+Face culling refers to not drawing certain polygons of a mesh. The "inside" of the mesh (the so called backface) is never visible to the player, and as an optimization, game engines skip calculating backfaces by default. You may want to deactivate Face Culling while debugging custom meshes, so you can see them in case you turned them inside-out by accident.
+
+
+
+You can switch the com.jme3.material.RenderState.FaceCullMode to
+
+
+
FaceCullMode.Back (default) – only the frontsides of a mesh are drawn. This is the normal behaviour.
+
+
FaceCullMode.Front – only the backsides of meshes are drawn. The mesh will probably turn invisible. Useful if you are debugging a hand-made mesh and try to identify accidental inside-out faces.
+
+
FaceCullMode.FrontAndBack – The mesh becomes invisible.
+
+
FaceCullMode.Off – Every side of the mesh is drawn. Looks normal, but slows down large scenes.
+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".
+
+
+
+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:
+
+
+
CullHint.Dynamic – Default, faster because it doesn't waste time with objects that are out of view.
+
+
CullHint.Never – Calculate and draw everything always (even if it does not end up on the user's screen because it's out of sight). Slower, but can be used while debugging custom meshes.
+
+
CullHint.Always – The whole spatial is culled and is not visible. A fast way to hide a Spatial temporarily. Culling a Spatial is faster then detaching it, but it uses more memory.
+
+
CullHint.Inherit – Inherit culling behaviour from parent node.
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/terrain_collision.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/terrain_collision.html
index 62d5caf5e..96e65c45a 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/terrain_collision.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/terrain_collision.html
@@ -302,7 +302,7 @@ You see that you can combine snippets of sample code (such as HelloTerrain and H
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.
-
+
See also:
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/update_loop.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/update_loop.html
index 5d855a9d6..bda54b91d 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/update_loop.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/update_loop.html
@@ -1,5 +1,5 @@
-
-There are two strategies how advanced developers can spread out their init and update code over several Java objects:
+In a trivial SimpleApplication (such as a Hello World tutorial), all code is either in the simpleInitApp() (initialization) or simpleUpdate() (behaviour) method – or in a helper method/class that is called from one of these two. This trivial approach will make your main class very long, hard to read, and hard to maintain. You don't need to load the whole scene at once, and you don't need to run all conditionals tests all the time.
+
+
+
+It's a best practice to modularize your game mechanics and spread out initialization and update loop code over several Java objects:
-
Move code blocks from the simpleInitApp() method to AppStates.
+
Move modular code blocks from the simpleInitApp() method into AppStates. Attach AppStates to initialize custom subsets of "one dungeon", and detach it when the player exits this "dungeon".
+Examples: Weather/sky audio and visuals, physics collision shapes, sub-rootnodes of individual dungeons including dungeon NPCs, etc.
-
Move code blocks from the simpleUpdate() method to Custom Controls to control entity behavior.
+
Move modular code blocks from the simpleUpdate() method into the update loops of Custom Controls to control individual entity behavior (NPCs), and into the update method of AppStates to control world events.
+Examples: Weather behaviour, light behaviour, physics behaviour, individual NPC behaviour, trap behaviour, etc.
@@ -71,5 +83,5 @@ There are two strategies how advanced developers can spread out their init and u
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_animation.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_animation.html
index 4e94750b6..7cf686bd2 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_animation.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_animation.html
@@ -340,7 +340,7 @@ Now you can load animated models, identify stored animations, and trigger animat
Now that your character can walk, wouldn't it be cool if it could also pick up things, or aim a weapon at things, or open doors? Time to reveal the secrets of mouse picking!
-
+
See also:
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_asset.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_asset.html
index 861ad92d8..76747cf04 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_asset.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_asset.html
@@ -466,7 +466,7 @@ Now you know how to populate the scenegraph with static shapes and models, and h
Let's add some action to the scene and continue with the Update Loop!
-
+
See also:
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_audio.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_audio.html
index 4f2b8c37f..fd70259d3 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_audio.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_audio.html
@@ -369,7 +369,7 @@ You now know how to add the two most common types of sound to your game: Global
Want some fire and explosions to go with your sounds? Read on to learn more about effects.
-
+
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_collision.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_collision.html
index 235cb8f58..3df89f1e4 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_collision.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_collision.html
@@ -183,7 +183,7 @@ public class HelloCollision extends SimpleApplication
}
-Run the sample. You should see a town square with houses and a monument. Use the WASD keys and the mouse to navigate around with a first-person perspective. Run forward and jump by pressing W and Space. Note how you step over the sidewalk, and up the steps to the monument. You can walk in the alleys between the houses, but the walls are solid. Don't walk over the edge of the world!
+Run the sample. You should see a town square with houses and a monument. Use the WASD keys and the mouse to navigate around with a first-person perspective. Run forward and jump by pressing W and Space. Note how you step over the sidewalk, and up the steps to the monument. You can walk in the alleys between the houses, but the walls are solid. Don't walk over the edge of the world!
@@ -508,7 +508,7 @@ You learned to speed up the physics calculations by using the CollisionShapeFact
Terrains are another type of scene in which you will want to walk around. Let's proceed with learning how to generate terrains now.
-
+
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_effects.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_effects.html
index fe0960b03..d7d9ade58 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_effects.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_effects.html
@@ -369,7 +369,7 @@ You have learned that many different effects can be created by changing the para
Now you move on to another exciting chapter – the simulation of . Let's shoot some cannon balls at a brick wall!
-
+
beginner,
documentation,
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_main_event_loop.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_main_event_loop.html
index e9d707fd9..61e73f22a 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_main_event_loop.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_main_event_loop.html
@@ -201,7 +201,7 @@ Now you are listening to the update loop, "the heart beat" of the game
The next thing the game needs is some interaction! Continue learning how to respond to user input.
-
+
See also:
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_material.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_material.html
index 8ef63cfb5..c7c926770 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_material.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_material.html
@@ -417,7 +417,7 @@ You have also learned that a material can be stored in a .j3m file. The file ref
Now that you know how to load models and how to assign good-looking materials to them, let's have a look at how to animate models in the next chapter, Hello Animation.
-
+
See also
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_physics.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_physics.html
index b19f1ba67..1f506ffe3 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_physics.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_physics.html
@@ -482,7 +482,7 @@ This code sample does the following:
You create a RigidBodyControl floor_phy for floor_geo.
-
floor_phy has a mass of 0f
+
floor_phy has a mass of 0f
You add floor_phy to floor_geo.
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_picking.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_picking.html
index 422ab451f..9dbc42916 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_picking.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_picking.html
@@ -506,7 +506,7 @@ Use your imagination from here:
Now, wouldn't it be nice if those targets and the floor were solid objects and you could walk around between them? Let's continue to learn about Collision Detection.
-
+
See also:
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_simpleapplication.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_simpleapplication.html
index 62b2b5822..267e051fe 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_simpleapplication.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_simpleapplication.html
@@ -326,7 +326,7 @@ The now following tutorials teach how you accomplish these tasks with the jMonke
Continue with the Hello Node tutorial, where you learn more details about how to initialize the game world, also known as the scene graph.
-
+
See also:
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_terrain.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_terrain.html
index ca28951e1..c46bbd652 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_terrain.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_terrain.html
@@ -554,7 +554,7 @@ You have learned how to create terrains that are more efficient than loading one
Do you want to hear your players say "ouch!" when they bump into a wall or fall off a hill? Continue with learning how to add sound to your game.
-
+
See also:
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/build_from_sources.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/build_from_sources.html
index 903636369..e7eca9a1f 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/build_from_sources.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/build_from_sources.html
@@ -46,7 +46,7 @@ We recommend downloading the this list.
-
+
Learn more about:
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/build_jme3_sources_with_netbeans.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/build_jme3_sources_with_netbeans.html
index 6ff28f5e0..f28993239 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/build_jme3_sources_with_netbeans.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/build_jme3_sources_with_netbeans.html
@@ -148,7 +148,7 @@ If you are working on a game project that depends on jme3:
This tip works for any third-party JAR library that you use. (You may have to download the javadoc/sources from their home page separately).
-
+
Sources used: ,
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/external/blender.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/external/blender.html
index 4f6487255..c0470b547 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/external/blender.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/external/blender.html
@@ -337,7 +337,7 @@ The blend file, the ogre xml files and the textures can be found in the download
-There are several ways to create static images to use for a sky in your game. This will describe the concepts used in blender and create an ugly sky Check the links below for other ways and prettier skies.
+There are several ways to create static images to use for a sky in your game. This will describe the concepts used in blender and create an ugly sky Check the links below for other ways and prettier skies.
-Yes! For your own games, you create a custom base class that extends class, so it's no longer a "simple" application. Configure your application settings, and customize away.
+Yes! Actually, you MUST customize it! For your own games, you always create a custom base class that extends class. From now on it's no longer a "simple application" – it's now your game. Configure your application settings, implement methods, and customize away!
Learn more:SimpleApplication, AppSettings.
-To make a spatial appear in the scene, you attach it to the rootNode, To remove a spatial, you detach it.
+To make a spatial appear in the scene, you attach it to the rootNode (or to a node that is attached to the rootnode). To remove a spatial, you detach it from its parent node.
-
rootNode.attachChild(spatial); // appear
-
rootNode.detachChild(spatial); // remove
-
-
-
-Optionally, you can control whether the engine culls an object always or never.
-
-
-You can switch the com.jme3.material.RenderState.FaceCullMode to Back, Front, FrontAndBack, or Off. This influences whether the front or backside of an object is being drawn. By default, backsides are culled (not drawn) because they are usually not visible anyway.
+While debugging custom meshes, you can switch the com.jme3.material.RenderState.FaceCullMode off to see the inside and outside of the mesh.
+
+
+
+You can also deactivate the com.jme3.scene.Spatial.CullHint of a whole spatial to force jme to calculate it even if it is behind the camera and outside of view.
+
+
-If your game is heavily using features that older cards do not support, you can add a check of the JME3 Renderer Caps.
+If your game is heavily using features that older cards do not support, you can Read Graphic Card Capabilites in the beginning before starting the app, and then decide how to proceed.
+Logger.getLogger(HelloJME3.class.getName()).log(Level.INFO, "Capabilities: {0}", caps.toString());
-The following shortened example shows the capabilities of an older graphic card. In this case you decide whether to branch to a low-quality rendering of the unsupported features (if you still want to support this card), or print an error message explaining the user what capabilities the card is missing to play the game.
-
-Here is an example of the capabilities of an older graphic card:
-
+In you game, add
-
INFO: Running on jMonkey Engine 3
-INFO: Using LWJGL 2.7.1
-INFO: Selected display mode: 1024 x 768 x 0 @0Hz
-INFO: Adapter: null
-INFO: Driver Version: null
-INFO: Vendor: ATI Technologies Inc.
-INFO: OpenGL Version: 2.0 ATI-1.6.36
-INFO: Renderer: ATI Radeon X1600 OpenGL Engine
-INFO: GLSL Ver: 1.20
-INFO: Timer resolution: 1.000 ticks per second
-INFO: Capabilities: [FrameBuffer, FrameBufferMRT, FrameBufferMultisample,
-OpenGL20, ARBprogram, GLSL100, GLSL110, GLSL120,
-VertexTextureFetch, FloatTexture,
-TextureCompressionLATC, NonPowerOfTwoTextures]
+
settings.setRenderer(AppSettings.LWJGL_OPENGL1)
+ to the AppSettings (see details there).
-A newer graphic card has better capabilities, for example:
+For the jMonkeyEngine SDK itself, choose Options > OpenGL, and check OpenGL1.
-
INFO: Running on jMonkeyEngine 3.0.0
-INFO: Using LWJGL 2.8.2
-INFO: Selected display mode: 1280 x 720 x 0 @0Hz
-INFO: Adapter: null
-INFO: Driver Version: null
-INFO: Vendor: ATI Technologies Inc.
-INFO: OpenGL Version: 2.1 ATI-7.14.5
-INFO: Renderer: AMD Radeon HD 6770M OpenGL Engine
-INFO: GLSL Ver: 1.20
-INFO: Timer resolution: 1.000 ticks per second
-INFO: Capabilities: [FrameBuffer, FrameBufferMRT, FrameBufferMultisample,
-OpenGL20, OpenGL21, ARBprogram, GLSL100, GLSL110, GLSL120,
-VertexTextureFetch, TextureArray, FloatTexture,
-FloatColorBuffer, FloatDepthBuffer, PackedFloatTexture, SharedExponentTexture, PackedFloatColorBuffer,
-TextureCompressionLATC, NonPowerOfTwoTextures, MeshInstancing]
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/intermediate/appsettings.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/intermediate/appsettings.html
index 22ae6a7d7..f86f2e4e6 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/intermediate/appsettings.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/intermediate/appsettings.html
@@ -4,7 +4,12 @@
-Every class that extends jme3.app.SimpleApplication has properties that can be configured by customizing a com.jme3.system.AppSettings object. Configure the settings before you call app.start() on the application object. If you change display settings during runtime, call app.restart() to make them take effect.
+Every class that extends jme3.app.SimpleApplication has properties that can be configured by customizing a com.jme3.system.AppSettings object.
+
+
+
+
Configure application settings in main(), before you call app.start() on the application object. If you change display settings during runtime, for eyample in simpleInitApp(), you must call app.restart() to make them take effect.
+
@@ -12,13 +17,13 @@ Every class that extends jme3.app.SimpleApplication has properties that can be c
-This is how you specify settinsg for MyGame (or Main or whatever you called your SimpleApplication instance) before the game starts:
+Specify settings for a game (here called MyGame, or whatever you called your SimpleApplication instance) in the main() method before the game starts:
public static void main(String[] args) {
AppSettings settings = new AppSettings(true);
@@ -49,7 +54,7 @@ This example toggles the settings to fullscreen while the game is already runnin
}
@@ -89,7 +94,7 @@ Set VSync to false to deactivate vertical syncing (faster, but possible page tea
60 fps
-
+
Settings Property (Input)
Description
Default
@@ -106,7 +111,7 @@ Set VSync to false to deactivate vertical syncing (faster, but possible page tea
setEmulateMouseFlipAxis(true,true)
Flips the X or Y (or both) axes for the emulated mouse. Set the first parameter to true to flip the x axis, and the second to flip the y axis.
false,false
-
+
Settings Property (Audio)
Description
Default
@@ -117,7 +122,7 @@ Set VSync to false to deactivate vertical syncing (faster, but possible page tea
setStereo3D(true)
Enable 3D stereo. This feature requires hardware support from the GPU driver. See . Currently, your everday user's hardware does not support this, so you can ignore it for now.
A custom splashscreen image in the assets/Interface directory which is displayed when the settings dialog is shown.
"/com/jme3/app/Monkey.png"
-
+
You can use app.setShowSettings(true); and setSettingsDialogImage("Interface/mysplashscreen.png") to present the user with jme3's default display settings dialog when starting the game. Use app.setShowSettings(false); to hide the default settings screen. Set this boolean before calling app.start() on the SimpleApplication.
@@ -140,7 +145,7 @@ ImageIO.read(new File("")), …});
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/ios.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/ios.html
new file mode 100644
index 000000000..0d2598a25
--- /dev/null
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/ios.html
@@ -0,0 +1,86 @@
+
+
+To use iOS deployment you need a computer running MacOSX and a version of Xcode 4.0+ installed. To deploy to a device or the Apple App Store, you need an Apple developer account.
+
+
+
+iOS deployment works via cross-compilation to native iOS ARM code, there is no virtual machine running on the device. The Avian JVM supports this feature while maintaining general compatibility to OpenJDK and JNI for native access. The minimum compatible iOS deployment target is 4.3.
+
+
+
+
Note that at the moment this option is in pre-alpha state and the system runs on a null renderer. This means there is no visual output. You can however use the current system to explore the options and test cross-compiling your applications.
+
+To enable iOS deployment, go to the project settings and under "Application→iOS" select the "Enable iOS deployment" checkbox, adapt the application ID and then press OK.
+
+
+
+Note: When you do this for the first time or any time that the Avian library and OpenJDK is updated, they will be extracted to your SDK settings folder, wait until it has been extracted before building an iOS-enabled project.
+
+
+
+After enabling deployment, a new ios directory is created in the project root that contains a project and a src folder. The ios/project folder contains an Xcode project that you will use to build and run the final iOS application for both iPhone and iOS. The ios/src folder contains java and native source files for bridging iOS and native code, you can add .java and .m files with your own iOS code here.
+
+
+The iOS binaries are automatically built when you have iOS deployment enabled and build your project.
+
+
+
+When the iOS binaries are built, all needed classes, including a complete copy of the OpenJDK7 classes are run through a proguard process that strips out the unnecessary classes for the project and optimizes the code for the platform. This happens without changing the naming structure so that reflection etc. still works. If necessary, adapt the proguard options in the ios properties file.
+
+
+
+After the iOS classpath has been created the avian compiler is used to create a native .o file from the classpath for both arm (device) and i386 (simulator). Furthermore the other needed avian .o files are extracted and a library list is compiled which is referenced in the Xcode project.
+
+To run the application, open the Xcode project in Xcode and press the run button. You can make changes to the UI and native invocation classes in the Xcode project as well. From here you can also deploy the application to your devices or the App Store.
+
+To bridge between native and java code, JNI is used like in a normal java application. The ios/src folder is for Java and C/Obj-C source files that are specific to your iOS application. In these java files you have access to the full project classpath as well as the iOS-specific jME3 classes.
+
+
+
+The JmeAppHarness.java class is initialized and called from native code through the default project and you can extend it to perform other native operations. It has a simple native popup method. The JmeAppHarness.m file contains the native method needed for that popup.
+
+
+
+Effectively native code can reside in both the Xcode project and in the ios/src folder. To keep the dependencies clean and make code reusable you should try to put generic native code that does not depend on the Xcode project in the ios/src folder.
+
+
+
+Java code for iOS should be in the ios/src folder as well for clean separation, its also the only place where they will be compiled with a reference to the iOS specific jME classes. For information on how to connect your application code and device specific code, see the notes in the android deployment documentation.
+
+
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/terminology.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/terminology.html
index 0ccd30e98..045312021 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/terminology.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/terminology.html
@@ -492,14 +492,14 @@ Non-player (computer-controlled) characters (NPCs) are only fun in a game if the
The domain of artificial intelligence deals, among other things, with:
-
Knowledge – Knowledge is about the data to which the agent has access to base its decisions on. Realistic agents only "know" what they "see and hear", this implies that information can be hidden from them (to keep the game fair). You can let some agents share information and others need to find out by themselves.
-Example: After tripping the wire, all guards with two-way radios start moving towards the player's position within 60 sec, while minor guards don't suspect anything yet.
+
Knowledge – Knowledge is the data to which the AI agent has access, and on which the AI bases its decisions. Realistic agents only "know" what they "see and hear". This implies that information can be hidden from the AI to keep the game fair. You can have an all-knowing AI, or you can let only some AI agents share information, or you let only AI agents who are close know the current state.
+Example: After the player trips the wire, only a few AI guards with two-way radios start moving towards the player's position, while many other guards don't suspect anything yet.
-
Goal Planning – Planning is about how the agent takes action. Each game agent has the priority to achieve a specific goal, to reach a future state. You split the agent's goal into subgoals, then the agent chooses from available tactics and strategies, and prioritizes them. The agent keeps testing whether the current state is closer to the (sub)goal. If unsuccessful, the agent changes the tactics/strategy and tries again.
-Example: An agent searches the best path to reach the player base in a changing environment; an agent chases the player with the goal of eliminating him; an agent hides from the player with the goal of murdering a VIP.
+
Goal Planning – Planning is about how an AI agent takes action. Each agent has the priority to achieve a specific goal, to reach a future state. When programming, you split the agent's goal into several subgoals. The agent consults its knowledge about the current state, chooses from available tactics and strategies, and prioritizes them. The agent repeatedly tests whether the current state is closer to its goal. If unsuccessful, the agent must discard the current tactics/strategy and try another one.
+Example: An agent searches the best path to reach the player base in a changing environment, avoiding traps. An agent chases the player with the goal of eliminating him. An agent hides from the player with the goal of murdering a VIP.
-
Problem Solving – Problem solving is about how the agent reacts to interruptions, obstacles that stand between it and its goal. The agent uses a given set of facts and rules to deduct what state it is in – triggered by perceptions similar to pain, agony, boredom, or being trapped. In every state, only a specific subset of reactions makes sense. The actual reaction also depends on the agent's, goal since the agent's reaction must not block its own goal.
-Examples: If player approaches, then attack or retreat or raise alarm? If I am idle, do I lay traps or heal self or recharge runes? If danger to own life, then escape or kamikaze?
+
Problem Solving – Problem solving is about how the agent reacts to interruptions, obstacles that stand between it and its goal. The agent uses a given set of facts and rules to deduct what state it is in – triggered by perceptions similar to pain, agony, boredom, or being trapped. In each state, only a specific subset of reactions makes sense. The actual reaction also depends on the agent's, goal since the agent's reaction must not block its own goal!
+Examples: If player approaches, does the agent attack or conceal himself or raise alarm? While agent is idle, does he lay traps or heal self or recharge magic runes? If danger to own life, does the agent try to escape or kamikaze?
@@ -527,7 +527,7 @@ There are lots of resources explaining interesting AI algorithms:
-
+
@@ -577,7 +577,7 @@ A vector has a length and a direction, like an arrow in 3D space. A vector start
Vector3f v = new Vector3f( 8f , 0f , 33f ).add(new Vector3f( 0f , -2f , -2f )); // starts at (8/0/33)
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/the_scene_graph.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/the_scene_graph.html
index 18f2c45a3..bca8c13b3 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/the_scene_graph.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/the_scene_graph.html
@@ -120,20 +120,32 @@ A Spatial can be transformed, loaded and saved. There are two types of Spatials,
-Before you start creating your game, you should have completed the Hello World tutorial series. It shows how to load and create Spatials, how to lay out a scene by attaching and transforming Spatials, and how to add interaction and effects to a game.
+Before you start creating your game, you should plan your scene graph: Which Nodes and Geometries will you need? Complete the Hello World tutorial series to learn how to load and create Spatials, how to lay out a scene by attaching, detaching, and transforming Spatials, and how to add interaction and effects to a game.
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/application_deployment.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/application_deployment.html
index fa21c7737..6d4c08314 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/application_deployment.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/application_deployment.html
@@ -48,7 +48,7 @@ Make your game unique and recognizable:
Vendor: Enter your name (the development team)
-
Description: Write one line why your game is the coolest ever
+
Description: Write one line why your game is the coolest ever
Homepage: Enter your web URL, so your fans can find you
@@ -157,7 +157,7 @@ Web Start allows your users to start your application by simply clicking a link
In the Application>Web Start category, check the box to Enable Web Start.
-
Check the box to make the application self-signed.
+
Check the box to make the application self-signed.
-AssetPacks are a way to package jME3 compatible assets like models, textures, sounds and whole scenes into a package that contains publisher info, license info, descriptions etc. for all of the assets. An AssetPack basically consists of an assetpack.xml file that describes the content and an assets folder that contains the content. The integrated browser in the jMonkeyEngine SDK allows you to add the assets of installed AssetPacks to any project you are doing.
+
+AssetPacks are a way to package jME3 compatible assets (like models, textures, sounds and whole scenes!) into a package that contains publisher info, license info, descriptions etc. for all of the assets. An AssetPack basically consists of an assetpack.xml file that describes the content and an assets folder that contains the content. The integrated browser in the jMonkeyEngine SDK allows you to add the assets from installed AssetPacks to any jme3 project scene you are working on.
+
The AssetPack browser in jMonkeyEngine SDK makes browsing the installed AssetPacks easy. Browse categories, search for tags and find the right asset for your project. When you have found it, you can add it with one click to your current scene. The AssetPack manager will automagically copy all needed textures, sounds etc. to your projects assets folder.
-You can also browse a selection of online assetpacks that are available on jMonkeyEngine.org for download and install them to your jMonkeyEngine SDK's AssetPack browser.
+
You can also browse a selection of online assetpacks that are available on jMonkeyEngine.org for download and install them to your jMonkeyEngine SDK's AssetPack browser.
+
@@ -28,11 +36,12 @@ The AssetPack browser uses a predefined directory to store the AssetPacks which
@@ -137,7 +145,8 @@ If the material file is an Ogre material file (.material) it will be used for lo
-In your AssetPack Project, if you right-click your asset and select "preview asset" you should be able to see your model. If you do, it should work for the user as well.
+
In your AssetPack Project, right-click each asset and select "preview asset" to see your model. Verify hat it looks correctly, because then it should work for other users as well.
+
-You can publish your AssetPacks either as a zip file or directly to jmonkeyengine.org, using your website user name and login. This means other jMonkeyEngine SDK users can download your AssetPacks and install them to their local database right off the AssetPack online packages browser.
+You can publish your AssetPacks either as a zip file or directly to jmonkeyengine.org, using your website user name and login. This means other jMonkeyEngine SDK users can download your AssetPacks and install them to their local database right off the AssetPack online packages browser.
-To make sure you can upload, you have to be registered on jmonkeyengine.org and have to enter your login info in the AssetPack preferences (jMonkeyEngine SDK→Settings).
+
To make sure you can upload, you have to be registered on jmonkeyengine.org, and have to enter your login info in the AssetPack preferences: jMonkeyEngine SDK→Options→Asset Packs first.
+
-
Right-Click your AssetPack project and select "Publish AssetPack.."
+
Right-Click your AssetPack project in the SDK and select "Publish AssetPack…"
-
Check the description etc. settings and press "Next"
+
Check the description etc. settings, and press "Next".
-
Select the checkbox for online and/or local publishing and press "finish"
+
Select the checkbox for online and/or local publishing and press "finish".
@@ -190,5 +200,5 @@ To make sure you can upload, you have to be registered on jmonkeyengine.org and
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/blender.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/blender.html
index 93234ce7e..d6d2cd0dc 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/blender.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/blender.html
@@ -331,7 +331,7 @@ P.S.
This text might be edited in a meantime if I forgot about something ;)
-
+
See also:
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/code_editor.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/code_editor.html
index 175f59012..62cf3ae2a 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/code_editor.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/code_editor.html
@@ -239,7 +239,7 @@ By default, jMonkeyEngine uses the same
-
@@ -83,28 +50,67 @@ If you want your plugin to appear in the "jMonkeyEngine SDK is compatible to Java 1.5)
+
In "Module Properties→Sources"
+
+
Set the "Source Level" to 1.5 if possible (jMonkeyEngine SDK is compatible to Java 1.5)
+
+
-
In "Module Properties→API Versioning" set a specification version for your plugin (like 0.8.1)
+
In "Module Properties→API Versioning"
+
+
Set a specification version for your plugin (like 0.8.1)
Set the "implementation version" to "0" and select "append implementation versions automatically"
+
+
+
In "Module Properties→Display"
+
+
Enter a purposeful description of your plugin and one of the following categories:
+
+
For a library plugin: "jME3 - Library"
+
+
For a SDK plugin: "jME3 - SDK Plugin"
+
+
For a model loader plugin: "jME3 - Loader"
+
+
+
+
+
+
In "Module Properties→Build→Packaging"
+
+
Add your name
+
+
Add a link to your forum post / home page relating to the plugin
+
+
Add a license, you can use ../license-jme.txt to insert the default jME BSD license or use a text file you store in the project folder
+
+
+
Ask the managers or developers for access to the gc project
Commit only the module project to trunk:
-
Right click the Plugin Project and select "Versioning → Import into Subversion Repository"
+
Right click the Module Project and select "Versioning → Import into Subversion Repository"
Enter in the URL field
-
Enter your googlecode username and commit password (different than login pass!) and press "Next"
+
Enter your googlecode username and commit password (different than login pass, you can find your password !) and press "Next"
Check that the "Repository Folder" is trunk/mypluginfolder and enter an import message
@@ -117,9 +123,29 @@ To add your plugin to the repository, do the following:
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)
+
+As only the module project is being built on the server, any projects that create the actual jar files for library plugins ("normal" projects from the SDK/NetBeans) have to be built from the module build file. To do that simply add the following ant targets to the module build file:
+
+
+
+Note that for the module version number to increase automatically on a commit to the library project, the library project has to be a subfolder of the main module project.
\ No newline at end of file
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/material_editing.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/material_editing.html
index 3bfb567e0..b106755a4 100644
--- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/material_editing.html
+++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/material_editing.html
@@ -113,7 +113,7 @@ Or in your Java code
+Press the "New Project" button to create a new Project. Press the "New File" button to create new java files, materials, scenes, fonts and other files.
+
+By pressing "F1" you can open the manual which contains up to date tutorials, documentation and more to help you get started. You can search the manual contents via the search field up right.
+
+This (jMonkeyEngine SDK 3.0RC3) is the latest version of the application. You can check for incremental updates to the application via the Help menu:
+