diff --git a/VisualPinball.Unity/Assets/Resources/Prefabs/Plunger.prefab.meta b/VisualPinball.Engine/VPT/MechSounds.meta
similarity index 57%
rename from VisualPinball.Unity/Assets/Resources/Prefabs/Plunger.prefab.meta
rename to VisualPinball.Engine/VPT/MechSounds.meta
index da4a47968..4d6559344 100644
--- a/VisualPinball.Unity/Assets/Resources/Prefabs/Plunger.prefab.meta
+++ b/VisualPinball.Engine/VPT/MechSounds.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
-guid: 0147b53c12e87954793677c5fe0627f6
-PrefabImporter:
+guid: f9a957a9e90457b45ba74b1c0b726c3f
+folderAsset: yes
+DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_orange/musical_note.png b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/musical_note.png
new file mode 100644
index 000000000..0889a5d2e
Binary files /dev/null and b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/musical_note.png differ
diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_orange/musical_note.png.meta b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/musical_note.png.meta
new file mode 100644
index 000000000..70614e180
--- /dev/null
+++ b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/musical_note.png.meta
@@ -0,0 +1,114 @@
+fileFormatVersion: 2
+guid: 22fa0f3254800a748abe0d6b46930179
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ 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
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 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
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 64
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 0
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 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
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_orange/speaker.png b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/speaker.png
new file mode 100644
index 000000000..f1bb30a07
Binary files /dev/null and b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/speaker.png differ
diff --git a/VisualPinball.Unity/Assets/Editor/Icons/small_orange/speaker.png.meta b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/speaker.png.meta
new file mode 100644
index 000000000..c06accab2
--- /dev/null
+++ b/VisualPinball.Unity/Assets/Editor/Icons/small_orange/speaker.png.meta
@@ -0,0 +1,114 @@
+fileFormatVersion: 2
+guid: 2a19a503f9b847f42bfcd456ec56f4b9
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ 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
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 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
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 64
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 0
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 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
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VisualPinball.Unity/Assets/Presets.meta b/VisualPinball.Unity/Assets/Presets.meta
index 0d4105838..d3dab9898 100644
--- a/VisualPinball.Unity/Assets/Presets.meta
+++ b/VisualPinball.Unity/Assets/Presets.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 74b6f483aa6bd6c49bc05dca5f2c6750
+guid: a61d04b442140514a9bfb858f9ed8f05
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/VisualPinball.Unity/Assets/Resources/Prefabs/DropTargetBank.prefab b/VisualPinball.Unity/Assets/Resources/Prefabs/DropTargetBank.prefab
deleted file mode 100644
index 605a9d912..000000000
--- a/VisualPinball.Unity/Assets/Resources/Prefabs/DropTargetBank.prefab
+++ /dev/null
@@ -1,52 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!1 &6315943650588709701
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1547207884189045889}
- - component: {fileID: 3547369771264680983}
- m_Layer: 0
- m_Name: DropTargetBank
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1547207884189045889
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6315943650588709701}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &3547369771264680983
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6315943650588709701}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 0807d76d30f7a44ec9b4905761134eb9, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _isLocked: 0
- _editorLayer: 0
- _editorLayerName:
- _editorLayerVisibility: 1
- BankSize: 1
- DropTargets:
- - {fileID: 0}
diff --git a/VisualPinball.Unity/Assets/Resources/Prefabs/DropTargetBank.prefab.meta b/VisualPinball.Unity/Assets/Resources/Prefabs/DropTargetBank.prefab.meta
deleted file mode 100644
index 119a26f8f..000000000
--- a/VisualPinball.Unity/Assets/Resources/Prefabs/DropTargetBank.prefab.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: cfbe6687c1d9f45e38f32cdcce7c14ea
-PrefabImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/VisualPinball.Unity/Assets/Resources/Prefabs/Flipper.prefab b/VisualPinball.Unity/Assets/Resources/Prefabs/Flipper.prefab
deleted file mode 100644
index 02ccd6d9e..000000000
--- a/VisualPinball.Unity/Assets/Resources/Prefabs/Flipper.prefab
+++ /dev/null
@@ -1,220 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!1 &204147209793461234
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 6818887475746504221}
- - component: {fileID: 6048673509915073221}
- - component: {fileID: 4778019510121147183}
- m_Layer: 0
- m_Name: Rubber
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &6818887475746504221
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 204147209793461234}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_ConstrainProportionsScale: 0
- m_Children: []
- m_Father: {fileID: 4440381279647306322}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &6048673509915073221
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 204147209793461234}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 8e6fc321830c03547890119a04997404, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _instanceID: 45420
---- !u!33 &4778019510121147183
-MeshFilter:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 204147209793461234}
- m_Mesh: {fileID: 0}
---- !u!1 &3134944213418037488
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 5879026712924827105}
- - component: {fileID: 555621075297325882}
- - component: {fileID: 8383588224779965405}
- m_Layer: 0
- m_Name: Base
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &5879026712924827105
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 3134944213418037488}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_ConstrainProportionsScale: 0
- m_Children: []
- m_Father: {fileID: 4440381279647306322}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &555621075297325882
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 3134944213418037488}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 89e3c1c147bb7a049b0510709f1ad9f2, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _instanceID: 45406
---- !u!33 &8383588224779965405
-MeshFilter:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 3134944213418037488}
- m_Mesh: {fileID: 0}
---- !u!1 &8904124417643437867
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 4440381279647306322}
- - component: {fileID: 2330311059251221068}
- - component: {fileID: 8750544366699972018}
- m_Layer: 0
- m_Name: Flipper
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &4440381279647306322
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 8904124417643437867}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_ConstrainProportionsScale: 0
- m_Children:
- - {fileID: 5879026712924827105}
- - {fileID: 6818887475746504221}
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &2330311059251221068
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 8904124417643437867}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 545ad741f74d2444faf5d2882fba6b69, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _isLocked: 0
- _editorLayer: 0
- _editorLayerName:
- _editorLayerVisibility: 1
- Position: {x: 0, y: 0}
- _startAngle: 121
- EndAngle: 70
- _surface: {fileID: 0}
- IsEnabled: 1
- IsDualWound: 0
- _height: 50
- _baseRadius: 21.5
- _endRadius: 13
- FlipperRadiusMin: 0
- FlipperRadiusMax: 130
- _rubberThickness: 7
- _rubberHeight: 19
- _rubberWidth: 24
- InstantiateAsPrefab: 0
- _originalRotateZ: 0
---- !u!114 &8750544366699972018
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 8904124417643437867}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1a6867661ef306b40958372e88a16b2a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- PhysicsMaterial: {fileID: 0}
- ShowColliderMesh: 1
- ShowAabbs: 0
- Mass: 1
- Strength: 2200
- Elasticity: 0.8
- ElasticityFalloff: 0.43
- Friction: 0.6
- Return: 0.058
- RampUp: 3
- TorqueDamping: 0.75
- TorqueDampingAngle: 6
- Scatter: 0
- FlipperCorrection: {fileID: 11400000, guid: f8799be363ab20a459dd185669ece8aa, type: 2}
- useFlipperTricksPhysics: 0
- SOSRampUp: 2.5
- SOSEM: 0.85
- EOSReturn: 0.055
- EOSTNew: 0.8
- EOSANew: 1
- EOSRampup: 0
- Overshoot: 3
- BumpOnRelease: 0.4
- useFlipperLiveCatch: 0
- LiveCatchDistanceMin: 40
- LiveCatchDistanceMax: 100
- LiveCatchMinimalBallSpeed: 6
- LiveCatchFullTime: 16
- LiveCatchPerfectTime: 8
- LiveCatchMinmalBounceSpeedMultiplier: 0.1
- LiveCatchInaccurateBounceSpeedMultiplier: 1
diff --git a/VisualPinball.Unity/Assets/Resources/Prefabs/Flipper.prefab.meta b/VisualPinball.Unity/Assets/Resources/Prefabs/Flipper.prefab.meta
deleted file mode 100644
index ad16a7893..000000000
--- a/VisualPinball.Unity/Assets/Resources/Prefabs/Flipper.prefab.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: ff1ba79e682ea784ca6fe006fb174291
-PrefabImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/VisualPinball.Unity/Assets/Resources/Prefabs/Plunger.prefab b/VisualPinball.Unity/Assets/Resources/Prefabs/Plunger.prefab
deleted file mode 100644
index cfce987e3..000000000
--- a/VisualPinball.Unity/Assets/Resources/Prefabs/Plunger.prefab
+++ /dev/null
@@ -1,200 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!1 &3492958815385962431
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2688967276888975725}
- - component: {fileID: 8461769246571476234}
- - component: {fileID: 4360165373544367127}
- m_Layer: 0
- m_Name: Plunger
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &2688967276888975725
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 3492958815385962431}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_ConstrainProportionsScale: 0
- m_Children:
- - {fileID: 2983885423002777819}
- - {fileID: 1501205072833867318}
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &8461769246571476234
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 3492958815385962431}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: c1591b5a0bc15604fb622d417b509185, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _isLocked: 0
- _editorLayer: 0
- _editorLayerName:
- _editorLayerVisibility: 1
- Position: {x: 0, y: 0}
- Width: 25
- Height: 20
- ZAdjust: 0
- _surface: {fileID: 0}
- analogPlungerAction: {fileID: 0}
---- !u!114 &4360165373544367127
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 3492958815385962431}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 2b804d1deff43db4482e740209bb910a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- PhysicsMaterial: {fileID: 0}
- ShowColliderMesh: 1
- ShowAabbs: 0
- SpeedPull: 0.5
- SpeedFire: 80
- Stroke: 80
- ScatterVelocity: 0
- IsMechPlunger: 0
- IsAutoPlunger: 0
- MechStrength: 85
- MomentumXfer: 1
- ParkPosition: 0.16666667
---- !u!1 &3501041183407321805
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1501205072833867318}
- - component: {fileID: 6684065896369603595}
- - component: {fileID: 6796775350825094537}
- m_Layer: 0
- m_Name: Spring
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1501205072833867318
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 3501041183407321805}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_ConstrainProportionsScale: 0
- m_Children: []
- m_Father: {fileID: 2688967276888975725}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &6684065896369603595
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 3501041183407321805}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 8506b0486aacff543b92dd7de914f936, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _instanceID: 46138
- SpringDiam: 0.77
- SpringGauge: 1.38
- SpringLoops: 8
- SpringEndLoops: 2.5
---- !u!33 &6796775350825094537
-MeshFilter:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 3501041183407321805}
- m_Mesh: {fileID: 0}
---- !u!1 &7745742471233074297
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2983885423002777819}
- - component: {fileID: 4093808313367734439}
- - component: {fileID: 8559785420684526687}
- m_Layer: 0
- m_Name: Rod
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &2983885423002777819
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7745742471233074297}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_ConstrainProportionsScale: 0
- m_Children: []
- m_Father: {fileID: 2688967276888975725}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &4093808313367734439
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7745742471233074297}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 6e7622b4c6837354c8190ee471830c31, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _instanceID: 46132
- RodDiam: 0.6
- RingGap: 2
- RingDiam: 0.94
- RingWidth: 3
- TipShape: 0 .34; 2 .6; 3 .64; 5 .7; 7 .84; 8 .88; 9 .9; 11 .92; 14 .92; 39 .84
---- !u!33 &8559785420684526687
-MeshFilter:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7745742471233074297}
- m_Mesh: {fileID: 0}
diff --git a/VisualPinball.Unity/Assets/Resources/Prefabs/Slingshot.prefab b/VisualPinball.Unity/Assets/Resources/Prefabs/Slingshot.prefab
deleted file mode 100644
index 6fa531177..000000000
--- a/VisualPinball.Unity/Assets/Resources/Prefabs/Slingshot.prefab
+++ /dev/null
@@ -1,136 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!1 &6110464775177654975
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1604346372501559456}
- - component: {fileID: 8345816335357486725}
- - component: {fileID: 4498014268656306279}
- - component: {fileID: 1260714541426936682}
- m_Layer: 0
- m_Name: Slingshot
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1604346372501559456
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6110464775177654975}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &8345816335357486725
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6110464775177654975}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 8840a3e9d44a5a443a20087784eae747, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- SlingshotSurface: {fileID: 0}
- RubberOn: {fileID: 0}
- RubberOff: {fileID: 0}
- CoilArm: {fileID: 0}
- CoilArmAngle: 0
- AnimationDuration: 70
- AnimationCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.5
- value: 1
- inSlope: 3.535
- outSlope: 0
- tangentMode: 0
- weightedMode: 3
- inWeight: 0.03333336
- outWeight: 0.5416666
- - serializedVersion: 3
- time: 1
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- _isLocked: 0
---- !u!33 &4498014268656306279
-MeshFilter:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6110464775177654975}
- m_Mesh: {fileID: 0}
---- !u!23 &1260714541426936682
-MeshRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6110464775177654975}
- m_Enabled: 1
- m_CastShadows: 1
- m_ReceiveShadows: 1
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RayTracingMode: 2
- m_RayTraceProcedural: 0
- m_RenderingLayerMask: 257
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 3
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_AdditionalVertexStreams: {fileID: 0}
diff --git a/VisualPinball.Unity/Assets/Resources/Prefabs/Slingshot.prefab.meta b/VisualPinball.Unity/Assets/Resources/Prefabs/Slingshot.prefab.meta
deleted file mode 100644
index 8827ba025..000000000
--- a/VisualPinball.Unity/Assets/Resources/Prefabs/Slingshot.prefab.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: c557a5a88939f4f48ab972272730aa0b
-PrefabImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/VisualPinball.Unity/Assets/Resources/Prefabs/Trough.prefab b/VisualPinball.Unity/Assets/Resources/Prefabs/Trough.prefab
deleted file mode 100644
index ad971b179..000000000
--- a/VisualPinball.Unity/Assets/Resources/Prefabs/Trough.prefab
+++ /dev/null
@@ -1,70 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!1 &6315943650588709701
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1547207884189045889}
- - component: {fileID: 7359774814775038696}
- m_Layer: 0
- m_Name: Trough
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1547207884189045889
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6315943650588709701}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &7359774814775038696
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6315943650588709701}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 426f115d8fbd6914bb7c67e1cc410097, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _data:
- StoragePrefix: 1
- StorageIndex: -1
- IsLocked: 0
- EditorLayerName:
- EditorLayerVisibility: 1
- Name:
- Type: 0
- PlayfieldEntrySwitch:
- PlayfieldExitKicker:
- BallCount: 6
- SwitchCount: 6
- JamSwitch: 0
- RollTime: 300
- TransitionTime: 50
- KickTime: 100
- Type: 1
- _playfieldEntrySwitch: {fileID: 0}
- PlayfieldExitKicker: {fileID: 0}
- BallCount: 6
- SwitchCount: 6
- JamSwitch: 0
- RollTime: 300
- TransitionTime: 50
- KickTime: 100
diff --git a/VisualPinball.Unity/Assets/Resources/Prefabs/Trough.prefab.meta b/VisualPinball.Unity/Assets/Resources/Prefabs/Trough.prefab.meta
deleted file mode 100644
index 19406fd79..000000000
--- a/VisualPinball.Unity/Assets/Resources/Prefabs/Trough.prefab.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 106ae624292d85d48a3036f6c58ab163
-PrefabImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Common/MultilineTextField.uss b/VisualPinball.Unity/VisualPinball.Unity.Editor/Common/MultilineTextField.uss
new file mode 100644
index 000000000..52db848c2
--- /dev/null
+++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Common/MultilineTextField.uss
@@ -0,0 +1,3 @@
+.multiline-textfield > TextInput {
+ white-space: normal;
+}
diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Common/MultilineTextField.uss.meta b/VisualPinball.Unity/VisualPinball.Unity.Editor/Common/MultilineTextField.uss.meta
new file mode 100644
index 000000000..7a29e0b80
--- /dev/null
+++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Common/MultilineTextField.uss.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 443092b513c6ebc4bbfbfe7de8daa864
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
+ disableValidation: 0
diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound.meta b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound.meta
new file mode 100644
index 000000000..dc4a50b28
--- /dev/null
+++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: d6280d7fb0f340b09b058831259ab274
+timeCreated: 1677682143
\ No newline at end of file
diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.cs
new file mode 100644
index 000000000..3f1ccfaf8
--- /dev/null
+++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.cs
@@ -0,0 +1,53 @@
+// Visual Pinball Engine
+// Copyright (C) 2023 freezy and VPE Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+using System.Collections.Generic;
+using System.Linq;
+using UnityEditor;
+using UnityEngine;
+using UnityEngine.UIElements;
+
+namespace VisualPinball.Unity.Editor
+{
+ [CustomEditor(typeof(CoilSoundComponent)), CanEditMultipleObjects]
+ public class CoilSoundComponentInspector : SoundComponentInspector
+ {
+ [SerializeField]
+ private VisualTreeAsset inspectorXml;
+
+ public override VisualElement CreateInspectorGUI()
+ {
+ var root = base.CreateInspectorGUI();
+ var inspectorUi = inspectorXml.Instantiate();
+ root.Add(inspectorUi);
+ var coilNameDropdown = root.Q("coil-name");
+ var coilNameProp = serializedObject.FindProperty("_coilName");
+ var availableCoils = GetAvailableCoils();
+ ConfigureDropdown(coilNameDropdown, coilNameProp, availableCoils);
+ return root;
+ }
+
+ private Dictionary GetAvailableCoils()
+ {
+ if (target != null &&
+ target is Component &&
+ (target as Component).TryGetComponent(out var coilDevice))
+ return coilDevice.AvailableCoils.ToDictionary(i => i.Id,
+ i => string.IsNullOrWhiteSpace(i.Description) ? i.Id : i.Description);
+ return new();
+ }
+ }
+}
diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.cs.meta b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.cs.meta
new file mode 100644
index 000000000..515550dac
--- /dev/null
+++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: efd14260f42063e4aadba8b265bad210
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences:
+ - inspectorXml: {fileID: 9197481963319205126, guid: 2e43810c575be6d46ae19bed7c1b38bd,
+ type: 3}
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.uxml b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.uxml
new file mode 100644
index 000000000..775c7858f
--- /dev/null
+++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.uxml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.uxml.meta b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.uxml.meta
new file mode 100644
index 000000000..091b39d53
--- /dev/null
+++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/CoilSoundComponentInspector.uxml.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 2e43810c575be6d46ae19bed7c1b38bd
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/SoundAssetInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/SoundAssetInspector.cs
new file mode 100644
index 000000000..e162f53c7
--- /dev/null
+++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/SoundAssetInspector.cs
@@ -0,0 +1,103 @@
+// Visual Pinball Engine
+// Copyright (C) 2023 freezy and VPE Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+using System;
+using System.Threading;
+using UnityEditor;
+using UnityEngine.UIElements;
+using UnityEngine;
+using UnityEditor.UIElements;
+
+namespace VisualPinball.Unity.Editor
+{
+ [CustomEditor(typeof(SoundAsset)), CanEditMultipleObjects]
+ public class SoundAssetInspector : UnityEditor.Editor
+ {
+ private CancellationTokenSource _allowFadeCts;
+ private CancellationTokenSource _instantCts;
+
+ [SerializeField]
+ private VisualTreeAsset _inspectorXml;
+
+ private Button _playButton;
+
+ public override VisualElement CreateInspectorGUI()
+ {
+ var ui = _inspectorXml.Instantiate();
+ _playButton = ui.Q