mitm001 5 gadi atpakaļ
vecāks
revīzija
0501acd5a7

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

@@ -91,7 +91,7 @@ a|Use the xref:input/input_handling.adoc[inputManager] to configure your custom
 
 a|stateManager +
 getStateManager()
-a|You use the Application's state manager to activate xref:app/state/application_states.adoc[AppStates], such as xref:physics/physics.adoc[Physics].
+a|You use the Application's state manager to activate xref:app/state/application_states.adoc[AppStates], such as xref:physics:physics.adoc[Physics].
 
 |===
 [cols="25,75", options="header"]

+ 1 - 1
docs/modules/core/pages/audio/audio_environment_presets.adoc

@@ -7,7 +7,7 @@
 ifdef::env-github,env-browser[:outfilesuffix: .adoc]
 
 
-Use these presets together with <<jme3/advanced/audio#,Audio>> Nodes to create different "`moods`" for sounds. Environment effects make your audio sound as if the listener were in various places that have different types of echoes.
+Use these presets together with xref:audio/audio.adoc[Audio] Nodes to create different "`moods`" for sounds. Environment effects make your audio sound as if the listener were in various places that have different types of echoes.
 
 Usage:
 

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

@@ -82,7 +82,7 @@ a|MotionEvent
 a|Use a MotionEvent to move a Spatial non-linearly over time. A MotionEvent is based on a list of waypoints in a MotionPath. The curve goes through each waypoint, and you can adjust the tension of the curve to modify the roundedness of the path. This is the motion interpolation you are going to use in most cases.
 
 a|SoundEvent
-a|Use a SoundEvent to play a <<jme3/advanced/audio#,sound>> at a given time for the given duration.
+a|Use a SoundEvent to play a xref:audio/audio.adoc[sound] at a given time for the given duration.
 
 a|GuiEvent
 a|Displays a xref:gui/nifty_gui.adoc[Nifty GUI] at a given time for the given duration. Use it to display subtitles or HUD elements. Bind the Nifty +++<abbr title="Graphical User Interface">GUI</abbr>+++ XML to the cinematic using `cinematic.bindUi("path/to/nifty/file.xml");`

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

@@ -5,7 +5,7 @@
 
 The term collision can be used to refer to xref:physics:collision/physics_listeners.adoc[physical interactions] (where xref:physics:physics.adoc[physical objects] collide, push and bump off one another), and also to non-physical _intersections_ in 3D space. This article is about the non-physical (mathematical) collisions.
 
-Non-physical collision detection is interesting because it uses less computing resources than physical collision detection. The non-physical calculations are faster because they do not have any side effects such as pushing other objects or bumping off of them. Tasks such as <<jme3/advanced/mouse_picking#,mouse picking>> are easily implemented using mathematical techniques such as ray casting and intersections.  Experienced developers optimize their games by finding ways to simulate certain (otherwise expensive physical) interactions in a non-physical way.
+Non-physical collision detection is interesting because it uses less computing resources than physical collision detection. The non-physical calculations are faster because they do not have any side effects such as pushing other objects or bumping off of them. Tasks such as xref:mouse_picking.adoc[mouse picking] are easily implemented using mathematical techniques such as ray casting and intersections.  Experienced developers optimize their games by finding ways to simulate certain (otherwise expensive physical) interactions in a non-physical way.
 
 *Example:* One example for an optimization is a physical vehicle's wheels. You could make the wheels fully physical disks, and have jME calculate every tiny force – sounds very accurate? It's total overkill and too slow for a racing game. A more performant solution is to cast four invisible rays down from the vehicle and calculate the intersections with the floor. These non-physical wheels require (in the simplest case) only four calculations per tick to achieve an effect that players can hardly distinguish from the real thing.
 
@@ -179,7 +179,7 @@ These simple but powerful ray-surface intersection tests are called Ray Casting.
 ====
 
 
-Learn the details of how to implement <<jme3/advanced/mouse_picking#,Mouse Picking>> here.
+Learn the details of how to implement xref:mouse_picking.adoc[Mouse Picking] here.
 
 '''
 

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

@@ -288,7 +288,7 @@ audioRenderer.playSource(waves);
 
 ----
 
-See also: <<jme3/advanced/audio#,audio>>.
+See also: xref:audio/audio.adoc[audio].
 
 '''
 

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

@@ -161,7 +161,7 @@ For example, create a `MyHudScreen.java` for the `hud` screen, and a `MyStartScr
 
 == Create a "Loading..." Screen
 
-Get the full <<jme3/advanced/loading_screen#,Loading Screen>> tutorial here.
+Get the full xref:loading_screen.adoc[Loading Screen] tutorial here.
 
 
 == Create a Popup Menu

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

@@ -15,7 +15,7 @@ You want to make the most of your 3D models by specifying good looking material
 
 [IMPORTANT]
 ====
-Don't forget to add a xref:ROOT:jme3/advanced/light_and_shadow.adoc[Light Source] to the scene! All Materials (except "`Unshaded`" ones) are *invisible* without a light source.
+Don't forget to add a xref:light/light_and_shadow.adoc[Light Source] to the scene! All Materials (except "`Unshaded`" ones) are *invisible* without a light source.
 ====
 
 If you want more advanced background info: You can learn more about xref:ROOT:jme3/advanced/material_definitions.adoc[Material Definitions] in general here. You can find the full list of Material Parameters in the xref:material/materials_overview.adoc[Material Definitions Properties] overview. The following sections introduce you to the most commonly used cases. You typically initialize Material objects in the `simpleInitApp()` method, and configure them using the setters described here. Then load the Materials using `myGeometry.setMaterial(mat)`.
@@ -206,7 +206,7 @@ mat.setColor("Specular",ColorRGBA.Black);
 
 To activate glow:
 
-.  Add one xref:ROOT:jme3/advanced/bloom_and_glow.adoc[BloomFilter PostProcessor] in your simpleInitApp() method (only once, it is used by all glowing objects).
+.  Add one xref:effect/bloom_and_glow.adoc[BloomFilter PostProcessor] in your simpleInitApp() method (only once, it is used by all glowing objects).
 +
 [source,java]
 ----
@@ -241,7 +241,7 @@ To deactivate glow:
 mat.setColor("GlowColor", ColorRGBA.Black);
 ----
 
-Learn more about xref:ROOT:jme3/advanced/bloom_and_glow.adoc[Bloom and Glow].
+Learn more about xref:effect/bloom_and_glow.adoc[Bloom and Glow].
 
 
 

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

@@ -157,7 +157,7 @@ public class MyControl extends AbstractControl implements Savable, Cloneable { 
 
 See also:
 
-*  To learn more about `write()` and `read()`, see <<jme3/advanced/save_and_load#,Save and Load>>
+*  To learn more about `write()` and `read()`, see xref:save_and_load.adoc[Save and Load]
 *  To learn more about `setUserData()`, see xref:scene/spatial.adoc[Spatial].
 
 
@@ -174,7 +174,7 @@ The Control interface can be found under `com.jme3.scene.control.Control`. It ha
 
 *  `cloneForSpatial(Spatial)`: Clones the Control and attaches it to a clone of the given Spatial.
 +
-Implement this method to be able to <<jme3/advanced/save_and_load#,save() and load()>> Spatials carrying this Control.
+Implement this method to be able to xref:export/save_and_load.adoc[save() and load()] Spatials carrying this Control.
 +
 The AssetManager also uses this method if the same spatial is loaded twice. You can specify which fields you want your object to reuse (e.g. collisionshapes) in this case.
 *  `setEnabled(boolean)`: Toggles a boolean that enables or disables the Control. Goes with accessor `isEnabled();`. You test for it in the `update(float tpf)` loop before you execute anything.

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

@@ -150,7 +150,7 @@ You can use the jMonkeyEngine SDK to save (theoretically) any jMonkeyEngine app
 *  *Effects:* Android devices do no support 3D features as well as PCs – or even not at all. This restriction includes post-processor filters (depth-of-field blur, bloom, light scattering, cartoon, etc), drop shadows, water effects, 3D Audio. Be prepared that these effects will (at best) slow down the application or (in the worst case) not work at all. Provide the option to switch to a low-fi equivalent!
 *  *Nifty +++<abbr title="Graphical User Interface">GUI</abbr>+++:* Use different base UI layout XML files for the mobile version of your app to account for a different screen resolution.
 
-*Best Practice:* Ideally, you write the core application code in a way that it checks for the environment it's being run on, and automatically adapts the device's limitations by switching off effects, changing input mechanisms etc. Learn how to xref:ROOT:jme3/advanced/read_graphic_card_capabilites.adoc[read graphic card capabilites] here.
+*Best Practice:* Ideally, you write the core application code in a way that it checks for the environment it's being run on, and automatically adapts the device's limitations by switching off effects, changing input mechanisms etc. Learn how to xref:tutorials:how-to/java/read_graphic_card_capabilites.adoc[read graphic card capabilites] here.
 
 
 == Using Android specific functions

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

@@ -4,13 +4,13 @@
 :keywords: documentation, sdk, file
 
 
-You find the jMonkeyEngine SDK log file in `/dev/var/log/messages.log` in the jMonkeyEngine SDK preferences folder. You can learn the location of the preferences folder in the "`About`" screen of the jMonkeyEngine SDK under the label *Userdir*. 
+You find the jMonkeyEngine SDK log file in `/dev/var/log/messages.log` in the jMonkeyEngine SDK preferences folder. You can learn the location of the preferences folder in the "`About`" screen of the jMonkeyEngine SDK under the label *Userdir*.
 
 *  Windows: `C:\Documents and Settings\YOUR_NAME\.jmonkeyplatform\`
 *  Linux: `/home/YOUR_NAME/.jmonkeyplatform/`
 *  Mac +++<abbr title="Operating System">OS</abbr>+++: `/Users/YOUR_NAME/Library/Application Support/jmonkeyplatform/`
 
-The message log contains all paths and xref:ROOT:jme3/advanced/read_graphic_card_capabilites.adoc[capabilities] used in your development system, and also warnings, e.g. if a plugin crashed.
+The message log contains all paths and xref:tutorials:how-to/java/read_graphic_card_capabilites.adoc[capabilities] used in your development system, and also warnings, e.g. if a plugin crashed.
 
 
 == Example Log

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

@@ -4,7 +4,7 @@
 :keywords: documentation, sdk, material, file, texture
 
 
-If you are looking for background information, read about xref:ROOT:jme3/advanced/material_definitions.adoc[Material Definitions] and xref:ROOT:jme3/advanced/j3m_material_files.adoc[j3M Material Files].
+If you are looking for background information, read about xref:ROOT:jme3/advanced/material_definitions.adoc[Material Definitions] and xref:core:material/j3m_material_files.adoc[j3M Material Files].
 You can write .j3m files in a text editor, or use the jMonkeyEngine SDK to generate them for you as described in this article.
 
 

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

@@ -324,7 +324,7 @@ It makes equal sense to make the gunshot positional, and let the ambient sound c
 
 *  In a game with moving enemies you may want to make the gun shot or footsteps positional sounds. In these cases you must move the AudioNode to the location of the enemy before `playInstance()`ing it. This way a player with stereo speakers hears from which direction the enemy is coming.
 *  Similarly, you may have game levels where you want one background sound to play globally. In this case, you would make the AudioNode neither positional nor directional (set both to false).
-*  If you want sound to be "`absorbed`" by the walls and only broadcast in one direction, you would make this AudioNode directional. This tutorial does not discuss directional sounds, you can read about xref:ROOT:jme3/advanced/audio.adoc[Advanced Audio] here.
+*  If you want sound to be "`absorbed`" by the walls and only broadcast in one direction, you would make this AudioNode directional. This tutorial does not discuss directional sounds, you can read about xref:core:audio/audio.adoc[Advanced Audio] here.
 
 In short, you must choose in every situation whether it makes sense for a sound to be global, directional, or positional.
 
@@ -335,5 +335,5 @@ You now know how to add the two most common types of sound to your game: Global
 
 [TIP]
 ====
-JME's Audio implementation also supports more advanced effects such as reverberation and Doppler effect. Use these "`pro`" features to make audio sound different depending on whether it's in the hallway, in a cave, outdoors, or in a carpeted room. Find out more about environmental effects from the sample code included in the jme3test directory and from the advanced xref:ROOT:jme3/advanced/audio.adoc[Advanced Audio] docs.
+JME's Audio implementation also supports more advanced effects such as reverberation and Doppler effect. Use these "`pro`" features to make audio sound different depending on whether it's in the hallway, in a cave, outdoors, or in a carpeted room. Find out more about environmental effects from the sample code included in the jme3test directory and from the advanced xref:core:audio/audio.adoc[Advanced Audio] docs.
 ====

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

@@ -508,7 +508,7 @@ Using physics everywhere in a game sounds like a cool idea, but it is easily ove
 
 == Conclusion
 
-You have learned how to activate the jBullet PhysicsSpace in an application by adding a `BulletAppState`. You have created PhysicsControls for simple Shape-based Geometries (for more complex shapes, read up on xref:physics/physics.adoc[CollisionShapes]). You have learned that physical objects are not only attached to the rootNode, but also registered to the PhysicsSpace. You know that it makes a difference whether a physical object has a mass (dynamic) or not (static). You are aware that overusing physics has a huge performance impact.
+You have learned how to activate the jBullet PhysicsSpace in an application by adding a `BulletAppState`. You have created PhysicsControls for simple Shape-based Geometries (for more complex shapes, read up on xref:physics:physics.adoc[CollisionShapes]). You have learned that physical objects are not only attached to the rootNode, but also registered to the PhysicsSpace. You know that it makes a difference whether a physical object has a mass (dynamic) or not (static). You are aware that overusing physics has a huge performance impact.
 
 
 [TIP]

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

@@ -9,7 +9,7 @@ Typical interactions in games include shooting, picking up objects, and opening
 
 You can pick something by either pressing a key on the keyboard, or by clicking with the mouse. In either case, you identify the target by aiming a ray –a straight line– into the scene. This method to implement picking is called _ray casting_ (which is not the same as _ray tracing_).
 
-This tutorial relies on what you have learned in the xref:beginner/hello_input_system.adoc[Hello Input] tutorial. You find more related code samples under xref:ROOT:jme3/advanced/mouse_picking.adoc[Mouse Picking] and xref:ROOT:jme3/advanced/collision_and_intersection.adoc[Collision and Intersection].
+This tutorial relies on what you have learned in the xref:beginner/hello_input_system.adoc[Hello Input] tutorial. You find more related code samples under xref:core:input/mouse_picking.adoc[Mouse Picking] and xref:core:collision/collision_and_intersection.adoc[Collision and Intersection].
 
 
 image::beginner/beginner-picking.png[beginner-picking.png,width="",height="",align="center"]

+ 11 - 11
docs/modules/tutorials/pages/concepts/faq.adoc

@@ -342,7 +342,7 @@ Use com.jme3.shadow.BasicShadowRenderer together with com.jme3.light.Directional
 
 *Learn more:*
 
-* xref:ROOT:jme3/advanced/light_and_shadow.adoc[Light and Shadow]
+* xref:core:light/light_and_shadow.adoc[Light and Shadow]
 
 *Code sample:*
 
@@ -397,7 +397,7 @@ material.getAdditionalRenderState().setWireframe(true);
 
 *Learn more:*
 
-* xref:ROOT:jme3/advanced/debugging.adoc[Debugging]
+* xref:how-to/debugging.adoc[Debugging]
 
 
 == I want to control the camera
@@ -493,8 +493,8 @@ Players typically click the mouse to pick up objects, to open doors, to shoot a
 *Learn more:*
 
 * xref:beginner/hello_picking.adoc[Hello Picking]
-* xref:ROOT:jme3/advanced/mouse_picking.adoc[Mouse Picking]
-* xref:ROOT:jme3/advanced/collision_and_intersection.adoc[Collision and Intersection]
+* xref:core:input/mouse_picking.adoc[Mouse Picking]
+* xref:core:collision/collision_and_intersection.adoc[Collision and Intersection]
 * xref:core:input/input_handling.adoc[Input Handling]
 * link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/bounding[com.jme3.bounding.]
 * link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/math/Ray.java[com.jme3.math.Ray.java]
@@ -528,7 +528,7 @@ Use collision detection. The most common solution is to use jme's physics integr
 *Learn more:*
 
 * xref:beginner/hello_collision.adoc[Hello Collision]
-* xref:physics/physics.adoc[Physics]
+* xref:physics:physics.adoc[Physics]
 * link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-bullet/src/common/java/com/jme3/bullet[com.jme3.bullet.]
 * CapsuleCollisionShape versus CompoundCollisionShape, CharacterControl versus RigidBodyControl.
 
@@ -540,7 +540,7 @@ Add physics controls to Spatials and give them spherical or cylindrical bounding
 *Learn more:*
 
 * xref:beginner/hello_physics.adoc[Hello Physics]
-* xref:physics/physics.adoc[Physics]
+* xref:physics:physics.adoc[Physics]
 * link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/bounding[com.jme3.bounding.]
 * link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-bullet/src/main/java/com/jme3/bullet/collision[com.jme3.bullet.collisions]
 * link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-bullet/src/common/java/com/jme3/bullet/control/RigidBodyControl.java[com.jme3.bullet.control.RigidBodyControl.java]
@@ -653,7 +653,7 @@ Instead of having a frozen frame while your games loads, you can have a loading
 
 *Learn more:*
 
-* xref:ROOT:jme3/advanced/loading_screen.adoc[Loading screen]
+* xref:core:gui/loading_screen.adoc[Loading screen]
 
 
 == Nifty GUI
@@ -689,7 +689,7 @@ Use AudioRenderer, Listener, and AudioNode from com.jme3.audio..
 *Learn more:*
 
 * xref:beginner/hello_audio.adoc[Hello Audio]
-* xref:ROOT:jme3/advanced/audio.adoc[Audio]
+* xref:core:audio/audio.adoc[Audio]
 
 *Code sample:*
 
@@ -704,7 +704,7 @@ For swarm like effects you use particle emitters.
 
 * xref:beginner/hello_effects.adoc[Hello Effects]
 * xref:core:effect/particle_emitters.adoc[Particle Emitters]
-* xref:ROOT:jme3/advanced/bloom_and_glow.adoc[Bloom and Glow]
+* xref:core:effect/bloom_and_glow.adoc[Bloom and Glow]
 * xref:core:effect/effects_overview.adoc[Effects Overview]
 * link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/effect/shapes/EmitterSphereShape.java[com.jme3.effect.EmitterSphereShape.java]
 * link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/effect/ParticleEmitter.java[com.jme3.effect.ParticleEmitter.java]
@@ -723,7 +723,7 @@ Use a special post-processor renderer from com.jme3.water..
 *Learn more:*
 
 * xref:core:effect/water.adoc[Water]
-* xref:ROOT:jme3/advanced/post-processor_water.adoc[Post-Processor Water]
+* xref:core:effect/post-processor_water.adoc[Post-Processor Water]
 
 *Code sample:*
 
@@ -780,7 +780,7 @@ skyGeo.setQueueBucket(Bucket.Sky)
 
 === How do I read out graphic card capabilities?
 
-If your game is heavily using features that older cards do not support, you can xref:ROOT:jme3/advanced/read_graphic_card_capabilites.adoc[Read Graphic Card Capabilites] in the beginning before starting the app, and then decide how to proceed.
+If your game is heavily using features that older cards do not support, you can xref:how-to/java/read_graphic_card_capabilites.adoc[Read Graphic Card Capabilites] in the beginning before starting the app, and then decide how to proceed.
 
 [source,java]
 ----

+ 2 - 2
docs/modules/tutorials/pages/concepts/multi-media_asset_pipeline.adoc

@@ -115,7 +115,7 @@ Note that UV coords are part of the mesh and not part of the material, so if you
 
 .  Create 3D models in a mesh editor.
 ..  Create efficient *low-polygon models*. High-polygon models may look pretty in static 3D art contests, but they slow down dynamic games!
-..  xref:ROOT:jme3/advanced/j3m_material_files.adoc[Create materials] for your models either in the 3D editor, or in the jME3 SDK. Only use the following material features: *Diffuse Map or Diffuse Color (minimum); plus optionally Normal Map, Glow Map, Specular Map.* +
+..  xref:core:material/j3m_material_files.adoc[Create materials] for your models either in the 3D editor, or in the jME3 SDK. Only use the following material features: *Diffuse Map or Diffuse Color (minimum); plus optionally Normal Map, Glow Map, Specular Map.* +
 Every material feature not listed in the xref:core:material/materials_overview.adoc[Materials Overview] is unsupported and ignored by JME3's renderer.
 ..  Unwrap the model in the 3D editor and generate a *UV texture* (i.e. one texture file that contains all the pieces of one model from different angles). +
 Don't use multiple separate texture files with one model, it will break the model into several meshes.
@@ -170,5 +170,5 @@ Important: Unoptimized external model files (.mesh.xml, .material, .obj, .mat, .
 
 == See Also
 
-*  xref:ROOT:jme3/advanced/save_and_load.adoc[Save and Load]
+*  xref:core:export/save_and_load.adoc[Save and Load]
 *  xref:sdk:model_loader_and_viewer.adoc[Model Loader and Viewer]

+ 3 - 3
docs/modules/tutorials/pages/concepts/optimization.adoc

@@ -1,6 +1,6 @@
 = Optimization reference
-:revnumber: 2.0
-:revdate: 2020/07/13
+:revnumber: 2.1
+:revdate: 2020/07/24
 :keywords: performance
 
 
@@ -20,7 +20,7 @@ You can optimize nodes using the SceneComposer in the SDK as well: Right-click a
 *Side-effects*
 
 *  Using GeometryBatchFactory merges individual Geometries into a single mesh. Thereby it becomes hard to apply specific Materials or to remove a single Geometry. Therefore it should be used for static Geometry only that does not require frequent changes or individual materials/texturing.
-*  Using a xref:ROOT:jme3/advanced/texture_atlas.adoc[Texture Atlas] provides limited individual texturing of batched geometries.
+*  Using a xref:core:jme3tools/optimize/texture_atlas.adoc[Texture Atlas] provides limited individual texturing of batched geometries.
 *  Using the still experimental BatchNode allows batching Geometry while keeping the single Geometry objects movable separately (similar to animation, the buffer gets updated per Geometry position).
 
 

+ 2 - 2
docs/modules/tutorials/pages/concepts/the_scene_graph.adoc

@@ -87,7 +87,7 @@ These default settings are called "`WASD`" keys and "`Mouse`" Look. You can cust
 
 == Scene Graph and RootNode
 
-The _scene graph_ represents your 3D world. Objects in the jME3 scene graph are called xref:core/scene/spatial.adoc[Spatial]s. Everything attached to the parent _rootNode_ is part of your scene. Your game inherits the `rootNode` object from the `SimpleApplication` class.
+The _scene graph_ represents your 3D world. Objects in the jME3 scene graph are called xref:core:scene/spatial.adoc[Spatial]s. Everything attached to the parent _rootNode_ is part of your scene. Your game inherits the `rootNode` object from the `SimpleApplication` class.
 
 
 image::tutorials:concepts/scene-graph.png[scene-graph.png,width="",height="",align="center"]
@@ -150,6 +150,6 @@ Before you start creating your game, you should plan your scene graph: Which Nod
 
 == See also
 
-*  xref:core/scene/spatial.adoc[Spatial] – More details about working with Nodes and Geometries
+*  xref:core:scene/spatial.adoc[Spatial] – More details about working with Nodes and Geometries
 *  xref:core:scene/traverse_scenegraph.adoc[Traverse SceneGraph] – Find any Node or Geometry in the scenegraph.
 *  xref:core:renderer/camera.adoc[Camera] – Learn more about the Camera in the scene.