Răsfoiți Sursa

spellcheck, last 2 thumbnails and final video embed codes

Aggror Desktop 3 ani în urmă
părinte
comite
9c1a3b2395

+ 1 - 2
en/tutorials/csharpintermediate/animation-basics.md

@@ -1,9 +1,8 @@
 # Animation basics
 # Animation basics
 
 
-## Explanation
 This C# Intermediate tutorial covers the basics of animation with Stride. All animations exist as animation clips assets in your project. From there on we can start, pause and fade animations by using Stride's animation component.
 This C# Intermediate tutorial covers the basics of animation with Stride. All animations exist as animation clips assets in your project. From there on we can start, pause and fade animations by using Stride's animation component.
 
 
 <iframe width="560" height="315" src="https://www.youtube.com/embed/o924grDYDjU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 <iframe width="560" height="315" src="https://www.youtube.com/embed/o924grDYDjU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
 
 ## Code
 ## Code
-[!code-csharp[NavigateCharacter](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\07_Animation\AnimationBasics.cs)]
+[!code-csharp[AnimationBasics](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\07_Animation\AnimationBasics.cs)]

+ 2 - 3
en/tutorials/csharpintermediate/async-scripts.md

@@ -1,7 +1,6 @@
 # Async scripts
 # Async scripts
 
 
-## Explanation
-This C# Intermediate tutorial covers the usage of asynchronous scripts or 'async' scripts. Up until this point every tutorial has been using Sync scripts. That means that those scripts are executed right after each other. If one particular sync script would take 1 second to completion, our game would freeze that 1 second, untill the update loop is complete. All of the previously made Sync scripts can be made in to an Async script.  
+This C# Intermediate tutorial covers the usage of asynchronous scripts or 'async' scripts. Up until this point every tutorial has been using Sync scripts. That means that those scripts are executed right after each other. If one particular sync script would take 1 second to complete, our game would freeze that 1 second, until the update loop is complete. All of the previously made Sync scripts can be made into an Async script.  
 
 
 With Async scripts we can perform heavy duty operations or reach out to an api without it freezing our application. A game can be made entirely with either Sync or Async scripts, or a combination of them both. 
 With Async scripts we can perform heavy duty operations or reach out to an api without it freezing our application. A game can be made entirely with either Sync or Async scripts, or a combination of them both. 
 
 
@@ -9,7 +8,7 @@ With Async scripts we can perform heavy duty operations or reach out to an api w
 
 
 ## Code
 ## Code
 ### Retrieving data from a web api
 ### Retrieving data from a web api
-A common usecase for async scripts, is retrieving data from a web API. Depending on the speed of the API and the amount of data to be be retrieved this mostly take up somewhere between 20 milliseconds and 2 seconds. 
+A common use case for async scripts is retrieving data from a web API. Depending on the speed of the API and the amount of data to be retrieved, this can take up to somewhere between 20 milliseconds and 2 seconds. 
 [!code-csharp[AsyncWebApi](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\05_Async\AsyncWebApi.cs)]
 [!code-csharp[AsyncWebApi](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\05_Async\AsyncWebApi.cs)]
 
 
 ### Async Collision trigger
 ### Async Collision trigger

+ 2 - 2
en/tutorials/csharpintermediate/audio.md

@@ -1,7 +1,7 @@
 # Audio
 # Audio
 
 
 ## Explanation
 ## Explanation
-This C# Intermediate tutorial covers the basics of audio in your game. We learn about the various types of audio formats and settings. We cover how to user 3d spatialized audio and we also look at streaming audio.
+This C# Intermediate tutorial covers the basics of audio in your game. We learn about the various types of audio formats and settings. We cover how to use 3d spatialized audio and we also look at streaming audio.
 
 
 <iframe width="560" height="315" src="https://www.youtube.com/embed/Guf7PESCwnc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 <iframe width="560" height="315" src="https://www.youtube.com/embed/Guf7PESCwnc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
 
@@ -10,4 +10,4 @@ This C# Intermediate tutorial covers the basics of audio in your game. We learn
 [!code-csharp[audio](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\08_Audio\AudioDemo.cs)]
 [!code-csharp[audio](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\08_Audio\AudioDemo.cs)]
 
 
 ### Streaming sounds
 ### Streaming sounds
-[!code-csharp[streammingaudio](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\08_Audio\LoadMusic.cs)]
+[!code-csharp[streamingaudio](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\08_Audio\LoadMusic.cs)]

+ 3 - 4
en/tutorials/csharpintermediate/collision-triggers.md

@@ -1,9 +1,8 @@
 # Collision triggers
 # Collision triggers
 
 
-## Explanation
 This C# intermediate tutorial covers the use of collision triggers. It teaches about rigid bodies and how to set those up in the editor.
 This C# intermediate tutorial covers the use of collision triggers. It teaches about rigid bodies and how to set those up in the editor.
 
 
-Rigid bodies determine how entites in our scene behave on gravity, whether they collider with other objects or in the case of this tutorial": trigger collision events in our code. We do this by setting up a collider box in our scene and letting a sphere roll through this object. The events that are triggered are then processed by the script that we will make for it.
+Rigid bodies determine how entities in our scene behave on gravity, whether they collide with other objects or in the case of this tutorial": trigger collision events in our code. We do this by setting up a collider box in our scene and letting a sphere roll through this object. The events that are triggered are then processed by the script that we will make for it.
 
 
 <iframe width="560" height="315" src="https://www.youtube.com/embed/SIy3pfoXfoQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 <iframe width="560" height="315" src="https://www.youtube.com/embed/SIy3pfoXfoQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
 
@@ -11,7 +10,7 @@ Rigid bodies determine how entites in our scene behave on gravity, whether they
 ### Rigidbodies and collisions
 ### Rigidbodies and collisions
 The code below looks for the rigidbody component that is attached to our entity. The rigidbody component contains all information we need for setting up triggers. The "IsTrigger" property determines that our collider doesn't stop other physics objects, but that it does trigger events in code (if they are set up at least).
 The code below looks for the rigidbody component that is attached to our entity. The rigidbody component contains all information we need for setting up triggers. The "IsTrigger" property determines that our collider doesn't stop other physics objects, but that it does trigger events in code (if they are set up at least).
 
 
-We spawn a sphere which also has a rigidbody. This sphere has a mass and is affected by gravity. The sphere will fall down and eventually roll through our collider box. In our update loop we check if there are collisions happening. If there are collisions, we get the colliding object and print out some text on screen. Once there sphere leaves the trigger box, our update loop sees that we no longer having collisions.
+We spawn a sphere which also has a rigidbody. This sphere has a mass and is affected by gravity. The sphere will fall down and eventually roll through our collider box. In our update loop we check if there are collisions happening. If there are collisions, we get the colliding object and print out some text on screen. Once the sphere leaves the trigger box, our update loop sees that we no longer have collisions.
 
 
-Instead of a using our update loop, we can also use collision events. 
+Instead of using our update loop, we can also use collision events. 
 [!code-csharp[collisiontriggerdemo](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\02_Collision-Triggers\CollisionTriggerDemo.cs)]
 [!code-csharp[collisiontriggerdemo](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\02_Collision-Triggers\CollisionTriggerDemo.cs)]

+ 2 - 3
en/tutorials/csharpintermediate/first-person-camera.md

@@ -1,7 +1,6 @@
 # First person camera
 # First person camera
 
 
-## Explanation
-This C# Intermediate tutorial covers the implementation of first person camera. You learn about mouse movement and how to convert that in to a 3d rotation. We setup camera angle limits and finally we apply movement to a first person character controller.
+This C# Intermediate tutorial covers the implementation of first person camera. You learn about mouse movement and how to convert that into a 3d rotation. We set up camera angle limits and finally we apply movement to a first person character controller.
 
 
 <iframe width="560" height="315" src="https://www.youtube.com/embed/MSFXydzbtuE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 <iframe width="560" height="315" src="https://www.youtube.com/embed/MSFXydzbtuE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
 
@@ -11,4 +10,4 @@ This C# Intermediate tutorial covers the implementation of first person camera.
 [!code-csharp[firstpersoncamera](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\09_FirstPersonCamera\FirstPersonCamera.cs)]
 [!code-csharp[firstpersoncamera](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\09_FirstPersonCamera\FirstPersonCamera.cs)]
 
 
 ### Character movement
 ### Character movement
-[!code-csharp[firstpersoncamera](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\10_ThirdPersonCamera\CharacterMovement.cs)]
+[!code-csharp[charactermovement](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\10_ThirdPersonCamera\CharacterMovement.cs)]

+ 1 - 1
en/tutorials/csharpintermediate/index.md

@@ -149,7 +149,7 @@ title="Stride C# intermediate youtube playlist" frameborder="0" allow="accelerom
             <li>Streaming music</li> 
             <li>Streaming music</li> 
         </ul>
         </ul>
     </div>
     </div>
-    ](sound.md) 
+    ](audio.md) 
 </div>
 </div>
 
 
 <div class='tutorial'>
 <div class='tutorial'>

+ 2 - 2
en/tutorials/csharpintermediate/media/navigation_thumb.png

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
 version https://git-lfs.github.com/spec/v1
-oid sha256:9f34f4c9acea0b1c88ca5248c9aa9228215914f5ba5f84913a35b5fb43aed2c0
-size 84587
+oid sha256:57d94e867768c008ebe934a0368b0454e2fc99f0bafb5ebfaf0e14c852a8c900
+size 89323

+ 2 - 2
en/tutorials/csharpintermediate/media/third-person-camera_thumb.png

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
 version https://git-lfs.github.com/spec/v1
-oid sha256:9f34f4c9acea0b1c88ca5248c9aa9228215914f5ba5f84913a35b5fb43aed2c0
-size 84587
+oid sha256:ca92710d5d1fad4cc516110ed5011c2c420b809732001ee069cdcd3485a69459
+size 82678

+ 2 - 3
en/tutorials/csharpintermediate/navigation.md

@@ -1,10 +1,9 @@
 # Navigation
 # Navigation
 
 
-## Explanation
 This C# Intermediate tutorial covers the basics of the navigation system in Stride. In our world we can have so called 'navigation meshes'. These are meshes that are generated around your level geometry. The navigation mesh is used to calculate the quickest path to a destination. 
 This C# Intermediate tutorial covers the basics of the navigation system in Stride. In our world we can have so called 'navigation meshes'. These are meshes that are generated around your level geometry. The navigation mesh is used to calculate the quickest path to a destination. 
-We learn about the editors Navigation mesh settings, navigation bounding boxes and in code we learn how move an object to a destination.
+We learn about the editors Navigation mesh settings, navigation bounding boxes and in code we learn how to move an object to a destination using the Navigation component that comes with the Stride engine.
 
 
-<iframe width="560" height="315" src="https://www.youtube.com/embed/..." frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+<iframe width="560" height="315" src="https://www.youtube.com/embed/_r7RAM-3neY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
 
 ## Code
 ## Code
 [!code-csharp[NavigateCharacter](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\11_Navigation\NavigateCharacter.cs)]
 [!code-csharp[NavigateCharacter](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\11_Navigation\NavigateCharacter.cs)]

+ 3 - 4
en/tutorials/csharpintermediate/project-and-unproject.md

@@ -1,11 +1,10 @@
 # Project and Unproject
 # Project and Unproject
 
 
-## Explanation
-This C# Intermediate tutorial covers projecting and unprojecting coordinates from 3D to 2Dd and visa versa. When we want to 'convert' 3D coordinates to a 2D screen, we speak 'Projecting'. The other way around is called 'Unprojecting'. Both scenarios are fairly common in 3D games. 
+This C# Intermediate tutorial covers projecting and unprojecting coordinates from 3D to 2Dd and vice versa. When we want to 'convert' 3D coordinates to a 2D screen, we speak 'Projecting'. The other way around is called 'Unprojecting'. Both scenarios are fairly common in 3D games. 
 
 
-The 3D to 2D or projecting happens for instance when you have 3d quest marker. When the target you need to travel to is somewhere in front of you in the word, then you want to draw a 2D quest marker on screen that gives you an indication of where in the 3D world that target is located.    
+The 3D to 2D or projecting happens for instance when you have a 3d quest marker. When the target you need to travel to is somewhere in front of you in the world, then you want to draw a 2D quest marker on screen that gives you an indication of where in the 3D world that target is located.    
 
 
-From 2D to 3D is often used to convert a mouse coordinate in to the looking direction of the camera. This can used for firing a weapon or setting a target on a map when playing a strategy game.
+From 2D to 3D is often used to convert a mouse coordinate into the looking direction of the camera. This can be used for firing a weapon or setting a target on a map when playing a strategy game.
 
 
 <iframe width="560" height="315" src="https://www.youtube.com/embed/r2sMWGPidis" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 <iframe width="560" height="315" src="https://www.youtube.com/embed/r2sMWGPidis" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
 

+ 3 - 4
en/tutorials/csharpintermediate/raycasting.md

@@ -1,16 +1,15 @@
 # Raycasting
 # Raycasting
 
 
-## Explanation
-This C# Intermediate tutorial covers raycasting. Raycasting is an essential subject in 3d games. With raycasts we can detect if and what kinds of objects are in our line of sight. This can used for detecting enemies or how far an object really is. 
+This C# Intermediate tutorial covers raycasting. Raycasting is an essential subject in 3d games. With raycasts we can detect if and what kinds of objects are in our line of sight. This can be used for detecting enemies or how far an object really is. 
 
 
 <iframe width="560" height="315" src="https://www.youtube.com/embed/uIM6jxM7OyE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 <iframe width="560" height="315" src="https://www.youtube.com/embed/uIM6jxM7OyE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
 
 ## Code
 ## Code
 ### Raycast
 ### Raycast
-This script send out a raycast from the weapons barrel and sends it to an endpoint a little further. We check if hit something along the way. If we do, we calculate the distance between the weapon barrel and the hit point. We than scale a laser to that distance to visualize the actual raycast. Depending on the collision group and filters, some objects are ignored.
+This script sends out a raycast from the weapons barrel and sends it to an endpoint a little further. We check if we hit something along the way. If we do, we calculate the distance between the weapon barrel and the hit point. We then scale a laser to that distance to visualize the actual raycast. Depending on the collision group and filters, some objects are ignored.
 [!code-csharp[editorpages](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\03_Raycasting\RaycastDemo.cs)]
 [!code-csharp[editorpages](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\03_Raycasting\RaycastDemo.cs)]
 
 
 
 
 ### Penetrative raycast
 ### Penetrative raycast
-In our first script, the raycast returns to us as soon as it hits the first object along it path. We can also send out a raycast to an endpoint, and let it return to us when it has reach its endpoint. It gives us back a list of objects that it has hit along the way. This list can be empty but also exist out of various objects. Depending on the collision group and filters, some objects are ignored.
+In our first script, the raycast returns to us as soon as it hits the first object along its path. We can also send out a raycast to an endpoint, and let it return to us when it has reached its endpoint. It gives us back a list of objects that it has hit along the way. This list can be empty but also exists out of various objects. Depending on the collision group and filters, some objects are ignored.
 [!code-csharp[editorpages](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\03_Raycasting\RaycastPenetratingDemo.cs)]
 [!code-csharp[editorpages](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\03_Raycasting\RaycastPenetratingDemo.cs)]

+ 2 - 3
en/tutorials/csharpintermediate/scenes.md

@@ -1,13 +1,12 @@
 # Scenes
 # Scenes
 
 
-## Explanation
-This C# Intermediate tutorial covers the concept of Scenes in Stride. Stride allows Scenes to have an infinite amount of child scenes which on their term also can load infinite amount of child scenes. However, ever scene loaded is unique. A scene can not be loaded twice at the same time. Both the editor and when loading scenes through code, will prevent a scene from being loaded twice at the same time.
+This C# Intermediate tutorial covers the concept of Scenes in Stride. Stride allows Scenes to have an infinite amount of child scenes which on their terms also can load an infinite amount of child scenes. However, every scene loaded is unique. A scene can not be loaded twice at the same time. Both the editor and when loading scenes through code, will prevent a scene from being loaded twice at the same time.
 
 
 <iframe width="560" height="315" src="https://www.youtube.com/embed/G7OvA-9erpE " frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 <iframe width="560" height="315" src="https://www.youtube.com/embed/G7OvA-9erpE " frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
 
 ## Code
 ## Code
 ### Loading a child scene
 ### Loading a child scene
-This script loads in a child scene by pressing a defined key. Pressing that same key again, will unload the loaded child scene. Every time we load the childscene again, we offset it a little in to the Y direction to demonstrate the offsetting option for child scenes.
+This script loads in a child scene by pressing a defined key. Pressing that same key again, will unload the loaded child scene. Every time we load the childscene again, we offset it a little in the Y direction to demonstrate the offsetting option for child scenes.
 [!code-csharp[editorpages](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\06_Scenes\LoadChildScene.cs)]
 [!code-csharp[editorpages](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\06_Scenes\LoadChildScene.cs)]
 
 
 ### (Re)loading a scene
 ### (Re)loading a scene

+ 3 - 4
en/tutorials/csharpintermediate/third-person-camera.md

@@ -1,10 +1,9 @@
-# First person camera
+# Third person camera
 
 
-## Explanation
-This C# Intermediate tutorial covers the implementation of a third person camera. Since it reuses a large portion of the ![First person camera](first-person-camera.md), it is recommended that your watch that tutorial first.
+This C# Intermediate tutorial covers the implementation of a third person camera. Since it reuses a large portion of the ![First person camera](first-person-camera.md), it is recommended that you watch that tutorial first.
 This tutorial teaches about how to use raycasting to position the camera behind the player. If the player is to close any walls, the camera will be moved closer to the player. Too close to the player? We simply switch to first person mode.
 This tutorial teaches about how to use raycasting to position the camera behind the player. If the player is to close any walls, the camera will be moved closer to the player. Too close to the player? We simply switch to first person mode.
 
 
-<iframe width="560" height="315" src="https://www.youtube.com/embed/..." frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+<iframe width="560" height="315" src="https://www.youtube.com/embed/qSFZ4ISFcrE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
 
 ## Code
 ## Code
 ### Third person camera
 ### Third person camera

+ 5 - 10
en/tutorials/csharpintermediate/ui-basics.md

@@ -1,22 +1,17 @@
 # UI Basics
 # UI Basics
 
 
-## Explanation
-This first C# intermediate tutorial covers the basiscs of creating UI with Stride. We will learn about the UI editor, accesing UI page elements and even how to setup UI entirely by code. The Stride editor comes with a UI editor which we can utilize to create UI pages. We can than add UI elements to these pages, like buttons and textfields.
+This first C# intermediate tutorial covers the basics of creating UI with Stride. We will learn about the UI editor, acessing UI page elements and even how to setup UI entirely by code. The Stride editor comes with a UI editor which we can utilize to create UI pages. We can then add UI elements to these pages, like buttons and textfields.
 
 
 Those UI elements can be referenced in code, so that can set up events like "button-clicked" or "text-changed". 
 Those UI elements can be referenced in code, so that can set up events like "button-clicked" or "text-changed". 
 
 
-![Cloning entities](media/ui-basics.png)
-
-<iframe width="560" height="315" src="https://www.youtube.com/embed/rB5duwfs1mU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+<iframe width="560" height="315" src="https://www.youtube.com/embed/rB5duwfs1mU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> 
+<iframe width="560" height="315" src="https://www.youtube.com/embed/NnnbHn9LQUU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
 
 ## Code
 ## Code
 ### Stride editor UI pages
 ### Stride editor UI pages
-The code below will look for a Page component that has been added to the current entity. On that page we search for UI elements like buttons and textfields. We than tell those UI elements what happends when we click on them, or that something needs to be done when a text value changes.
+The code below will look for a Page component that has been added to the current entity. On that page we search for UI elements like buttons and textfields. We than tell those UI elements what happens when we click on them, or that something needs to be done when a text value changes.
 [!code-csharp[editorpages](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\01_UI-Basics\UIByEditor.cs)]
 [!code-csharp[editorpages](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\01_UI-Basics\UIByEditor.cs)]
 
 
-
-<iframe width="560" height="315" src="https://www.youtube.com/embed/NnnbHn9LQUU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-
 ### UI pages made entirely by code
 ### UI pages made entirely by code
 This script will create everything from scratch: a UI page, a stackpanel, a button, a textfield and the interactive logic behind it.
 This script will create everything from scratch: a UI page, a stackpanel, a button, a textfield and the interactive logic behind it.
-[!code-csharp[uibycode](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\01_UI-Basics\UIByCode)]
+[!code-csharp[uibycode](..\..\..\..\stride\samples\Tutorials\CSharpIntermediate\CSharpIntermediate\CSharpIntermediate.Game\01_UI-Basics\UIByCode.cs)]

+ 1 - 1
en/tutorials/toc.md

@@ -32,7 +32,7 @@
 ## [C# Intermediate](csharpintermediate/index.md)
 ## [C# Intermediate](csharpintermediate/index.md)
 ### [UI basics](csharpintermediate/ui-basics.md)
 ### [UI basics](csharpintermediate/ui-basics.md)
 ### [Collision triggers](csharpintermediate/collision-triggers.md) 
 ### [Collision triggers](csharpintermediate/collision-triggers.md) 
-### [Racyasting](csharpintermediate/racaysting.md) 
+### [Racyasting](csharpintermediate/raycasting.md) 
 ### [Project and Unproject](csharpintermediate/project-and-unproject.md) 
 ### [Project and Unproject](csharpintermediate/project-and-unproject.md) 
 ### [Async scripts](csharpintermediate/async-scripts.md) 
 ### [Async scripts](csharpintermediate/async-scripts.md) 
 ### [Scenes](csharpintermediate/scenes.md) 
 ### [Scenes](csharpintermediate/scenes.md)