diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/application_states.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/application_states.html index cf9f5e50c..f2a69ee6e 100644 --- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/application_states.html +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/application_states.html @@ -311,7 +311,7 @@ You can use custom accessors to get data from AppStates, to set data in AppState

-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:

private SimpleApplication app;
 private Node              rootNode;
@@ -319,17 +319,20 @@ private AssetManager      assetManager;
 private AppStateManager   stateManager;
 private InputManager      inputManager;
 private ViewPort          viewPort;
-private BulletAppState    bullet;
+private BulletAppState    physics;
  
-public void initialize(AppStateManager stateManager, Application app) {
-  super.initialize(stateManager, app);
-  this.app = (SimpleApplication) app; // can cast Application to something more specific
-  this.rootNode     = this.app.getRootNode();
-  this.assetManager = this.app.getAssetManager();
-  this.stateManager = this.app.getStateManager();
-  this.inputManager = this.app.getInputManager();
-  this.viewPort     = this.app.getViewPort();
-  this.bullet       = this.stateManager.getState(BulletAppState.class);
+public class MyAppState extends AbstractAppState {
+  @Override
+  public void initialize(AppStateManager stateManager, Application app) {
+    super.initialize(stateManager, app);
+    this.app = (SimpleApplication) app; // can cast Application to something more specific
+    this.rootNode     = this.app.getRootNode();
+    this.assetManager = this.app.getAssetManager();
+    this.stateManager = this.app.getStateManager();
+    this.inputManager = this.app.getInputManager();
+    this.viewPort     = this.app.getViewPort();
+    this.physics      = this.stateManager.getState(BulletAppState.class);
+  }
 }
diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/asset_manager.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/asset_manager.html index 07bfb1ebb..81fae5c5c 100644 --- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/asset_manager.html +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/asset_manager.html @@ -149,7 +149,7 @@ jME3 also offers a ClasspathLocator, ZipLocator, FileLocator, HttpZipLocator, an -

Comon AssetManager Tasks

+

Common AssetManager Tasks

@@ -175,9 +175,9 @@ rootNode.attachChild(scene);
- +
- +

NullPointerException: Cannot locate resource?

@@ -232,7 +232,7 @@ Before building the executable, you must use the jMonkeyEngine +

Asset Handling For Other IDEs: Codeless Projects

@@ -282,5 +282,5 @@ Convert assets as described above.

- +

view online version

\ 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. - -

+ + +

Audio Terminology

+
+
- +

Creating Audio Nodes: Streamed or Buffered

-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:

- +

Getting AudioNode Properties

@@ -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.

- +

Setting AudioNode Properties

@@ -69,30 +79,40 @@ There are other obvious getters to poll the status of corresponding setters belo -
setPitch(1)Makes the sound play in a higher or lower pitch. Default is 1. 2 is twice as high, .5f is half as high.
-
- + + + + +
AudioNode MethodUsagesetTimeOffset(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(false)Configures the sound so that, if it is played, it plays once and stops. This is the default.
+ +
+ +

Looping & Ambient Sounds

+
+
- + - - - - +
setLooping(true)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 MethodUsage
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!
-
+ + + +

Positional 3D Sounds

+
+
@@ -104,7 +124,17 @@ setLocalTranslation(…)
AudioNode MethodUsage
Activates 3D audio: The sound appears to come f setReverbEnabled(true)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.
-
+ +

+ +Note: 3D sounds require an audio listener. +

+ + + +

Directional 3D Sounds

+
+
@@ -117,9 +147,14 @@ setDirection(…)
AudioNode MethodUsage
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!
- + +

+ +Note: 3D sounds require an audio listener. +

+
- +

Play, Pause, Stop

@@ -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!

myAudioNode.playInstance();
- +

The Listener

-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
   }
- +

Setting Environment Properties

@@ -186,7 +221,7 @@ Optionally, You can choose from the following environmental presets from c Closet 1.00f1.0f1.0f1.00f0.15f1.0f0.600f0.0025f0.500f0.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: - +

view online version

\ 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 {

- + - + The is needed to display this content. @@ -603,13 +603,13 @@ The - + - + The is needed to display this content. diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/collision_and_intersection.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/collision_and_intersection.html index 231c925c1..02790237b 100644 --- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/collision_and_intersection.html +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/collision_and_intersection.html @@ -83,7 +83,7 @@ A CollisionResult object contains information about the second party of the coll

-Assume you have two collidables a and b and want to detect collisions between them. The collision parties can be Geometries, Nodes with Geometries attached (including the rootNode), Planes, Quads, Lines, or Rays. +Assume you have two collidables a and b and want to detect collisions between them. The collision parties can be Geometries, Nodes with Geometries attached (including the rootNode), Planes, Quads, Lines, or Rays. An important restriction is that you can only collide geometry vs bounding volumes or rays. (This means for example that a must be of Type Node or Geometry and b respectively of Type BoundingBox,BoundingShpere or Ray.)

@@ -129,10 +129,11 @@ You can also loop over all results and trigger different reactions depending on

Knowing the distance of the collisions is useful for example when you intersect Lines and Rays with other objects. +

- +

Bounding Volumes

@@ -172,7 +173,7 @@ Supported types:

- +

Usage

@@ -185,7 +186,7 @@ For example you can use Bounding Volumes on custom meshes, or complex non-physic mesh.updateBound();
- +

Mesh and Scene Graph Collision

@@ -195,7 +196,7 @@ One of the supported Collidables are meshes and scene graph objects

- +

Intersection

@@ -223,7 +224,7 @@ Rays are used to perform line-of-sight calculations. This means you can detect w

Learn the details of how to implement Mouse Picking here.

-
+

TODO: @@ -236,5 +237,5 @@ TODO:

- +

view online version

\ No newline at end of file diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/custom_controls.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/custom_controls.html index a22a75511..506b8b794 100644 --- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/custom_controls.html +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/custom_controls.html @@ -87,7 +87,7 @@ Examples: You can write

-The possibilities are endless. :-) +The possibilities are endless. :-)

diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/custom_meshes.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/custom_meshes.html index b946c2298..064edf367 100644 --- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/custom_meshes.html +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/custom_meshes.html @@ -278,27 +278,38 @@ rootNode.attachChild(geo);

This will result in a 10 px dot being rendered for each of the four vertices. The dot has the vertex color you specified above. The Quad's faces are not rendered at all. This can be used for a special debugging or editing mode. -

- -

Tip: Front and Back Faces

+ +

Debugging Tip: Culling

-By default, jME3 optimizes a scene by culling all backfaces. It determines which side the front or backface of a mesh is by the order of the vertices. The frontface is the one where the vertices are specified counter-clockwise. -This means your mesh, as created above, is invisible when seen from "behind". This may not be a problem and is often even intended. If you use the custom meshes to form a polyhedron, or flat wallpaper-like object, rendering the backfaces (the inside of the polyhedron) would indeed be a waste of resources. -In case that your use case requires the backfaces to be visible, you have two options: + +By default, jME3 optimizes a mesh by culling (not drawing) its backfaces. It determines which side the front or backface of a mesh is by the order of the vertices: The frontface is the one where the vertices are specified counter-clockwise. +

+ +

+This means for you that your custom mesh is invisible when seen from "behind" or from the inside. This may not be a problem, often this is even intended because it's faster. The player will not look at the inside of most things anyway. For example, if your custom mesh is a closed polyhedron, or a flat wallpaper-like object, then rendering the backfaces (the inside of the pillar, the back of the painting, etc) would indeed be a waste of resources. +

+ +

+In case however that your usecase requires the backfaces to be visible, you have two options:

  • If you have a very simple scene, you can just deactivate backface culling for this one mesh's material.
    mat.getAdditionalRenderState().setFaceCullMode(FaceCullMode.Off);
  • -
  • The recommended solution is to specify each triangle twice, the second time with the opposite order of vertices. The second, reversed triangle makes up the backface.
    +
  • The recommended solution is to specify each triangle twice, the second time with the opposite order of vertices. The second, reversed triangle is a second frontface that replaces the culled backface.
    int[] indexes = { 2,0,1, 1,3,2, 2,3,1, 1,0,2 };
+ +

+ +See also: Spatial – contains more info about how to debug custom meshes (that do not render as expected) by changing the default culling behaviour. +

spatial, node, @@ -308,5 +319,5 @@ In case that your use case requires the backfaces to be visible, you have two op
- +

view online version

\ No newline at end of file diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/debugging.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/debugging.html index 37e60bfe3..90c05744d 100644 --- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/debugging.html +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/debugging.html @@ -4,15 +4,15 @@

-When you deal with complex game engine features like animations or physics it is handy to get feedback from the engine how it interpreted the current state. Is the physical object's collision shape really where you think it is? Is the skeleton of the animated character moveing like you think it should? This document shows you how to activate visual debug aides. +When you deal with complex game engine features like animations or physics it is handy to get feedback from the engine how it interpreted the current state. Is the physical object's collision shape really where you think it is? Is the skeleton of the animated character moving like you think it should? This document shows you how to activate visual debug aides.

-What if you just want to quickly write code that loads models and brings them in their start position? You may not want to hunt for a sample model, convert it, add lights, and load materials. Instead you use "hasslefree" simple shapes a wireframe material: No model, no light source, no materials are needed to see them in the scene. +What if you just want to quickly write code that loads models and brings them in their start position? You may not want to hunt for a sample model, convert it, add lights, and load materials. Instead you use "hasslefree" simple shapes, and a "hasslefree" unshaded material or wireframe: No model, no light source, no materials are needed to see them in your test scene.

-If you ever have problems with objects appearing in the wrong spot, with the wrong scale, or wrong orientation, simply attach debug shapes to your scene to have a point of reference in 3D space – just like a giant ruler. If your code positions the debug shapes correctly, but models remain invisible when you apply the same code to them, you know that the problem must be the model or the light or its material – and not the positioning code. +If you ever have problems with objects appearing in the wrong spot, with the wrong scale, or wrong orientation, simply attach debug shapes to your scene to have a point of reference in 3D space – just like a giant ruler. If your code positions the debug shapes correctly, but models remain invisible when you apply the same code to them, you know that the problem must be either the model (where is its origin coordinate?), or the light (too dark? too bright? missing?), or the model's material (missing?) – and not the positioning code.

@@ -24,12 +24,12 @@ Here are some different debug shapes:

- +

Debug Shapes

- +

Coordinate Axes

@@ -62,7 +62,7 @@ private Geometry putShape(Mesh shape, ColorRGBA color){ }
- +

Wireframe Grid

@@ -82,7 +82,7 @@ Use a wireframe grid (com.jme3.scene.debug.Grid) as a ruler or simple floor. }
- +

Wireframe Cube

@@ -102,7 +102,7 @@ Use a wireframe cube (com.jme3.scene.debug.WireBox) as a stand-in object to see }
- +

Wireframe Sphere

@@ -122,7 +122,7 @@ Use a wireframe sphere (com.jme3.scene.debug.WireSphere) as a stand-in object to }
- +

Wireframe for Physics

@@ -133,7 +133,7 @@ You can display a wireframe of the (usually invisible) collision shape around al
physicsSpace.enableDebug(assetManager);
- +

Wireframe for Animations

@@ -150,7 +150,7 @@ Making the skeleton visible inside animated models can be handy for debugging an player.attachChild(skeletonDebug);
- +

Example: Toggle Wireframe on Model

@@ -189,7 +189,7 @@ TIP :: To set the line width of wireframe display, use mesh.setLineWidth(lineWid

- +

Example: Toggle Wireframe on the scene

@@ -243,5 +243,14 @@ Then attach the scene processor to the getViewPort().addProcessor(new WireProcessor());
- + +

See also

+
+
    +
  • Spatial – if you can't see certain spatials, you can modify the culling behaviour to identify problems (such as inside-out custom meshes)
    +
  • +
+ +
+

view online version

\ No newline at end of file diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/effects_overview.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/effects_overview.html index b2cd3b14c..6c802666b 100644 --- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/effects_overview.html +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/effects_overview.html @@ -296,7 +296,7 @@ Thanks for your awesome contributions! Keep them coming!
  • – dust, smoke
  • -
    +

    See also: diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/jme3_shaders.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/jme3_shaders.html index 4ddc1fcbb..c19133b17 100644 --- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/jme3_shaders.html +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/jme3_shaders.html @@ -248,17 +248,17 @@ these uniforms are passed to the shader without having to declare them in the j3

    Those are different attributes that are always passed to your shader.
    -you can find a complete list of those attribute in the Type enum of the VertexBuffer .
    +You can find a complete list of those attribute in the Type enum of the VertexBuffer .
    -Note that in the shader the attributes names will be prefixed by a “in”.
    +Note that in the shader the attributes names will be prefixed by an “in”.

    - +When the enumeration lists some usual types for each attribute (for example texCoord specifies two floats) then that is the format expected by all standard JME3 shaders that use that attribute. When writing your own shaders though you can use alternative formats such as placing three floats in texCoord simply by declaring the attribute as vec3 in the shader and passing 3 as the component count into the mesh setBuffer call.

    - +

    User's uniforms

    @@ -320,7 +320,7 @@ The uniforms will be populated at runtime with the value you sent.

    - +

    Example: Adding Color Keying to the Lighting.j3md Material Definition

    @@ -384,7 +384,7 @@ A result preview can be seen here: +

    Step by step

      @@ -414,7 +414,7 @@ A result preview can be seen here: +

      JME3 and OpenGL 3 & 4 compatibility

      @@ -452,9 +452,9 @@ Those attributes are deprecated since GLSL 1.3 (opengl 3), hence JME3 global uni gl_NormalMatrix g_NormalMatrix
      - + - +

      Useful links

      @@ -463,5 +463,5 @@ Those attributes are deprecated since GLSL 1.3 (opengl 3), hence JME3 global uni

      - +

      view online version

      \ 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. -

      -
      - - - - - - - - - - - - - - - -
      AccessorPurpose
      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).

      - +

      Closing Clients and Server Cleanly

      - +

      Closing a Client

      @@ -357,7 +338,7 @@ You must override the client's destroy() method to close the connection cle }
      - +

      Closing a Server

      @@ -373,7 +354,7 @@ You must override the server's destroy() method to close the connection whe }
      - +

      Kicking a Client

      @@ -384,7 +365,7 @@ The server can kick a HostedConnection to make it disconnect. You should provide
      conn.close("We kick cheaters.");
      - +

      Listening to Connection Notification

      @@ -394,7 +375,7 @@ The server and clients are notified about connection changes.

      - +

      ClientStateListener

      @@ -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

      myClient.addClientStateListener(this);
      - +

      ConnectionListener

      @@ -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

      myServer.addConnectionListener(this);
      - +

      UDP versus TCP

      @@ -469,7 +450,7 @@ message2.setReliable(false); // UDP
      - +

      Important: Use Multi-Threading

      @@ -493,7 +474,7 @@ For general advice, see the articles +

      Troubleshooting

      @@ -508,5 +489,5 @@ If you have set up a server in your home network, and the game clients cannot re
      - +

      view online version

      \ 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.

      - +

      Make GUI and Java Interact

      @@ -114,7 +114,7 @@ Use any combination of the three following approaches to make Java classes inter

      - +

      GUI Calls a Void Java Method

      @@ -214,7 +214,7 @@ The quitGame() example shows that you have access to the application app
      - +

      GUI Gets Return Value from Java Method

      @@ -253,7 +253,7 @@ You can use this for Strings and numeric values (e.g. when you read settings fro

      - +

      Java Modifies Nifty Elements and Events

      @@ -293,7 +293,7 @@ For this to work, there already needs to be a (possibly inactive) <inte
      <interact onClick="doNothing()"/>
      - +

      Next Steps

      @@ -317,5 +317,5 @@ You're done with the basic Nifty
      - +

      view online version

      \ 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 2.6.0 ? - + - +

      Tips

      @@ -54,7 +57,7 @@ Test Character - +

      Troubleshooting

      @@ -68,5 +71,5 @@ Test Character - +

      view online version

      \ 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:

      Collection<Caps> caps = renderer.getCaps();
      -Logger.getLogger(HelloWorld.class.getName()).log(Level.INFO, “Caps: {0}” + caps.toString()); 	
      +Logger.getLogger(HelloWorld.class.getName()).log(Level.INFO, “Caps: {0}”, caps.toString()); + +

      +Note: Replace HelloWorld by the name of the class where you are using this line. +

      + + + +

      Examples

      +

      -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.

      -
      Caps: [FrameBuffer, FrameBufferMRT, FrameBufferMultisample, 
      +
      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]
      +VertexTextureFetch, FloatTexture, +TextureCompressionLATC, NonPowerOfTwoTextures]

      -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").

      +
      INFO: Capabilities: [FrameBuffer, FrameBufferMRT, FrameBufferMultisample, 
      +OpenGL20, ARBprogram, GLSL100, GLSL110, GLSL120, 
      +VertexTextureFetch, FloatTexture, TextureCompressionLATC]
      +

      view online version

      \ 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
      Geometry submesh = (Geometry) houseScene.getChild("door 12");
      - + +

      What is Culling?

      +
      + +

      +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.
        +
      • +
      + +

      + +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". +

      + +

      +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.
        +
      • +
      + +

      + +Example: + +

      +
      spatial.setCullHint(CullHint.Never); // always drawn
      + +
      +

      See also

        @@ -214,5 +273,5 @@ In the following example, the Node house is the loaded model. The s
      - +

      view online version

      \ 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 @@ -

      Update Loop

      +

      Main Update Loop

      @@ -8,55 +8,67 @@ Extending your application from com.jme3.app.Input handling – input listeners

      +
    • Input listeners respond to mouse clicks and keyboard presses – Input handling
    • -
    • Update game state
      +
    • Update game state:
        -
      1. +
      2. Update overall game state – Execute Application States
      3. -
      4. User update – simpleUpdate() method
        +
      5. User code update – Execute simpleUpdate() method
      6. -
      7. Entity logical update – Custom Controls
        +
      8. Logical update of entities – Execute Custom Controls
    • -
    • render
      +
    • Render audio and video
        -
      1. +
      2. Application States rendering.
      3. -
      4. Scene rendering
        +
      5. Scene rendering.
      6. -
      7. User rendering – simpleRender() method
        +
      8. User code rendering – Execute simpleRender() method.
    • - +
    • Repeat loop.
    • -
    • If exit is requested, then cleanup and destroy
      +
    • -
    • Repeat
      +
    • Quit – If user requests exit(), execute cleanup() and destroy().
      +The jME window closes and the loop ends.
    • - +

      Usage

      -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
      - +

      view online version

      \ 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.

        diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/faq.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/faq.html index 1882f8e59..c278cfdad 100644 --- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/faq.html +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/faq.html @@ -31,14 +31,14 @@ Extend com.jme3.app.SimpleApplication.

        -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.

        - +

        How can I switch between screens or states?

        @@ -50,7 +50,7 @@ You should break app your application logic into components by spreading it out

        - +

        How do I pause/unpause a game?

        @@ -62,7 +62,7 @@ You split up your application into several AppStates and implement the setEnable

        - +

        How do I disable logger output to the console?

        @@ -86,7 +86,7 @@ For the release, switch the severity level of the default logger to print only S

        - +

        Why does the executable crash with "Cannot locate resource"?

        @@ -98,7 +98,7 @@ Make sure to only load() models converted to .j3o binary format, not the origina

        - +

        What is java.lang.LinkageError: Version mismatch?

        @@ -110,29 +110,21 @@ To fix this, search for .dll (Windows), .jnilib (Mac), and .so (Linux) files for

        - +

        I want to load my scene

        - +

        How do I make objects appear / disappear in the 3D scene?

        -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. - -

        -
        spatial.setCullHint(CullHint.Never); // always drawn
        -
        spatial.setCullHint(CullHint.Always); // never drawn
        +
        rootNode.attachChild(spatial); // appear in scene
        +
        rootNode.detachChild(spatial); // remove from scene

        @@ -140,7 +132,7 @@ Optionally, you can control whether the engine culls an object always or never.

        - +

        Why do I get AssetNotFoundException when loading X ?

        @@ -166,7 +158,7 @@ this.assetManager.registerLocator("town.zip", ZipLocator.class)

        - +

        How do I Create 3-D models, textures, sounds?

        @@ -182,7 +174,7 @@ You create sounds in an audio editor, for example, Audacity, and export them as

        - +

        How do I load a 3-D model into the scene?

        @@ -202,7 +194,7 @@ Spatial ninja = assetManager.loadModel("Models/Ninja/Ninja.j3o"

        - +

        How do initialize the scene?

        @@ -213,12 +205,12 @@ Use the simpleInitApp() method in SimpleApplication (or initApp() in Application

        - +

        I want to transform objects in the scene

        - +

        How do I move or turn or resize a spatial?

        @@ -234,7 +226,7 @@ To move or turn or resize a spatial you use transformations. You can concatenate

        - +

        How do I make a spatial move by itself?

        @@ -247,7 +239,7 @@ Change the geometry's translation (position) live in the update loop using

        - +

        How do I access a named sub-mesh in Model?

        Geometry result = spatial.getName().startsWith(name);
        @@ -258,7 +250,7 @@ Change the geometry's translation (position) live in the update loop using

        - +

        How do I make procedural or custom shapes?

        @@ -269,12 +261,12 @@ You can programmatically create com.jme3.scene.Mesh'es.

        - +

        I want to change the surface of objects in the scene

        - +

        Why is my UV wrapping / texture appearance all wrong?

        @@ -292,7 +284,7 @@ You can set the boolean value in the constructor of TextureKey to flipped or not
          material.setTexture("ColorMap", this.assetManager.loadTexture(new TextureKey("myTexture.jpg", false)));
        - +

        How do I scale, mirror, or wrap a texture?

        @@ -310,7 +302,7 @@ You can choose among various com.jme3.texture.Texture.WrapModes for
        material.getTextureParam("DiffuseMap").getTextureValue().setWrap(WrapMode.Repeat);
        - +

        How do I change color or shininess of an material?

        @@ -323,7 +315,7 @@ Use the AssetManager to load Materials, and change material settings.

        - +

        How do I make a surface wood, stone, metal, etc?

        @@ -336,7 +328,7 @@ Create Textures as image files. Use the AssetManager to load a Material and use

        - +

        Why are materials too bright, too dark, or flickering?

        @@ -345,7 +337,7 @@ If you use a lit material (based on Lighting.j3md) then you must attach a light

        - +

        How do I make geometries cast a shadow?

        @@ -358,7 +350,7 @@ Use com.jme3.shadow.BasicShadowRenderer together with com.jme3.light.Directional

        - +

        How do I make materials transparent?

        @@ -374,23 +366,36 @@ Assign a texture with an alpha channel to a Material and set the Material's

        - -

        How do I force or disable backface culling?

        + +

        How do I force or disable culling?

        -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. + +

        +
        someMaterial.getAdditionalRenderState().setFaceCullMode(FaceCullMode.Off);
        + +

        + +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. + +

        +
        someNode.setCullHint(CullHint.Never);
        + +

        + +Learn more: Spatial

        -
        material.getAdditionalRenderState().setFaceCullMode(FaceCullMode.FrontAndBack);
        - +

        Can I draw only an outline of the scene?

        -Create a material and switch its renders state to wireframe. +Add a renders state to the material's and activate Wireframe.

        material.getAdditionalRenderState().setWireframe(true);
        @@ -401,12 +406,12 @@ Create a material and switch its renders state to wireframe.

        - +

        I want to control the camera

        - +

        How do I switch between third-person and first-person view ?

        @@ -428,18 +433,18 @@ chaseCam = new ChaseCamera(cam, spatial, inputManager);
        - +

        How do I increase camera speed?

        flyCam.setMoveSpeed(50f);
        - +

        Actions, Interactions, Physics

        - +

        How do I implement game logic / game mechanics?

        @@ -450,7 +455,7 @@ Use Controls to define the behaviour of types of Spatials. Use Application State

        - +

        How do I let players interact via keyboard?

        @@ -461,7 +466,7 @@ Use com.jme3.input.KeyInput and a Input Listener.

        - +

        How do I let players interact by clicking?

        @@ -474,7 +479,7 @@ Players typically click the mouse to pick up objects, to open doors, to shoot a

        - +

        How do I animate characters?

        @@ -487,7 +492,7 @@ Create an animated OgreMesh model with bones in a 3-D mesh editor (e.g. Blender)

        - +

        How do I keep players from falling through walls and floors?

        @@ -498,7 +503,7 @@ Use collision detection. The most common solution is to use jme's physics i

        - +

        How do I make balls/wheels/etc bounce and roll?

        @@ -511,7 +516,7 @@ Add physics controls to Spatials and give them spherical or cylindrical bounding

        - +

        How do I debug weird Physics behaviour?

        @@ -521,7 +526,7 @@ Maybe your collision shapes overlap – or they are not where you think they are
        bulletAppState.getPhysicsSpace().enableDebug(assetManager);
        - +

        How do I make a walking character?

        @@ -534,7 +539,7 @@ Code samples: +

        How do I steer vehicles?

        @@ -547,7 +552,7 @@ Code samples: +

        Can objects swing like a pendulums, chains, ropebridges?

        @@ -559,12 +564,12 @@ Use a PhysicsControl's hinges and joints.

        - +

        Default GUI Display

        - +

        What are these FPS/Objects/Vertices/Triangles statistics?

        @@ -576,7 +581,7 @@ At the bottom left of every default SimpleGame, you see the +

        How do I get rid of the FPS/Objects statistics?

        @@ -595,7 +600,7 @@ setDisplayStatView(false); // to hide the statistics

        - +

        How do I display score, health, mini-maps, status icons?

        @@ -608,7 +613,7 @@ Attach text and pictures to the orthogonal guiNode to create a head

        - +

        How do I display buttons and UI controls?

        @@ -621,7 +626,7 @@ Sample Code: +

        How do i display a loading screen?

        @@ -632,12 +637,12 @@ Instead of having a frozen frame while your games loads, you can have a loading

        - +

        Nifty GUI

        - +

        I get NoSuchElementException when adding controls (buttons etc)!

        @@ -648,7 +653,7 @@ Verify that you include a controls definition file link in your +

        Where can I find example code of Nifty GUI's XML and Java classes?

        @@ -657,7 +662,7 @@ Verify that you include a controls definition file link in your +

        Is there Java Doc for Nifty GUI?

        @@ -666,12 +671,12 @@ Verify that you include a controls definition file link in your +

        I want to create an environment with sounds, effects, and landscapes

        - +

        How do I play sounds and noises?

        @@ -684,7 +689,7 @@ Use AudioRenderer, Listener, and AudioNode from com.jme3.audio.*.

        - +

        How do I make fire, smoke, explosions, swarms, magic spells?

        @@ -697,7 +702,7 @@ For swarm like effects you use particle emitters.

        - +

        How do I make water, waves, reflections?

        @@ -710,7 +715,7 @@ Use a special post-processor renderer from com.jme3.water.*.

        - +

        How do I make fog, bloom, blur, light scrattering?

        @@ -721,7 +726,7 @@ Use special post-processor renderers from com.jme3.post.*.

        - +

        How do I generate a terrain?

        @@ -734,7 +739,7 @@ Use com.jme3.terrain.*. The JMonkeyEngine also provides you with a Terrain Edito

        - +

        How do I make a sky?

        @@ -752,69 +757,41 @@ skyGeo.setQueueBucket(Bucket.Sky)

        - +

        I want to access to back-end properties

        - +

        How do I read out graphic card capabilities?

        -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.

        Collection<com.jme3.renderer.Caps> caps = renderer.getCaps();
        -Logger.getLogger(HelloJME3.class.getName()).log(Level.INFO, "Capabilities: {0}" + caps.toString());
        - -

        +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. -

        +
        + +

        How do I Run jMonkeyEngine 3 with OpenGL1?

        +

        -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]
        - +

        How do I optimize the heck out of the Scene Graph?

        @@ -831,7 +808,7 @@ Batching means that all Geometries with the same Material are combined into one

        - +

        How do I prevent users from unzipping my JAR?

        @@ -841,12 +818,12 @@ Add an - +

        I want to do maths

        - +

        What does addLocal() / multLocal() etc mean?

        @@ -864,7 +841,7 @@ Many maths functions (mult(), add(), subtract(), etc) come as local and a non-lo -
      • Example 2: v.mult(b).add(b); :!:
        +
      • Example 2: v.mult(b).add(b); :!:
        • Watch out: This calculates the expected result, but unless you actually use the return value, it is discarded!
        • @@ -899,7 +876,7 @@ Many maths functions (mult(), add(), subtract(), etc) come as local and a non-lo
      • - +

        What is the difference between World and Local coordinates?

        @@ -909,7 +886,7 @@ World coordinates of a Spatial are its absolute coordinates in the 3D scene (thi

        - +

        How do I convert Degrees to Radians?

        @@ -923,5 +900,5 @@ Multiply degree value by FastMath.DEG_TO_RAD to convert it to radians.
        - +

        view online version

        \ 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

        - +

        Code Samples

        -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
         }
        - +

        Properties

        @@ -89,7 +94,7 @@ Set VSync to false to deactivate vertical syncing (faster, but possible page tea 60 fps
        -
        +
        @@ -106,7 +111,7 @@ Set VSync to false to deactivate vertical syncing (faster, but possible page tea
        Settings Property (Input)DescriptionDefault
        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
        -
        +
        @@ -117,7 +122,7 @@ Set VSync to false to deactivate vertical syncing (faster, but possible page tea
        Settings Property (Audio)DescriptionDefault
        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.false
        -
        +
        @@ -132,7 +137,7 @@ ImageIO.read(new File("")), …});
        Settings Property (Branding)DescriptionDefault
        This specifies the little a setSettingsDialogImage("Interface/mysplashscreen.png")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("")), …});This specifies the little a

        - +

        Toggling and Activating Settings

        @@ -160,9 +165,9 @@ ImageIO.read(new File("")), …});
        This specifies the little a app.restart()Restart()ing a running game restarts the game context and applies the updated settings object. (This does not restart or reinitialize the whole game.)
        - +
        - +

        Saving and Loading Settings

        @@ -202,5 +207,5 @@ Provide the unique name of your jME3 application as the String argument. For exa
        - +

        view online version

        \ 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 @@ + +

        iOS Deployment

        +
        + +

        +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. +

        +

        + +
        + +

        Enabling iOS deployment

        +
        + +

        +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. + +

        + +
        + +

        Building the iOS binaries

        +
        + +

        +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. +

        + +
        + +

        Running and deploying the application

        +
        + +

        +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. +

        + +
        + +

        Creating native and java code for iOS

        +
        + +

        +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. + +

        + +
        + +

        view online version

        \ 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:
        - +

        Math

        @@ -536,7 +536,7 @@ There are lots of resources explaining interesting AI algorithms:

        - +

        Coordinates

        @@ -547,7 +547,7 @@ In contrast to a vector (which looks similar), a coordinate is a location, not a

        - +

        The Origin

        @@ -561,7 +561,7 @@ The origin is the central point in the 3D world, where the three axes meet. It&#

        - +

        Vectors

        @@ -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)
        - +

        Unit Vectors

        @@ -601,7 +601,7 @@ Negate the vegator to change its direction, e.g. (-1, 0, 0) = left.

        - +

        Normalized Vectors

        @@ -616,7 +616,7 @@ When you normalize a vector, it still has the same direction, but you lose the i

        - +

        Surface Normal Vectors

        @@ -628,7 +628,7 @@ You calculate the Surface Normal by calculating the cross product.

        - +

        Cross Product

        @@ -645,7 +645,7 @@ In 3D space, speaking of an orthogonal only makes sense with respect to a plane.

        - +

        Transformation

        @@ -659,7 +659,7 @@ Examples: Falling and rotating bricks in 3D Tetris.

        - +

        Slerp

        @@ -677,7 +677,7 @@ Example: A burning meteorite Geometry slerps from "position p1, rotation r1

        - +

        Game Developer Jargon

          @@ -686,7 +686,7 @@ Example: A burning meteorite Geometry slerps from "position p1, rotation r1
        - +

        3D graphics Terminology Wiki book

          @@ -695,5 +695,5 @@ Example: A burning meteorite Geometry slerps from "position p1, rotation r1
        - +

        view online version

        \ 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.

        The intermediate and advanced documentation gives you more details on how to put all the parts together to create an awesome 3D game in Java!

        + + + +

        See also

        +
        +
          +
        • Spatial – More details about working with Nodes and Geometries
          +
        • +
        • Traverse SceneGraph – Find any Node or Geometry in the scenegraph.
          +
        • +
        - +

        view online version

        \ 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
        1. In the Application>Web Start category, check the box to Enable Web Start.
        2. -
        3. Check the box to make the application self-signed. :!:
          +
        4. Check the box to make the application self-signed. :!:
        5. Optionally, check the box to allow offline use.
        6. diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/asset_packs.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/asset_packs.html index 906812e00..338746687 100644 --- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/asset_packs.html +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/asset_packs.html @@ -1,13 +1,14 @@ -

          jMonkeyEngine SDK: AssetPacks

          +

          jMonkeyEngine SDK: AssetPacks and AssetPack Browser

          -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

          @@ -15,12 +16,19 @@ AssetPacks are a way to package jME3 compatible assets like models, textures, so

          +
          + +

          Browsing Assets

          +
          +

          + 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

          - -

          Using the browser

          + +

          Adding Assets to Your Scene

          + To preview a model from the browser, right-click it and select "Preview Asset"

          @@ -55,8 +64,8 @@ The model will be added to your scene and all needed texture files will be copie

          - -

          AssetPack Projects

          + +

          Create Your Own AssetPack Project

          @@ -66,9 +75,9 @@ Editing of asset and project info, adding of new assets and setting their proper

            -
          1. Select "File → New Project"
            +
          2. Choose "File → New Project" from the menu
          3. -
          4. Select "AssetPack Project"
            +
          5. Choose "AssetPack Project"
          6. Fill in the project info and press "finish"
          7. @@ -77,12 +86,11 @@ Editing of asset and project info, adding of new assets and setting their proper

            You can access and change the project properties by right-clicking the project and selecting "Properties". -

          - -

          Adding Assets

          + +

          Add Your Own Assets

          @@ -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. +

          @@ -159,7 +168,7 @@ Supported formats for models (main files) are:

        - +

        AssetPack Publishing

        @@ -168,19 +177,20 @@ Supported formats for models (main files) are:

        -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. +

          -
        1. Right-Click your AssetPack project and select "Publish AssetPack.."
          +
        2. Right-Click your AssetPack project in the SDK and select "Publish AssetPack…"
        3. -
        4. Check the description etc. settings and press "Next"
          +
        5. Check the description etc. settings, and press "Next".
        6. -
        7. Select the checkbox for online and/or local publishing and press "finish"
          +
        8. 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
        - +

        view online version

        \ 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 -

        Using jMonkeyEngine SDK for development (preferred)

        +

        Using jMonkeyEngine SDK for development

          -
        • Install the "Netbeans Plugin Development", "NetBeans API Documentation" and "GUI Builder" plugins via Tools→Plugins
          +
        • Install the "Netbeans Plugin Development" and "NetBeans API Documentation" plugins via Tools→Plugins
        • Create a new "Module Suite" project (can be any name, this will be your local "collection" of plugins that you create)
        • @@ -32,49 +32,16 @@ Note that the creation of a Module Suite is only necessary if you want to upload
        • Enter a "Module Display Name" for your plugin like "My Library"
        • -
        • Check the "Generate XML Layer" checkbox
          -
        • -
        • Press Finish
          -
        • -
        • To use core SDK or jME3 functions, add "jMonkeyPlatfom Core" and "jMonkeyEngine SDK Core jME3" via "Module Properties→Library→Add Dependency"
          -
        • -
        • Write your plugin
          -
        • -
        - -
        - -

        Using NetBeans for development

        -
        -
          -
        • Download the jMonkeyEngine SDK source from svn, then open and compile the project
          -
        • -
        • Create a new "Module Suite" project (can be any name, this will be your local "collection" of plugins that you create)
          -
        • -
        • In the Suites Properties, under "Libraries", press "Add Project" and select the jMonkeyEngine SDK project folder.
          -
        • -
        • Open the suite, right-click the "Modules" folder and select "Add new.."
          -
        • -
        • For "Project Name" enter an all-lowercase name for your plugin without spaces like my-library
          -
        • -
        • Make sure the "Project Location" is inside the module suite folder and press "Next"
          -
        • -
        • Enter the base java package for your plugin in "Code Name Base" like com.mycompany.plugins.mylibrary
          -
        • -
        • Enter a "Module Display Name" for your plugin like "My Library"
          -
        • -
        • Check the "Generate XML Layer" checkbox
          -
        • Press Finish
        • -
        • To use core SDK or jME3 functions, add "jMonkeyPlatfom Core" and "jMonkeyEngine SDK Core jME3" via "Module Properties→Library→Add Dependency"
          +
        • To use core SDK or jME3 functions, add "SDK Core" and "SDK Core Libraries" via "Module Properties→Library→Add Dependency"
        • Write your plugin
        - +

        jMonkeyEngine SDK Contributions Update Center

        @@ -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) +

          + + + +

          Building library jar files on the server

          +
          + +

          +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: + +

          +
          <target name="init" depends="basic-init,files-init,build-init,-javac-init,-build-subproject"/>
          +<target name="-build-subproject">
          +    <ant dir="./MySubProject" inheritall="false" target="jar"/>
          +    <copy file="./MySubProject/dist/MySubProject.jar" todir="release/libs"/>
          +</target>
          + +

          + +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.

          - +

          view online version

          \ 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
        mywall.setMaterial(assetManager.loadAsset( "Materials/mat_wall.j3m"));
        -
        +

        See also: diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/3_0rc3.html b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/3_0rc3.html new file mode 100644 index 000000000..50a0c10cc --- /dev/null +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/3_0rc3.html @@ -0,0 +1,47 @@ + +

        Welcome to the jMonkeyEngine SDK

        +
        + +
        + +

        Getting Started

        +
        + +

        +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. +

        + +

        + +

        + +
        + +

        Tutorials / Manual

        +
        + +

        +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. +

        + +

        + +

        + +
        + +

        Updates

        +
        + +

        +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: +

        + +

        + + +

        + +
        + +

        view online version

        \ No newline at end of file diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/help_update.png b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/help_update.png new file mode 100644 index 000000000..f6699f23e Binary files /dev/null and b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/help_update.png differ diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/new_project.png b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/new_project.png new file mode 100644 index 000000000..a5b3201f7 Binary files /dev/null and b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/new_project.png differ diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/search_field.png b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/search_field.png new file mode 100644 index 000000000..95a3e692d Binary files /dev/null and b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/welcome/search_field.png differ diff --git a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/wiki-map.xml b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/wiki-map.xml index e0d3596f9..45cde4a36 100644 --- a/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/wiki-map.xml +++ b/sdk/jme3-core/javahelp/com/jme3/gde/core/docs/wiki-map.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/sdk/jme3-core/javahelp/wiki_help.properties b/sdk/jme3-core/javahelp/wiki_help.properties index ee9f78c1f..1ca19d4a5 100644 --- a/sdk/jme3-core/javahelp/wiki_help.properties +++ b/sdk/jme3-core/javahelp/wiki_help.properties @@ -28,7 +28,9 @@ sdk:development:projects_assets,\ sdk:development:scene,\ sdk:development:sceneexplorer,\ sdk:development:setup,\ +sdk:welcome:3_0rc3,\ jme3:android,\ +jme3:ios,\ jme3:build_jme3_sources_with_netbeans,\ jme3:build_from_sources,\ jme3:simpleapplication_from_the_commandline,\