Browse Source

Merge pull request #204 from VaclavElias/update-10-docs-improvements

Update 10 - docs improvements
Vaclav Elias 2 years ago
parent
commit
a6809f87bc

+ 1 - 1
.github/workflows/stride-docs-release-azure.yml

@@ -49,7 +49,7 @@ jobs:
       # This installs the latest version of DocFX and may introduce breaking changes
       # run: dotnet tool update -g docfx
       # This installs a specific, tested version of DocFX.
-      run: dotnet tool update -g docfx --version 2.71.0
+      run: dotnet tool update -g docfx --version 2.74.0
 
     - name: Build documentation
       run: ./build-all.bat

+ 1 - 1
.github/workflows/stride-docs-release-fast-track-azure.yml

@@ -42,7 +42,7 @@ jobs:
       # This installs the latest version of DocFX and may introduce breaking changes
       # run: dotnet tool update -g docfx
       # This installs a specific, tested version of DocFX.
-      run: dotnet tool update -g docfx --version 2.71.0
+      run: dotnet tool update -g docfx --version 2.74.0
 
     - name: Build documentation
       run: ./build-all.bat

+ 1 - 1
.github/workflows/stride-docs-staging-azure.yml

@@ -49,7 +49,7 @@ jobs:
       # This installs the latest version of DocFX and may introduce breaking changes.
       # run: dotnet tool update -g docfx
       # This installs a specific, tested version of DocFX.
-      run: dotnet tool update -g docfx --version 2.71.0
+      run: dotnet tool update -g docfx --version 2.74.0
 
     - name: Build documentation
       run: ./build-all.bat

+ 1 - 1
.github/workflows/stride-docs-staging-fast-track-azure.yml

@@ -42,7 +42,7 @@ jobs:
       # This installs the latest version of DocFX and may introduce breaking changes
       # run: dotnet tool update -g docfx
       # This installs a specific, tested version of DocFX.
-      run: dotnet tool update -g docfx --version 2.71.0
+      run: dotnet tool update -g docfx --version 2.74.0
 
     - name: Build documentation
       run: ./build-all.bat

+ 3 - 0
BuildDocs.ps1

@@ -189,6 +189,9 @@ function Build-EnglishDoc {
     # Output to both build.log and console
     docfx build en/docfx.json -o $outputDirectory | Write-Host
 
+    # Build pdf files
+    docfx pdf en/docfx.json -o $outputDirectory | Write-Host
+
     return $LastExitCode
 }
 

+ 3 - 0
en/contributors/toc.yml

@@ -1,3 +1,6 @@
+pdf: true
+pdfFileName: contributing-in-stride.pdf
+items:
 - name: 🌟 Ways to Contribute
   href: ways-to-contribute.md
   expanded: true

+ 0 - 2
en/docfx.json

@@ -97,8 +97,6 @@
       },
       {
         "files": [
-          "articles/**.md",
-          "articles/**/toc.yml",
           "toc.yml",
           "*.md"
         ]

+ 8 - 0
en/index.md

@@ -50,5 +50,13 @@ Welcome to the Stride documentation, specifically designed for game developers,
     </div>
 </div>
 
+## 📥 Download PDF Versions
+
+You can download PDF versions of various Stride documentation sections:
+
+- [Stride Manual](manual/stride-manual.pdf): (File size: 82MB)
+- [Stride Tutorials](tutorials/stride-tutorials.pdf): (File size: 13MB)
+- [Contributing to Stride](contributors/contributing-in-stride.pdf): (File size: 8MB)
+
 > [!NOTE]
 > Please note that while our English documentation is actively updated, translations may not always be current. We recommend English-literate users to refer to the original for the latest information. To help with translations or report discrepancies, please see our GitHub or community forums. Your input is invaluable!

+ 0 - 270
en/manual/toc.md

@@ -1,270 +0,0 @@
-# [Manual](index.md)
-
-# [Requirements](requirements/index.md)
-
-# [Stride for Unity® developers](stride-for-unity-developers/index.md)
-<!--# [Stride for Godot developers](stride-for-godot-developers/index.md)-->
-
-# [Stride Launcher](stride-launcher/index.md)
-
-# [Get started](get-started/index.md)
-## [Install Stride](get-started/install-stride.md)
-## [Visual Studio extension](get-started/visual-studio-extension.md)
-## [Launch Stride](get-started/launch-stride.md)
-## [Create a project](get-started/create-a-project.md)
-## [Game Studio](game-studio/index.md)
-## [Assets](game-studio/assets.md)
-### [Create assets](game-studio/create-assets.md)
-### [Use assets](game-studio/use-assets.md)
-## [Scenes](game-studio/scenes.md)
-### [Create a scene](game-studio/create-a-scene.md)
-### [Add entities](game-studio/add-entities.md)
-### [Manage entities](game-studio/manage-entities.md)
-### [Navigate in the Scene Editor](game-studio/navigate-in-the-scene-editor.md)
-## [Launch a game](get-started/launch-a-game.md)
-
-# [Animation](animation/index.md)
-## [Import animations](animation/import-animations.md)
-## [Animation properties](animation/animation-properties.md)
-## [Set up animations](animation/set-up-animations.md)
-## [Preview animations](animation/preview-animations.md)
-## [Animation scripts](animation/animation-scripts.md)
-## [Additive animation](animation/additive-animation.md)
-## [Procedural animation](animation/procedural-animation.md)
-## [Custom blend trees](animation/custom-blend-trees.md)
-## [Model node links](animation/model-node-links.md)
-## [Custom attributes](animation/custom-attributes.md)
-
-# [Audio](audio/index.md)
-## [Import audio](audio/import-audio.md)
-## [Audio asset properties](audio/audio-asset-properties.md)
-## [Non-spatialized audio](audio/non-spatialized-audio.md)
-## [Spatialized audio](audio/spatialized-audio.md)
-### [Audio emitters](audio/audio-emitters.md)
-### [Audio listeners](audio/audio-listeners.md)
-### [HRTF](audio/hrtf.md)
-## [Stream audio](audio/stream-audio.md)
-## [Global audio settings](audio/global-audio-settings.md)
-## [Play a range within an audio file](audio/play-a-range-within-an-audio-file.md)
-## [Custom audio data](audio/custom-audio-data.md)
-## [Set an audio device](audio/set-an-audio-device.md)
-
-# [Engine](engine/index.md)
-## [Assets](engine/assets/index.md)
-### [Asset bundles](engine/assets/asset-bundles.md)
-### [Asset control](engine/assets/asset-control.md)
-## [Entity component model](engine/entity-component-model/index.md)
-### [Usage](engine/entity-component-model/usage.md)
-### [Manage entities](engine/entity-component-model/managing-entities.md)
-## [File system](engine/file-system.md)
-
-# [Files and folders](files-and-folders/index.md)
-## [Project structure](files-and-folders/project-structure.md)
-## [Cached files](files-and-folders/cached-files.md)
-## [Version control](files-and-folders/version-control.md)
-## [Distribute a game](files-and-folders/distribute-a-game.md)
-
-# [Game Studio](game-studio/index.md)
-## [Scenes](game-studio/scenes.md)
-### [Create and open a scene](game-studio/create-a-scene.md)
-### [Navigate in the Scene Editor](game-studio/navigate-in-the-scene-editor.md)
-### [Manage scenes](game-studio/manage-scenes.md)
-### [Load scenes](game-studio/load-scenes.md)
-### [Add entities](game-studio/add-entities.md)
-### [Manage entities](game-studio/manage-entities.md)
-## [Assets](game-studio/assets.md)
-### [Create assets](game-studio/create-assets.md)
-### [Manage assets](game-studio/manage-assets.md)
-### [Use assets](game-studio/use-assets.md)
-### [Archetypes](game-studio/archetypes.md)
-## [Prefabs](game-studio/prefabs/index.md)
-### [Create a prefab](game-studio/prefabs/create-a-prefab.md)
-### [Use prefabs](game-studio/prefabs/use-prefabs.md)
-### [Edit prefabs](game-studio/prefabs/edit-prefabs.md)
-### [Nested prefabs](game-studio/prefabs/nested-prefabs.md)
-### [Override prefab properties](game-studio/prefabs/override-prefab-properties.md)
-### [Prefab models](game-studio/prefabs/prefab-models.md)
-## [Game settings](game-studio/game-settings.md)
-### [Splash screen](game-studio/splash-screen.md)
-## [World units](game-studio/world-units.md)
-
-# [Graphics](graphics/index.md)
-## [Cameras](graphics/cameras/index.md)
-### [Camera slots](graphics/cameras/camera-slots.md)
-### [Animate a camera with a model file](graphics/cameras/animate-a-camera-with-a-model-file.md)
-## [Materials](graphics/materials/index.md)
-### [Material maps](graphics/materials/material-maps.md)
-### [Attributes](graphics/materials/material-attributes.md)
-#### [Geometry attributes](graphics/materials/geometry-attributes.md)
-#### [Shading attributes](graphics/materials/shading-attributes.md)
-#### [Misc attributes](graphics/materials/misc-attributes.md)
-#### [Clear-coat shading](graphics/materials/clear-coat-shading.md)
-### [Layers](graphics/materials/material-layers.md)
-### [Slots](graphics/materials/material-slots.md)
-### [Materials for developers](graphics/materials/materials-for-developers.md)
-## [Textures](graphics/textures/index.md)
-### [Normal maps](graphics/textures/normal-maps.md)
-### [Compression](graphics/textures/compression.md)
-### [Streaming](graphics/textures/streaming.md)
-### [Skyboxes and backgrounds](graphics/textures/skyboxes-and-backgrounds.md)
-## [Lights and shadows](graphics/lights-and-shadows/index.md)
-### [Add a light](graphics/lights-and-shadows/add-a-light.md)
-### [Point lights](graphics/lights-and-shadows/point-lights.md)
-### [Ambient lights](graphics/lights-and-shadows/ambient-lights.md)
-### [Directional lights](graphics/lights-and-shadows/directional-lights.md)
-### [Skybox lights](graphics/lights-and-shadows/skybox-lights.md)
-### [Spot lights](graphics/lights-and-shadows/spot-lights.md)
-### [Light probes](graphics/lights-and-shadows/light-probes.md)
-### [Light shafts](graphics/lights-and-shadows/light-shafts.md)
-### [Shadows](graphics/lights-and-shadows/shadows.md)
-### [Voxel Cone Tracing GI](graphics/lights-and-shadows/voxel-cone-tracing-gi.md)
-## [Post effects](graphics/post-effects/index.md)
-### [Anti-aliasing](graphics/post-effects/anti-aliasing.md)
-### [Ambient occlusion](graphics/post-effects/ambient-occlusion.md)
-### [Bloom](graphics/post-effects/bloom.md)
-### [Bright filter](graphics/post-effects/bright-filter.md)
-### [Color transforms](graphics/post-effects/color-transforms/index.md)
-#### [Film grain](graphics/post-effects/color-transforms/film-grain.md)
-#### [Gamma correction](graphics/post-effects/color-transforms/gamma-correction.md)
-#### [ToneMap](graphics/post-effects/color-transforms/tonemap.md)
-#### [Vignetting](graphics/post-effects/color-transforms/vignetting.md)
-#### [Custom color transforms](graphics/post-effects/color-transforms/custom-color-transforms.md)
-### [Depth of field](graphics/post-effects/depth-of-field.md)
-### [Lens flare](graphics/post-effects/lens-flare.md)
-### [Light streaks](graphics/post-effects/light-streaks.md)
-### [Local reflections](graphics/post-effects/local-reflections.md)
-## [Graphics compositor](graphics/graphics-compositor/index.md)
-### [Scene renderers](graphics/graphics-compositor/scene-renderers.md)
-#### [Custom scene renderers](graphics/graphics-compositor/custom-scene-renderers.md)
-### [Debug renderers](graphics/graphics-compositor/debug-renderers.md)
-### [Render textures](graphics/graphics-compositor/render-textures.md)
-### [Render group and masks](graphics/graphics-compositor/render-groups-and-masks.md)
-## [Effects and shaders](graphics/effects-and-shaders/index.md)
-### [Effect language](graphics/effects-and-shaders/effect-language.md)
-### [Shading language](graphics/effects-and-shaders/shading-language/index.md)
-#### [Classes, mixins and inheritance](graphics/effects-and-shaders/shading-language/shader-classes-mixins-and-inheritance.md)
-#### [Composition](graphics/effects-and-shaders/shading-language/composition.md)
-#### [Templates](graphics/effects-and-shaders/shading-language/templates.md)
-#### [Automatic shader stage input/output](graphics/effects-and-shaders/shading-language/automatic-shader-stage-input-output.md)
-#### [Shader stages](graphics/effects-and-shaders/shading-language/shader-stages.md)
-### [Custom shaders](graphics/effects-and-shaders/custom-shaders.md)
-### [Compile shaders](graphics/effects-and-shaders/compile-shaders.md)
-## [Low-level API](graphics/low-level-api/index.md)
-### [Textures and render textures](graphics/low-level-api/textures-and-render-textures.md)
-### [Pipeline state](graphics/low-level-api/pipeline-state.md)
-### [Resource binding](graphics/low-level-api/resources.md)
-### [Draw vertices](graphics/low-level-api/draw-vertices.md)
-### [SpriteBatch](graphics/low-level-api/spritebatch.md)
-### [SpriteFont](graphics/low-level-api/spritefont.md)
-## [Rendering pipeline](graphics/rendering-pipeline/index.md)
-### [Render features](graphics/rendering-pipeline/render-features.md)
-### [Render stages](graphics/rendering-pipeline/render-stages.md)
-## [Sprite fonts](graphics/sprite-fonts.md)
-
-# [Input](input/index.md)
-## [Gamepads](input/gamepads.md)
-## [Gestures](input/gestures.md)
-## [Keyboards](input/keyboards.md)
-## [Mouse](input/mouse.md)
-## [Pointers](input/pointers.md)
-## [Sensors](input/sensors.md)
-## [Virtual buttons](input/virtual-buttons.md)
-
-# [Navigation](navigation/index.md)
-## [Navigation groups](navigation/navigation-groups.md)
-## [Navigation meshes](navigation/navigation-meshes.md)
-## [Navigation bounding boxes](navigation/navigation-bounding-boxes.md)
-## [Navigation components](navigation/navigation-components.md)
-## [Dynamic navigation](navigation/dynamic-navigation.md)
-
-# [Particles](particles/index.md)
-## [Create particles](particles/create-particles.md)
-## [Emitters](particles/emitters.md)
-### [Shapes](particles/shapes.md)
-#### [Ribbons and trails](particles/ribbons-and-trails.md)
-### [Materials](particles/materials.md)
-### [Spawners](particles/spawners.md)
-### [Initializers](particles/initializers.md)
-### [Updaters](particles/updaters.md)
-## [Tutorials](particles/tutorials/index.md)
-### [Particle materials](particles/tutorials/particle-materials.md)
-### [Inheritance](particles/tutorials/inheritance.md)
-### [Lasers and lightning](particles/tutorials/lasers-and-lightning.md)
-### [Create a trail](particles/tutorials/create-a-trail.md)
-### [Custom particles](particles/tutorials/custom-particles.md)
-
-# [Physics](physics/index.md)
-## [Colliders](physics/colliders.md)
-### [Static colliders](physics/static-colliders.md)
-### [Rigidbodies](physics/rigid-bodies.md)
-### [Kinematic rigidbodies](physics/kinematic-rigid-bodies.md)
-### [Characters](physics/characters.md)
-### [Collider shapes](physics/collider-shapes.md)
-### [Triggers](physics/triggers.md)
-### [Constraints](physics/constraints.md)
-## [Raycasting](physics/raycasting.md)
-## [Simulation](physics/simulation.md)
-## [Tutorials](physics/tutorials.md)
-### [Create a bouncing ball](physics/create-a-bouncing-ball.md)
-### [Script a trigger](physics/script-a-trigger.md)
-
-# [Platforms](platforms/index.md)
-## [Linux](platforms/linux/index.md)
-### [Setup and requirements](platforms/linux/setup-and-requirements.md)
-### [Create a Linux game](platforms/linux/create-a-linux-game.md)
-## [UWP](platforms/uwp/index.md)
-### [Xbox Live](platforms/uwp/xbox-live.md)
-## [iOS](platforms/ios.md)
-## [Add or remove a platform](platforms/add-or-remove-a-platform.md)
-## [Set the graphics platform](platforms/set-the-graphics-platform.md)
-
-# [Scripts](scripts/index.md)
-## [Types of script](scripts/types-of-script.md)
-## [Create a script](scripts/create-a-script.md)
-## [Use a script](scripts/use-a-script.md)
-## [Public properties and fields](scripts/public-properties-and-fields.md)
-## [Serialization](scripts/serialization.md)
-## [Scheduling and priorities](scripts/scheduling-and-priorities.md)
-## [Events](scripts/events.md)
-## [Debugging](scripts/debugging.md)
-## [Preprocessor variables](scripts/preprocessor-variables.md)
-## [Create a model from code](scripts/create-a-model-from-code.md)
-
-# [Sprites](sprites/index.md)
-## [Import sprite sheets](sprites/import-sprite-sheets.md)
-## [Edit sprites](sprites/edit-sprites.md)
-### [Set sprite borders](sprites/set-sprite-borders.md)
-## [Use sprites](sprites/use-sprites.md)
-
-# [UI](ui/index.md)
-## [Pages](ui/ui-pages.md)
-## [Libraries](ui/ui-libraries.md)
-## [Editor](ui/ui-editor.md)
-## [Add a UI to a scene](ui/add-a-ui-to-a-scene.md)
-## [Layout system](ui/layout-system.md)
-
-# [Video](video/index.md)
-## [Set up a video](video/set-up-a-video.md)
-## [Video properties](video/video-properties.md)
-## [Use a video as a skybox](video/use-a-video-as-a-skybox.md)
-
-# [Virtual reality](virtual-reality/index.md)
-## [Enable VR](virtual-reality/enable-vr.md)
-## [Preview a scene in VR](virtual-reality/preview-a-scene-in-vr.md)
-## [Overlays](virtual-reality/overlays.md)
-### [Display a UI in an overlay](virtual-reality/display-a-UI-in-an-overlay.md)
-## [VR sickness](virtual-reality/vr-sickness.md)
-
-# [NuGet](nuget/index.md)
-## [Consume Packages](nuget/consume-packages.md)
-## [Create Packages](nuget/create-packages.md)
-
-# [Troubleshooting](troubleshooting/index.md)
-## [Logging](troubleshooting/logging.md)
-## [Debug text](troubleshooting/debug-text.md)
-## [Profiling](troubleshooting/profiling.md)
-## [Stride doesn't run](troubleshooting/stride-doesnt-run.md)
-## [Default value changes ignored at runtime](troubleshooting/default-value-changes-ignored-at-runtime.md)
-## [Lights don't cast shadows](troubleshooting/lights-dont-cast-shadows.md)
-## [Full call stack not available](troubleshooting/full-call-stack-not-available.md)
-## [Error: "A SceneCameraRenderer in use has no camera assigned to its [Slot]. Make sure a camera is enabled and assigned to the [Slot]"](troubleshooting/error-a-scenecamerarenderer-in-use-has-no-camera-set.md)

+ 568 - 0
en/manual/toc.yml

@@ -0,0 +1,568 @@
+pdf: true
+pdfFileName: stride-manual.pdf
+items:
+- name: Manual
+  href: index.md
+- name: Requirements
+  href: requirements/index.md
+- name: Stride for Unity® developers
+  href: stride-for-unity-developers/index.md
+# - name: Stride for Godot developers
+#   href: stride-for-godot-developers/index.md
+- name: Stride Launcher
+  href: stride-launcher/index.md
+
+- name: Get started
+  href: get-started/index.md
+  items:
+  - name: Install Stride
+    href: get-started/install-stride.md
+  - name: Visual Studio extension
+    href: get-started/visual-studio-extension.md
+  - name: Launch Stride
+    href: get-started/launch-stride.md
+  - name: Create a project
+    href: get-started/create-a-project.md
+  - name: Game Studio
+    href: game-studio/index.md
+  - name: Assets
+    href: game-studio/assets.md
+    items:
+    - name: Create assets
+      href: game-studio/create-assets.md
+    - name: Use assets
+      href: game-studio/use-assets.md
+  - name: Scenes
+    href: game-studio/scenes.md
+    items:
+    - name: Create a scene
+      href: game-studio/create-a-scene.md
+    - name: Add entities
+      href: game-studio/add-entities.md
+    - name: Manage entities
+      href: game-studio/manage-entities.md
+    - name: Navigate in the Scene Editor
+      href: game-studio/navigate-in-the-scene-editor.md
+  - name: Launch a game
+    href: get-started/launch-a-game.md
+
+- name: Animation
+  href: animation/index.md
+  items:
+  - name: Import animations
+    href: animation/import-animations.md
+  - name: Animation properties
+    href: animation/animation-properties.md
+  - name: Set up animations
+    href: animation/set-up-animations.md
+  - name: Preview animations
+    href: animation/preview-animations.md
+  - name: Animation scripts
+    href: animation/animation-scripts.md
+  - name: Additive animation
+    href: animation/additive-animation.md
+  - name: Procedural animation
+    href: animation/procedural-animation.md
+  - name: Custom blend trees
+    href: animation/custom-blend-trees.md
+  - name: Model node links
+    href: animation/model-node-links.md
+  - name: Custom attributes
+    href: animation/custom-attributes.md
+
+- name: Audio
+  href: audio/index.md
+  items:
+  - name: Import audio
+    href: audio/import-audio.md
+  - name: Audio asset properties
+    href: audio/audio-asset-properties.md
+  - name: Non-spatialized audio
+    href: audio/non-spatialized-audio.md
+  - name: Spatialized audio
+    href: audio/spatialized-audio.md
+    items:
+    - name: Audio emitters
+      href: audio/audio-emitters.md
+    - name: Audio listeners
+      href: audio/audio-listeners.md
+    - name: HRTF
+      href: audio/hrtf.md
+  - name: Stream audio
+    href: audio/stream-audio.md
+  - name: Global audio settings
+    href: audio/global-audio-settings.md
+  - name: Play a range within an audio file
+    href: audio/play-a-range-within-an-audio-file.md
+  - name: Custom audio data
+    href: audio/custom-audio-data.md
+  - name: Set an audio device
+    href: audio/set-an-audio-device.md
+
+- name: Engine
+  href: engine/index.md
+  items:
+  - name: Assets
+    href: engine/assets/index.md
+    items:
+    - name: Asset bundles
+      href: engine/assets/asset-bundles.md
+    - name: Asset control
+      href: engine/assets/asset-control.md
+  - name: Entity component model
+    href: engine/entity-component-model/index.md
+    items:
+    - name: Usage
+      href: engine/entity-component-model/usage.md
+    - name: Manage entities
+      href: engine/entity-component-model/managing-entities.md
+  - name: File system
+    href: engine/file-system.md
+
+- name: Files and folders
+  href: files-and-folders/index.md
+  items:
+  - name: Project structure
+    href: files-and-folders/project-structure.md
+  - name: Cached files
+    href: files-and-folders/cached-files.md
+  - name: Version control
+    href: files-and-folders/version-control.md
+  - name: Distribute a game
+    href: files-and-folders/distribute-a-game.md
+
+- name: Game Studio
+  href: game-studio/index.md
+  items:
+  - name: Scenes
+    href: game-studio/scenes.md
+    items:
+    - name: Create and open a scene
+      href: game-studio/create-a-scene.md
+    - name: Navigate in the Scene Editor
+      href: game-studio/navigate-in-the-scene-editor.md
+    - name: Manage scenes
+      href: game-studio/manage-scenes.md
+    - name: Load scenes
+      href: game-studio/load-scenes.md
+    - name: Add entities
+      href: game-studio/add-entities.md
+    - name: Manage entities
+      href: game-studio/manage-entities.md
+  - name: Assets
+    href: game-studio/assets.md
+    items:
+    - name: Create assets
+      href: game-studio/create-assets.md
+    - name: Manage assets
+      href: game-studio/manage-assets.md
+    - name: Use assets
+      href: game-studio/use-assets.md
+    - name: Archetypes
+      href: game-studio/archetypes.md
+  - name: Prefabs
+    href: game-studio/prefabs/index.md
+    items:
+    - name: Create a prefab
+      href: game-studio/prefabs/create-a-prefab.md
+    - name: Use prefabs
+      href: game-studio/prefabs/use-prefabs.md
+    - name: Edit prefabs
+      href: game-studio/prefabs/edit-prefabs.md
+    - name: Nested prefabs
+      href: game-studio/prefabs/nested-prefabs.md
+    - name: Override prefab properties
+      href: game-studio/prefabs/override-prefab-properties.md
+    - name: Prefab models
+      href: game-studio/prefabs/prefab-models.md
+  - name: Game settings
+    href: game-studio/game-settings.md
+    items:
+    - name: Splash screen
+      href: game-studio/splash-screen.md
+  - name: World units
+    href: game-studio/world-units.md
+
+- name: Graphics
+  href: graphics/index.md
+  items:
+  - name: Cameras
+    href: graphics/cameras/index.md
+    items:
+    - name: Camera slots
+      href: graphics/cameras/camera-slots.md
+    - name: Animate a camera with a model file
+      href: graphics/cameras/animate-a-camera-with-a-model-file.md
+  - name: Materials
+    href: graphics/materials/index.md
+    items:
+    - name: Material maps
+      href: graphics/materials/material-maps.md
+    - name: Attributes
+      href: graphics/materials/material-attributes.md
+      items:
+      - name: Geometry attributes
+        href: graphics/materials/geometry-attributes.md
+      - name: Shading attributes
+        href: graphics/materials/shading-attributes.md
+      - name: Misc attributes
+        href: graphics/materials/misc-attributes.md
+      - name: Clear-coat shading
+        href: graphics/materials/clear-coat-shading.md
+    - name: Layers
+      href: graphics/materials/material-layers.md
+    - name: Slots
+      href: graphics/materials/material-slots.md
+    - name: Materials for developers
+      href: graphics/materials/materials-for-developers.md
+  - name: Textures
+    href: graphics/textures/index.md
+    items:
+    - name: Normal maps
+      href: graphics/textures/normal-maps.md
+    - name: Compression
+      href: graphics/textures/compression.md
+    - name: Streaming
+      href: graphics/textures/streaming.md
+    - name: Skyboxes and backgrounds
+      href: graphics/textures/skyboxes-and-backgrounds.md
+  - name: Lights and shadows
+    href: graphics/lights-and-shadows/index.md
+    items:
+    - name: Add a light
+      href: graphics/lights-and-shadows/add-a-light.md
+    - name: Point lights
+      href: graphics/lights-and-shadows/point-lights.md
+    - name: Ambient lights
+      href: graphics/lights-and-shadows/ambient-lights.md
+    - name: Directional lights
+      href: graphics/lights-and-shadows/directional-lights.md
+    - name: Skybox lights
+      href: graphics/lights-and-shadows/skybox-lights.md
+    - name: Spot lights
+      href: graphics/lights-and-shadows/spot-lights.md
+    - name: Light probes
+      href: graphics/lights-and-shadows/light-probes.md
+    - name: Light shafts
+      href: graphics/lights-and-shadows/light-shafts.md
+    - name: Shadows
+      href: graphics/lights-and-shadows/shadows.md
+    - name: Voxel Cone Tracing GI
+      href: graphics/lights-and-shadows/voxel-cone-tracing-gi.md
+  - name: Post effects
+    href: graphics/post-effects/index.md
+    items:
+    - name: Anti-aliasing
+      href: graphics/post-effects/anti-aliasing.md
+    - name: Ambient occlusion
+      href: graphics/post-effects/ambient-occlusion.md
+    - name: Bloom
+      href: graphics/post-effects/bloom.md
+    - name: Bright filter
+      href: graphics/post-effects/bright-filter.md
+    - name: Color transforms
+      href: graphics/post-effects/color-transforms/index.md
+      items:
+      - name: Film grain
+        href: graphics/post-effects/color-transforms/film-grain.md
+      - name: Gamma correction
+        href: graphics/post-effects/color-transforms/gamma-correction.md
+      - name: ToneMap
+        href: graphics/post-effects/color-transforms/tonemap.md
+      - name: Vignetting
+        href: graphics/post-effects/color-transforms/vignetting.md
+      - name: Custom color transforms
+        href: graphics/post-effects/color-transforms/custom-color-transforms.md
+    - name: Depth of field
+      href: graphics/post-effects/depth-of-field.md
+    - name: Lens flare
+      href: graphics/post-effects/lens-flare.md
+    - name: Light streaks
+      href: graphics/post-effects/light-streaks.md
+    - name: Local reflections
+      href: graphics/post-effects/local-reflections.md
+  - name: Graphics compositor
+    href: graphics/graphics-compositor/index.md
+    items:
+    - name: Scene renderers
+      href: graphics/graphics-compositor/scene-renderers.md
+      items:
+      - name: Custom scene renderers
+        href: graphics/graphics-compositor/custom-scene-renderers.md
+    - name: Debug renderers
+      href: graphics/graphics-compositor/debug-renderers.md
+    - name: Render textures
+      href: graphics/graphics-compositor/render-textures.md
+    - name: Render group and masks
+      href: graphics/graphics-compositor/render-groups-and-masks.md
+  - name: Effects and shaders
+    href: graphics/effects-and-shaders/index.md
+    items:
+    - name: Effect language
+      href: graphics/effects-and-shaders/effect-language.md
+    - name: Shading language
+      href: graphics/effects-and-shaders/shading-language/index.md
+      items:
+      - name: Classes, mixins and inheritance
+        href: graphics/effects-and-shaders/shading-language/shader-classes-mixins-and-inheritance.md
+      - name: Composition
+        href: graphics/effects-and-shaders/shading-language/composition.md
+      - name: Templates
+        href: graphics/effects-and-shaders/shading-language/templates.md
+      - name: Automatic shader stage input/output
+        href: graphics/effects-and-shaders/shading-language/automatic-shader-stage-input-output.md
+      - name: Shader stages
+        href: graphics/effects-and-shaders/shading-language/shader-stages.md
+    - name: Custom shaders
+      href: graphics/effects-and-shaders/custom-shaders.md
+    - name: Compile shaders
+      href: graphics/effects-and-shaders/compile-shaders.md
+  - name: Low-level API
+    href: graphics/low-level-api/index.md
+    items:
+    - name: Textures and render textures
+      href: graphics/low-level-api/textures-and-render-textures.md
+    - name: Pipeline state
+      href: graphics/low-level-api/pipeline-state.md
+    - name: Resource binding
+      href: graphics/low-level-api/resources.md
+    - name: Draw vertices
+      href: graphics/low-level-api/draw-vertices.md
+    - name: SpriteBatch
+      href: graphics/low-level-api/spritebatch.md
+    - name: SpriteFont
+      href: graphics/low-level-api/spritefont.md
+  - name: Rendering pipeline
+    href: graphics/rendering-pipeline/index.md
+    items:
+    - name: Render features
+      href: graphics/rendering-pipeline/render-features.md
+    - name: Render stages
+      href: graphics/rendering-pipeline/render-stages.md
+  - name: Sprite fonts
+    href: graphics/sprite-fonts.md
+
+- name: Input
+  href: input/index.md
+  items:
+  - name: Gamepads
+    href: input/gamepads.md
+  - name: Gestures
+    href: input/gestures.md
+  - name: Keyboards
+    href: input/keyboards.md
+  - name: Mouse
+    href: input/mouse.md
+  - name: Pointers
+    href: input/pointers.md
+  - name: Sensors
+    href: input/sensors.md
+  - name: Virtual buttons
+    href: input/virtual-buttons.md
+
+- name: Navigation
+  href: navigation/index.md
+  items:
+  - name: Navigation groups
+    href: navigation/navigation-groups.md
+  - name: Navigation meshes
+    href: navigation/navigation-meshes.md
+  - name: Navigation bounding boxes
+    href: navigation/navigation-bounding-boxes.md
+  - name: Navigation components
+    href: navigation/navigation-components.md
+  - name: Dynamic navigation
+    href: navigation/dynamic-navigation.md
+
+- name: Particles
+  href: particles/index.md
+  items:
+  - name: Create particles
+    href: particles/create-particles.md
+  - name: Emitters
+    href: particles/emitters.md
+    items:
+    - name: Shapes
+      href: particles/shapes.md
+      items:
+      - name: Ribbons and trails
+        href: particles/ribbons-and-trails.md
+    - name: Materials
+      href: particles/materials.md
+    - name: Spawners
+      href: particles/spawners.md
+    - name: Initializers
+      href: particles/initializers.md
+    - name: Updaters
+      href: particles/updaters.md
+  - name: Tutorials
+    href: particles/tutorials/index.md
+    items:
+    - name: Particle materials
+      href: particles/tutorials/particle-materials.md
+    - name: Inheritance
+      href: particles/tutorials/inheritance.md
+    - name: Lasers and lightning
+      href: particles/tutorials/lasers-and-lightning.md
+    - name: Create a trail
+      href: particles/tutorials/create-a-trail.md
+    - name: Custom particles
+      href: particles/tutorials/custom-particles.md
+
+- name: Physics
+  href: physics/index.md
+  items:
+  - name: Colliders
+    href: physics/colliders.md
+    items:
+    - name: Static colliders
+      href: physics/static-colliders.md
+    - name: Rigidbodies
+      href: physics/rigid-bodies.md
+    - name: Kinematic rigidbodies
+      href: physics/kinematic-rigid-bodies.md
+    - name: Characters
+      href: physics/characters.md
+    - name: Collider shapes
+      href: physics/collider-shapes.md
+    - name: Triggers
+      href: physics/triggers.md
+    - name: Constraints
+      href: physics/constraints.md
+  - name: Raycasting
+    href: physics/raycasting.md
+  - name: Simulation
+    href: physics/simulation.md
+  - name: Tutorials
+    href: physics/tutorials.md
+    items:
+    - name: Create a bouncing ball
+      href: physics/create-a-bouncing-ball.md
+    - name: Script a trigger
+      href: physics/script-a-trigger.md
+
+- name: Platforms
+  href: platforms/index.md
+  items:
+  - name: Linux
+    href: platforms/linux/index.md
+    items:
+    - name: Setup and requirements
+      href: platforms/linux/setup-and-requirements.md
+    - name: Create a Linux game
+      href: platforms/linux/create-a-linux-game.md
+  - name: UWP
+    href: platforms/uwp/index.md
+    items:
+    - name: Xbox Live
+      href: platforms/uwp/xbox-live.md
+  - name: iOS
+    href: platforms/ios.md
+  - name: Add or remove a platform
+    href: platforms/add-or-remove-a-platform.md
+  - name: Set the graphics platform
+    href: platforms/set-the-graphics-platform.md
+
+- name: Scripts
+  href: scripts/index.md
+  items:
+  - name: Types of script
+    href: scripts/types-of-script.md
+  - name: Create a script
+    href: scripts/create-a-script.md
+  - name: Use a script
+    href: scripts/use-a-script.md
+  - name: Public properties and fields
+    href: scripts/public-properties-and-fields.md
+  - name: Serialization
+    href: scripts/serialization.md
+  - name: Scheduling and priorities
+    href: scripts/scheduling-and-priorities.md
+  - name: Events
+    href: scripts/events.md
+  - name: Debugging
+    href: scripts/debugging.md
+  - name: Preprocessor variables
+    href: scripts/preprocessor-variables.md
+  - name: Create a model from code
+    href: scripts/create-a-model-from-code.md
+
+- name: Sprites
+  href: sprites/index.md
+  items:
+  - name: Import sprite sheets
+    href: sprites/import-sprite-sheets.md
+  - name: Edit sprites
+    href: sprites/edit-sprites.md
+    items:
+    - name: Set sprite borders
+      href: sprites/set-sprite-borders.md
+  - name: Use sprites
+    href: sprites/use-sprites.md
+
+- name: UI
+  href: ui/index.md
+  items:
+  - name: Pages
+    href: ui/ui-pages.md
+  - name: Libraries
+    href: ui/ui-libraries.md
+  - name: Editor
+    href: ui/ui-editor.md
+  - name: Add a UI to a scene
+    href: ui/add-a-ui-to-a-scene.md
+  - name: Layout system
+    href: ui/layout-system.md
+
+- name: Video
+  href: video/index.md
+  items:
+  - name: Set up a video
+    href: video/set-up-a-video.md
+  - name: Video properties
+    href: video/video-properties.md
+  - name: Use a video as a skybox
+    href: video/use-a-video-as-a-skybox.md
+
+- name: Virtual reality
+  href: virtual-reality/index.md
+  items:
+  - name: Enable VR
+    href: virtual-reality/enable-vr.md
+  - name: Preview a scene in VR
+    href: virtual-reality/preview-a-scene-in-vr.md
+  - name: Overlays
+    href: virtual-reality/overlays.md
+    items:
+    - name: Display a UI in an overlay
+      href: virtual-reality/display-a-UI-in-an-overlay.md
+  - name: VR sickness
+    href: virtual-reality/vr-sickness.md
+
+- name: NuGet
+  href: nuget/index.md
+  items:
+  - name: Consume Packages
+    href: nuget/consume-packages.md
+  - name: Create Packages
+    href: nuget/create-packages.md
+
+- name: Troubleshooting
+  href: troubleshooting/index.md
+  items:
+  - name: Logging
+    href: troubleshooting/logging.md
+  - name: Debug text
+    href: troubleshooting/debug-text.md
+  - name: Profiling
+    href: troubleshooting/profiling.md
+  - name: Stride doesn't run
+    href: troubleshooting/stride-doesnt-run.md
+  - name: Default value changes ignored at runtime
+    href: troubleshooting/default-value-changes-ignored-at-runtime.md
+  - name: Lights don't cast shadows
+    href: troubleshooting/lights-dont-cast-shadows.md
+  - name: Full call stack not available
+    href: troubleshooting/full-call-stack-not-available.md
+  - name: "Error: A SceneCameraRenderer in use has no camera assigned to its [Slot]. Make sure a camera is enabled and assigned to the [Slot]"
+    href: troubleshooting/error-a-scenecamerarenderer-in-use-has-no-camera-set.md

+ 5 - 0
en/template/public/main.css

@@ -36,6 +36,11 @@
     --bs-link-hover-color-rgb: 247, 149, 149 !important;
 }
 
+.link-secondary {
+    padding-left: 10px;
+    display: block;
+}
+
 footer .link-danger {
     color: var(--stride-red-web);
 }

+ 2 - 5
en/template/public/main.js

@@ -237,15 +237,12 @@ const app = {
     },
     start: function () {
 
-        // Call the function to start waiting for the navbar element
         this.waitForNavbarAndAddLanguageNavigation();
-
         this.addVersionNavigation();
         this.loadVersions();
     }
 };
 
-export default app;
+app.start = app.start.bind(app);
 
-// Start the app when the DOM content is loaded
-document.addEventListener("DOMContentLoaded", () => app.start());
+export default app;

+ 3 - 0
en/tutorials/toc.yml

@@ -1,3 +1,6 @@
+pdf: true
+pdfFileName: stride-tutorials.pdf
+items:
 - name: 🎓 Tutorials
   href: index.md
 - name: 🛠️ Game studio