diff --git a/CHANGELOG.md b/CHANGELOG.md index 285f1fd1d..6a76a2721 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Built with Unity 2021.2. ### Added +- Gate Lifter Component ([#418](https://github.com/freezy/VisualPinball.Engine/pull/418), [Documentation](https://docs.visualpinball.org/creators-guide/manual/mechanisms/lifting-gates.html)). - Asset Browser ([#412](https://github.com/freezy/VisualPinball.Engine/pull/412)) - Trigger meshes can now be easily scaled ([#374](https://github.com/freezy/VisualPinball.Engine/pull/374)) - We got a new game item called *Metal Wire Guide* (thanks @Cupiii, [#366](https://github.com/freezy/VisualPinball.Engine/pull/366)) diff --git a/README.md b/README.md index 6aa5a0944..9c047e2cf 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ This repository is part of a number of packages. It is what we're referring to a VPE is still work in progress. You can check the current features list [here](https://docs.visualpinball.org/creators-guide/introduction/features.html) and the open issues [here](https://github.com/freezy/VisualPinball.Engine/issues). -There are a few videos in the [VPF thread](https://www.vpforums.org/index.php?showtopic=43651), +There are a few videos in the [VPF thread](https://vpuniverse.com/forums/topic/5362-wip-visual-pinball-in-unity-2021-edition/), where you can discuss. Screenshots are [here](https://github.com/freezy/VisualPinball.Engine/wiki/Unity-Screenshots)! :) ## Credits diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_blue/gate_lifter.png b/VisualPinball.Unity/Assets/Editor/Icons/small_blue/gate_lifter.png new file mode 100644 index 000000000..555595c46 Binary files /dev/null and b/VisualPinball.Unity/Assets/Editor/Icons/small_blue/gate_lifter.png differ diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_blue/gate_lifter.png.meta b/VisualPinball.Unity/Assets/Editor/Icons/small_blue/gate_lifter.png.meta new file mode 100644 index 000000000..7394cb358 --- /dev/null +++ b/VisualPinball.Unity/Assets/Editor/Icons/small_blue/gate_lifter.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: f8f0f43b8608e9541a2a0553c07a7d92 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_gray/gate_lifter.png b/VisualPinball.Unity/Assets/Editor/Icons/small_gray/gate_lifter.png new file mode 100644 index 000000000..27bd62aef Binary files /dev/null and b/VisualPinball.Unity/Assets/Editor/Icons/small_gray/gate_lifter.png differ diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_gray/gate_lifter.png.meta b/VisualPinball.Unity/Assets/Editor/Icons/small_gray/gate_lifter.png.meta new file mode 100644 index 000000000..9bf08c652 --- /dev/null +++ b/VisualPinball.Unity/Assets/Editor/Icons/small_gray/gate_lifter.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 089b7800e18ce404c8608d12ff6c9447 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_green/gate_lifter.png b/VisualPinball.Unity/Assets/Editor/Icons/small_green/gate_lifter.png new file mode 100644 index 000000000..9f8ecf132 Binary files /dev/null and b/VisualPinball.Unity/Assets/Editor/Icons/small_green/gate_lifter.png differ diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_green/gate_lifter.png.meta b/VisualPinball.Unity/Assets/Editor/Icons/small_green/gate_lifter.png.meta new file mode 100644 index 000000000..3731303e2 --- /dev/null +++ b/VisualPinball.Unity/Assets/Editor/Icons/small_green/gate_lifter.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 053e6782a62aa9c4699bf978fd100260 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_orange/gate_lifter.png b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/gate_lifter.png new file mode 100644 index 000000000..ac6be4a67 Binary files /dev/null and b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/gate_lifter.png differ diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_orange/gate_lifter.png.meta b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/gate_lifter.png.meta new file mode 100644 index 000000000..1b0674ff2 --- /dev/null +++ b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/gate_lifter.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 714ba3a4d70e7484eb2a5e702bc528b0 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/lifting-gate-inspector.png b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/lifting-gate-inspector.png new file mode 100644 index 000000000..97630a439 Binary files /dev/null and b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/lifting-gate-inspector.png differ diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/lifting-gate.jpg b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/lifting-gate.jpg new file mode 100644 index 000000000..2559eba8c Binary files /dev/null and b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/lifting-gate.jpg differ diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/lifting-gates.md b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/lifting-gates.md new file mode 100644 index 000000000..91177bbaf --- /dev/null +++ b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/lifting-gates.md @@ -0,0 +1,38 @@ +--- +uid: gate_lifter +title: Lifting Gates +description: This component makes your gate toggelable by a coil. It works by lifting it up so the ball can pass below. +--- + +# Lifting Gates + +
+
+
+In order to add the lifting gate feature to a gate, select the game object of the gate and click on *Add Component* in the inspector. Select it by searching or navigating to *Visual Pinball -> Mechs -> Gate Lifter*.
+
+### Lifting Angle
+
+How many degrees the wire rotates up to the deactivated position. About 15° should work well for most geometry.
+
+### Animation Speed
+
+How fast the gate rotates from and into the decativated position. Higher is faster. `0.1` seems a reasonable value.
+
+## Usage
+
+Adding the gate lifter component adds a coil input to the gate, i.e. you can map it to any of the gamelogic engine's coil outputs through the [Coil Manager](xref:coil_manager).
+
+> [!NOTE]
+> If you're working on an EM game or an original game with [Visual Scripting](xref:uvs_index), don't forget to add the new coil to the [coil definitions](xref:uvs_setup#coils).
\ No newline at end of file
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/toc.yml b/VisualPinball.Unity/Documentation~/creators-guide/toc.yml
index b1a94e913..d42afcc2e 100644
--- a/VisualPinball.Unity/Documentation~/creators-guide/toc.yml
+++ b/VisualPinball.Unity/Documentation~/creators-guide/toc.yml
@@ -87,3 +87,5 @@
href: manual/mechanisms/rotators.md
- name: Collision Switches
href: manual/mechanisms/collision-switches.md
+ - name: Lifting Gates
+ href: manual/mechanisms/lifting-gates.md
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/1-prepare-artwork.md b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/1-prepare-artwork.md
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/1-prepare-artwork.md
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/1-prepare-artwork.md
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/2-create-mesh.md b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/2-create-mesh.md
similarity index 98%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/2-create-mesh.md
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/2-create-mesh.md
index 40d1ab3b0..1e074cbcb 100644
--- a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/2-create-mesh.md
+++ b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/2-create-mesh.md
@@ -1,62 +1,62 @@
----
-uid: tutorial_plastics_2
-title: Realistic Looking Plastics - Create Mesh
-description: How to create the meshes in Blender
----
-
-# Create Mesh
-
-We're now going to import the SVG created in the [previous step](xref:tutorial_plastics_1) and create a mesh that is beveled on the top.
-
-## Step 1: Import
-
-Open Blender, clear the scene with `A`, `X`, `Enter`. Then, click on *File -> Import -> Scalable Vector Graphics (.svg)*, navigate to where you've saved the SVG in the previous step, select `Plastics.svg`, and hit *Import*.
-
-You might not see much due to the imported size. If there were no errors, you should see your imported plastics in the Outliner. Select them and press `.` on the numpad (not the main keyboard) while hovering over the 3D viewport to zoom in.
-
-> [!note]
-> You might run into another issue due to the size of the plastics: Camera clipping. To fix that, press `N` with your cursor over the 3D Viewport, select *View* and set something like 0.001m for *Clip Start*.
-
-Your viewport should look like this now:
-
-
-
-## Step 2: Setup
-
-The way we're going for this is to extrude and bevel our SVG on one side only. This however results in the bottom faces missing. To fix that, we'll duplicate our SVG and use one for extrusion and the other for the bottom mesh.
-
-Before we start, let's make it one single object so we can easily apply everything we do in one step. Select one element, hit `A` for select all, then `Ctrl`+`J` for joining all curves.
-
-Hit `Shift`+`D`, `Esc` to duplicate at the same position. In the *Outliner*, let's name our objects "bottom" and "extruded":
-
-
-
-## Step 3: Extrude
-
-Select "extruded" in the outliner and click on the *Object Properties* tab in the *Properties* view on the right side. Under *Geometry*, there is an *Extrude* field, and a bit below a *Bevel* section.
-
-Now, the *Extrude* value is difficult to judge. If you have access to the physical plastics, you can calculate the scale between the real world and the object in Blender by physically measuring the size of a plastic and dividing it by the [measured value](https://docs.blender.org/manual/en/latest/editors/3dview/toolbar/measure.html) in Blender. Then, also measure the thickness of the real-world plastic and multiply it by that factor. Personally, I just eyeballed it and ended up with 0.003 m for the *Extrude* value and 0.001 m for the *Bevel Depth*.
-
-Then there are three more properties to change:
-
-- We only want to extrude the front, so set *Fill Mode* to *Front*.
-- We don't want to make the object larger by beveling, so enter the negative value of the bevel depth under *Offset*.
-- Finally, a *Resolution* of `0` will do.
-
-Here are all the non-default options in red:
-
-
-
-## Step 4: Convert, Join and Clean
-
-As seen in the previous screenshot, our bottom object now sits in the middle of the extruded mesh. Let's fix that by typing `G` (move), `Z` (on z-axis only), and the extrude value of the previous step, in our case `0.003`, followed by `Enter`.
-
-Then type `A` to select all objects, choose *Object -> Convert -> Mesh*, and hit `Ctrl`+`J` to join them all. Finally, clean up the duplicated vertices from the extrusion by hitting `Tab` for edit mode, `A` to select all vertices, and choose *Mesh -> Clean Up -> Merge by Distance*.
-
-Exit edit mode and this is how it should look:
-
-
-
-If that's the case, congrats, you're done with the meshes! Maybe now it's a good moment to save your Blender file. `Ctrl`+`S` and enter `Plastics.blend`.
-
-In the [next part](xref:tutorial_plastics_3) of this tutorial, we're going to UV-Map them.
+---
+uid: tutorial_plastics_2
+title: Realistic Looking Plastics - Create Mesh
+description: How to create the meshes in Blender
+---
+
+# Create Mesh
+
+We're now going to import the SVG created in the [previous step](xref:tutorial_plastics_1) and create a mesh that is beveled on the top.
+
+## Step 1: Import
+
+Open Blender, clear the scene with `A`, `X`, `Enter`. Then, click on *File -> Import -> Scalable Vector Graphics (.svg)*, navigate to where you've saved the SVG in the previous step, select `Plastics.svg`, and hit *Import*.
+
+You might not see much due to the imported size. If there were no errors, you should see your imported plastics in the Outliner. Select them and press `.` on the numpad (not the main keyboard) while hovering over the 3D viewport to zoom in.
+
+> [!note]
+> You might run into another issue due to the size of the plastics: Camera clipping. To fix that, press `N` with your cursor over the 3D Viewport, select *View* and set something like 0.001m for *Clip Start*.
+
+Your viewport should look like this now:
+
+
+
+## Step 2: Setup
+
+The way we're going for this is to extrude and bevel our SVG on one side only. This however results in the bottom faces missing. To fix that, we'll duplicate our SVG and use one for extrusion and the other for the bottom mesh.
+
+Before we start, let's make it one single object so we can easily apply everything we do in one step. Select one element, hit `A` for select all, then `Ctrl`+`J` for joining all curves.
+
+Hit `Shift`+`D`, `Esc` to duplicate at the same position. In the *Outliner*, let's name our objects "bottom" and "extruded":
+
+
+
+## Step 3: Extrude
+
+Select "extruded" in the outliner and click on the *Object Properties* tab in the *Properties* view on the right side. Under *Geometry*, there is an *Extrude* field, and a bit below a *Bevel* section.
+
+Now, the *Extrude* value is difficult to judge. If you have access to the physical plastics, you can calculate the scale between the real world and the object in Blender by physically measuring the size of a plastic and dividing it by the [measured value](https://docs.blender.org/manual/en/latest/editors/3dview/toolbar/measure.html) in Blender. Then, also measure the thickness of the real-world plastic and multiply it by that factor. Personally, I just eyeballed it and ended up with 0.003 m for the *Extrude* value and 0.001 m for the *Bevel Depth*.
+
+Then there are three more properties to change:
+
+- We only want to extrude the front, so set *Fill Mode* to *Front*.
+- We don't want to make the object larger by beveling, so enter the negative value of the bevel depth under *Offset*.
+- Finally, a *Resolution* of `0` will do.
+
+Here are all the non-default options in red:
+
+
+
+## Step 4: Convert, Join and Clean
+
+As seen in the previous screenshot, our bottom object now sits in the middle of the extruded mesh. Let's fix that by typing `G` (move), `Z` (on z-axis only), and the extrude value of the previous step, in our case `0.003`, followed by `Enter`.
+
+Then type `A` to select all objects, choose *Object -> Convert -> Mesh*, and hit `Ctrl`+`J` to join them all. Finally, clean up the duplicated vertices from the extrusion by hitting `Tab` for edit mode, `A` to select all vertices, and choose *Mesh -> Clean Up -> Merge by Distance*.
+
+Exit edit mode and this is how it should look:
+
+
+
+If that's the case, congrats, you're done with the meshes! Maybe now it's a good moment to save your Blender file. `Ctrl`+`S` and enter `Plastics.blend`.
+
+In the [next part](xref:tutorial_plastics_3) of this tutorial, we're going to UV-Map them.
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/3-uv-map-mesh.md b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/3-uv-map-mesh.md
similarity index 98%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/3-uv-map-mesh.md
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/3-uv-map-mesh.md
index 20d7bf34f..04853325d 100644
--- a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/3-uv-map-mesh.md
+++ b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/3-uv-map-mesh.md
@@ -1,71 +1,71 @@
----
-uid: tutorial_plastics_3
-title: Realistic Looking Plastics - UV-Map Mesh
-description: How to UV-map the texture onto your mesh in Blender
----
-
-# UV-Map Mesh
-
-
-## Step 1: Create Material Slots
-
- We need three material slots, for the top and bottom faces, as well as for the edges. We'll split the vertices by firstly assigning everything to an "edge" slot, and then re-assigning the top and bottom faces to their own slots.
-
-
-
-In object mode, open *Materials* properties and remove the current material slot (hit `-`). Add three new slots (press 3× `+`), and for each slot, create a new material by hitting the *New* button when the slot is selected. Name them "top", "bottom" and "edge" and set their base color to red, green, and blue respectively. Your slots should now look like in the screenshot.
-
-Set the 3D viewport to *Material Preview*. Select your mesh, press `Tab` to switch to edit mode. Press `A` to select all vertices, select the "edge" material slot, and hit *Assign*. Your plastics should turn blue. Press `A` twice to deselect everything.
-
-Then, press `7` on the numpad to switch to top view, zoom in a bit so you can clearly see the triangles, switch to *Face Select* and click on one face of the top surface:
-
-
-
-
-
-Click on *Select -> Select Similar -> Coplanar*, which should result in all top faces of all plastics being selected (but *not* the bottoms ones). However, you might get the bottom faces selected too, because there's a threshold that might be too large. You can check it by rotating the camera and verify that the bottom faces are not selected. If they are, expand the parameters and set the threshold to a small enough value. Then, select the "top" material slot and hit *Assign*. The top surfaces should turn red.
-
-For the bottom faces, hit `7`, `9` on the numpad to switch to bottom view, and select again one face. Like before, select all coplanar faces, click the "bottom" material slot, and *Assign*. You should see the bottom faces turn green.
-
-Now, the "edges" material slot should only contain the edges. Check by unselecting all (`A` `A`), then selecting the "edge" material slot and hitting *Select*. This should only select the edges, like here:
-
-
-
-Your meshes should now be colored like this (from top / bottom):
-
-
-
-## Step 2: UV-Map
-
-Switch to the *UV Editing* workspace. In the left *UV Editor*, choose *Image -> Open*, and select the exported `Plastic-01.png` you've created in part one. On the right, enter edit mode, click on the "top" material slot in the *Materials* property tab, and hit *Select*. Click on "bottom" and then on *Select* again.
-
-From the *UV* menu, select *Cube Projection*. Move your cursor to the left view and press `A`. You should see both the top and bottom surfaces projected onto your texture:
-
-
-
-We're now going to align the projection with the texture. You can do that by using the `G` and `S` keys. What's important is to align the **outer** contour with the texture, like so:
-
-
-
-## Step 3: Prepare and Export
-
-Once done, switch back to the *Layout* workspace. Before we export, there's still a bit of a clean up to do. In edit mode, hit `A` to select all and choose *Mesh -> Clean Up -> Limited Dissolve*. Exit edit mode, go to *Modifier Properties*, add the *Triangulate* modifier, and hit `Ctrl`+`A` to apply.
-
-What we just did reduced the complexity of our topology. We triangulate at the end to avoid problems during export.
-
-
-
-From left to right:
-- Original (102k vertices, 44k triangles)
-- After limited dissolve (66k vertices, 30k triangles, but errors in mesh)
-- After triangulation (66k vertices, 30k triangles)
-
-Switch to the *Object Data* properties, and under *Normals*, enable *Auto Smooth*. This will properly align the normals on the bevel side, giving it a more realistic refraction effect.
-
-We still have one single object, so before exporting, let's split it. In edit mode, hit `A` to select all and choose *Mesh -> Separate -> By Loose Parts*. Before exporting, feel free to rename your objects in the Outliner, it's what you'll see in Unity.
-
-Lastly, in object mode, hit `A` to select all objects and click on *Object -> Set Origin -> Origin to Geometry*. This will set the local origin of each object to the object itself, making it easier to place it.
-
-Export the plastics by selecting *File -> Export -> FBX*. Name it `Plastics.fbx` and hit *Export FBX*.
-
-Now let's [import this into Unity](xref:tutorial_plastics_4)!
+---
+uid: tutorial_plastics_3
+title: Realistic Looking Plastics - UV-Map Mesh
+description: How to UV-map the texture onto your mesh in Blender
+---
+
+# UV-Map Mesh
+
+
+## Step 1: Create Material Slots
+
+ We need three material slots, for the top and bottom faces, as well as for the edges. We'll split the vertices by firstly assigning everything to an "edge" slot, and then re-assigning the top and bottom faces to their own slots.
+
+
+
+In object mode, open *Materials* properties and remove the current material slot (hit `-`). Add three new slots (press 3× `+`), and for each slot, create a new material by hitting the *New* button when the slot is selected. Name them "top", "bottom" and "edge" and set their base color to red, green, and blue respectively. Your slots should now look like in the screenshot.
+
+Set the 3D viewport to *Material Preview*. Select your mesh, press `Tab` to switch to edit mode. Press `A` to select all vertices, select the "edge" material slot, and hit *Assign*. Your plastics should turn blue. Press `A` twice to deselect everything.
+
+Then, press `7` on the numpad to switch to top view, zoom in a bit so you can clearly see the triangles, switch to *Face Select* and click on one face of the top surface:
+
+
+
+
+
+Click on *Select -> Select Similar -> Coplanar*, which should result in all top faces of all plastics being selected (but *not* the bottoms ones). However, you might get the bottom faces selected too, because there's a threshold that might be too large. You can check it by rotating the camera and verify that the bottom faces are not selected. If they are, expand the parameters and set the threshold to a small enough value. Then, select the "top" material slot and hit *Assign*. The top surfaces should turn red.
+
+For the bottom faces, hit `7`, `9` on the numpad to switch to bottom view, and select again one face. Like before, select all coplanar faces, click the "bottom" material slot, and *Assign*. You should see the bottom faces turn green.
+
+Now, the "edges" material slot should only contain the edges. Check by unselecting all (`A` `A`), then selecting the "edge" material slot and hitting *Select*. This should only select the edges, like here:
+
+
+
+Your meshes should now be colored like this (from top / bottom):
+
+
+
+## Step 2: UV-Map
+
+Switch to the *UV Editing* workspace. In the left *UV Editor*, choose *Image -> Open*, and select the exported `Plastic-01.png` you've created in part one. On the right, enter edit mode, click on the "top" material slot in the *Materials* property tab, and hit *Select*. Click on "bottom" and then on *Select* again.
+
+From the *UV* menu, select *Cube Projection*. Move your cursor to the left view and press `A`. You should see both the top and bottom surfaces projected onto your texture:
+
+
+
+We're now going to align the projection with the texture. You can do that by using the `G` and `S` keys. What's important is to align the **outer** contour with the texture, like so:
+
+
+
+## Step 3: Prepare and Export
+
+Once done, switch back to the *Layout* workspace. Before we export, there's still a bit of a clean up to do. In edit mode, hit `A` to select all and choose *Mesh -> Clean Up -> Limited Dissolve*. Exit edit mode, go to *Modifier Properties*, add the *Triangulate* modifier, and hit `Ctrl`+`A` to apply.
+
+What we just did reduced the complexity of our topology. We triangulate at the end to avoid problems during export.
+
+
+
+From left to right:
+- Original (102k vertices, 44k triangles)
+- After limited dissolve (66k vertices, 30k triangles, but errors in mesh)
+- After triangulation (66k vertices, 30k triangles)
+
+Switch to the *Object Data* properties, and under *Normals*, enable *Auto Smooth*. This will properly align the normals on the bevel side, giving it a more realistic refraction effect.
+
+We still have one single object, so before exporting, let's split it. In edit mode, hit `A` to select all and choose *Mesh -> Separate -> By Loose Parts*. Before exporting, feel free to rename your objects in the Outliner, it's what you'll see in Unity.
+
+Lastly, in object mode, hit `A` to select all objects and click on *Object -> Set Origin -> Origin to Geometry*. This will set the local origin of each object to the object itself, making it easier to place it.
+
+Export the plastics by selecting *File -> Export -> FBX*. Name it `Plastics.fbx` and hit *Export FBX*.
+
+Now let's [import this into Unity](xref:tutorial_plastics_4)!
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/4-import-into-unity.md b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/4-import-into-unity.md
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/4-import-into-unity.md
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/4-import-into-unity.md
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-duplicated-surface.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-duplicated-surface.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-duplicated-surface.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-duplicated-surface.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-edges-selected.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-edges-selected.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-edges-selected.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-edges-selected.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-extrude.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-extrude.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-extrude.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-extrude.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-extruded.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-extruded.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-extruded.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-extruded.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-material-geometry.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-material-geometry.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-material-geometry.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-material-geometry.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-material-slots.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-material-slots.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-material-slots.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-material-slots.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-no-lower-bevel.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-no-lower-bevel.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-no-lower-bevel.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-no-lower-bevel.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-normals.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-normals.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-normals.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-normals.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-poly-reduction.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-poly-reduction.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-poly-reduction.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-poly-reduction.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-select-coplanar.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-select-coplanar.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-select-coplanar.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-select-coplanar.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-shapes.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-shapes.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-shapes.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-shapes.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-triangle-selected-2.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-triangle-selected-2.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-triangle-selected-2.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-triangle-selected-2.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-triangle-selected.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-triangle-selected.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-triangle-selected.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-triangle-selected.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-triangulated.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-triangulated.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-triangulated.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-triangulated.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-uv-mapped.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-uv-mapped.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-uv-mapped.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-uv-mapped.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-uv-mapping.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-uv-mapping.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/blender-uv-mapping.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/blender-uv-mapping.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-export-svg.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-export-svg.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-export-svg.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-export-svg.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-export-texture.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-export-texture.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-export-texture.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-export-texture.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-joined-artwork.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-joined-artwork.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-joined-artwork.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-joined-artwork.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-joined-surfaces.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-joined-surfaces.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-joined-surfaces.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-joined-surfaces.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-new-document.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-new-document.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-new-document.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-new-document.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-separate-artwork.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-separate-artwork.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/illustrator-separate-artwork.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/illustrator-separate-artwork.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/index.md b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/index.md
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/index.md
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/index.md
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/overview.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/overview.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/overview.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/overview.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/t2-example.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/t2-example.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/t2-example.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/t2-example.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/unity-decal-material-preview.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/unity-decal-material-preview.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/unity-decal-material-preview.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/unity-decal-material-preview.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/unity-imported.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/unity-imported.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/unity-imported.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/unity-imported.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/unity-textured.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/unity-textured.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/unity-textured.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/unity-textured.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/unity-transparent-textured.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/unity-transparent-textured.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/unity-transparent-textured.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/unity-transparent-textured.png
diff --git a/VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/unity-transparent.png b/VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/unity-transparent.png
similarity index 100%
rename from VisualPinball.Unity/Documentation~/creators-guide/tutorials/relatistic-plastics/unity-transparent.png
rename to VisualPinball.Unity/Documentation~/creators-guide/tutorials/realistic-plastics/unity-transparent.png
diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Display/ScoreReelDisplayInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Display/ScoreReelDisplayInspector.cs
index df354d35d..471792844 100644
--- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Display/ScoreReelDisplayInspector.cs
+++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Display/ScoreReelDisplayInspector.cs
@@ -37,10 +37,14 @@ private void OnEnable()
public override void OnInspectorGUI()
{
+ serializedObject.Update();
+
EditorGUILayout.PropertyField(_idProperty, new GUIContent("ID"));
EditorGUILayout.PropertyField(_speedProperty);
EditorGUILayout.PropertyField(_waitProperty);
EditorGUILayout.PropertyField(_reelObjectsProperty);
+
+ serializedObject.ApplyModifiedProperties();
}
}
}
diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Utils/Icons.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Utils/Icons.cs
index 041d0f9f3..6fbcf3c0c 100644
--- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Utils/Icons.cs
+++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Utils/Icons.cs
@@ -73,6 +73,7 @@ public IconVariant(string name, IconSize size, IconColor color)
private const string FlasherName = "light_flasher";
private const string FlipperName = "flipper";
private const string GateName = "gate";
+ private const string GateLifterName = "gate_lifter";
private const string HitTargetName = "hit_target";
private const string KeyName = "keyboard";
private const string KickerName = "kicker";
@@ -113,7 +114,7 @@ public IconVariant(string name, IconSize size, IconColor color)
private static readonly string[] Names = {
AssetLibraryName, BallRollerName, BoltName, BumperName, CalendarName, CannonName, CoilName, DropTargetBankName, DropTargetName, FlasherName,
- FlipperName, GateName, HitTargetName, KeyName, KickerName, LightGroupName, LightName, MechName, MechPinMameName, PlayfieldName, PlugName,
+ FlipperName, GateName, GateLifterName, HitTargetName, KeyName, KickerName, LightGroupName, LightName, MechName, MechPinMameName, PlayfieldName, PlugName,
PlungerName, PrimitiveName, RampName, RotatorName, RubberName, ScoreReelName, ScoreReelSimpleName, SlingshotName, SpinnerName, SurfaceName,
SwitchNcName, SwitchNoName, TableName, TeleporterName, TriggerName, TroughName,
CoilEventName, SwitchEventName, LampEventName, LampSeqName, MetalWireGuideName,
@@ -172,6 +173,7 @@ private static IIconLookup[] GetLookups() {
public static Texture2D Flasher(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(FlasherName, size, color);
public static Texture2D Flipper(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(FlipperName, size, color);
public static Texture2D Gate(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(GateName, size, color);
+ public static Texture2D GateLifter(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(GateLifterName, size, color);
public static Texture2D HitTarget(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(HitTargetName, size, color);
public static Texture2D Key(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(KeyName, size, color);
public static Texture2D Kicker(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(KickerName, size, color);
@@ -277,6 +279,7 @@ public Texture2D Lookup