From 4722e2ce5a981ccccb81d75471d1328fd5550357 Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 29 Oct 2020 00:19:20 +0100 Subject: [PATCH 01/36] trough: Setup authoring component and link in switch manager. --- .../Managers/Coil/CoilListViewItemRenderer.cs | 2 +- .../Managers/Switch/SwitchListData.cs | 3 +- .../Switch/SwitchListViewItemRenderer.cs | 65 +++++++++++++++++-- .../Managers/Switch/SwitchManager.cs | 13 ++-- .../VisualPinball.Unity.Editor/Utils/Icons.cs | 5 +- .../VPT/ISwitchDeviceAuthoring.cs | 32 +++++++++ .../VPT/ISwitchDeviceAuthoring.cs.meta | 11 ++++ .../VisualPinball.Unity/VPT/Trough.meta | 8 +++ .../VPT/Trough/TroughAuthoring.cs | 41 ++++++++++++ .../VPT/Trough/TroughAuthoring.cs.meta | 11 ++++ 10 files changed, 179 insertions(+), 12 deletions(-) create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs.meta create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough.meta create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListViewItemRenderer.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListViewItemRenderer.cs index 77a22b58f..5f8eb3410 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListViewItemRenderer.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListViewItemRenderer.cs @@ -27,7 +27,7 @@ namespace VisualPinball.Unity.Editor { public class CoilListViewItemRenderer { - private readonly string[] OPTIONS_COIL_DESTINATION = { "Playfield" }; + private readonly string[] OPTIONS_COIL_DESTINATION = { "Playfield", "Device" }; private readonly string[] OPTIONS_COIL_TYPE = { "Single-Wound", "Dual-Wound" }; private enum CoilListColumn diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs index 21f8e4a74..f048852ac 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs @@ -29,7 +29,7 @@ public class SwitchListData : IManagerListData [ManagerListColumn(Order = 2, HeaderName = "Source", Width = 150)] public int Source; - [ManagerListColumn(Order = 3, HeaderName = "Element", Width = 200)] + [ManagerListColumn(Order = 3, HeaderName = "Element", Width = 250)] public string Element; [ManagerListColumn(Order = 5, HeaderName = "Pulse Delay", Width = 100)] @@ -42,6 +42,7 @@ public class SwitchListData : IManagerListData public int Constant; public string Device; public string DeviceItem; + public int DeviceItemIndex; public MappingsSwitchData MappingsSwitchData; diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs index a1092047c..5d6e493ad 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs @@ -27,7 +27,7 @@ namespace VisualPinball.Unity.Editor { public class SwitchListViewItemRenderer { - private readonly string[] OPTIONS_SWITCH_SOURCE = { "Input System", "Playfield", "Constant" }; + private readonly string[] OPTIONS_SWITCH_SOURCE = { "Input System", "Playfield", "Constant", "Device" }; private readonly string[] OPTIONS_SWITCH_CONSTANT = { "NC - Normally Closed", "NO - Normally Open" }; private struct InputSystemEntry @@ -47,14 +47,16 @@ private enum SwitchListColumn private readonly List _gleSwitches; private readonly Dictionary _switches; + private readonly Dictionary _switchDevices; private readonly InputManager _inputManager; private AdvancedDropdownState _itemPickDropdownState; - public SwitchListViewItemRenderer(List gleSwitches, Dictionary switches, InputManager inputManager) + public SwitchListViewItemRenderer(List gleSwitches, Dictionary switches, Dictionary switchDevices, InputManager inputManager) { _gleSwitches = gleSwitches; _switches = switches; + _switchDevices = switchDevices; _inputManager = inputManager; } @@ -180,6 +182,13 @@ private void RenderElement(TableAuthoring tableAuthoring, SwitchListData switchL case SwitchSource.Constant: RenderConstantElement(switchListData, cellRect, updateAction); break; + + case SwitchSource.Device: + cellRect.width = cellRect.width / 2f - 5f; + RenderDeviceElement(tableAuthoring, switchListData, cellRect, updateAction); + cellRect.x += cellRect.width + 10f; + RenderDeviceItemElement(switchListData, cellRect, updateAction); + break; } } @@ -262,6 +271,48 @@ private void RenderConstantElement(SwitchListData switchListData, Rect cellRect, } } + private void RenderDeviceElement(TableAuthoring tableAuthoring, SwitchListData switchListData, Rect cellRect, Action updateAction) + { + if (GUI.Button(cellRect, switchListData.Device, EditorStyles.objectField) || GUI.Button(cellRect, "", GUI.skin.GetStyle("IN ObjectField"))) + { + if (_itemPickDropdownState == null) { + _itemPickDropdownState = new AdvancedDropdownState(); + } + + var dropdown = new ItemSearchableDropdown( + _itemPickDropdownState, + tableAuthoring, + "Switch Devices", + item => { + switchListData.Device = item.Name; + updateAction(switchListData); + } + ); + dropdown.Show(cellRect); + } + } + + private void RenderDeviceItemElement(SwitchListData switchListData, Rect cellRect, Action updateAction) + { + EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(switchListData.Device)); + var switchLabels = new string[0]; + ISwitchDeviceAuthoring switchDevice = null; + if (!string.IsNullOrEmpty(switchListData.Device)) { + switchDevice = _switchDevices[switchListData.Device.ToLower()]; + switchLabels = switchDevice.AvailableSwitches.Select(s => s.Description).ToArray(); + } + EditorGUI.BeginChangeCheck(); + var index = EditorGUI.Popup(cellRect, switchListData.DeviceItemIndex, switchLabels); + if (EditorGUI.EndChangeCheck() && switchDevice != null) { + if (switchListData.DeviceItemIndex != index) { + switchListData.DeviceItemIndex = index; + switchListData.DeviceItem = switchDevice.AvailableSwitches[index].Id; + updateAction(switchListData); + } + } + EditorGUI.EndDisabledGroup(); + } + private void RenderPulseDelay(SwitchListData switchListData, Rect cellRect, Action updateAction) { if (switchListData.Source == SwitchSource.Playfield && _switches.ContainsKey(switchListData.PlayfieldItem.ToLower())) { @@ -294,17 +345,23 @@ private UnityEngine.Texture GetIcon(SwitchListData switchListData) switch (switchListData.Source) { case SwitchSource.Playfield: { if (_switches.ContainsKey(switchListData.PlayfieldItem.ToLower())) { - icon = Icons.ByComponent(_switches[switchListData.PlayfieldItem.ToLower()], size: IconSize.Small); + icon = Icons.ByComponent(_switches[switchListData.PlayfieldItem.ToLower()], IconSize.Small); } break; } case SwitchSource.Constant: - icon = Icons.Switch(switchListData.Constant == SwitchConstant.NormallyClosed, size: IconSize.Small); + icon = Icons.Switch(switchListData.Constant == SwitchConstant.NormallyClosed, IconSize.Small); break; case SwitchSource.InputSystem: icon = Icons.Key(IconSize.Small); break; + + case SwitchSource.Device: + if (_switchDevices.ContainsKey(switchListData.Device.ToLower())) { + icon = Icons.ByComponent(_switchDevices[switchListData.Device.ToLower()], IconSize.Small); + } + break; } return icon; diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchManager.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchManager.cs index d2091d6ea..dafd9231b 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchManager.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchManager.cs @@ -41,6 +41,7 @@ internal class SwitchManager : ManagerWindow private readonly List _gleSwitches = new List(); private readonly Dictionary _switches = new Dictionary(); + private readonly Dictionary _switchDevices = new Dictionary(); private InputManager _inputManager; private SwitchListViewItemRenderer _listViewItemRenderer; @@ -72,7 +73,7 @@ public override void OnEnable() protected override void OnFocus() { _inputManager = new InputManager(RESOURCE_PATH); - _listViewItemRenderer = new SwitchListViewItemRenderer(_gleSwitches, _switches, _inputManager); + _listViewItemRenderer = new SwitchListViewItemRenderer(_gleSwitches, _switches, _switchDevices, _inputManager); _needsAssetRefresh = true; base.OnFocus(); @@ -201,13 +202,15 @@ private void DisplayMessage(string message) private void RefreshSwitches() { _switches.Clear(); + _switchDevices.Clear(); - if (_tableAuthoring != null) - { - foreach (var item in _tableAuthoring.GetComponentsInChildren()) - { + if (_tableAuthoring != null) { + foreach (var item in _tableAuthoring.GetComponentsInChildren()) { _switches.Add(item.Name.ToLower(), item); } + foreach (var item in _tableAuthoring.GetComponentsInChildren()) { + _switchDevices.Add(item.Name.ToLower(), item); + } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Utils/Icons.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Utils/Icons.cs index ab44c9c94..f4c901ed6 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Utils/Icons.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Utils/Icons.cs @@ -55,13 +55,14 @@ public IconVariant(string name, IconSize size, IconColor color) private const string TableName = "table"; private const string HitTargetName = "target"; private const string TriggerName = "trigger"; + private const string TroughName = "trough"; private const string SwitchNcName = "switch_nc"; private const string SwitchNoName = "switch_no"; private static readonly string[] Names = { BumperName, CoilName, FlipperName, GateName, KeyName, KickerName, LightName, PlayfieldName, PlungerName, PrimitiveName, RampName, RubberName, SpinnerName, SurfaceName, HitTargetName, TableName, TriggerName, - SwitchNcName, SwitchNoName + TroughName, SwitchNcName, SwitchNoName }; private readonly Dictionary _icons = new Dictionary(); @@ -108,6 +109,7 @@ private Icons() public static Texture2D Table(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(TableName, size, color); public static Texture2D Target(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(HitTargetName, size, color); public static Texture2D Trigger(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(TriggerName, size, color); + public static Texture2D Trough(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(TroughName, size, color); public static Texture2D Switch(bool normallyClosed, IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(normallyClosed ? SwitchNcName : SwitchNoName, size, color); public static Texture2D Coil(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(CoilName, size, color); public static Texture2D Key(IconSize size = IconSize.Large, IconColor color = IconColor.Gray) => Instance.GetItem(KeyName, size, color); @@ -130,6 +132,7 @@ public static Texture2D ByComponent(T mb, IconSize size = IconSize.Large, Ico case SurfaceAuthoring _: return Surface(size, color); case HitTargetAuthoring _: return Target(size, color); case TriggerAuthoring _: return Trigger(size, color); + case TroughAuthoring _: return Trough(size, color); default: return null; } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs new file mode 100644 index 000000000..fcecadd20 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs @@ -0,0 +1,32 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 VisualPinball.Engine.Game.Engines; + +namespace VisualPinball.Unity +{ + /// + /// A switch device is an item that contains multiple switches. + /// + public interface ISwitchDeviceAuthoring : IIdentifiableItemAuthoring + { + /// + /// A list of available switches supported by the switch device + /// + GamelogicEngineSwitch[] AvailableSwitches { get; } + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs.meta new file mode 100644 index 000000000..7d2113230 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0bf08f19436bcce4fba884e973f7cb00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough.meta new file mode 100644 index 000000000..3a5d80118 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b2be665b13677dd4b9b1fa68b762d219 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs new file mode 100644 index 000000000..7538ee863 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs @@ -0,0 +1,41 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 . + +#region ReSharper +// ReSharper disable CompareOfFloatsByEqualityOperator +// ReSharper disable ClassNeverInstantiated.Global +// ReSharper disable MemberCanBePrivate.Global +#endregion + +using UnityEngine; +using VisualPinball.Engine.Game.Engines; + +namespace VisualPinball.Unity +{ + [ExecuteAlways] + [AddComponentMenu("Visual Pinball/Mechanisms/Trough")] + public class TroughAuthoring : MonoBehaviour, ISwitchDeviceAuthoring + { + public string Name { get; set; } = "TestTrough"; + + public GamelogicEngineSwitch[] AvailableSwitches { get; } = { + new GamelogicEngineSwitch {Description = "Switch 1", Id = "1"}, + new GamelogicEngineSwitch {Description = "Switch 2", Id = "2"}, + new GamelogicEngineSwitch {Description = "Switch 3", Id = "3"}, + new GamelogicEngineSwitch {Description = "Switch 4", Id = "4"}, + }; + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta new file mode 100644 index 000000000..1d777ea09 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 426f115d8fbd6914bb7c67e1cc410097 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 23d2babac50f3d6292ae73c4778ae7a7919ec076 Mon Sep 17 00:00:00 2001 From: Eli Curtz Date: Mon, 19 Oct 2020 17:35:00 -0700 Subject: [PATCH 02/36] Minimal boilerplate for new trough items. --- VisualPinball.Engine/VPT/ItemType.cs | 3 +- VisualPinball.Engine/VPT/Trough.meta | 8 ++ VisualPinball.Engine/VPT/Trough/Trough.cs | 53 +++++++++++ .../VPT/Trough/Trough.cs.meta | 11 +++ VisualPinball.Engine/VPT/Trough/TroughData.cs | 92 +++++++++++++++++++ .../VPT/Trough/TroughData.cs.meta | 11 +++ .../Inspectors/TroughInspector.cs | 52 +++++++++++ .../Inspectors/TroughInspector.cs.meta | 11 +++ .../VPT/Trough/TroughApi.cs | 43 +++++++++ .../VPT/Trough/TroughApi.cs.meta | 11 +++ .../VPT/Trough/TroughAuthoring.cs | 24 ++++- .../VPT/Trough/TroughExtensions.cs | 32 +++++++ .../VPT/Trough/TroughExtensions.cs.meta | 11 +++ 13 files changed, 358 insertions(+), 4 deletions(-) create mode 100644 VisualPinball.Engine/VPT/Trough.meta create mode 100644 VisualPinball.Engine/VPT/Trough/Trough.cs create mode 100644 VisualPinball.Engine/VPT/Trough/Trough.cs.meta create mode 100644 VisualPinball.Engine/VPT/Trough/TroughData.cs create mode 100644 VisualPinball.Engine/VPT/Trough/TroughData.cs.meta create mode 100644 VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs.meta create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs.meta create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs.meta diff --git a/VisualPinball.Engine/VPT/ItemType.cs b/VisualPinball.Engine/VPT/ItemType.cs index 6546da8aa..73f69f1f7 100644 --- a/VisualPinball.Engine/VPT/ItemType.cs +++ b/VisualPinball.Engine/VPT/ItemType.cs @@ -49,7 +49,8 @@ public enum ItemType Flasher = 20, Rubber = 21, HitTarget = 22, - Count = 23, + Trough = 23, + Count = 24, Invalid = -1, // VPE internal diff --git a/VisualPinball.Engine/VPT/Trough.meta b/VisualPinball.Engine/VPT/Trough.meta new file mode 100644 index 000000000..d0ffa86e7 --- /dev/null +++ b/VisualPinball.Engine/VPT/Trough.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3fd1432f7bc694b779c7e8e0d9018022 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Engine/VPT/Trough/Trough.cs b/VisualPinball.Engine/VPT/Trough/Trough.cs new file mode 100644 index 000000000..8d58be461 --- /dev/null +++ b/VisualPinball.Engine/VPT/Trough/Trough.cs @@ -0,0 +1,53 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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.IO; +using VisualPinball.Engine.Game; +using VisualPinball.Engine.Math; + +namespace VisualPinball.Engine.VPT.Trough +{ + public class Trough : Item, IRenderable + { + public override string ItemName { get; } = "Trough"; + public override string ItemGroupName { get; } = "Troughs"; + public Vertex3D Position { get; set; } = Vertex3D.Zero; + public float RotationY { get; set; } = 0f; + + public Trough(TroughData data) : base(data) + { + } + + public Trough(BinaryReader reader, string itemName) : this(new TroughData(reader, itemName)) + { + } + + public Matrix3D TransformationMatrix(Table.Table table, Origin origin) + { + throw new System.NotImplementedException(); + } + + public RenderObject GetRenderObject(Table.Table table, string id = null, Origin origin = Origin.Global, bool asRightHanded = true) + { + throw new System.NotImplementedException(); + } + + public RenderObjectGroup GetRenderObjects(Table.Table table, Origin origin = Origin.Global, bool asRightHanded = true) + { + return null; + } + } +} diff --git a/VisualPinball.Engine/VPT/Trough/Trough.cs.meta b/VisualPinball.Engine/VPT/Trough/Trough.cs.meta new file mode 100644 index 000000000..c25340d05 --- /dev/null +++ b/VisualPinball.Engine/VPT/Trough/Trough.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 359e5a55a56254a68931446a9b6d6e9a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Engine/VPT/Trough/TroughData.cs b/VisualPinball.Engine/VPT/Trough/TroughData.cs new file mode 100644 index 000000000..b86eab083 --- /dev/null +++ b/VisualPinball.Engine/VPT/Trough/TroughData.cs @@ -0,0 +1,92 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 . + +#region ReSharper +// ReSharper disable UnassignedField.Global +// ReSharper disable StringLiteralTypo +// ReSharper disable FieldCanBeMadeReadOnly.Global +// ReSharper disable ConvertToConstant.Global +#endregion + +using System; +using System.Collections.Generic; +using System.IO; +using VisualPinball.Engine.IO; +using VisualPinball.Engine.Math; +using VisualPinball.Engine.VPT.Table; + +namespace VisualPinball.Engine.VPT.Trough +{ + [Serializable] + public class TroughData : ItemData + { + public override string GetName() => Name; + public override void SetName(string name) { Name = name; } + + [BiffString("NAME", IsWideString = true, Pos = 9)] + public string Name; + + [BiffVertex("ENTR", Pos = 1)] + public Vertex2D Entrance; + + [BiffFloat("EXIT", Pos = 10)] + public float ExitOffset = 200.0f; + + [BiffFloat("ORIN", Pos = 10)] + public float Orientation = 0.0f; + + [BiffInt("BCNT", Pos = 3)] + public int BallCount = 3; + + [BiffInt("SCNT", Pos = 4)] + public int SwitchCount = 3; + + [BiffFloat("TIME", Pos = 5)] + public float SettleTime = 0.1f; + + [BiffFloat("FORC", Pos = 6)] + public float Force = 15f; + + [BiffFloat("BSCT", Pos = 7)] + public float Scatter = 0f; + + [BiffString("SURF", Pos = 16)] + public string Surface = string.Empty; + + #region BIFF + + static TroughData() + { + Init(typeof(TroughData), Attributes); + } + + public TroughData(BinaryReader reader, string storageName) : base(storageName) + { + Load(this, reader, Attributes); + } + + public override void Write(BinaryWriter writer, HashWriter hashWriter) + { + writer.Write((int)ItemType.Trough); + WriteRecord(writer, Attributes, hashWriter); + WriteEnd(writer, hashWriter); + } + + private static readonly Dictionary> Attributes = new Dictionary>(); + + #endregion + } +} diff --git a/VisualPinball.Engine/VPT/Trough/TroughData.cs.meta b/VisualPinball.Engine/VPT/Trough/TroughData.cs.meta new file mode 100644 index 000000000..6de4b2d57 --- /dev/null +++ b/VisualPinball.Engine/VPT/Trough/TroughData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 23d7577ef803444a88c18204c09da04b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs new file mode 100644 index 000000000..fae7dbb53 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs @@ -0,0 +1,52 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 . + +// ReSharper disable AssignmentInConditionalExpression + +using UnityEditor; +using VisualPinball.Engine.VPT.Trough; + +namespace VisualPinball.Unity.Editor +{ + [CustomEditor(typeof(TroughAuthoring))] + public class TroughInspector : ItemMainInspector + { + private bool _foldoutPosition = true; + private bool _foldoutMisc = true; + + public override void OnInspectorGUI() + { + OnPreInspectorGUI(); + + if (_foldoutPosition = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutPosition, "Position")) { + ItemDataField("", ref Data.Entrance, false); + ItemDataField("Rotation", ref Data.Orientation, false); + ItemDataField("Exit Offset", ref Data.ExitOffset, false); + SurfaceField("Surface", ref Data.Surface, false); + } + EditorGUILayout.EndFoldoutHeaderGroup(); + + if (_foldoutMisc = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutMisc, "Misc")) { + ItemDataField("Max Balls", ref Data.BallCount, false); + ItemDataField("Switch Count", ref Data.SwitchCount, false); + ItemDataField("Settle Time", ref Data.SettleTime, false); + } + EditorGUILayout.EndFoldoutHeaderGroup(); + + base.OnInspectorGUI(); + } + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs.meta b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs.meta new file mode 100644 index 000000000..5f04f1680 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f921351c72e0e4f6f99bbbf5bc8be9fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs new file mode 100644 index 000000000..ea02d49af --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs @@ -0,0 +1,43 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 Unity.Entities; + +namespace VisualPinball.Unity +{ + public class TroughApi : ItemApi, + IApiInitializable + { + /// + /// Event emitted when the table is started. + /// + public event EventHandler Init; + + internal TroughApi(Engine.VPT.Trough.Trough item, Entity entity, Player player) : base(item, entity, player) + { + } + + #region Events + + void IApiInitializable.OnInit(BallManager ballManager) + { + Init?.Invoke(this, EventArgs.Empty); + } + + #endregion + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs.meta new file mode 100644 index 000000000..e0d3099e8 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4020d37ef294341f0b853a9dadccb9a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs index 7538ee863..979a9e359 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs @@ -20,16 +20,27 @@ // ReSharper disable MemberCanBePrivate.Global #endregion +using System; +using System.Collections.Generic; using UnityEngine; using VisualPinball.Engine.Game.Engines; +using VisualPinball.Engine.VPT.Trough; namespace VisualPinball.Unity { [ExecuteAlways] - [AddComponentMenu("Visual Pinball/Mechanisms/Trough")] - public class TroughAuthoring : MonoBehaviour, ISwitchDeviceAuthoring + [AddComponentMenu("Visual Pinball/Trough")] + public class TroughAuthoring : ItemMainAuthoring, ISwitchDeviceAuthoring { - public string Name { get; set; } = "TestTrough"; + protected override Trough InstantiateItem(TroughData data) => new Trough(data); + public override IEnumerable ValidParents { get; } = new Type[0]; + protected override Type MeshAuthoringType { get; } = null; + protected override Type ColliderAuthoringType { get; } = null; + + public override void Restore() + { + Item.Name = name; + } public GamelogicEngineSwitch[] AvailableSwitches { get; } = { new GamelogicEngineSwitch {Description = "Switch 1", Id = "1"}, @@ -37,5 +48,12 @@ public class TroughAuthoring : MonoBehaviour, ISwitchDeviceAuthoring new GamelogicEngineSwitch {Description = "Switch 3", Id = "3"}, new GamelogicEngineSwitch {Description = "Switch 4", Id = "4"}, }; + + private void OnDestroy() + { + if (!Application.isPlaying) { + Table?.Remove(Name); + } + } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs new file mode 100644 index 000000000..164188d84 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs @@ -0,0 +1,32 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 Unity.Entities; +using UnityEngine; +using VisualPinball.Engine.Game; + +namespace VisualPinball.Unity +{ + internal static class TroughExtensions + { + public static TroughAuthoring SetupGameObject(this Engine.VPT.Trough.Trough Trough, GameObject obj, RenderObjectGroup rog) + { + var ic = obj.AddComponent().SetItem(Trough); + obj.AddComponent(); + return ic as TroughAuthoring; + } + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs.meta new file mode 100644 index 000000000..5cc93bac9 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f92811f35ae2d479cb785222f9e19832 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From dae05133a322565e01cb0e85afb6db617a19a99d Mon Sep 17 00:00:00 2001 From: Eli Curtz Date: Sat, 24 Oct 2020 16:13:45 -0700 Subject: [PATCH 03/36] More empty boilerplate trough classes --- VisualPinball.Engine/VPT/Trough/TroughData.cs | 23 +++------ .../Inspectors/TroughInspector.cs | 5 +- .../VPT/Trough/TroughAuthoring.cs.meta | 2 +- .../VPT/Trough/TroughBallData.cs | 25 +++++++++ .../VPT/Trough/TroughBallData.cs.meta | 11 ++++ .../VPT/Trough/TroughDisplacementSystem.cs | 51 +++++++++++++++++++ .../Trough/TroughDisplacementSystem.cs.meta | 11 ++++ .../VPT/Trough/TroughStaticData.cs | 30 +++++++++++ .../VPT/Trough/TroughStaticData.cs.meta | 11 ++++ 9 files changed, 148 insertions(+), 21 deletions(-) create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs.meta create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs.meta create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs.meta diff --git a/VisualPinball.Engine/VPT/Trough/TroughData.cs b/VisualPinball.Engine/VPT/Trough/TroughData.cs index b86eab083..080ae3d22 100644 --- a/VisualPinball.Engine/VPT/Trough/TroughData.cs +++ b/VisualPinball.Engine/VPT/Trough/TroughData.cs @@ -39,15 +39,15 @@ public class TroughData : ItemData [BiffString("NAME", IsWideString = true, Pos = 9)] public string Name; - [BiffVertex("ENTR", Pos = 1)] - public Vertex2D Entrance; + [BiffString("ENTK", Pos = 1)] + public string EntryKicker = string.Empty; - [BiffFloat("EXIT", Pos = 10)] - public float ExitOffset = 200.0f; + [BiffString("ENTS", Pos = 2)] + public string EntrySwitch = string.Empty; + + [BiffString("EXIT", Pos = 10)] + public string ExitKicker = string.Empty; - [BiffFloat("ORIN", Pos = 10)] - public float Orientation = 0.0f; - [BiffInt("BCNT", Pos = 3)] public int BallCount = 3; @@ -57,15 +57,6 @@ public class TroughData : ItemData [BiffFloat("TIME", Pos = 5)] public float SettleTime = 0.1f; - [BiffFloat("FORC", Pos = 6)] - public float Force = 15f; - - [BiffFloat("BSCT", Pos = 7)] - public float Scatter = 0f; - - [BiffString("SURF", Pos = 16)] - public string Surface = string.Empty; - #region BIFF static TroughData() diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs index fae7dbb53..621ea1f35 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs @@ -32,10 +32,7 @@ public override void OnInspectorGUI() OnPreInspectorGUI(); if (_foldoutPosition = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutPosition, "Position")) { - ItemDataField("", ref Data.Entrance, false); - ItemDataField("Rotation", ref Data.Orientation, false); - ItemDataField("Exit Offset", ref Data.ExitOffset, false); - SurfaceField("Surface", ref Data.Surface, false); + //ItemDataField("", ref _trough.data.Entrance); } EditorGUILayout.EndFoldoutHeaderGroup(); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta index 1d777ea09..b9a74f7a3 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: f9918981bd2cf4e179f31abf058bb4a5, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs new file mode 100644 index 000000000..435a783f5 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs @@ -0,0 +1,25 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 Unity.Entities; + +namespace VisualPinball.Unity +{ + internal struct TroughBallData : IComponentData + { + public Entity Ball; + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs.meta new file mode 100644 index 000000000..9b65fbf04 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 22afee6ab190949a08a93c66465d711b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs new file mode 100644 index 000000000..e0ab18633 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs @@ -0,0 +1,51 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 NLog; +using Unity.Entities; +using Unity.Mathematics; +using Unity.Profiling; + +namespace VisualPinball.Unity +{ + [UpdateInGroup(typeof(UpdateDisplacementSystemGroup))] + internal class TroughDisplacementSystem : SystemBase + { + private SimulateCycleSystemGroup _simulateCycleSystemGroup; + + private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); + private static readonly ProfilerMarker PerfMarker = new ProfilerMarker("TroughDisplacementSystem"); + + protected override void OnCreate() + { + _simulateCycleSystemGroup = World.GetOrCreateSystem(); + } + + protected override void OnUpdate() + { + var dTime = _simulateCycleSystemGroup.HitTime; + var marker = PerfMarker; + + Entities.WithName("TroughDisplacementJob").ForEach((in TroughStaticData trough) => { + + marker.Begin(); + + marker.End(); + + }).Run(); + } + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs.meta new file mode 100644 index 000000000..24a841b9c --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c944133fe2574256a389450992e3f12 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs new file mode 100644 index 000000000..fea127129 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs @@ -0,0 +1,30 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 Unity.Entities; + +namespace VisualPinball.Unity +{ + internal struct TroughStaticData : IComponentData + { + public Entity EntrySwitch; + public Entity EntryKicker; + public Entity ExitKicker; + public int BallCount; + public int SwitchCount; + public float SettleTime; + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs.meta new file mode 100644 index 000000000..84b238a5d --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4aafd68e91904edebd1ff37bb96b3fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 9e437837cff919554abcd3cbcf5e8dcdef05f067 Mon Sep 17 00:00:00 2001 From: Eli Curtz Date: Tue, 27 Oct 2020 17:23:13 -0700 Subject: [PATCH 04/36] Generic inspector field for references between ItemAuthoring ocmponents. --- VisualPinball.Engine/VPT/Trough/Trough.cs | 2 +- .../Inspectors/TroughInspector.cs | 4 ++- .../VPT/ItemInspector.cs | 30 +++++++++++++------ 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/VisualPinball.Engine/VPT/Trough/Trough.cs b/VisualPinball.Engine/VPT/Trough/Trough.cs index 8d58be461..05c72430e 100644 --- a/VisualPinball.Engine/VPT/Trough/Trough.cs +++ b/VisualPinball.Engine/VPT/Trough/Trough.cs @@ -47,7 +47,7 @@ public RenderObject GetRenderObject(Table.Table table, string id = null, Origin public RenderObjectGroup GetRenderObjects(Table.Table table, Origin origin = Origin.Global, bool asRightHanded = true) { - return null; + return new RenderObjectGroup(Data.Name, "trough", Math.Matrix3D.Identity, new RenderObject[0]); } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs index 621ea1f35..f93a3ffcc 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs @@ -18,6 +18,7 @@ using UnityEditor; using VisualPinball.Engine.VPT.Trough; +using VisualPinball.Engine.VPT.Kicker; namespace VisualPinball.Unity.Editor { @@ -32,7 +33,8 @@ public override void OnInspectorGUI() OnPreInspectorGUI(); if (_foldoutPosition = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutPosition, "Position")) { - //ItemDataField("", ref _trough.data.Entrance); + ItemReferenceField("Entry Kicker", ref Data.EntryKicker); + ItemReferenceField("Exit Kicker", ref Data.ExitKicker); } EditorGUILayout.EndFoldoutHeaderGroup(); diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs index 76f87c917..86a3fd0c9 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs @@ -18,7 +18,9 @@ using System.Linq; using UnityEditor; using UnityEngine; +using VisualPinball.Engine.Game; using VisualPinball.Engine.Math; +using VisualPinball.Engine.VPT; using VisualPinball.Engine.VPT.Surface; namespace VisualPinball.Unity.Editor @@ -27,7 +29,9 @@ public abstract class ItemInspector : UnityEditor.Editor { public abstract MonoBehaviour UndoTarget { get; } - private TableAuthoring _table; + protected TableAuthoring _table; + + protected MonoBehaviour _item; private SurfaceAuthoring _surface; private string[] _allMaterials = new string[0]; @@ -238,28 +242,36 @@ protected void ItemDataField(string label, ref Engine.Math.Color field, bool dir } } - protected void SurfaceField(string label, ref string field, bool dirtyMesh = true) + protected void ItemReferenceField(string label, ref string field, bool dirtyMesh = true) + where TItemAuthoring : ItemAuthoring + where TData : ItemData where TItem : Item, IRenderable { - if (_surface?.name != field) { - _surface = null; + if (_item?.name != field) { + _item = null; } - if (_surface == null && _table != null) { + var mb = target as MonoBehaviour; + if (_item == null && _table != null) { var currentFieldName = field; - if (currentFieldName != null && _table.Table.Has(currentFieldName)) { - _surface = _table.gameObject.GetComponentsInChildren(true) + if (currentFieldName != null && _table.Table.Has(currentFieldName)) { + _item = _table.gameObject.GetComponentsInChildren(true) .FirstOrDefault(s => s.name == currentFieldName); } } EditorGUI.BeginChangeCheck(); - _surface = (SurfaceAuthoring)EditorGUILayout.ObjectField(label, _surface, typeof(SurfaceAuthoring), true); + _item = (TItemAuthoring)EditorGUILayout.ObjectField(label, _item, typeof(TItemAuthoring), true); if (EditorGUI.EndChangeCheck()) { FinishEdit(label, dirtyMesh); - field = _surface != null ? _surface.name : string.Empty; + field = _item != null ? _item.name : string.Empty; } } + protected void SurfaceField(string label, ref string field, bool dirtyMesh = true) + { + ItemReferenceField(label, ref field, dirtyMesh); + } + protected void DropDownField(string label, ref T field, string[] optionStrings, T[] optionValues, bool dirtyMesh = true, Action onChanged = null) where T : IEquatable { if (optionStrings == null || optionValues == null || optionStrings.Length != optionValues.Length) { From 7333c20581ca7c3326ac57233bd7f3ceb5cc8d4d Mon Sep 17 00:00:00 2001 From: Eli Curtz Date: Wed, 28 Oct 2020 11:59:56 -0700 Subject: [PATCH 05/36] Post rebase cleanup of Trough classes. --- VisualPinball.Engine/VPT/Trough/Trough.cs | 15 ++-- .../VisualPinball.Unity/Game/Player.cs | 8 +++ .../VisualPinball.Unity/VPT/ItemApi.cs | 1 + .../VPT/Trough/TroughApi.cs | 69 +++++++++++++------ 4 files changed, 67 insertions(+), 26 deletions(-) diff --git a/VisualPinball.Engine/VPT/Trough/Trough.cs b/VisualPinball.Engine/VPT/Trough/Trough.cs index 05c72430e..aa2fbd4d1 100644 --- a/VisualPinball.Engine/VPT/Trough/Trough.cs +++ b/VisualPinball.Engine/VPT/Trough/Trough.cs @@ -24,8 +24,9 @@ public class Trough : Item, IRenderable { public override string ItemName { get; } = "Trough"; public override string ItemGroupName { get; } = "Troughs"; - public Vertex3D Position { get; set; } = Vertex3D.Zero; - public float RotationY { get; set; } = 0f; + + public Vertex3D Position { get => Vertex3D.Zero; set { } } + public float RotationY { get => 0f; set { } } public Trough(TroughData data) : base(data) { @@ -35,19 +36,23 @@ public Trough(BinaryReader reader, string itemName) : this(new TroughData(reader { } - public Matrix3D TransformationMatrix(Table.Table table, Origin origin) + #region IRenderable + + Matrix3D IRenderable.TransformationMatrix(Table.Table table, Origin origin) { - throw new System.NotImplementedException(); + return Matrix3D.Identity; } public RenderObject GetRenderObject(Table.Table table, string id = null, Origin origin = Origin.Global, bool asRightHanded = true) { - throw new System.NotImplementedException(); + return null; } public RenderObjectGroup GetRenderObjects(Table.Table table, Origin origin = Origin.Global, bool asRightHanded = true) { return new RenderObjectGroup(Data.Name, "trough", Math.Matrix3D.Identity, new RenderObject[0]); } + + #endregion } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs b/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs index 749418438..742cf15a5 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs @@ -37,6 +37,7 @@ using VisualPinball.Engine.VPT.Surface; using VisualPinball.Engine.VPT.Table; using VisualPinball.Engine.VPT.Trigger; +using VisualPinball.Engine.VPT.Trough; using Logger = NLog.Logger; namespace VisualPinball.Unity @@ -44,6 +45,7 @@ namespace VisualPinball.Unity public class Player : MonoBehaviour { public Table Table { get; private set; } + public TableApi TableApi { get { return _tableApi; } } // shortcuts public Matrix4x4 TableToWorld => transform.localToWorldMatrix; @@ -258,6 +260,12 @@ public void RegisterTrigger(Trigger trigger, Entity entity, GameObject go) _switches[trigger.Name] = triggerApi; } + public void RegisterTrough(Trough trough, Entity entity, GameObject go) + { + var troughApi = new TroughApi(trough, entity, this); + _initializables.Add(troughApi); + } + #endregion #region Mapping diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs index 032aa22e8..41845acfc 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs @@ -30,6 +30,7 @@ public abstract class ItemApi : IApi where T : Item where TData protected TData Data => Item.Data; protected Table Table => _player.Table; + protected TableApi TableApi => _player.TableApi; protected readonly EntityManager EntityManager = World.DefaultGameObjectInjectionWorld.EntityManager; diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs index ea02d49af..4ef9cee08 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs @@ -14,30 +14,57 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -using System; -using Unity.Entities; - -namespace VisualPinball.Unity -{ - public class TroughApi : ItemApi, - IApiInitializable +using System; +using Unity.Entities; +using VisualPinball.Engine.VPT.Trough; + +namespace VisualPinball.Unity +{ + public class TroughApi : ItemApi, + IApiInitializable { - /// - /// Event emitted when the table is started. - /// + private KickerApi _entryKicker; + private KickerApi _exitKicker; + + /// + /// Event emitted when the table is started. + /// public event EventHandler Init; - - internal TroughApi(Engine.VPT.Trough.Trough item, Entity entity, Player player) : base(item, entity, player) - { + + internal TroughApi(Trough item, Entity entity, Player player) : base(item, entity, player) + { } - #region Events + #region Events + + void IApiInitializable.OnInit(BallManager ballManager) + { + _entryKicker = TableApi.Kicker(Data.EntryKicker); + _exitKicker = TableApi.Kicker(Data.ExitKicker); - void IApiInitializable.OnInit(BallManager ballManager) - { - Init?.Invoke(this, EventArgs.Empty); - } + if (_entryKicker != null) + { + _entryKicker.Hit += OnEntryKickerHit; + } + + if (_exitKicker != null) + { + _exitKicker.Hit += OnExitKickerFire; + } + + Init?.Invoke(this, EventArgs.Empty); + } + + void OnEntryKickerHit(object sender, EventArgs args) + { + (sender as KickerApi)?.DestroyBall(); + } + + void OnExitKickerFire(object sender, EventArgs args) + { + (sender as KickerApi)?.CreateBall(); + } - #endregion - } -} + #endregion + } +} From 65a59f8b3282988ba845f978962c4bdd26ab1b91 Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 29 Oct 2020 01:09:50 +0100 Subject: [PATCH 06/36] trough: Make switches dynamic. --- .../Managers/Switch/SwitchListViewItemRenderer.cs | 2 +- .../VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs | 10 ++++------ .../VPT/Trough/TroughAuthoring.cs.meta | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs index 5d6e493ad..bd1be7231 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs @@ -297,7 +297,7 @@ private void RenderDeviceItemElement(SwitchListData switchListData, Rect cellRec EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(switchListData.Device)); var switchLabels = new string[0]; ISwitchDeviceAuthoring switchDevice = null; - if (!string.IsNullOrEmpty(switchListData.Device)) { + if (!string.IsNullOrEmpty(switchListData.Device) && _switchDevices.ContainsKey(switchListData.Device.ToLower())) { switchDevice = _switchDevices[switchListData.Device.ToLower()]; switchLabels = switchDevice.AvailableSwitches.Select(s => s.Description).ToArray(); } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs index 979a9e359..6b962fcab 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs @@ -22,6 +22,7 @@ using System; using System.Collections.Generic; +using System.Linq; using UnityEngine; using VisualPinball.Engine.Game.Engines; using VisualPinball.Engine.VPT.Trough; @@ -42,12 +43,9 @@ public override void Restore() Item.Name = name; } - public GamelogicEngineSwitch[] AvailableSwitches { get; } = { - new GamelogicEngineSwitch {Description = "Switch 1", Id = "1"}, - new GamelogicEngineSwitch {Description = "Switch 2", Id = "2"}, - new GamelogicEngineSwitch {Description = "Switch 3", Id = "3"}, - new GamelogicEngineSwitch {Description = "Switch 4", Id = "4"}, - }; + public GamelogicEngineSwitch[] AvailableSwitches => Enumerable.Repeat(0, Data.SwitchCount) + .Select((_, i) => new GamelogicEngineSwitch {Description = $"Switch {i + 1}", Id = $"{i + 1}" }) + .ToArray(); private void OnDestroy() { diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta index b9a74f7a3..870855312 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {fileID: 2800000, guid: f9918981bd2cf4e179f31abf058bb4a5, type: 3} + icon: {fileID: 2800000, guid: b40cab9a7ee497648bc7d70ea4717888, type: 3} userData: assetBundleName: assetBundleVariant: From 12cd55a72eb5aab0aef6c8e89d434c14f577bc60 Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 29 Oct 2020 23:24:45 +0100 Subject: [PATCH 07/36] trough: Wire it up! --- VisualPinball.Engine.Test/Test/Fixtures.cs | 1 + .../Game/Engines/GamelogicEngineCoil.cs | 2 + .../Game/Engines/GamelogicEngineSwitch.cs | 2 + VisualPinball.Engine/Game/ICoilable.cs | 1 - VisualPinball.Engine/VPT/ItemType.cs | 4 +- VisualPinball.Engine/VPT/Mappings/Mappings.cs | 96 ++++++++- VisualPinball.Engine/VPT/Table/Table.cs | 22 ++- VisualPinball.Engine/VPT/Table/TableLoader.cs | 6 + VisualPinball.Engine/VPT/Trough/Trough.cs | 43 ++++- VisualPinball.Engine/VPT/Trough/TroughData.cs | 114 +++++------ .../Inspectors/TroughInspector.cs | 12 +- .../Managers/Coil/CoilListViewItemRenderer.cs | 70 ++++++- .../Managers/Coil/CoilManager.cs | 20 +- .../Managers/Switch/SwitchListData.cs | 1 - .../Switch/SwitchListViewItemRenderer.cs | 10 +- .../Managers/Switch/SwitchManager.cs | 2 +- .../Resources/Icons/small_blue/trough.png | Bin 747 -> 722 bytes .../Resources/Icons/small_gray/trough.png | Bin 759 -> 726 bytes .../Resources/Icons/small_green/trough.png | Bin 753 -> 724 bytes .../Resources/Icons/small_orange/trough.png | Bin 759 -> 727 bytes .../Toolbox/ToolboxEditor.cs | 9 +- .../VPT/ItemInspector.cs | 21 +- .../Game/Engine/DefaultGamelogicEngine.cs | 30 ++- .../VisualPinball.Unity/Game/Player.cs | 119 ++++++++---- .../Import/Job/TableLoader.cs | 5 + .../Import/VpxConverter.cs | 48 +++-- .../VisualPinball.Unity/VPT/IApi.cs | 11 ++ .../VPT/ISwitchDeviceAuthoring.cs | 3 +- .../VisualPinball.Unity/VPT/ItemApi.cs | 32 +-- .../VPT/Kicker/KickerApi.cs | 8 +- .../VPT/Table/TableAuthoring.cs | 10 +- .../VPT/Trough/TroughApi.cs | 182 ++++++++++++++++-- .../VPT/Trough/TroughAuthoring.cs | 12 +- .../VPT/Trough/TroughExtensions.cs | 31 ++- 34 files changed, 700 insertions(+), 227 deletions(-) diff --git a/VisualPinball.Engine.Test/Test/Fixtures.cs b/VisualPinball.Engine.Test/Test/Fixtures.cs index 8fad2c9b2..03e75338c 100644 --- a/VisualPinball.Engine.Test/Test/Fixtures.cs +++ b/VisualPinball.Engine.Test/Test/Fixtures.cs @@ -51,6 +51,7 @@ public static class VpxPath public static readonly string Texture = PathHelper.GetFixturePath("TextureTest.vpx"); public static readonly string Timer = PathHelper.GetFixturePath("TimerTest.vpx"); public static readonly string Trigger = PathHelper.GetFixturePath("TriggerTest.vpx"); + public static readonly string Trough = PathHelper.GetFixturePath("TroughTest.vpx"); } public static class ObjPath diff --git a/VisualPinball.Engine/Game/Engines/GamelogicEngineCoil.cs b/VisualPinball.Engine/Game/Engines/GamelogicEngineCoil.cs index 84141bf0a..ee1c4b768 100644 --- a/VisualPinball.Engine/Game/Engines/GamelogicEngineCoil.cs +++ b/VisualPinball.Engine/Game/Engines/GamelogicEngineCoil.cs @@ -22,5 +22,7 @@ public struct GamelogicEngineCoil public string Description; public string PlayfieldItemHint; public string MainCoilIdOfHoldCoil; + public string DeviceHint; + public string DeviceItemHint; } } diff --git a/VisualPinball.Engine/Game/Engines/GamelogicEngineSwitch.cs b/VisualPinball.Engine/Game/Engines/GamelogicEngineSwitch.cs index 3a293e752..5153a197e 100644 --- a/VisualPinball.Engine/Game/Engines/GamelogicEngineSwitch.cs +++ b/VisualPinball.Engine/Game/Engines/GamelogicEngineSwitch.cs @@ -23,5 +23,7 @@ public struct GamelogicEngineSwitch public string InputActionHint; public string InputMapHint; public string PlayfieldItemHint; + public string DeviceHint; + public string DeviceItemHint; } } diff --git a/VisualPinball.Engine/Game/ICoilable.cs b/VisualPinball.Engine/Game/ICoilable.cs index 33962c2a2..b4fd19383 100644 --- a/VisualPinball.Engine/Game/ICoilable.cs +++ b/VisualPinball.Engine/Game/ICoilable.cs @@ -19,6 +19,5 @@ namespace VisualPinball.Engine.Game public interface ICoilable { string Name { get; } - bool IsDualWound { get; set; } } } diff --git a/VisualPinball.Engine/VPT/ItemType.cs b/VisualPinball.Engine/VPT/ItemType.cs index 73f69f1f7..849d328b6 100644 --- a/VisualPinball.Engine/VPT/ItemType.cs +++ b/VisualPinball.Engine/VPT/ItemType.cs @@ -49,11 +49,11 @@ public enum ItemType Flasher = 20, Rubber = 21, HitTarget = 22, - Trough = 23, - Count = 24, + Count = 23, Invalid = -1, // VPE internal Ball = 100, + Trough = 101, } } diff --git a/VisualPinball.Engine/VPT/Mappings/Mappings.cs b/VisualPinball.Engine/VPT/Mappings/Mappings.cs index e62c2950e..331908688 100644 --- a/VisualPinball.Engine/VPT/Mappings/Mappings.cs +++ b/VisualPinball.Engine/VPT/Mappings/Mappings.cs @@ -15,9 +15,12 @@ // along with this program. If not, see . using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Text.RegularExpressions; +using NetVips; +using NLog; using VisualPinball.Engine.Common; using VisualPinball.Engine.Game; using VisualPinball.Engine.Game.Engines; @@ -29,6 +32,8 @@ public class Mappings : Item public override string ItemName { get; } = "Mapping"; public override string ItemGroupName { get; } = "Mappings"; + private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); + public Mappings() : this(new MappingsData("Mappings")) { } @@ -49,12 +54,16 @@ public bool IsEmpty() #region Switch Population - public void PopulateSwitches(GamelogicEngineSwitch[] engineSwitches, IEnumerable tableSwitches) + public void PopulateSwitches(GamelogicEngineSwitch[] engineSwitches, IEnumerable tableSwitches, IEnumerable tableSwitchDevices) { var switches = tableSwitches .GroupBy(x => x.Name.ToLower()) .ToDictionary(x => x.Key, x => x.First()); + var switchDevices = tableSwitchDevices + .GroupBy(x => x.Name.ToLower()) + .ToDictionary(x => x.Key, x => x.First()); + foreach (var engineSwitch in GetSwitchIds(engineSwitches)) { var switchMapping = Data.Switches.FirstOrDefault(mappingsSwitchData => mappingsSwitchData.Id == engineSwitch.Id); @@ -64,6 +73,8 @@ public void PopulateSwitches(GamelogicEngineSwitch[] engineSwitches, IEnumerable var description = engineSwitch.Description ?? string.Empty; var source = GuessSwitchSource(engineSwitch); var playfieldItem = source == SwitchSource.Playfield ? GuessPlayfieldSwitch(switches, engineSwitch) : null; + var device = source == SwitchSource.Device ? GuessDevice(switchDevices, engineSwitch) : null; + var deviceItem = source == SwitchSource.Device && device != null ? GuessDeviceSwitch(engineSwitch, device) : default; var inputActionMap = source == SwitchSource.InputSystem ? string.IsNullOrEmpty(engineSwitch.InputMapHint) ? InputConstants.MapCabinetSwitches : engineSwitch.InputMapHint : string.Empty; @@ -77,7 +88,9 @@ public void PopulateSwitches(GamelogicEngineSwitch[] engineSwitches, IEnumerable Source = source, PlayfieldItem = playfieldItem != null ? playfieldItem.Name : string.Empty, InputActionMap = inputActionMap, - InputAction = inputAction + InputAction = inputAction, + Device = device != null ? device.Name : string.Empty, + DeviceItem = deviceItem.Id }); } } @@ -105,7 +118,6 @@ public IEnumerable GetSwitchIds(GamelogicEngineSwitch[] e Id = mappingsSwitchData.Id }); } - } ids.Sort((s1, s2) => s1.Id.CompareTo(s2.Id)); @@ -114,6 +126,10 @@ public IEnumerable GetSwitchIds(GamelogicEngineSwitch[] e private static int GuessSwitchSource(GamelogicEngineSwitch engineSwitch) { + if (!string.IsNullOrEmpty(engineSwitch.DeviceHint)) { + return SwitchSource.Device; + } + return !string.IsNullOrEmpty(engineSwitch.InputActionHint) ? SwitchSource.InputSystem : SwitchSource.Playfield; } @@ -137,6 +153,33 @@ private static ISwitchable GuessPlayfieldSwitch(Dictionary return switches.ContainsKey(matchKey) ? switches[matchKey] : null; } + private static ISwitchableDevice GuessDevice(Dictionary switchDevices, GamelogicEngineSwitch engineSwitch) + { + // match by regex if hint provided + if (!string.IsNullOrEmpty(engineSwitch.DeviceHint)) { + foreach (var deviceName in switchDevices.Keys) { + var regex = new Regex(engineSwitch.DeviceHint.ToLower()); + if (regex.Match(deviceName).Success) { + return switchDevices[deviceName]; + } + } + } + return null; + } + + private static GamelogicEngineSwitch GuessDeviceSwitch(GamelogicEngineSwitch engineSwitch, ISwitchableDevice device) + { + if (!string.IsNullOrEmpty(engineSwitch.DeviceItemHint)) { + foreach (var deviceSwitch in device.AvailableSwitches) { + var regex = new Regex(engineSwitch.DeviceItemHint.ToLower()); + if (regex.Match(deviceSwitch.Id).Success) { + return deviceSwitch; + } + } + } + return default; + } + #endregion #region Coil Population @@ -147,12 +190,16 @@ private static ISwitchable GuessPlayfieldSwitch(Dictionary /// /// List of coils provided by the gamelogic engine /// List of coils on the playfield - public void PopulateCoils(GamelogicEngineCoil[] engineCoils, IEnumerable tableCoils) + public void PopulateCoils(GamelogicEngineCoil[] engineCoils, IEnumerable tableCoils, IEnumerable tableCoilDevices) { var coils = tableCoils .GroupBy(x => x.Name.ToLower()) .ToDictionary(x => x.Key, x => x.First()); + var coilDevices = tableCoilDevices + .GroupBy(x => x.Name.ToLower()) + .ToDictionary(x => x.Key, x => x.First()); + var holdCoils = new List(); foreach (var engineCoil in GetCoils(engineCoils)) { @@ -165,14 +212,19 @@ public void PopulateCoils(GamelogicEngineCoil[] engineCoils, IEnumerable coilDevices, GamelogicEngineCoil engineCoil) + { + // match by regex if hint provided + if (!string.IsNullOrEmpty(engineCoil.DeviceHint)) { + foreach (var deviceName in coilDevices.Keys) { + var regex = new Regex(engineCoil.DeviceHint.ToLower()); + if (regex.Match(deviceName).Success) { + return coilDevices[deviceName]; + } + } + } + return null; + } + + private static GamelogicEngineCoil GuessDeviceCoil(GamelogicEngineCoil engineCoil, ICoilableDevice device) + { + if (!string.IsNullOrEmpty(engineCoil.DeviceItemHint)) { + foreach (var deviceCoil in device.AvailableCoils) { + var regex = new Regex(engineCoil.DeviceItemHint.ToLower()); + if (regex.Match(deviceCoil.Id).Success) { + return deviceCoil; + } + } + } + return default; + } + /// /// Returns a sorted list of coil names from the gamelogic engine, /// appended with the additional names in the coil mapping. In short, diff --git a/VisualPinball.Engine/VPT/Table/Table.cs b/VisualPinball.Engine/VPT/Table/Table.cs index 81f8735e8..5abb747e1 100644 --- a/VisualPinball.Engine/VPT/Table/Table.cs +++ b/VisualPinball.Engine/VPT/Table/Table.cs @@ -111,6 +111,7 @@ private IEnumerable ApplyColliderOverrides(IHittable hittable) private readonly Dictionary _textBoxes = new Dictionary(); private readonly Dictionary _timers = new Dictionary(); private readonly Dictionary _triggers = new Dictionary(); + private readonly Dictionary _troughs = new Dictionary(); public Bumper.Bumper Bumper(string name) => _bumpers[name]; public Decal.Decal Decal(int i) => _decals[i]; @@ -131,6 +132,7 @@ private IEnumerable ApplyColliderOverrides(IHittable hittable) public TextBox.TextBox TextBox(string name) => _textBoxes[name]; public Timer.Timer Timer(string name) => _timers[name]; public Trigger.Trigger Trigger(string name) => _triggers[name]; + public Trough.Trough Trough(string name) => _troughs[name]; public IEnumerable Renderables => new IRenderable[] { this } .Concat(_bumpers.Values) @@ -166,9 +168,10 @@ private IEnumerable ApplyColliderOverrides(IHittable hittable) .Concat(_surfaces.Values) .Concat(_textBoxes.Values) .Concat(_timers.Values) - .Concat(_triggers.Values); + .Concat(_triggers.Values) + .Concat(_troughs.Values); - public IEnumerable ItemDatas => new ItemData[] {} + public IEnumerable ItemDatas => new ItemData[] { } .Concat(_bumpers.Values.Select(i => i.Data)) .Concat(_decals.Select(i => i.Data)) .Concat(_dispReels.Values.Select(i => i.Data)) @@ -187,7 +190,8 @@ private IEnumerable ApplyColliderOverrides(IHittable hittable) .Concat(_surfaces.Values.Select(i => i.Data)) .Concat(_textBoxes.Values.Select(i => i.Data)) .Concat(_timers.Values.Select(i => i.Data)) - .Concat(_triggers.Values.Select(i => i.Data)); + .Concat(_triggers.Values.Select(i => i.Data)) + .Concat(_troughs.Values.Select(i => i.Data)); public IEnumerable Hittables => new IHittable[] {this} .Concat(_bumpers.Values) @@ -204,7 +208,6 @@ private IEnumerable ApplyColliderOverrides(IHittable hittable) .Concat(_triggers.Values) .SelectMany(ApplyColliderOverrides); - public IEnumerable Playables => new IPlayable[0] .Concat(_bumpers.Values) .Concat(_flippers.Values) @@ -228,12 +231,18 @@ private IEnumerable ApplyColliderOverrides(IHittable hittable) .Concat(_spinners.Values) .Concat(_triggers.Values); + public IEnumerable SwitchableDevices => new ISwitchableDevice[0] + .Concat(_troughs.Values); + public IEnumerable Coilables => new ICoilable[0] .Concat(_bumpers.Values) .Concat(_flippers.Values) .Concat(_kickers.Values) .Concat(_plungers.Values); + public IEnumerable CoilableDevices => new ICoilableDevice[0] + .Concat(_troughs.Values); + private void AddItem(string name, TItem item, IDictionary d, bool updateStorageIndices) where TItem : IItem { if (updateStorageIndices) { @@ -324,6 +333,10 @@ private Dictionary GetItemDictionary() where T : IItem return _triggers as Dictionary; } + if (typeof(T) == typeof(VPT.Trough.Trough)) { + return _troughs as Dictionary; + } + return null; } @@ -521,6 +534,7 @@ public RenderObjectGroup GetRenderObjects(Table table, Origin origin = Origin.Gl public HitObject[] GetHitShapes() => _hitGenerator.GenerateHitObjects(this).ToArray(); public bool IsCollidable => true; + public bool HasTrough => _troughs.Count > 0; public HitPlane GeneratePlayfieldHit() => _hitGenerator.GeneratePlayfieldHit(this); public HitPlane GenerateGlassHit() => _hitGenerator.GenerateGlassHit(this); diff --git a/VisualPinball.Engine/VPT/Table/TableLoader.cs b/VisualPinball.Engine/VPT/Table/TableLoader.cs index 6b2370980..3f65d59df 100644 --- a/VisualPinball.Engine/VPT/Table/TableLoader.cs +++ b/VisualPinball.Engine/VPT/Table/TableLoader.cs @@ -112,6 +112,7 @@ public static void LoadGameItem(byte[] itemData, int storageIndex, out ItemType case ItemType.TextBox: item = new TextBox.TextBox(reader, itemName); break; case ItemType.Timer: item = new Timer.Timer(reader, itemName); break; case ItemType.Trigger: item = new Trigger.Trigger(reader, itemName); break; + case ItemType.Trough: item = new Trough.Trough(reader, itemName); break; default: Logger.Info("Unhandled item type " + itemType); itemType = ItemType.Invalid; break; @@ -238,6 +239,11 @@ private static void LoadGameItems(Table table, CFStorage storage) table.Add(item); break; } + case ItemType.Trough: { + var item = new Trough.Trough(reader, itemName); + table.Add(item); + break; + } } } } diff --git a/VisualPinball.Engine/VPT/Trough/Trough.cs b/VisualPinball.Engine/VPT/Trough/Trough.cs index aa2fbd4d1..8fac36314 100644 --- a/VisualPinball.Engine/VPT/Trough/Trough.cs +++ b/VisualPinball.Engine/VPT/Trough/Trough.cs @@ -14,19 +14,31 @@ // 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.Data.Common; using System.IO; +using System.Linq; using VisualPinball.Engine.Game; +using VisualPinball.Engine.Game.Engines; using VisualPinball.Engine.Math; namespace VisualPinball.Engine.VPT.Trough { - public class Trough : Item, IRenderable + public class Trough : Item, IRenderable, ISwitchableDevice, ICoilableDevice { public override string ItemName { get; } = "Trough"; - public override string ItemGroupName { get; } = "Troughs"; + public override string ItemGroupName { get; } = null; - public Vertex3D Position { get => Vertex3D.Zero; set { } } - public float RotationY { get => 0f; set { } } + public const string JamSwitchId = "jam"; + public const string EjectCoilId = "eject"; + + public IEnumerable AvailableSwitches => Enumerable.Repeat(0, Data.SwitchCount) + .Select((_, i) => new GamelogicEngineSwitch {Description = SwitchDescription(i), Id = $"{i + 1}"}) + .Concat( new[]{ new GamelogicEngineSwitch{Description = "Jam Switch", Id = JamSwitchId} }); + + public IEnumerable AvailableCoils => new[] { + new GamelogicEngineCoil {Description = "Eject", Id = EjectCoilId} + }; public Trough(TroughData data) : base(data) { @@ -36,6 +48,19 @@ public Trough(BinaryReader reader, string itemName) : this(new TroughData(reader { } + private string SwitchDescription(int i) + { + if (i == 0) { + return $"Ball {i + 1} (eject)"; + } + + if (i == Data.SwitchCount - 1) { + return $"Ball {i + 1} (entry)"; + } + + return $"Ball {i + 1}"; + } + #region IRenderable Matrix3D IRenderable.TransformationMatrix(Table.Table table, Origin origin) @@ -53,6 +78,16 @@ public RenderObjectGroup GetRenderObjects(Table.Table table, Origin origin = Ori return new RenderObjectGroup(Data.Name, "trough", Math.Matrix3D.Identity, new RenderObject[0]); } + // todo create a non-renderable abstraction and remove IRenderable from this + public Vertex3D Position { get => Vertex3D.Zero; set { } } + public float RotationY { get => 0f; set { } } + #endregion + + public static Trough GetDefault(Table.Table table) + { + var primitiveData = new TroughData(table.GetNewName("Trough")); + return new Trough(primitiveData); + } } } diff --git a/VisualPinball.Engine/VPT/Trough/TroughData.cs b/VisualPinball.Engine/VPT/Trough/TroughData.cs index 080ae3d22..f3bcac470 100644 --- a/VisualPinball.Engine/VPT/Trough/TroughData.cs +++ b/VisualPinball.Engine/VPT/Trough/TroughData.cs @@ -14,70 +14,74 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#region ReSharper +#region ReSharper // ReSharper disable UnassignedField.Global // ReSharper disable StringLiteralTypo // ReSharper disable FieldCanBeMadeReadOnly.Global // ReSharper disable ConvertToConstant.Global -#endregion - -using System; -using System.Collections.Generic; -using System.IO; -using VisualPinball.Engine.IO; -using VisualPinball.Engine.Math; -using VisualPinball.Engine.VPT.Table; - -namespace VisualPinball.Engine.VPT.Trough -{ - [Serializable] - public class TroughData : ItemData - { - public override string GetName() => Name; - public override void SetName(string name) { Name = name; } - - [BiffString("NAME", IsWideString = true, Pos = 9)] +#endregion + +using System; +using System.Collections.Generic; +using System.IO; +using VisualPinball.Engine.IO; +using VisualPinball.Engine.VPT.Table; + +namespace VisualPinball.Engine.VPT.Trough +{ + [Serializable] + public class TroughData : ItemData + { + public override string GetName() => Name; + public override void SetName(string name) { Name = name; } + + [BiffString("NAME", IsWideString = true, Pos = 9)] public string Name; [BiffString("ENTK", Pos = 1)] public string EntryKicker = string.Empty; - [BiffString("ENTS", Pos = 2)] - public string EntrySwitch = string.Empty; - [BiffString("EXIT", Pos = 10)] - public string ExitKicker = string.Empty; - - [BiffInt("BCNT", Pos = 3)] - public int BallCount = 3; - - [BiffInt("SCNT", Pos = 4)] - public int SwitchCount = 3; - - [BiffFloat("TIME", Pos = 5)] - public float SettleTime = 0.1f; - - #region BIFF - - static TroughData() - { - Init(typeof(TroughData), Attributes); - } - - public TroughData(BinaryReader reader, string storageName) : base(storageName) - { - Load(this, reader, Attributes); - } - - public override void Write(BinaryWriter writer, HashWriter hashWriter) - { - writer.Write((int)ItemType.Trough); - WriteRecord(writer, Attributes, hashWriter); - WriteEnd(writer, hashWriter); - } - + public string ExitKicker = string.Empty; + + [BiffString("JAMS", Pos = 2)] + public string JamSwitch = string.Empty; + + [BiffInt("BCNT", Pos = 3)] + public int BallCount = 6; + + [BiffInt("SCNT", Pos = 4)] + public int SwitchCount = 6; + + [BiffInt("TIME", Pos = 5)] + public int SettleTime = 100; + + public TroughData(string name) : base(StoragePrefix.GameItem) + { + Name = name; + } + + #region BIFF + + static TroughData() + { + Init(typeof(TroughData), Attributes); + } + + public TroughData(BinaryReader reader, string storageName) : base(storageName) + { + Load(this, reader, Attributes); + } + + public override void Write(BinaryWriter writer, HashWriter hashWriter) + { + writer.Write((int)ItemType.Trough); + WriteRecord(writer, Attributes, hashWriter); + WriteEnd(writer, hashWriter); + } + private static readonly Dictionary> Attributes = new Dictionary>(); - #endregion - } -} + #endregion + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs index f93a3ffcc..6e82a986e 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs @@ -19,24 +19,20 @@ using UnityEditor; using VisualPinball.Engine.VPT.Trough; using VisualPinball.Engine.VPT.Kicker; +using VisualPinball.Engine.VPT.Trigger; namespace VisualPinball.Unity.Editor { [CustomEditor(typeof(TroughAuthoring))] public class TroughInspector : ItemMainInspector { - private bool _foldoutPosition = true; private bool _foldoutMisc = true; public override void OnInspectorGUI() { - OnPreInspectorGUI(); - - if (_foldoutPosition = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutPosition, "Position")) { - ItemReferenceField("Entry Kicker", ref Data.EntryKicker); - ItemReferenceField("Exit Kicker", ref Data.ExitKicker); - } - EditorGUILayout.EndFoldoutHeaderGroup(); + ItemReferenceField("Entry Kicker", "entryKicker", ref Data.EntryKicker); + ItemReferenceField("Exit Kicker", "exitKicker", ref Data.ExitKicker); + ItemReferenceField("Jam Switch", "jamSwitch", ref Data.JamSwitch); if (_foldoutMisc = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutMisc, "Misc")) { ItemDataField("Max Balls", ref Data.BallCount, false); diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListViewItemRenderer.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListViewItemRenderer.cs index 5f8eb3410..ff87480ff 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListViewItemRenderer.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListViewItemRenderer.cs @@ -42,13 +42,15 @@ private enum CoilListColumn private readonly List _gleCoils; private readonly Dictionary _coils; + private readonly Dictionary _coilDevices; private AdvancedDropdownState _itemPickDropdownState; - public CoilListViewItemRenderer(List gleCoils, Dictionary coils) + public CoilListViewItemRenderer(List gleCoils, Dictionary coils, Dictionary coilDevices) { _gleCoils = gleCoils; _coils = coils; + _coilDevices = coilDevices; } public void Render(TableAuthoring tableAuthoring, CoilListData data, Rect cellRect, int column, Action updateAction) @@ -163,6 +165,13 @@ private void RenderElement(TableAuthoring tableAuthoring, CoilListData coilListD case CoilDestination.Playfield: RenderPlayfieldElement(tableAuthoring, coilListData, cellRect, updateAction); break; + + case CoilDestination.Device: + cellRect.width = cellRect.width / 2f - 5f; + RenderDeviceElement(tableAuthoring, coilListData, cellRect, updateAction); + cellRect.x += cellRect.width + 10f; + RenderDeviceItemElement(coilListData, cellRect, updateAction); + break; } } @@ -188,6 +197,50 @@ private void RenderPlayfieldElement(TableAuthoring tableAuthoring, CoilListData } } + private void RenderDeviceElement(TableAuthoring tableAuthoring, CoilListData coilListData, Rect cellRect, Action updateAction) + { + if (GUI.Button(cellRect, coilListData.Device, EditorStyles.objectField) || GUI.Button(cellRect, "", GUI.skin.GetStyle("IN ObjectField"))) + { + if (_itemPickDropdownState == null) { + _itemPickDropdownState = new AdvancedDropdownState(); + } + + var dropdown = new ItemSearchableDropdown( + _itemPickDropdownState, + tableAuthoring, + "Coil Devices", + item => { + coilListData.Device = item.Name; + updateAction(coilListData); + } + ); + dropdown.Show(cellRect); + } + } + + private void RenderDeviceItemElement(CoilListData coilListData, Rect cellRect, Action updateAction) + { + EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(coilListData.Device)); + + var currentIndex = 0; + var coilLabels = new string[0]; + ICoilDeviceAuthoring coilDevice = null; + if (!string.IsNullOrEmpty(coilListData.Device) && _coilDevices.ContainsKey(coilListData.Device.ToLower())) { + coilDevice = _coilDevices[coilListData.Device.ToLower()]; + coilLabels = coilDevice.AvailableCoils.Select(s => s.Description).ToArray(); + currentIndex = coilDevice.AvailableCoils.TakeWhile(s => s.Id != coilListData.DeviceItem).Count(); + } + EditorGUI.BeginChangeCheck(); + var newIndex = EditorGUI.Popup(cellRect, currentIndex, coilLabels); + if (EditorGUI.EndChangeCheck() && coilDevice != null) { + if (currentIndex != newIndex) { + coilListData.DeviceItem = coilDevice.AvailableCoils.ElementAt(newIndex).Id; + updateAction(coilListData); + } + } + EditorGUI.EndDisabledGroup(); + } + private void RenderType(CoilListData coilListData, Rect cellRect, Action updateAction) { if (coilListData.Destination == CoilDestination.Playfield) @@ -209,13 +262,16 @@ private UnityEngine.Texture GetIcon(CoilListData coilListData) switch (coilListData.Destination) { case CoilDestination.Playfield: - { - if (_coils.ContainsKey(coilListData.PlayfieldItem.ToLower())) - { - icon = Icons.ByComponent(_coils[coilListData.PlayfieldItem.ToLower()], size: IconSize.Small); - } - break; + if (_coils.ContainsKey(coilListData.PlayfieldItem.ToLower())) { + icon = Icons.ByComponent(_coils[coilListData.PlayfieldItem.ToLower()], size: IconSize.Small); } + break; + + case CoilDestination.Device: + if (_coilDevices.ContainsKey(coilListData.Device.ToLower())) { + icon = Icons.ByComponent(_coilDevices[coilListData.Device.ToLower()], IconSize.Small); + } + break; } return icon; diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilManager.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilManager.cs index d046793ca..8a50e3ac0 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilManager.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilManager.cs @@ -42,6 +42,7 @@ class CoilManager : ManagerWindow private readonly List _gleCoils = new List(); private readonly Dictionary _coils = new Dictionary(); + private readonly Dictionary _coilDevices = new Dictionary(); private CoilListViewItemRenderer _listViewItemRenderer; @@ -68,7 +69,7 @@ public override void OnEnable() protected override void OnFocus() { - _listViewItemRenderer = new CoilListViewItemRenderer(_gleCoils, _coils); + _listViewItemRenderer = new CoilListViewItemRenderer(_gleCoils, _coils, _coilDevices); base.OnFocus(); } @@ -99,7 +100,7 @@ protected override void OnButtonBarGUI() if (_tableAuthoring != null) { RecordUndo("Populate all coil mappings"); - _tableAuthoring.Table.Mappings.PopulateCoils(GetAvailableEngineCoils(), _tableAuthoring.Table.Coilables); + _tableAuthoring.Table.Mappings.PopulateCoils(GetAvailableEngineCoils(), _tableAuthoring.Table.Coilables, _tableAuthoring.Table.CoilableDevices); Reload(); } } @@ -123,9 +124,6 @@ protected override void OnListViewItemRenderer(CoilListData data, Rect cellRect, RecordUndo(DataTypeName + " Data Change"); coilListData.Update(); - - var coil = _tableAuthoring.Table.Coilables.FirstOrDefault(c => c.Name == coilListData.PlayfieldItem); - coil.IsDualWound = coilListData.Type == CoilType.DualWound; }); } @@ -193,13 +191,17 @@ private void DisplayMessage(string message) private void RefreshCoils() { _coils.Clear(); + _coilDevices.Clear(); - if (_tableAuthoring != null) - { - foreach (var item in _tableAuthoring.GetComponentsInChildren()) - { + if (_tableAuthoring != null) { + + foreach (var item in _tableAuthoring.GetComponentsInChildren()) { _coils.Add(item.Name.ToLower(), item); } + + foreach (var item in _tableAuthoring.GetComponentsInChildren()) { + _coilDevices.Add(item.Name.ToLower(), item); + } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs index f048852ac..9b656b593 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs @@ -42,7 +42,6 @@ public class SwitchListData : IManagerListData public int Constant; public string Device; public string DeviceItem; - public int DeviceItemIndex; public MappingsSwitchData MappingsSwitchData; diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs index bd1be7231..5aa4104e8 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListViewItemRenderer.cs @@ -295,18 +295,20 @@ private void RenderDeviceElement(TableAuthoring tableAuthoring, SwitchListData s private void RenderDeviceItemElement(SwitchListData switchListData, Rect cellRect, Action updateAction) { EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(switchListData.Device)); + + var currentIndex = 0; var switchLabels = new string[0]; ISwitchDeviceAuthoring switchDevice = null; if (!string.IsNullOrEmpty(switchListData.Device) && _switchDevices.ContainsKey(switchListData.Device.ToLower())) { switchDevice = _switchDevices[switchListData.Device.ToLower()]; switchLabels = switchDevice.AvailableSwitches.Select(s => s.Description).ToArray(); + currentIndex = switchDevice.AvailableSwitches.TakeWhile(s => s.Id != switchListData.DeviceItem).Count(); } EditorGUI.BeginChangeCheck(); - var index = EditorGUI.Popup(cellRect, switchListData.DeviceItemIndex, switchLabels); + var newIndex = EditorGUI.Popup(cellRect, currentIndex, switchLabels); if (EditorGUI.EndChangeCheck() && switchDevice != null) { - if (switchListData.DeviceItemIndex != index) { - switchListData.DeviceItemIndex = index; - switchListData.DeviceItem = switchDevice.AvailableSwitches[index].Id; + if (currentIndex != newIndex) { + switchListData.DeviceItem = switchDevice.AvailableSwitches.ElementAt(newIndex).Id; updateAction(switchListData); } } diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchManager.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchManager.cs index dafd9231b..32bba3844 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchManager.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchManager.cs @@ -111,7 +111,7 @@ protected override void OnButtonBarGUI() if (_tableAuthoring != null) { RecordUndo("Populate all switch mappings"); - _tableAuthoring.Table.Mappings.PopulateSwitches(GetAvailableEngineSwitches(), _tableAuthoring.Table.Switchables); + _tableAuthoring.Table.Mappings.PopulateSwitches(GetAvailableEngineSwitches(), _tableAuthoring.Table.Switchables, _tableAuthoring.Table.SwitchableDevices); Reload(); } } diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Resources/Icons/small_blue/trough.png b/VisualPinball.Unity/VisualPinball.Unity.Editor/Resources/Icons/small_blue/trough.png index a467b88816d0f50873a50136eaf13b5b9d9f6331..0b58e593844a7839cadb5f1945e66ae0246fedda 100644 GIT binary patch delta 677 zcmV;W0$Tm+1=0nOIe&ynL_t(oh3%NlaoaEug`Y9GOQ|5b@)UMpxdU|&br5%8q=G0F zgsvcR1!gJ;bqSA=Ixq_em04xsS*-yIlwixA;hWLOKLGV{@%91Y#df>JTabAZlmqB9 zXaG&E0W`G+(A0Vtx}L4u9KaO77{D69(q`u2T%b?3P+PYIwtob0=^6jUX2!l4ozNaA zLzVzOcFei8nVG*J<4ziss&x}F@5*MT^!>xu?F>N9zg9Lg%M_s6qt}u1=3IFRNPaE= zd{BRHX#A;5+vRy?)uctvDjRpo>UQS;4$xoYvl0Tepjj=B4B*If=ZW zs{6xF4)-2j4y6}|8-##W53so+DFnXzTGzi;X6;Z}=4V>&j4wBJi* znW^}UwST@b0-dm@+=)K#aX2|u8|C$2CVL-}iH2~m*t|=jm4dH=pg!@^$jZkYL{jK~ zJRSSkkq-;fF7*B!mbtT;nH_x|zYF}=@Mv85T}I^NiR;xq!)L#bd&kqcH6A?8ORWJksQ~-~@0TX>67pEo00000 LNkvXXu0mjfFOgTp delta 702 zcmV;v0zv)K1?vTnIe(o=L_t(oh3%NpaT+lYhJS1PZc;&by{B9%Fs>kUU{XOy1#Bt^ z9pu~ruE0=1ju-3E(19r+BC~kK=oHDE;4auR_s@9FcqH!A?yuEa7u)R???LKaPP=7NG66SuCm*)&~U@QYqLxGS?^!J}L6||L~`qbw1hEvPX zHOGIpRYL#^S$~A94KK>I6#}VWB!WICK*C0pwBan20Z52-CZtWp*FI=Uja*87O;Ijm zXP%csx+QJKG0>@mzK*EoxQb-s)y=~G9TiZ@)C#~jIHjsP%G69!pQ2LAS6y9+OWgp*x2`OYvsg+PHR+XU}WS?V@Hr3xoFM#K>hrUgOkgN^8&S(Tx`C@N)+~ zkDSSEY3ae2QP7a2sdgiu(u|y<4P~l#^tGeYiw>M;8a@w;HSYP{Es<-=)ULmHvv>I7_g->& kI=8ypyr$KGHYxyr0p7e0xr3+a-T(jq07*qoM6N<$f}KZRx&QzG diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Resources/Icons/small_gray/trough.png b/VisualPinball.Unity/VisualPinball.Unity.Editor/Resources/Icons/small_gray/trough.png index 6c0ca0135f7cd8893883d391b2f018fe2448c462..0891bdc5e4f795924f259216539f24ad2f6e88c6 100644 GIT binary patch delta 681 zcmV;a0#^O^1=aRPoFa)P=iD4Za0gZKngLuaF5vTN3`35n!iLXfZvpU40FyX@I!v%y=?yEj4E zgFb_L(AerhW2*;^t@pmqGi8+k7y}prSOJ*lS^97)&?if%DSs;hn*+FXjQ^Tv>6aIy z6WRe~$Qr;!%bc4$OQ$c$xRnN_YJCovca>*p?RvwM)dWDoe=hPYoyP#x9=#5nH|5Gp zK=N||;9UK`q4CE8>#iRJ&Ko%(e``qbnYUc&gXQh|jw%9%7n~qZWXfv931bUD3A2#n zbVZv$zLkB!)qiwVQfuID@3ksz(}EPYH1Q&zQS^>gXUcKyth)g|Bdnt#D4tV6mPB3Iku?U>cHsMZ$RUVyX&11FrBwFVU9MjT7~ zM9q6mpwt}SI)J*gl<+<{2keydv+Z-oR0sksY-dH*9|iBT%!DnY{e44w4|}%=G^Ar= zNc+83mVX(G?^x*zBhV3h%I@fs4x5u>wN_sDX0r2;Of-ajgyvlgEfxI23+fWz8d>>} zjYtgrkEcVA9eJ}L?LyDbVVS!;OD6~KN4XJdxz=+w%Bsh(Ot)KqsD$5b<+~=#_V?LI zPMn3`?Q@&oKWqd4H5`pAzsrbx+;P3yGko^@up)Cjom%~AUTpQCQ3c>1?A9aNZTtpv P00000NkvXXu0mjfo}FA% delta 714 zcmV;*0yX{C1@{GzIe)21L_t(oh3!~fa@sHu{?f@i^aSMwbx#m-g7V-Q`z`bYr6-7c zf^vg8PnD*6a86J-LCpyQHwY)7vt-4{iWFO5mt@A@3}awc=+o}EKj>n&+u<$X-J4+9 z6YT&!(YDbOZ5ut&wsGnEJt5Tyzy!b;z!1O!K#?YKc@Cn^7Jn+F$^hJY*4zV_rb+zR zIXeT-LNBD6zd(}knZ5g8QSqpdio*P-A%X8{5@*I*l1j#M8SvLj0C}3k`KgDpJvt3o zd$1K!(fbDgHwH<<6@Z^Ys)dkhcnVQFnZ^NYKk()ek*TpI!gH4+I1(fMIZa}xtnAQ- z4yV@?S|Z)h{(qCM8cZLi&>j_1Q4~rCNw9Qog;W(?+eAZZ zAA*w0 zS5pjFCQn552PT_yl58A5M&ACGCh?SQOOKro#SwDZ+kflwG#64`vF;Yu$wzFw_LPok z!zOW0>xEQ-JfEOLue0wXfUjH^|1#;BCd(zI0w({ZW}l@|Lqpr|KEW@3iQge@6CCQ2 zUwiMyX@8MlJIH39dP)bMm}`h=$=d81TT?Fl99qM%;G{L% z=El;xH_?0(eq@l3JUzK9tSs`Sm#7OoRGXd;8AeXQHcjH;(btZ~EIKxxT}Xx+#l-tB zv<_T07G?qG8fkjH4atOs{#Y1#*PaipFxQl1XG6JhHuSEaFX{a~MekKyjazy*OXMa^ w;{AN_YVYt_@5A8obZ+#wd2OR7+A0A21L&9wZxOM9dH?_b07*qoM6N<$f**HUQvd(} diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Resources/Icons/small_green/trough.png b/VisualPinball.Unity/VisualPinball.Unity.Editor/Resources/Icons/small_green/trough.png index 13c85e864120711d5198cd5c29f7d9a288f519e4..cc719d8a68f7cf03807f1fd8bef191c4e4fdad77 100644 GIT binary patch delta 679 zcmV;Y0$Ba=1=IzQIe&&pL_t(oh3%NpaoRu-hJS1P4yhn?5OrYOfQHxT#dHvNkfef; z3L?Mg)u0A)sUT26paZLbh|H2b&$7M~Cpa5>M*j>0Hh1u8_3wYjU2L~oyagq1g0csF z2KAt^)q}=X4;ovSzR#UW`s? z50oJdfDbKm?y{tuz98dH8kDN_Ibhy(mXyZzM%CmK04e{u%#v~*15|tTHgMjQD=z`b z&jo<@>i;#3KNVPa{UC7O$N~9NLyFJ5=Sm+fZ`XHJ5iq>q1bL#W$w!OV_sRXH}D5@ohH@Mt@-)(#;UL+7@r8tY#0kqQ2kE zwXLRrU%Ljf=L$z%>xFBX44+OQ7Q#zNZ*kd|QJlrz(4KrwE_v2;k( zytf2O&GD@Rs7ose?}Kx|PB}l@K6gxoAke~gR%HEB@IK2-*fQGRceMAgcZ)znIyQ#1 z-;J`&Sbu!ST3;A}j@VOnN1t}soSdqS^13&Zorh$iA?zbG?_y}B;Fn%dm-yDm%7<)3 zV(5Q79eeD^n+0hXdVUVeEV87W9K9dqMlf=%=WLW!k71c^xBgfOzuU@pO_<&9v$LEy z3%}dvHow2y1^#O|8drXo5&5{|dbMZx?Dt{kcpy5r`qRAF>OrFlz(2)&Bu|L2J)Zyo N002ovPDHLkV1j6yPe}j( delta 708 zcmV;#0z3WG1@Q%tIe()`L_t(oh3%M8a@sHuhW}{t9`^+026aymasiju=q2<7r6-7c zf^vg6FMbAHpm2hk69jG$4p7lqvSMUa3Kp1>%=n+lIAkRJY4_J^ql?XEgZCiuE+{+D z6Q~1iTODZI>OkApW$62qmOTIi0DS-nfEj>ECd%p@pxz@?X@8jmxDU*k0vKkZd_Fmy zrGHYdv>d+zN&3Rk{jaJ;RB1_R{?!oRM<&YLnoCy6*)CW7=Q)5P6J>GiqTGlMBj)bL zDlO^vCjfUAB9v)c`q<|5 zhEhw=4aa{rReys43toh+H7&}v6+Ee*M}j^_K*B^+X-QeAJdj}P+$$|>zIH)lYUG0J zYm8DJJ8``1)1A_C6apP{=$j~SIIbq%culjgdq)j46Xg=X$UCL3$4rzHPJN6jE?-S` z#Wr~XH6IwZ;7zjfd>KXidnU>ukF5gZLYf?4m+g2{o`1$l%WL-C%vpJl2QLGqW7zPJ zn9_WuWhCc|OzO?<`vl+{*TvrqJuuNCC7v+td>A9|)sBhZ4+ z=(aU?;D47M*gQ~AY2gEV4uMwe%~NY_+l8Nr)0~?{OhBnz*Zk#Q@n?2`ie*Zw(dlOgVj^FJPxynSj?JwT! q9X|U#i7rp)R(G4%wmQ&O1>i4qtPJ-tr;Y~z0000sL_t(oh3%M8ZrVT)hW}K3hsp;CH>fXAhunZ0gc~&PerPMz z&!s1bbApl+bn6QgPEdHSrT7F?LuaF5vTN3`35n!iLXfZvpU40FyX@I!v%zc7n^!^E zgFb|Aq{}{Epu*@yqZ2E<5n7!s`V*g-er|G7x=Y90erd-OVR-jpjZ z0m;uLfOGZ#hQ=QYth;^?IB(>D{HYpSNpvyg9_TAU$do1=7f+Puo( z^q%o8q2#AMiv($%I#g>5Z7)Dtf`L=cOrrtCxDm(F zK2h^t6DT#uw+^5#EhW4U&H+2+{A~N&F%^P9OWRqI^-IC~EHh!tXn)_*-oxH40uAZd z7}9<>%6~Fr@f|CDVFWs2PuU%P+F^5Ytk%lw-b{8Ll8J_}kI=k}p{0UfctKs_TO%tU zvJr`)|M7I_u_JF5q+RIwDJ*lB;=EYVI8dU)P0gU}2C9{^L QIsgCw07*qoM6N<$f_cSNkN^Mx delta 714 zcmV;*0yX{D1@{GzIe)21L_t(oh3!~fZrVT){!--~Dj%TSpzZ;>Atxv|2t7gRvmfG0 z-RE+HIyZ1mQ1At6P7rwSO5p@lLuS!>yBmAKE{Wt%LIyO;emnEc4|}oO?eH4#=2ful ziFSaVXxr$CwvC=>+qm@oo|0k&U;Q8SvLj09lk2*{O%JJvt3o zd$3hf(EA4fHwH<<6@Z^giiMJ5cnVQFnZ^NY-|^-#k*TpI!gH4+I1(fMIZ6trtnAQ- z4yV@?S|Z)h{(pn68cZLi&>mG%P!viBNw9Qol@t|S+eAZZ z9&OOKro`4Mv2+kflwG*?nwvF;Yu$wzFw_LPok z!zOW0>y;FNJfEOLue0wxfG=DZe>3TsCd(zI0w({tW}l@|Lqpr|KEW^keE%5IHo>7T z`L*{x4Ja(1l$(am=oQz*L#g4zJ~Z6xPRopllE;389MOT5Nxp6rqF%>mrFK``8DQeUDr4U15R4A zZEh^BdlSt!;l~E~*wd4{!pb6FdWpKgL$&GokYVH$Y@?(Y9)0a-%%WrC*@a}NQB1u5 zLhHa~V__C>u92qK+mK9H=#Pb=ckTJm3Uf_Kc0-mMXG8D$`JCS0QuJQL)wrd1vqWy9 wq}b0FFZK?f^*#(PPv=H|o7XmaqOAhJUs)*$?vyr^i2wiq07*qoM6N<$f_v{^>Hq)$ diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Toolbox/ToolboxEditor.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Toolbox/ToolboxEditor.cs index 3250ee86a..eb4eb7ec8 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Toolbox/ToolboxEditor.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Toolbox/ToolboxEditor.cs @@ -32,6 +32,7 @@ using VisualPinball.Engine.VPT.Surface; using VisualPinball.Engine.VPT.Table; using VisualPinball.Engine.VPT.Trigger; +using VisualPinball.Engine.VPT.Trough; using Light = VisualPinball.Engine.VPT.Light.Light; using Texture = UnityEngine.Texture; @@ -159,6 +160,10 @@ private void OnGUI() CreateItem(Primitive.GetDefault, "New Primitive"); } + if (CreateButton("Trough", Icons.Trough(color: iconColor), iconSize, buttonStyle)) { + CreateItem(Trough.GetDefault, "New Trough"); + } + GUILayout.EndHorizontal(); } @@ -190,7 +195,9 @@ private GameObject CreateRenderable(IRenderable renderable) private static GameObject GetOrCreateParent(Component tb, IItem renderable) { - var parent = tb.gameObject.transform.Find(renderable.ItemGroupName)?.gameObject; + var parent = string.IsNullOrEmpty(renderable.ItemGroupName) + ? tb.gameObject + : tb.gameObject.transform.Find(renderable.ItemGroupName)?.gameObject; if (parent == null) { parent = new GameObject(renderable.ItemGroupName); parent.transform.parent = tb.gameObject.transform; diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs index 86a3fd0c9..2c8355580 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs @@ -15,6 +15,7 @@ // along with this program. If not, see . using System; +using System.Collections.Generic; using System.Linq; using UnityEditor; using UnityEngine; @@ -31,8 +32,7 @@ public abstract class ItemInspector : UnityEditor.Editor protected TableAuthoring _table; - protected MonoBehaviour _item; - private SurfaceAuthoring _surface; + private Dictionary _refItems = new Dictionary(); private string[] _allMaterials = new string[0]; private string[] _allTextures = new string[0]; @@ -242,34 +242,29 @@ protected void ItemDataField(string label, ref Engine.Math.Color field, bool dir } } - protected void ItemReferenceField(string label, ref string field, bool dirtyMesh = true) + protected void ItemReferenceField(string label, string cacheKey, ref string field, bool dirtyMesh = true) where TItemAuthoring : ItemAuthoring where TData : ItemData where TItem : Item, IRenderable { - if (_item?.name != field) { - _item = null; - } - - var mb = target as MonoBehaviour; - if (_item == null && _table != null) { + if (!_refItems.ContainsKey(cacheKey) && _table != null) { var currentFieldName = field; if (currentFieldName != null && _table.Table.Has(currentFieldName)) { - _item = _table.gameObject.GetComponentsInChildren(true) + _refItems[cacheKey] = _table.gameObject.GetComponentsInChildren(true) .FirstOrDefault(s => s.name == currentFieldName); } } EditorGUI.BeginChangeCheck(); - _item = (TItemAuthoring)EditorGUILayout.ObjectField(label, _item, typeof(TItemAuthoring), true); + _refItems[cacheKey] = (TItemAuthoring)EditorGUILayout.ObjectField(label, _refItems.ContainsKey(cacheKey) ? _refItems[cacheKey] : null, typeof(TItemAuthoring), true); if (EditorGUI.EndChangeCheck()) { FinishEdit(label, dirtyMesh); - field = _item != null ? _item.name : string.Empty; + field = _refItems[cacheKey] != null ? _refItems[cacheKey].name : string.Empty; } } protected void SurfaceField(string label, ref string field, bool dirtyMesh = true) { - ItemReferenceField(label, ref field, dirtyMesh); + ItemReferenceField(label, "surface", ref field, dirtyMesh); } protected void DropDownField(string label, ref T field, string[] optionStrings, T[] optionValues, bool dirtyMesh = true, Action onChanged = null) where T : IEquatable diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/Engine/DefaultGamelogicEngine.cs b/VisualPinball.Unity/VisualPinball.Unity/Game/Engine/DefaultGamelogicEngine.cs index 9a64353a7..e40bd1d2b 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Game/Engine/DefaultGamelogicEngine.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/Engine/DefaultGamelogicEngine.cs @@ -37,16 +37,29 @@ public class DefaultGamelogicEngine : IGamelogicEngine, IGamelogicEngineWithSwit private const string SwLeftFlipperEos = "s_left_flipper_eos"; private const string SwRightFlipper = "s_right_flipper"; private const string SwRightFlipperEos = "s_right_flipper_eos"; + private const string SwTrough1 = "s_trough1"; + private const string SwTrough2 = "s_trough2"; + private const string SwTrough3 = "s_trough3"; + private const string SwTrough4 = "s_trough4"; + private const string SwTrough5 = "s_trough5"; + private const string SwTrough6 = "s_trough6"; + private const string SwTroughJam = "s_trough_jam"; private const string SwPlunger = "s_plunger"; private const string SwCreateBall = "s_create_ball"; - public GamelogicEngineSwitch[] AvailableSwitches { get; } = - { + public GamelogicEngineSwitch[] AvailableSwitches { get; } = { new GamelogicEngineSwitch { Id = SwLeftFlipper, Description = "Left Flipper (button)", InputActionHint = InputConstants.ActionLeftFlipper }, new GamelogicEngineSwitch { Id = SwRightFlipper, Description = "Right Flipper (button)", InputActionHint = InputConstants.ActionRightFlipper }, new GamelogicEngineSwitch { Id = SwLeftFlipperEos, Description = "Left Flipper (EOS)", PlayfieldItemHint = "^(LeftFlipper|LFlipper|FlipperLeft|FlipperL)$"}, new GamelogicEngineSwitch { Id = SwRightFlipperEos, Description = "Right Flipper (EOS)", PlayfieldItemHint = "^(RightFlipper|RFlipper|FlipperRight|FlipperR)$"}, new GamelogicEngineSwitch { Id = SwPlunger, Description = "Plunger", InputActionHint = InputConstants.ActionPlunger }, + new GamelogicEngineSwitch { Id = SwTrough1, Description = "Trough 1 (eject)", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "1"}, + new GamelogicEngineSwitch { Id = SwTrough2, Description = "Trough 2", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "2"}, + new GamelogicEngineSwitch { Id = SwTrough3, Description = "Trough 3", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "3"}, + new GamelogicEngineSwitch { Id = SwTrough4, Description = "Trough 4", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "4"}, + new GamelogicEngineSwitch { Id = SwTrough5, Description = "Trough 5", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "5"}, + new GamelogicEngineSwitch { Id = SwTrough6, Description = "Trough 6 (entry)", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "6"}, + new GamelogicEngineSwitch { Id = SwTroughJam, Description = "Trough Jam", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "jam"}, new GamelogicEngineSwitch { Id = SwCreateBall, Description = "Create Debug Ball", InputActionHint = InputConstants.ActionCreateBall, InputMapHint = InputConstants.MapDebug } }; @@ -55,14 +68,15 @@ public class DefaultGamelogicEngine : IGamelogicEngine, IGamelogicEngineWithSwit private const string CoilRightFlipperMain = "c_flipper_right_main"; private const string CoilRightFlipperHold = "c_flipper_right_hold"; private const string CoilAutoPlunger = "c_auto_plunger"; + private const string CoilTroughEject = "c_trough_eject"; - public GamelogicEngineCoil[] AvailableCoils { get; } = - { + public GamelogicEngineCoil[] AvailableCoils { get; } = { new GamelogicEngineCoil { Id = CoilLeftFlipperMain, Description = "Left Flipper", PlayfieldItemHint = "^(LeftFlipper|LFlipper|FlipperLeft|FlipperL)$" }, new GamelogicEngineCoil { Id = CoilLeftFlipperHold, MainCoilIdOfHoldCoil = CoilLeftFlipperMain }, new GamelogicEngineCoil { Id = CoilRightFlipperMain, Description = "Right Flipper", PlayfieldItemHint = "^(RightFlipper|RFlipper|FlipperRight|FlipperR)$" }, new GamelogicEngineCoil { Id = CoilRightFlipperHold, MainCoilIdOfHoldCoil = CoilRightFlipperMain }, - new GamelogicEngineCoil { Id = CoilAutoPlunger, Description = "Plunger", PlayfieldItemHint = "Plunger" } + new GamelogicEngineCoil { Id = CoilAutoPlunger, Description = "Plunger", PlayfieldItemHint = "Plunger" }, + new GamelogicEngineCoil { Id = CoilTroughEject, Description = "Trough Eject", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "eject"} }; private TableApi _tableApi; @@ -155,6 +169,12 @@ public void Switch(string id, bool normallyClosed) OnCoilChanged?.Invoke(this, new CoilEventArgs(CoilAutoPlunger, normallyClosed)); break; + case SwTrough6: + if (normallyClosed) { + OnCoilChanged?.Invoke(this, new CoilEventArgs(CoilTroughEject, true)); + } + break; + case SwCreateBall: { if (normallyClosed) { _ballManager.CreateBall(new DebugBallCreator()); diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs b/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs index 742cf15a5..bd90e2a45 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs @@ -45,7 +45,7 @@ namespace VisualPinball.Unity public class Player : MonoBehaviour { public Table Table { get; private set; } - public TableApi TableApi { get { return _tableApi; } } + public TableApi TableApi { get; } = new TableApi(); // shortcuts public Matrix4x4 TableToWorld => transform.localToWorldMatrix; @@ -60,7 +60,7 @@ public class Player : MonoBehaviour [HideInInspector] [SerializeField] public string physicsEngineId; // table related - private readonly TableApi _tableApi = new TableApi(); + private readonly List _apis = new List(); private readonly List _initializables = new List(); private readonly Dictionary _hittables = new Dictionary(); private readonly Dictionary _rotatables = new Dictionary(); @@ -68,7 +68,9 @@ public class Player : MonoBehaviour private readonly Dictionary _spinnables = new Dictionary(); private readonly Dictionary _slingshots = new Dictionary(); private readonly Dictionary _switches = new Dictionary(); + private readonly Dictionary _switchDevices = new Dictionary(); private readonly Dictionary _coils = new Dictionary(); + private readonly Dictionary _coilDevices = new Dictionary(); private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); @@ -77,11 +79,11 @@ public class Player : MonoBehaviour [NonSerialized] private readonly Dictionary> _keyAssignments = new Dictionary>(); - private readonly Dictionary>> _coilAssignments = new Dictionary>>(); + private readonly Dictionary>> _coilAssignments = new Dictionary>>(); public Player() { - _initializables.Add(_tableApi); + _initializables.Add(TableApi); } #region Lifecycle @@ -119,26 +121,31 @@ private void OnDestroy() if (_coilAssignments.Count > 0) { (GameEngine as IGamelogicEngineWithCoils).OnCoilChanged -= HandleCoilEvent; } + + foreach (var i in _apis) { + i.OnDestroy(); + } + GameEngine?.OnDestroy(); } private void Start() { - // hook up mapping configuration - SetupSwitchMapping(); - SetupCoilMapping(); - // bootstrap table script(s) var tableScripts = GetComponents(); foreach (var tableScript in tableScripts) { - tableScript.OnAwake(_tableApi, BallManager); + tableScript.OnAwake(TableApi, BallManager); } // trigger init events now foreach (var i in _initializables) { i.OnInit(BallManager); } + + // hook up mapping configuration + SetupSwitchMapping(); + SetupCoilMapping(); } #endregion @@ -148,7 +155,8 @@ private void Start() public void RegisterBumper(Bumper bumper, Entity entity, GameObject go) { var bumperApi = new BumperApi(bumper, entity, this); - _tableApi.Bumpers[bumper.Name] = bumperApi; + TableApi.Bumpers[bumper.Name] = bumperApi; + _apis.Add(bumperApi); _initializables.Add(bumperApi); _hittables[entity] = bumperApi; _switches[bumper.Name] = bumperApi; @@ -158,7 +166,8 @@ public void RegisterBumper(Bumper bumper, Entity entity, GameObject go) public void RegisterFlipper(Flipper flipper, Entity entity, GameObject go) { var flipperApi = new FlipperApi(flipper, entity, this); - _tableApi.Flippers[flipper.Name] = flipperApi; + TableApi.Flippers[flipper.Name] = flipperApi; + _apis.Add(flipperApi); _initializables.Add(flipperApi); _hittables[entity] = flipperApi; _rotatables[entity] = flipperApi; @@ -174,7 +183,8 @@ public void RegisterFlipper(Flipper flipper, Entity entity, GameObject go) public void RegisterGate(Gate gate, Entity entity, GameObject go) { var gateApi = new GateApi(gate, entity, this); - _tableApi.Gates[gate.Name] = gateApi; + TableApi.Gates[gate.Name] = gateApi; + _apis.Add(gateApi); _initializables.Add(gateApi); _hittables[entity] = gateApi; _rotatables[entity] = gateApi; @@ -184,7 +194,8 @@ public void RegisterGate(Gate gate, Entity entity, GameObject go) public void RegisterHitTarget(HitTarget hitTarget, Entity entity, GameObject go) { var hitTargetApi = new HitTargetApi(hitTarget, entity, this); - _tableApi.HitTargets[hitTarget.Name] = hitTargetApi; + TableApi.HitTargets[hitTarget.Name] = hitTargetApi; + _apis.Add(hitTargetApi); _initializables.Add(hitTargetApi); _hittables[entity] = hitTargetApi; _switches[hitTarget.Name] = hitTargetApi; @@ -193,7 +204,8 @@ public void RegisterHitTarget(HitTarget hitTarget, Entity entity, GameObject go) public void RegisterKicker(Kicker kicker, Entity entity, GameObject go) { var kickerApi = new KickerApi(kicker, entity, this); - _tableApi.Kickers[kicker.Name] = kickerApi; + TableApi.Kickers[kicker.Name] = kickerApi; + _apis.Add(kickerApi); _initializables.Add(kickerApi); _hittables[entity] = kickerApi; _switches[kicker.Name] = kickerApi; @@ -203,7 +215,8 @@ public void RegisterKicker(Kicker kicker, Entity entity, GameObject go) public void RegisterPlunger(Plunger plunger, Entity entity, GameObject go) { var plungerApi = new PlungerApi(plunger, entity, this); - _tableApi.Plungers[plunger.Name] = plungerApi; + TableApi.Plungers[plunger.Name] = plungerApi; + _apis.Add(plungerApi); _initializables.Add(plungerApi); _rotatables[entity] = plungerApi; _coils[plunger.Name] = plungerApi; @@ -212,7 +225,8 @@ public void RegisterPlunger(Plunger plunger, Entity entity, GameObject go) public void RegisterPrimitive(Primitive primitive, Entity entity, GameObject go) { var primitiveApi = new PrimitiveApi(primitive, entity, this); - _tableApi.Primitives[primitive.Name] = primitiveApi; + TableApi.Primitives[primitive.Name] = primitiveApi; + _apis.Add(primitiveApi); _initializables.Add(primitiveApi); _hittables[entity] = primitiveApi; } @@ -220,14 +234,16 @@ public void RegisterPrimitive(Primitive primitive, Entity entity, GameObject go) public void RegisterRamp(Ramp ramp, Entity entity, GameObject go) { var rampApi = new RampApi(ramp, entity, this); - _tableApi.Ramps[ramp.Name] = rampApi; + TableApi.Ramps[ramp.Name] = rampApi; + _apis.Add(rampApi); _initializables.Add(rampApi); } public void RegisterRubber(Rubber rubber, Entity entity, GameObject go) { var rubberApi = new RubberApi(rubber, entity, this); - _tableApi.Rubbers[rubber.Name] = rubberApi; + TableApi.Rubbers[rubber.Name] = rubberApi; + _apis.Add(rubberApi); _initializables.Add(rubberApi); _hittables[entity] = rubberApi; } @@ -235,7 +251,8 @@ public void RegisterRubber(Rubber rubber, Entity entity, GameObject go) public void RegisterSurface(Surface surface, Entity entity, GameObject go) { var surfaceApi = new SurfaceApi(surface, entity, this); - _tableApi.Surfaces[surface.Name] = surfaceApi; + TableApi.Surfaces[surface.Name] = surfaceApi; + _apis.Add(surfaceApi); _initializables.Add(surfaceApi); _hittables[entity] = surfaceApi; _slingshots[entity] = surfaceApi; @@ -244,7 +261,8 @@ public void RegisterSurface(Surface surface, Entity entity, GameObject go) public void RegisterSpinner(Spinner spinner, Entity entity, GameObject go) { var spinnerApi = new SpinnerApi(spinner, entity, this); - _tableApi.Spinners[spinner.Name] = spinnerApi; + TableApi.Spinners[spinner.Name] = spinnerApi; + _apis.Add(spinnerApi); _initializables.Add(spinnerApi); _spinnables[entity] = spinnerApi; _rotatables[entity] = spinnerApi; @@ -254,18 +272,22 @@ public void RegisterSpinner(Spinner spinner, Entity entity, GameObject go) public void RegisterTrigger(Trigger trigger, Entity entity, GameObject go) { var triggerApi = new TriggerApi(trigger, entity, this); - _tableApi.Triggers[trigger.Name] = triggerApi; + TableApi.Triggers[trigger.Name] = triggerApi; + _apis.Add(triggerApi); _initializables.Add(triggerApi); _hittables[entity] = triggerApi; _switches[trigger.Name] = triggerApi; } - public void RegisterTrough(Trough trough, Entity entity, GameObject go) + public void RegisterTrough(Trough trough, GameObject go) { - var troughApi = new TroughApi(trough, entity, this); + var troughApi = new TroughApi(trough, this); + _apis.Add(troughApi); _initializables.Add(troughApi); + _switchDevices[trough.Name] = troughApi; + _coilDevices[trough.Name] = troughApi; } - + #endregion #region Mapping @@ -279,20 +301,31 @@ private void SetupCoilMapping() switch (coilData.Destination) { case CoilDestination.Playfield: if (!_coilAssignments.ContainsKey(coilData.Id)) { - _coilAssignments[coilData.Id] = new List>(); + _coilAssignments[coilData.Id] = new List>(); } - _coilAssignments[coilData.Id].Add(new Tuple(coilData.PlayfieldItem, false)); + _coilAssignments[coilData.Id].Add(new Tuple(coilData.PlayfieldItem, false, null)); if (coilData.Type == CoilType.DualWound) { if (!_coilAssignments.ContainsKey(coilData.HoldCoilId)) { - _coilAssignments[coilData.HoldCoilId] = new List>(); + _coilAssignments[coilData.HoldCoilId] = new List>(); } - _coilAssignments[coilData.HoldCoilId].Add(new Tuple(coilData.PlayfieldItem, true)); - + _coilAssignments[coilData.HoldCoilId].Add(new Tuple(coilData.PlayfieldItem, true, null)); } break; case CoilDestination.Device: - // todo + if (_coilDevices.ContainsKey(coilData.Device)) { + var device = _coilDevices[coilData.Device]; + var coil = device.Coil(coilData.DeviceItem); + if (coil != null) { + if (!_coilAssignments.ContainsKey(coilData.Id)) { + _coilAssignments[coilData.Id] = new List>(); + } + _coilAssignments[coilData.Id].Add(new Tuple(coilData.DeviceItem, false, coilData.Device)); + + } else { + Logger.Warn($"Unknown coil \"{coilData.DeviceItem}\" in coil device \"{coilData.Device}\"."); + } + } break; } } @@ -333,6 +366,20 @@ private void SetupSwitchMapping() Logger.Warn($"Cannot find switch \"{switchData.PlayfieldItem}\" on playfield!"); break; + case SwitchSource.Device + when !string.IsNullOrEmpty(switchData.Device) + && _switchDevices.ContainsKey(switchData.Device): { + } + var device = _switchDevices[switchData.Device]; + var deviceSwitch = device.Switch(switchData.DeviceItem); + if (deviceSwitch != null) { + deviceSwitch.AddSwitchId(switchData.Id, 0); + + } else { + Logger.Warn($"Unknown switch \"{switchData.DeviceItem}\" in switch device \"{switchData.Device}\"."); + } + break; + case SwitchSource.Constant: break; @@ -346,7 +393,7 @@ private void SetupSwitchMapping() _inputManager.Enable(HandleKeyInput); } } - GameEngine.OnInit(_tableApi, BallManager); + GameEngine.OnInit(TableApi, BallManager); } private void HandleKeyInput(object obj, InputActionChange change) @@ -370,11 +417,15 @@ private void HandleKeyInput(object obj, InputActionChange change) private void HandleCoilEvent(object sender, CoilEventArgs coilEvent) { if (_coilAssignments.ContainsKey(coilEvent.Id)) { - foreach (var (itemName, isHoldCoil) in _coilAssignments[coilEvent.Id]) { - if (_coils.ContainsKey(itemName)) { + foreach (var (itemName, isHoldCoil, deviceName) in _coilAssignments[coilEvent.Id]) { + if (deviceName != null && _coilDevices.ContainsKey(deviceName)) { + _coilDevices[deviceName].Coil(itemName).OnCoil(coilEvent.IsEnabled, isHoldCoil); + + } else if (_coils.ContainsKey(itemName)) { _coils[itemName].OnCoil(coilEvent.IsEnabled, isHoldCoil); + } else { - Logger.Warn($"Should trigger unknown coil item {itemName}."); + Logger.Warn($"Cannot trigger unknown coil item {itemName}."); } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/Import/Job/TableLoader.cs b/VisualPinball.Unity/VisualPinball.Unity/Import/Job/TableLoader.cs index 3fb60685d..506783c7c 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Import/Job/TableLoader.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Import/Job/TableLoader.cs @@ -42,6 +42,7 @@ using VisualPinball.Engine.VPT.TextBox; using VisualPinball.Engine.VPT.Timer; using VisualPinball.Engine.VPT.Trigger; +using VisualPinball.Engine.VPT.Trough; namespace VisualPinball.Unity { @@ -143,6 +144,10 @@ public static Table LoadTable(string path) table.Add(objHandle.Target as Trigger); break; } + case ItemType.Trough: { + table.Add(objHandle.Target as Trough); + break; + } default: throw new ArgumentException("Unknown item type " + (ItemType)job.ItemType[i] + "."); } diff --git a/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs b/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs index 731e608a6..04fa78e49 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs @@ -44,6 +44,7 @@ using VisualPinball.Engine.VPT.TextBox; using VisualPinball.Engine.VPT.Timer; using VisualPinball.Engine.VPT.Trigger; +using VisualPinball.Engine.VPT.Trough; using Logger = NLog.Logger; namespace VisualPinball.Unity @@ -57,7 +58,7 @@ public class VpxConverter : MonoBehaviour private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); //private readonly Dictionary _renderObjects = new Dictionary(); - private readonly Dictionary _parents = new Dictionary(); + private readonly Dictionary _groupParents = new Dictionary(); private Table _table; private TableAuthoring _tableAuthoring; @@ -100,10 +101,15 @@ public void Convert(string fileName, Table table, bool applyPatch = true, string go.AddComponent(); var dga = go.AddComponent(); + // add trough if none available + if (!_table.HasTrough) { + CreateTrough(); + } + // populate mappings if (_table.Mappings.IsEmpty()) { - _table.Mappings.PopulateSwitches((dga.GameEngine as IGamelogicEngineWithSwitches).AvailableSwitches, table.Switchables); - _table.Mappings.PopulateCoils((dga.GameEngine as IGamelogicEngineWithCoils).AvailableCoils, table.Coilables); + _table.Mappings.PopulateSwitches((dga.GameEngine as IGamelogicEngineWithSwitches).AvailableSwitches, table.Switchables, table.SwitchableDevices); + _table.Mappings.PopulateCoils((dga.GameEngine as IGamelogicEngineWithCoils).AvailableCoils, table.Coilables, table.CoilableDevices); } // don't need that anymore. @@ -125,16 +131,21 @@ orderby renderable.SubComponent var lookupName = renderable.Name.ToLower(); renderableLookup[lookupName] = renderable; - // create group parent if not created - if (!_parents.ContainsKey(renderable.ItemGroupName)) { - var parent = new GameObject(renderable.ItemGroupName); - parent.transform.parent = gameObject.transform; - _parents[renderable.ItemGroupName] = parent; + // create group parent if not created (if null, attach it to the table directly). + if (!string.IsNullOrEmpty(renderable.ItemGroupName)) { + if (!_groupParents.ContainsKey(renderable.ItemGroupName)) { + var parent = new GameObject(renderable.ItemGroupName); + parent.transform.parent = gameObject.transform; + _groupParents[renderable.ItemGroupName] = parent; + } } + var groupParent = !string.IsNullOrEmpty(renderable.ItemGroupName) + ? _groupParents[renderable.ItemGroupName] + : gameObject; if (renderable.SubComponent == ItemSubComponent.None) { // create object(s) - convertedItems[lookupName] = CreateGameObjects(_table, renderable, _parents[renderable.ItemGroupName]); + convertedItems[lookupName] = CreateGameObjects(_table, renderable, groupParent); } else { // if the object's names was parsed to be part of another object, re-link to other object. @@ -142,7 +153,7 @@ orderby renderable.SubComponent if (convertedItems.ContainsKey(parentName)) { var parent = convertedItems[parentName]; - var convertedItem = CreateGameObjects(_table, renderable, _parents[renderable.ItemGroupName]); + var convertedItem = CreateGameObjects(_table, renderable, groupParent); if (convertedItem.IsValidChild(parent)) { if (convertedItem.MeshAuthoring.Any()) { @@ -166,7 +177,7 @@ orderby renderable.SubComponent renderable.DisableSubComponent(); // invalid parenting, re-convert the item, because it returned only the sub component. - convertedItems[lookupName] = CreateGameObjects(_table, renderable, _parents[renderable.ItemGroupName]); + convertedItems[lookupName] = CreateGameObjects(_table, renderable, groupParent); // ..and destroy the other one convertedItem.Destroy(); @@ -216,6 +227,7 @@ private static ConvertedItem SetupGameObjects(IRenderable item, GameObject obj) case Surface surface: return surface.SetupGameObject(obj); case Table table: return table.SetupGameObject(obj); case Trigger trigger: return trigger.SetupGameObject(obj); + case Trough trough: return trough.SetupGameObject(obj); } throw new InvalidOperationException("Unknown item " + item + " to setup!"); @@ -257,6 +269,20 @@ private void MakeSerializable(GameObject go, Table table) string.Join(", ", sidecar.collections.Select(c => c.Name)) ); } + + private void CreateTrough() + { + var troughData = new TroughData("Trough"); + if (_table.Kicker("BallRelease") != null) { + troughData.ExitKicker = "BallRelease"; + } + if (_table.Kicker("Drain") != null) { + troughData.EntryKicker = "Drain"; + } + var item = new Trough(troughData); + _table.Add(item, true); + CreateGameObjects(_tableAuthoring.Table, item, _tableAuthoring.gameObject); + } } public class ConvertedItem diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/IApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/IApi.cs index 2adaa90bb..b12d66403 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/IApi.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/IApi.cs @@ -19,6 +19,7 @@ namespace VisualPinball.Unity public interface IApi { string Name { get; } + void OnDestroy(); } internal interface IApiInitializable @@ -56,6 +57,16 @@ internal interface IApiSwitch void AddSwitchId(string switchId, int pulseDelay); } + internal interface IApiSwitchDevice + { + IApiSwitch Switch(string switchId); + } + + internal interface IApiCoilDevice + { + IApiCoil Coil(string coilId); + } + internal interface IApiCoil { void OnCoil(bool enabled, bool isHoldCoil); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs index fcecadd20..a21ab87b7 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchDeviceAuthoring.cs @@ -15,6 +15,7 @@ // along with this program. If not, see . +using System.Collections.Generic; using VisualPinball.Engine.Game.Engines; namespace VisualPinball.Unity @@ -27,6 +28,6 @@ public interface ISwitchDeviceAuthoring : IIdentifiableItemAuthoring /// /// A list of available switches supported by the switch device /// - GamelogicEngineSwitch[] AvailableSwitches { get; } + IEnumerable AvailableSwitches { get; } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs index 41845acfc..966a6390e 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs @@ -18,6 +18,7 @@ using Unity.Entities; using VisualPinball.Engine.VPT; using VisualPinball.Engine.VPT.Table; +using VisualPinball.Unity.Switch; namespace VisualPinball.Unity { @@ -32,25 +33,40 @@ public abstract class ItemApi : IApi where T : Item where TData protected Table Table => _player.Table; protected TableApi TableApi => _player.TableApi; - protected readonly EntityManager EntityManager = World.DefaultGameObjectInjectionWorld.EntityManager; + protected EntityManager EntityManager; internal VisualPinballSimulationSystemGroup SimulationSystemGroup => World.DefaultGameObjectInjectionWorld.GetOrCreateSystem(); private readonly Player _player; + protected ItemApi(T item, Player player) + { + Item = item; + Entity = Entity.Null; + _player = player; + _gamelogicEngineWithSwitches = (IGamelogicEngineWithSwitches)player.GameEngine; + } + protected ItemApi(T item, Entity entity, Player player) { + EntityManager = World.DefaultGameObjectInjectionWorld.EntityManager; Item = item; Entity = entity; _player = player; _gamelogicEngineWithSwitches = (IGamelogicEngineWithSwitches)player.GameEngine; } + void IApi.OnDestroy() + { + } + #region IApiSwitchable private List _switchIds; private readonly IGamelogicEngineWithSwitches _gamelogicEngineWithSwitches; + protected DeviceSwitch CreateSwitch(bool isPulseSwitch) => new DeviceSwitch(isPulseSwitch, _gamelogicEngineWithSwitches); + protected void AddSwitchId(string switchId, bool isPulseSwitch, int pulseDelay) { if (_switchIds == null) { @@ -75,19 +91,5 @@ protected void OnSwitch(bool normallyClosed) } #endregion - - private readonly struct SwitchConfig - { - public readonly string SwitchId; - public readonly int PulseDelay; - public readonly bool IsPulseSwitch; - - public SwitchConfig(string switchId, bool isPulseSwitch, int pulseDelay) - { - SwitchId = switchId; - PulseDelay = pulseDelay; - IsPulseSwitch = isPulseSwitch; - } - } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerApi.cs index 8b9b22cdb..31c6b5c0c 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerApi.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerApi.cs @@ -61,6 +61,12 @@ public void CreateSizedBall(float radius) _ballManager.CreateBall(Item, radius, 1f, Entity); } + public void Kick() + { + SimulationSystemGroup.QueueAfterBallCreation(() => KickXYZ(Table, Entity, Data.Angle, Data.Speed, 0, 0, 0, 0)); + } + + public void Kick(float angle, float speed, float inclination = 0) { SimulationSystemGroup.QueueAfterBallCreation(() => KickXYZ(Table, Entity, angle, speed, inclination, 0, 0, 0)); @@ -87,7 +93,7 @@ public void DestroyBall() void IApiCoil.OnCoil(bool enabled, bool _) { if (enabled) { - Kick(Data.Angle, Data.Speed); + Kick(); } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/TableAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/TableAuthoring.cs index da36d2657..90b18cfea 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/TableAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/TableAuthoring.cs @@ -46,9 +46,10 @@ using VisualPinball.Engine.VPT.TextBox; using VisualPinball.Engine.VPT.Timer; using VisualPinball.Engine.VPT.Trigger; - +using VisualPinball.Engine.VPT.Trough; using Logger = NLog.Logger; using SurfaceData = VisualPinball.Engine.VPT.Surface.SurfaceData; +using Texture = VisualPinball.Engine.VPT.Texture; namespace VisualPinball.Unity { @@ -157,11 +158,9 @@ public override void Restore() public Texture2D GetTexture(string name) { var lowerName = name.ToLower(); - bool forceRecreate = false; // check to see if the texture we're after has been flagged as dirty and thus needs to be recreated from table data - if (CheckDirty(lowerName)) { - forceRecreate = true; - } + var forceRecreate = CheckDirty(lowerName); + // don't need to recreate it, and we have the texture in cache if (!forceRecreate && _unityTextures.ContainsKey(lowerName)) { return _unityTextures[lowerName]; @@ -244,6 +243,7 @@ public Table CreateTable(TableData data) Restore(table); Restore(table); Restore(table); + Restore(table); return table; } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs index 4ef9cee08..60110f67c 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs @@ -15,56 +15,202 @@ // along with this program. If not, see . using System; -using Unity.Entities; +using System.Collections.Generic; +using UnityEngine; using VisualPinball.Engine.VPT.Trough; +using VisualPinball.Unity.Switch; namespace VisualPinball.Unity { - public class TroughApi : ItemApi, - IApiInitializable + public class TroughApi : ItemApi, IApi, IApiInitializable, IApiSwitchDevice, IApiCoilDevice { + /// + /// The entry kicker is where the ball rolls into the trough. + /// private KickerApi _entryKicker; + + /// + /// The exit kicker is where new balls are created when we get the eject + /// coil event from the gamelogic engine. + /// private KickerApi _exitKicker; + /// + /// The ball switches. These are virtual switches that don't exist on the + /// playfield, but running on them will + /// send the event to the gamelogic engine. + /// + private DeviceSwitch[] _ballSwitches; + + /// + /// Eject coil triggers the kicker that throws out the ball. + /// + private IApiCoil _ejectCoil; + + /// + /// Since TriggerApi implements IApiSwitch, we return directly this when the + /// engine asks for the jam switch. + /// + /// + /// + /// Basically we short-wire the jam trigger to the switch, so the jam trigger + /// events go directly to the gamelogic engine. + /// + /// In case we need to hook into the jam trigger logic here, uncomment the + /// blocks below (ctrl+f jam events) + /// + private TriggerApi _jamTrigger; + + /// + /// The player will ask for switches to hook up to the gamelogic engine, + /// this allows fast lookup. + /// + private readonly Dictionary _switchLookup = new Dictionary(); + + private DeviceSwitch EntrySwitch => _ballSwitches[Data.SwitchCount - 1]; + private DeviceSwitch EjectSwitch => _ballSwitches[0]; + /// /// Event emitted when the table is started. /// public event EventHandler Init; - internal TroughApi(Trough item, Entity entity, Player player) : base(item, entity, player) + internal TroughApi(Trough item, Player player) : base(item, player) + { + Debug.Log("Trough API instantiated."); + } + + /// + /// This is called when the player starts. It tells the trough + /// "please give me switch XXX so I can hook it up to the gamelogic engine". + /// + /// + /// + IApiSwitch IApiSwitchDevice.Switch(string switchId) { + // if the engine is asking for the jam switch, return the trigger directly. + if (switchId == Trough.JamSwitchId) { + return _jamTrigger; + } + return _switchLookup.ContainsKey(switchId) ? _switchLookup[switchId] : null; } - #region Events + /// + /// Returns a coil by ID. Same principle as + /// + /// + /// + IApiCoil IApiCoilDevice.Coil(string coilId) + { + if (coilId == Trough.EjectCoilId) { + return _ejectCoil; + } + return null; + } + + internal void OnEjectCoil(bool closed) + { + if (closed) { + Debug.Log("Spawning new ball."); + _exitKicker.CreateBall(); + _exitKicker.Kick(); + + EntrySwitch.OnSwitch(false); + } + } + + private void OnEntryKickerHit(object sender, EventArgs args) + { + Debug.Log("Draining ball."); + (sender as KickerApi)?.DestroyBall(); + + // todo properly close ball switch, etc + EntrySwitch.OnSwitch(true); + + } + + #region Wiring void IApiInitializable.OnInit(BallManager ballManager) { + // playfield elements _entryKicker = TableApi.Kicker(Data.EntryKicker); _exitKicker = TableApi.Kicker(Data.ExitKicker); + _jamTrigger = TableApi.Trigger(Data.JamSwitch); - if (_entryKicker != null) - { + // setup entry kicker handler + if (_entryKicker != null) { _entryKicker.Hit += OnEntryKickerHit; } - if (_exitKicker != null) - { - _exitKicker.Hit += OnExitKickerFire; + // in case we need also need to handle jam events here, uncomment + // if (_jamTrigger != null) { + // _jamTrigger.Hit += OnJamTriggerHit; + // _jamTrigger.UnHit += OnJamTriggerUnHit; + // } + + // create switches to hook up + _ballSwitches = new DeviceSwitch[Data.SwitchCount]; + foreach (var sw in Item.AvailableSwitches) { + if (int.TryParse(sw.Id, out var id)) { + _ballSwitches[id - 1] = CreateSwitch(false); + _switchLookup[sw.Id] = _ballSwitches[id - 1]; + + } else if (sw.Id == Trough.JamSwitchId) { + // we short-wire the jam trigger to the switch, so we don't care about it here, + // all the jam trigger does push its switch events to the gamelogic engine. in + // case we need to hook into the jam trigger logic here, uncomment those two + // lines and and relay the events manually to the engine. + //_jamSwitch = CreateSwitch(false); + //_switchLookup[sw.Id] = _jamSwitch; + + } else { + Debug.LogWarning($"Unknown switch ID {sw.Id}"); + } } - + + // setup eject coil + _ejectCoil = new TroughEjectCoil(this); + + // finally, emit the event for anyone else to chew on Init?.Invoke(this, EventArgs.Empty); } - - void OnEntryKickerHit(object sender, EventArgs args) + + void IApi.OnDestroy() { - (sender as KickerApi)?.DestroyBall(); + Debug.Log("Destroying trough!"); + + if (_entryKicker != null) { + _entryKicker.Hit -= OnEntryKickerHit; + } + + // in case we need also need to handle jam events here, uncomment + // if (_jamTrigger != null) { + // _jamTrigger.Hit -= OnJamTriggerHit; + // _jamTrigger.UnHit -= OnJamTriggerUnHit; + // } } - - void OnExitKickerFire(object sender, EventArgs args) + + // in case we need also need to handle jam events here, uncomment + // private IApiSwitch _jamSwitch; + // private void OnJamTriggerHit(object sender, EventArgs e) => _jamSwitch?.OnSwitch(true); + // private void OnJamTriggerUnHit(object sender, EventArgs e) => _jamSwitch?.OnSwitch(false); + + #endregion + } + + internal class TroughEjectCoil : IApiCoil + { + private readonly TroughApi _troughApi; + + public TroughEjectCoil(TroughApi troughApi) { - (sender as KickerApi)?.CreateBall(); + _troughApi = troughApi; } - #endregion + public void OnCoil(bool closed, bool isHoldCoil) + { + _troughApi.OnEjectCoil(closed); + } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs index 6b962fcab..618c20591 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs @@ -22,7 +22,6 @@ using System; using System.Collections.Generic; -using System.Linq; using UnityEngine; using VisualPinball.Engine.Game.Engines; using VisualPinball.Engine.VPT.Trough; @@ -31,8 +30,10 @@ namespace VisualPinball.Unity { [ExecuteAlways] [AddComponentMenu("Visual Pinball/Trough")] - public class TroughAuthoring : ItemMainAuthoring, ISwitchDeviceAuthoring + public class TroughAuthoring : ItemMainAuthoring, ISwitchDeviceAuthoring, ICoilDeviceAuthoring { + public IEnumerable AvailableSwitches => Item.AvailableSwitches; + public IEnumerable AvailableCoils => Item.AvailableCoils; protected override Trough InstantiateItem(TroughData data) => new Trough(data); public override IEnumerable ValidParents { get; } = new Type[0]; protected override Type MeshAuthoringType { get; } = null; @@ -43,9 +44,10 @@ public override void Restore() Item.Name = name; } - public GamelogicEngineSwitch[] AvailableSwitches => Enumerable.Repeat(0, Data.SwitchCount) - .Select((_, i) => new GamelogicEngineSwitch {Description = $"Switch {i + 1}", Id = $"{i + 1}" }) - .ToArray(); + private void Start() + { + GetComponentInParent().RegisterTrough(Item, gameObject); + } private void OnDestroy() { diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs index 164188d84..4906c2d10 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs @@ -14,19 +14,18 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -using Unity.Entities; -using UnityEngine; -using VisualPinball.Engine.Game; - -namespace VisualPinball.Unity -{ - internal static class TroughExtensions - { - public static TroughAuthoring SetupGameObject(this Engine.VPT.Trough.Trough Trough, GameObject obj, RenderObjectGroup rog) - { - var ic = obj.AddComponent().SetItem(Trough); - obj.AddComponent(); - return ic as TroughAuthoring; - } - } -} +using Unity.Entities; +using UnityEngine; +using VisualPinball.Engine.Game; + +namespace VisualPinball.Unity +{ + internal static class TroughExtensions + { + public static ConvertedItem SetupGameObject(this Engine.VPT.Trough.Trough trough, GameObject obj) + { + var mainAuthoring = obj.AddComponent().SetItem(trough); + return new ConvertedItem(mainAuthoring); + } + } +} From 1adf2ad18426c8329afe2d46c9c1cf51983ad147 Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 29 Oct 2020 23:26:03 +0100 Subject: [PATCH 08/36] trough: Add missing files. --- VisualPinball.Engine/Game/ICoilableDevice.cs | 28 +++++++++ .../Game/ICoilableDevice.cs.meta | 11 ++++ .../Game/ISwitchableDevice.cs | 28 +++++++++ .../Game/ISwitchableDevice.cs.meta | 11 ++++ .../VisualPinball.Unity/Game/DeviceSwitch.cs | 59 +++++++++++++++++++ .../Game/DeviceSwitch.cs.meta | 11 ++++ .../VisualPinball.Unity/Game/SwitchConfig.cs | 32 ++++++++++ .../Game/SwitchConfig.cs.meta | 11 ++++ .../VPT/ICoilDeviceAuthoring.cs | 33 +++++++++++ .../VPT/ICoilDeviceAuthoring.cs.meta | 11 ++++ 10 files changed, 235 insertions(+) create mode 100644 VisualPinball.Engine/Game/ICoilableDevice.cs create mode 100644 VisualPinball.Engine/Game/ICoilableDevice.cs.meta create mode 100644 VisualPinball.Engine/Game/ISwitchableDevice.cs create mode 100644 VisualPinball.Engine/Game/ISwitchableDevice.cs.meta create mode 100644 VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs.meta create mode 100644 VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs.meta create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/ICoilDeviceAuthoring.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/ICoilDeviceAuthoring.cs.meta diff --git a/VisualPinball.Engine/Game/ICoilableDevice.cs b/VisualPinball.Engine/Game/ICoilableDevice.cs new file mode 100644 index 000000000..1443bf351 --- /dev/null +++ b/VisualPinball.Engine/Game/ICoilableDevice.cs @@ -0,0 +1,28 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 VisualPinball.Engine.Game.Engines; + +namespace VisualPinball.Engine.Game +{ + public interface ICoilableDevice + { + string Name { get; } + + IEnumerable AvailableCoils { get; } + } +} diff --git a/VisualPinball.Engine/Game/ICoilableDevice.cs.meta b/VisualPinball.Engine/Game/ICoilableDevice.cs.meta new file mode 100644 index 000000000..5dffe9fff --- /dev/null +++ b/VisualPinball.Engine/Game/ICoilableDevice.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 29418066007efd546bf0919c88d02a88 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Engine/Game/ISwitchableDevice.cs b/VisualPinball.Engine/Game/ISwitchableDevice.cs new file mode 100644 index 000000000..d159aef6f --- /dev/null +++ b/VisualPinball.Engine/Game/ISwitchableDevice.cs @@ -0,0 +1,28 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 VisualPinball.Engine.Game.Engines; + +namespace VisualPinball.Engine.Game +{ + public interface ISwitchableDevice + { + string Name { get; } + + IEnumerable AvailableSwitches { get; } + } +} diff --git a/VisualPinball.Engine/Game/ISwitchableDevice.cs.meta b/VisualPinball.Engine/Game/ISwitchableDevice.cs.meta new file mode 100644 index 000000000..050f95f1e --- /dev/null +++ b/VisualPinball.Engine/Game/ISwitchableDevice.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f8a55aed6ac821c44ac1699352ef97ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs b/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs new file mode 100644 index 000000000..7d96c5fe0 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs @@ -0,0 +1,59 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 Unity.Entities; + +namespace VisualPinball.Unity.Switch +{ + public class DeviceSwitch : IApiSwitch + { + private readonly bool _isPulseSwitch; + private List _engineSwitchIds; + private readonly IGamelogicEngineWithSwitches _engine; + private static VisualPinballSimulationSystemGroup SimulationSystemGroup => World.DefaultGameObjectInjectionWorld.GetOrCreateSystem(); + + public DeviceSwitch(bool isPulseSwitch, IGamelogicEngineWithSwitches engine) + { + _isPulseSwitch = isPulseSwitch; + _engine = engine; + } + + public void AddSwitchId(string switchId, int pulseDelay) + { + if (_engineSwitchIds == null) { + _engineSwitchIds = new List(); + } + + _engineSwitchIds.Add(new SwitchConfig(switchId, _isPulseSwitch, pulseDelay)); + } + + public void OnSwitch(bool normallyClosed) + { + if (_engine != null && _engineSwitchIds != null) { + foreach (var switchConfig in _engineSwitchIds) { + _engine.Switch(switchConfig.SwitchId, normallyClosed); + + // time switch opening if closed and pulse + if (normallyClosed && switchConfig.IsPulseSwitch) { + SimulationSystemGroup.ScheduleSwitch(switchConfig.PulseDelay, + () => _engine.Switch(switchConfig.SwitchId, false)); + } + } + } + } + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs.meta new file mode 100644 index 000000000..0e920b5e4 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c0a8ec62997da4b4da399005468e4db0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs b/VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs new file mode 100644 index 000000000..5ca4ffabb --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs @@ -0,0 +1,32 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 . + +namespace VisualPinball.Unity.Switch +{ + public readonly struct SwitchConfig + { + public readonly string SwitchId; + public readonly int PulseDelay; + public readonly bool IsPulseSwitch; + + public SwitchConfig(string switchId, bool isPulseSwitch, int pulseDelay) + { + SwitchId = switchId; + PulseDelay = pulseDelay; + IsPulseSwitch = isPulseSwitch; + } + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs.meta new file mode 100644 index 000000000..986284292 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b99281fc314f6f409fdf8d79d6c9624 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ICoilDeviceAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ICoilDeviceAuthoring.cs new file mode 100644 index 000000000..1007311b2 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ICoilDeviceAuthoring.cs @@ -0,0 +1,33 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 VisualPinball.Engine.Game.Engines; + +namespace VisualPinball.Unity +{ + /// + /// A coil device is an item that contains multiple coil. + /// + public interface ICoilDeviceAuthoring : IIdentifiableItemAuthoring + { + /// + /// A list of available coils supported by the coil device + /// + IEnumerable AvailableCoils { get; } + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ICoilDeviceAuthoring.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/ICoilDeviceAuthoring.cs.meta new file mode 100644 index 000000000..e2aa48615 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ICoilDeviceAuthoring.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 638986c636eb9f94f8f5adef00fac4ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 715a834d54bf16aea035527f9a3043892eb023bf Mon Sep 17 00:00:00 2001 From: freezy Date: Fri, 30 Oct 2020 00:02:12 +0100 Subject: [PATCH 09/36] trough: Cosmetics. --- .../Managers/Coil/CoilListData.cs | 2 +- .../Managers/Switch/SwitchListData.cs | 2 +- .../VisualPinball.Unity/Game/DeviceSwitch.cs | 6 +++++- .../VisualPinball.Unity/Game/SwitchConfig.cs | 2 +- VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs | 1 - .../VisualPinball.Unity/VPT/Trough/TroughApi.cs | 1 - 6 files changed, 8 insertions(+), 6 deletions(-) diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListData.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListData.cs index 0a6d45378..ca5e98340 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListData.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Coil/CoilListData.cs @@ -29,7 +29,7 @@ public class CoilListData : IManagerListData [ManagerListColumn(Order = 2, HeaderName = "Destination", Width = 150)] public int Destination; - [ManagerListColumn(Order = 3, HeaderName = "Element", Width = 200)] + [ManagerListColumn(Order = 3, HeaderName = "Element", Width = 270)] public string Element; [ManagerListColumn(Order = 4, HeaderName = "Type", Width = 110)] diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs index 9b656b593..57213c1bb 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Managers/Switch/SwitchListData.cs @@ -29,7 +29,7 @@ public class SwitchListData : IManagerListData [ManagerListColumn(Order = 2, HeaderName = "Source", Width = 150)] public int Source; - [ManagerListColumn(Order = 3, HeaderName = "Element", Width = 250)] + [ManagerListColumn(Order = 3, HeaderName = "Element", Width = 270)] public string Element; [ManagerListColumn(Order = 5, HeaderName = "Pulse Delay", Width = 100)] diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs b/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs index 7d96c5fe0..a19925f33 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs @@ -15,9 +15,10 @@ // along with this program. If not, see . using System.Collections.Generic; +using NLog; using Unity.Entities; -namespace VisualPinball.Unity.Switch +namespace VisualPinball.Unity { public class DeviceSwitch : IApiSwitch { @@ -25,6 +26,7 @@ public class DeviceSwitch : IApiSwitch private List _engineSwitchIds; private readonly IGamelogicEngineWithSwitches _engine; private static VisualPinballSimulationSystemGroup SimulationSystemGroup => World.DefaultGameObjectInjectionWorld.GetOrCreateSystem(); + private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); public DeviceSwitch(bool isPulseSwitch, IGamelogicEngineWithSwitches engine) { @@ -53,6 +55,8 @@ public void OnSwitch(bool normallyClosed) () => _engine.Switch(switchConfig.SwitchId, false)); } } + } else { + Logger.Warn("Cannot trigger device switch."); } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs b/VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs index 5ca4ffabb..3bc4fef3d 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/SwitchConfig.cs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -namespace VisualPinball.Unity.Switch +namespace VisualPinball.Unity { public readonly struct SwitchConfig { diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs index 966a6390e..eb7613887 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemApi.cs @@ -18,7 +18,6 @@ using Unity.Entities; using VisualPinball.Engine.VPT; using VisualPinball.Engine.VPT.Table; -using VisualPinball.Unity.Switch; namespace VisualPinball.Unity { diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs index 60110f67c..115e85165 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs @@ -18,7 +18,6 @@ using System.Collections.Generic; using UnityEngine; using VisualPinball.Engine.VPT.Trough; -using VisualPinball.Unity.Switch; namespace VisualPinball.Unity { From e9fd228ed8ba7828a8c3745f3b7e07a2bc3a2514 Mon Sep 17 00:00:00 2001 From: freezy Date: Fri, 30 Oct 2020 23:10:14 +0100 Subject: [PATCH 10/36] trough: Add come documentation. --- .../creators-guide/manual/flipper.md | 5 ---- .../manual/{items => mechanisms}/flippers.md | 0 .../manual/mechanisms/troughs.md | 25 +++++++++++++++++++ .../Documentation~/creators-guide/toc.yml | 6 +++-- 4 files changed, 29 insertions(+), 7 deletions(-) delete mode 100644 VisualPinball.Unity/Documentation~/creators-guide/manual/flipper.md rename VisualPinball.Unity/Documentation~/creators-guide/manual/{items => mechanisms}/flippers.md (100%) create mode 100644 VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/flipper.md b/VisualPinball.Unity/Documentation~/creators-guide/manual/flipper.md deleted file mode 100644 index df242232a..000000000 --- a/VisualPinball.Unity/Documentation~/creators-guide/manual/flipper.md +++ /dev/null @@ -1,5 +0,0 @@ -# Flipper - -Flippers. They flip. - -[You can program them too](xref:VisualPinball.Unity.FlipperApi)! \ No newline at end of file diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/items/flippers.md b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/flippers.md similarity index 100% rename from VisualPinball.Unity/Documentation~/creators-guide/manual/items/flippers.md rename to VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/flippers.md diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md new file mode 100644 index 000000000..f3edf52a5 --- /dev/null +++ b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md @@ -0,0 +1,25 @@ +# Troughs / Ball Drains + +If you have never heard about ball troughs, have a quick look at [MPF's documentation](https://mpf-docs.readthedocs.io/en/latest/mechs/troughs/), they do an excellent job explaining it. + +VPE comes with a trough mechanism that simulates like a real-world trough behaves. This is important, because when emulating real-world games, the [gamelogic engine](../gamelogic-engine.md) expects the trough's switches to be in a certain state, or else it will complain. + +## Creating a Trough + +When importing a `.vpx` file that doesn't have a trough (chances are high, because Visual Pinball doesn't handle troughs like VPE does), VPE will automatically add a trough under the root of the table. If you're creating a new game, click on the *Trough* button in the toolbox. + +## Linking to the Playfield + +In order to interact with the game, you'll need to setup your entry kicker (the one that drains the ball), and the exit kicker (the one that releases a new ball). This terminology seems weird, because the ball *exits* the playfield when draining, but from the the trough's perspective, that's where the ball *enters*. + +You can setup the kickers by selecting the trough in the hierarchy panel and linking them to the desired kickers in the inspector panel. + +## Switch Setup + +The number of switches of the trough depends on the *Switch Count* property in the inspector panel. For recreations, you can quickly determine the number of trough switches by looking at switch matrix in the operation manual. + +Open the [switch manager](../../editor/switch-manager.md) and add the trough switches if they're not already added. As *Destination* select "Device". Under *Element*, select the through you've created and which switch of the trough to connect. For a three-ball trough, it would look something like that: + +## Coil Setup + +VPE's trough currently only supports one coil, which is the eject coil that pushes a new ball into the plunger lane. Open the [coil manager](../../editor/coil-manager.md), find or add the eject coil and link it to the trough's eject like you did with the switches before: \ 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 88d3be812..e9a36bd3b 100644 --- a/VisualPinball.Unity/Documentation~/creators-guide/toc.yml +++ b/VisualPinball.Unity/Documentation~/creators-guide/toc.yml @@ -30,7 +30,9 @@ items: - name: Gamelogic Engine href: manual/gamelogic-engine.md - - name: Game Items + - name: Pinball Mechanisms items: + - name: Troughs / Ball Drains + href: manual/mechanisms/troughs.md - name: Flippers - href: manual/items/flippers.md \ No newline at end of file + href: manual/mechanisms/flippers.md \ No newline at end of file From 56ff4984635d47ae6e1ad56ea77f22da3d025ce1 Mon Sep 17 00:00:00 2001 From: freezy Date: Fri, 30 Oct 2020 23:10:51 +0100 Subject: [PATCH 11/36] trough: Add unit tests. --- .../Fixtures~/TroughTest.vpx | Bin 0 -> 10240 bytes .../VPT/Trough/TroughDataTests.cs | 53 ++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 VisualPinball.Engine.Test/Fixtures~/TroughTest.vpx create mode 100644 VisualPinball.Engine.Test/VPT/Trough/TroughDataTests.cs diff --git a/VisualPinball.Engine.Test/Fixtures~/TroughTest.vpx b/VisualPinball.Engine.Test/Fixtures~/TroughTest.vpx new file mode 100644 index 0000000000000000000000000000000000000000..24e3db48a1d775198213e83859a9d24e4038b03e GIT binary patch literal 10240 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 U;@j=8pK^6;Wu+&;)R{5<7iwvDbpQYW literal 0 HcmV?d00001 diff --git a/VisualPinball.Engine.Test/VPT/Trough/TroughDataTests.cs b/VisualPinball.Engine.Test/VPT/Trough/TroughDataTests.cs new file mode 100644 index 000000000..c69fefdb0 --- /dev/null +++ b/VisualPinball.Engine.Test/VPT/Trough/TroughDataTests.cs @@ -0,0 +1,53 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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 FluentAssertions; +using NUnit.Framework; +using VisualPinball.Engine.Test.Test; +using VisualPinball.Engine.VPT.Trough; + +namespace VisualPinball.Engine.Test.VPT.Trough +{ + public class TroughDataTests + { + [Test] + public void ShouldReadTroughData() + { + var table = Engine.VPT.Table.Table.Load(VpxPath.Trough); + ValidateTroughData(table.Trough("Trough1").Data); + } + + [Test] + public void ShouldWriteTroughData() + { + const string tmpFileName = "ShouldWriteTroughData.vpx"; + var table = Engine.VPT.Table.Table.Load(VpxPath.Trough); + table.Save(tmpFileName); + var writtenTable = Engine.VPT.Table.Table.Load(tmpFileName); + ValidateTroughData(writtenTable.Trough("Trough1").Data); + } + + private static void ValidateTroughData(TroughData data) + { + data.BallCount.Should().Be(3); + data.SwitchCount.Should().Be(4); + data.SettleTime.Should().Be(112); + data.EntryKicker.Should().Be("BallDrain"); + data.ExitKicker.Should().Be("BallRelease"); + data.JamSwitch.Should().Be("TroughJam"); + } + } +} From af3f4812e8c4bef9cff6e1b6a679edeb39908791 Mon Sep 17 00:00:00 2001 From: freezy Date: Fri, 30 Oct 2020 23:14:43 +0100 Subject: [PATCH 12/36] trough: Update inspector. --- .../Inspectors/TroughInspector.cs | 13 +++---------- .../VPT/Trough/TroughAuthoring.cs | 2 +- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs index 6e82a986e..3d19bd00d 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs @@ -26,22 +26,15 @@ namespace VisualPinball.Unity.Editor [CustomEditor(typeof(TroughAuthoring))] public class TroughInspector : ItemMainInspector { - private bool _foldoutMisc = true; - public override void OnInspectorGUI() { ItemReferenceField("Entry Kicker", "entryKicker", ref Data.EntryKicker); ItemReferenceField("Exit Kicker", "exitKicker", ref Data.ExitKicker); ItemReferenceField("Jam Switch", "jamSwitch", ref Data.JamSwitch); - if (_foldoutMisc = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutMisc, "Misc")) { - ItemDataField("Max Balls", ref Data.BallCount, false); - ItemDataField("Switch Count", ref Data.SwitchCount, false); - ItemDataField("Settle Time", ref Data.SettleTime, false); - } - EditorGUILayout.EndFoldoutHeaderGroup(); - - base.OnInspectorGUI(); + ItemDataField("Max Balls", ref Data.BallCount, false); + ItemDataField("Switch Count", ref Data.SwitchCount, false); + ItemDataField("Settle Time", ref Data.SettleTime, false); } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs index 618c20591..9e4eacc4d 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs @@ -44,7 +44,7 @@ public override void Restore() Item.Name = name; } - private void Start() + private void Awake() { GetComponentInParent().RegisterTrough(Item, gameObject); } From 775c1fbc4acf34d9ad19438101f0295b37edd49a Mon Sep 17 00:00:00 2001 From: freezy Date: Fri, 30 Oct 2020 23:32:26 +0100 Subject: [PATCH 13/36] trough: Add entry coil. --- VisualPinball.Engine/VPT/Trough/Trough.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/VisualPinball.Engine/VPT/Trough/Trough.cs b/VisualPinball.Engine/VPT/Trough/Trough.cs index 8fac36314..bd6442c05 100644 --- a/VisualPinball.Engine/VPT/Trough/Trough.cs +++ b/VisualPinball.Engine/VPT/Trough/Trough.cs @@ -15,7 +15,6 @@ // along with this program. If not, see . using System.Collections.Generic; -using System.Data.Common; using System.IO; using System.Linq; using VisualPinball.Engine.Game; @@ -31,12 +30,14 @@ public class Trough : Item, IRenderable, ISwitchableDevice, ICoilabl public const string JamSwitchId = "jam"; public const string EjectCoilId = "eject"; + public const string CoilId = "entry"; public IEnumerable AvailableSwitches => Enumerable.Repeat(0, Data.SwitchCount) .Select((_, i) => new GamelogicEngineSwitch {Description = SwitchDescription(i), Id = $"{i + 1}"}) .Concat( new[]{ new GamelogicEngineSwitch{Description = "Jam Switch", Id = JamSwitchId} }); public IEnumerable AvailableCoils => new[] { + new GamelogicEngineCoil {Description = "Entry", Id = CoilId}, new GamelogicEngineCoil {Description = "Eject", Id = EjectCoilId} }; @@ -75,7 +76,7 @@ public RenderObject GetRenderObject(Table.Table table, string id = null, Origin public RenderObjectGroup GetRenderObjects(Table.Table table, Origin origin = Origin.Global, bool asRightHanded = true) { - return new RenderObjectGroup(Data.Name, "trough", Math.Matrix3D.Identity, new RenderObject[0]); + return new RenderObjectGroup(Data.Name, "trough", Matrix3D.Identity, new RenderObject[0]); } // todo create a non-renderable abstraction and remove IRenderable from this From e33c46548927846fb16414c02b4280b3a979f463 Mon Sep 17 00:00:00 2001 From: freezy Date: Fri, 30 Oct 2020 23:37:36 +0100 Subject: [PATCH 14/36] doc: Add trough screenshots. --- .../manual/mechanisms/trough-coils.png | Bin 0 -> 34107 bytes .../manual/mechanisms/trough-inspector.png | Bin 0 -> 30298 bytes .../manual/mechanisms/trough-switches.png | Bin 0 -> 57982 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/trough-coils.png create mode 100644 VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/trough-inspector.png create mode 100644 VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/trough-switches.png diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/trough-coils.png b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/trough-coils.png new file mode 100644 index 0000000000000000000000000000000000000000..61f32fba5bca1fd4eefdfa89d798be6138b0e118 GIT binary patch literal 34107 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 JDdN{%{}%@nN`n9Z literal 0 HcmV?d00001 diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/trough-inspector.png b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/trough-inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..30cb289fa9c1276973bbc539971f6eb96c063f50 GIT binary patch literal 30298 zcmd?RWmwc}+dirSil7LBj37B6q5=a$cMeE{lt_$pcefx2GPEEa0@5j6gMx%0Al)q> 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 B!up&?S~@xKSRkG5 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 Mk19P-G`{vf07s@5S^xk5 literal 0 HcmV?d00001 From 63ab13a00425db4d1769968c5f07a1b0459a7a70 Mon Sep 17 00:00:00 2001 From: freezy Date: Fri, 30 Oct 2020 23:48:20 +0100 Subject: [PATCH 15/36] trough: Update documentation. --- .../manual/mechanisms/trough-inspector.png | Bin 30298 -> 29270 bytes .../manual/mechanisms/troughs.md | 10 ++++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/trough-inspector.png b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/trough-inspector.png index 30cb289fa9c1276973bbc539971f6eb96c063f50..b158e77b1869fbf4257da3a56d2fa7d781e820a8 100644 GIT binary patch literal 29270 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 literal 30298 zcmd?RWmwc}+dirSil7LBj37B6q5=a$cMeE{lt_$pcefx2GPEEa0@5j6gMx%0Al)q> z-Cg@0*Lv3b{P%vJcfViur@fBD<-|Sr@6IdE^Spegq#$)0j~wsHl`FTUpGiEwas|ui z%9X2XxYxiZGuuC3gTHRtKGSr#as{6l^XKZ7grxgduHdwrslIT0Auq>gU}MFiXK15u z#NujY3tC^fA|UK)t7l+gTH=^NUVP!U8Wrfpl^RlpUad7bPFwwwS;jA!LZWtRYGaSyx%EiaYPV@JFQ1CQ+ zLu0<@5|V#E3%nDAnmRh#^1)y(E-oxC>?}6+CNMT$US1e090rFogBHvVZq|-^uFTdB zbpPr>!pOnE-ptm~%*L7q)1#igjgzAw6pZw*DOlP5)2+3`-^&CR4Cbn53u9wp#Z2j6 z4dvzk=cZOx|Fm{+L^y+|{5{_PwqplXH(Mjvb0Y^ECwl`UgtL*gBi+9qW@zxwZ*86I zE&t5a&;Vv+X=DYOIe>w&{qrbWQyWJc2UDB>Fpqz}{%1C}eB$;-dX6^ssx~&3|Jo>} zfAvBGhqJKKFlv}t8``)yJjRUZ?;jXR=s6k*LNU9>47QA&RTa+8$Hv3Q&heC$jgOV} zucq?g92n|3>izE;+ZdV|yZvvP%FFXfTRS-FSsNHhO9(>2pjgbz4EYRL4LN!Bjd_{% zc-eWGIe9sZnR(&H#?1PLtol5xYXXU^z4m9O~6Y3zaB2we;T}l zp7Z}a^#9$)|9?32zn9g(RL|PP2pCQn6f+qZ#>D)!DX{PNydWH)AddsLYyQq(X?-R$*wPHyy)w40{Y$IRlTEkqP}c}WT%W9SsTI$H-4$z>!)ZY) zbcRt2vm|bbReg7Tx_xs@M{Z}fSf@_C&ZRyXfqwDwWv%=E%J1K%)G0qRlRQ;4C#H6V zyb-m_Qgcw9I}Y-m+l`jNNrLE{N^`gUmBHq~I}Had0|Tm=TV-UM(~YnvPx`zknjlvt z`gNYKudjFTFQfbk;VO1D+LA_=4_X*eXmkG^YGgrPUf%|#jR^|2xUkUD(sF#}-^wJ< zw?%z1jpTTGF?spk<7gr-R>3HE_43Ja0Bou&1%bvr*qB7gDoNj!V-pl?$jE56Kw@{s z!fedV$*HJ@67)?>Oq`u7tv83zjM6%_j?xv6{l0$vy0T)v&Mk|i_m7B|x3jZTR1B{R zdu2)P!(EQ!<>mF6u0HM;R%*jKin#5hj8cZwMezLe+n^hlaNON>&y=ORnrGA8k_-|x z#^alW-Bsp;c}}ZCpR%$}xJK_iRiByb?&u&lc}UB^aGeyD`GHxBOLS05443voPE}Ra z%*@QeVfXy>@P_19{CY&1Gwy{%iQRlFT3Pi$hap_H4W>ZxGpHbsI3U(TV^erJc<-oB zlX7XSdH?~T^(Pc-|6#0t3dOv_{Rp-X7rZ+84{!S*H!jm=E=QIQ~-y|2#wN?_d4>$p85EuQ4+u z=H%q`_4O?-E}kB4-U;!8xS~WX6Mp>w_p{W7q(1Jqm)c*KWDh}2NW3g}Iu@V!Tbp#% zvBr3m7oJhM^I2uxcX`$p&on}OC?%ozQupTbbYL1 zjIKrNWUl(zJ11S3{n_bc*kMfA5CUA zefsq2z=$Yv8}!6obejLz{8C2a%)*~BmYx5rX5)}s@j$Qc?~&w1xv==6!GZ~-{pt{N zWZ~kXv6ZX3Iw@vv+RL-5t6x~i78Vw^@|g6b47QT_wC%+_)nIzb7K+aKas!y1AFbP{ ze2wDDO;nI2`)I7uBHESZ5}A0vDwA(ogYUxrH?sLsDs+C9RLcBJ?uc2Z!ClQTzp`?O zL(J0Ba)%K*4a{Rsasje&YQ!`=E}At+1~nm5|WXTL3`nBNYqO>YW(@qyQ&6ONqUwKyO`8H&+-xaRb4U*p&a_z zhNao9Vv)QWWfBd0^1#B}{0So?=;KrUVC7^}&(^rd;YRXGxA(!Crjt{J`mieB(L3}0 zwjMRFCvf=lfY|70&&%^ea}^htsx`zElv4$%U8;|xpQlJ$HC}0D@KG9-Q&UAGKk1MY z6&Azo?LjORXtdBk16V^|&y&5}4V7mm{aNx%+&5_rD|;s2rI)lP;Hhk(MW&dQvXA24;I4N4%qlE#cI{b3P^}OYevubtm!Cbyby?mdf;=oSs%$ zjaOPv*3wCZPy)kd@MrS_DbX5u@%R5lI;M-!8^LZf+JY#j@0llq_c8;5y5f9PgJV%NEB z4p{*gS8Pd6PTof#H&Nq|?caQ+udgq#gJ8_6_X1w3?~{+JPO6<<&XLLj_tzTTn;XNkS(Bq zmxfz6I4p%(3OfG&3A;D3zc$J~>JMw7L#kpCf`u;%B?IvaA6njPyKWQR-x?kkrk*@z z-g=AHKSFZ@b$)){cQaSZT#Ai{hev)r0-a;B-1lk2Q+XW9$v}qmS&_MDGjBt|+mi1} ziKmo3nOAwEFS7WS_g=zg2>X;+5?n5x=^x^4Bh9i!P5U+SM~ z9v&JWW?yef&KKI(6sM*|jb-DAJ-p$3=Hw)KcAjnC_I0p-o^}9jjvOGMAhE23F+6;@ z>}mJvmBp;@NWg%nZahoY1bji}L+T74-Dh%gEl06^IE_9Ya5y)pneVMseCiRK z&AaP!MdcrP`d9 z#bg=JL#0w!tNNS-|*nk^&g~2Y@CdvtzRsm&ZICGs_)Lu*7gFU7iJrs z!m1tx;g>JgpIy2yoEmwy>!XY65bC4NHW9LB{^B&TkO9iaAzm zvt+<4L-nH(!{2@g#EJbAyB5P3!r-)!(H#CodT(=gfw+bG>RFZHvTbSBEFWP{Z-E~n zhluRa-HaPIZaDRXlM+w~r*B(*B`L~oK4^KIo8h@q8TQU`k-_`r(CO)V*rol?LfF*AuQ**SvNlCI zxm)G8hUY#Tbu#6dMl^v7ot2sCsvNqywnlRK6b3Wdmcpg|CZw#a4C0QiuCBw)Y3lnp zuq{&G`J@>*g9YOXe%RP6yxNB`II5MOZw=r>N(4CJkcSXlv*-LoV3Qkn*_F|;?&s}-lq}A0wBwTd> z#wsf6?g*_p!u;-!!)c$*^bleYcZ>!(7Vuz18g>fJNLE zN0Jyx5Lr!r!-V>BOmLpJ3qs&I*)YGfG@8fxnAN~6#7{_9;{E@6Q;3;3W`=MBFE#;z z`kb8KAi|!UoW#nQ!I^>*CjLfEl^C>z$sGP#S~@*0)Yu7sZ#Gd5d1aUUoY-@$qF96M%TnqldyttT{XW|aX zho>7nmh5ZFr65#P)*)nsgs-QA8|!270^NbPxXcHCp^d3IDP`!a-C*!b-ED@=rSXfh$f@fik&l zJGm;^CClsMRqx)to9|HrcVFn}{BZgdOhi~1Nr3(E;7CQQpK*bl!95Xx%)&H89}?%u4ylMMchm({j<;^J6bx9{AUf3$d6b%TV4j*bpw zr3O@!;HVPfvI9S}JvepV2C+MA`qh#}}q zZ!RcwZe=hZ7lZ@p-H=c--8yHhg^rjk6EzQoN~>|njD!U=F67Kil~mD~vB*Ob%a`5fh!zGvr9+?Qg<@H)5<`D$DxGXK!M(w zsbZ?ow@17vk-h4dbMzQRi$i}(0wb+}lW z^Rt7;7ZW03LBYwn-&^B8hZ~e)l{VAX)5ou#?CVPUcMYS z4472Y(0ITfHfs*7;n;k@>y?D<3Chi*Vp8n}U>U|ts}J)f%GtInpoE9`Cqr`k2-Q!v z!ptz(@bx*rwtz`)Jl&Z>=cmxldfk)sO)sK}dN&oP;dH;CC?a3Xr3*uNn z7{-<0a&%B4pcV?TeUaOBMklXL2zP1AU<)b{#7;MKe8w9s*&8&mO z`Hi1n>mEWiHBG)cnNF01{2B830|&foKh}WLA-tCSz$~0#kew`AQ%%jNQISm8%22oU z8W$JWT#!;+`-s%<=oXX6PX`Ci*y(=R?-3-F=>y{8;?K&8iZ*7O1EaE>Wdd8=oNvhJ zNUOhPP9OQIHP2+6h`vur8QORAIF_R)Bq}yG`#G>B-+@_H%6MJ=kx(-9CAt{g$`$fN zWrP&ZT^nobR^D%-v&?9?bk~V%n_I<3gT9k!&|!njlJ1_N2a=nwri#NF}ATvEAs|(QO1p*hpR!BIYVdEbzP4DIuwdc#qj8 zoO*u!;`>2e5*R4|!eUTDt;;l`IabBvwD z9qXP#EwPAf6Ne`YuNFD1%LD>TU)?+Bj7qJn#DD%v#DaO_)|D^3s(~=;sXkhQ@e(xm zvogZ4mdRe)R933^(fQu{5~UB%{9`t+V`HbKGgf9AzyB?SFB&cV2w+-;d*0@v9|PrW zA?sPe!FYD$4`VmF%W!gpEy9Vo7&bPNVPU-9L}}PVk{{klG&eW*Srt-}(!|@Srt*({C;(YN^N%?`eW4U$SS>SWGAJ*og&*5L+ooemIlmE)U6* zcxN*WQPz=c_rpd=a{v+j47Vb#?vzYwNGS0`MW; zXGcV{wNzG=qobo)`t(wP>5>&onz!uO7oV`PDN`ss<%3cT7bB%|uOYa+N$W&7@7gGD zvv)uV2ov2sJVJRzFG?Q^3;X=owZyZ3*p{!3+cZUM7~z_1eex6HbiT92{{4+Pqr9|q z-b`%Iw=ut^O*mos?0ZUWedSrlB%z1_6)^gN5w{<3jqD+` ztr+nZ@Ei^!?!SA@cW8zM=Ur?Hz&A)ChFf?M;W46L+=u+?h8!~C`@${`ZCV#l@E~~) zt(ZDaZ&5D%4N87z8gC1W)wt_h05&5RW;t|<_9v}lWMYz_c#*K&E6rVg3#sC)-v%)v zxcwy9fGXpJiD?UfrO+2y?}Z~0>aIq^)e!QPTYCb{14PshGwpbMi}0s3&^!VHmK1r6 z4O@8`nq&HRsD&&iVhdt(;cFYNZ4MOxg&yF+mtkEGzs~rc2yNES@C0(2F-k2sI}dr( z4pEb0mVuIyj!sX9H??#}2z?h`+3TZ40}3m?A~d)w=<58$7l@if|}p? z2S-+>*;nAMF&u!)r;m;t;-q^10Q{C9y|izSJQ}QzA@X(AIdO^@Ml*UPRKFW5y=}H2 zwv9)fm!IFvS+IzHk^L$%D`dUD!XTbYk9_G`{$P6~uKj+$qVQMp$=g>s7H0v#iTk~) zt6~`i3|h|OclgW(l_Zo%DLR>rhFPn_T~Mb?GGX;#eLVX%$+*Ya(YC}H0L77J>QG^_4#jc`;FlLZOWOPze;F zGL!qO!;i)wrAQs(tb^azZ`}Cw=J|&>HvqCN+k*3^Bt#=omsM2(%j0c2@;N)Q>yL}d z!U>uQfPtoW?%e6j=?ElOlKx<*93uA)*0F8Ablog+^bjAyl0<`C`~91>J7L&4`hl0S zWGs2C7L>giQj^kcx!nS&Pe2a{dYy29kPjqNK{al>#+y5vj(kQRsn=gWb8(AkT>*xF zjJh%Bp7t-YmQO5MKh}zJa<(|+#gHUL3xQv8su-}Dac{k*yjb{&)FQPZWqL^=AXS@3 zO?qh-c6#rA+a4l*&pfHkyk2W*aWOcdyu3WkdeOedFo?=~nRp%b89%u{C!@belR4BD zq?mu!m~g+8JzD-)-^q#diN|N#kX(mn39Q463|?62z1Sn2MaU6%WN7gm>g!IZ@g(wj$gSS{t^ z+Y^(8Ew@7Q2Sq3u#vt2TTnDuYR60sZ5lr>^+V4l>Zp0(qdySMxTK_RHQ*a1 zpV$r#eR&u+7ZpDkfBAxlfAvPDq7_zsXUI=)zymp z^)$y1fumotF{`o)XXCPD$=pH`@Kae`^bh+aJfMQ#@NxC6!u4lj!A~_w_6vZ`1-|=y zR}0{XR&DnTk0_sr)!J&$f&)+jCA*oO=xFKgxV^pIXB6V`df)E5|1GfcN83;XbB5yW zGW!86EUel`LC+EZXVChHf9cn+UkeMlzTpR6MDC9Q8%=wm{kZU8Rn8qf$Xq~ee0yJ^ z%?hfvX6e97Ig{|NaT4|I(Ehw%U}cz|y<^YNvDG!aRzZ`2xjgef>OBs-_uK>wjgO!r zR-)0$9~jxz-?lPDA|xsmLeZvkS~;=892uWJwcsPMcO3aia&ss;`;o1Vbn%N&1MGD< z5wd<4qrImxw+Ed~69T_|lOWmd>%fFhAd;J|akyclOpuPJzg~BA7h&s!I--%+6#iUX ze8(krY-|i1xf&6WF?3y+p3KFeaVhW@1(+`0yMIQ#MA^Ms)fi$%kxJeJp;>K22(tyi z-Mf69T&h~bn?^oh*${HZDVX8C{%N!iBE<9I+$UY@@`a|NX3g_M>i(~!fpQ9ArLT6e?-yQyQNTDN|v15O+>%qGC+1hD3xr8f-u-3OfL`TmwiF`Ik63?QL-YK*~JUrC^BOZ7< z(~;Ac)*kcln-iMRKIC&UnzPJ{2&aHCBgBXa29rW`^J3!j5KUFZm<*Wv8frttZYCKv z_uCc{i9?i_kYHIG>DdM1^jeb!*CiB7tSrOGypV|(2{;yv?leIwUz9gYjE%?4^whe> z0s;cYwnj!?#HBl;@EJFq*T+5ya$p>K0`FBMgBPcbme^KqLBP>?%KfBz*Qp8KN*Oh_ zC)!B>!FnETM%)DQr;twU+Bz*M1VTFTcF`=j2yLCVZH*(Z+ByQUT48Ikn^PfX7binD~5{fw00n-=UO z<5S?Iez2sWVJ1geZZ>P@+ACf{ib%(%CjQWQ$l!hT0cs`Hju#@~p2~vLI7@{44oTvf z^Bc!3LWc;?M!4)t{O&klkbpda%wJ|2;2nPw&y2?-hLgADkxAFK<`oqbD!s3if55sy zFrqE!0ey`u(yqD7smkf&b~bb2t3}=?_v~2-?5jVT$9o`{y{Ww&xBLpXPF#8&tv0EP z#emhx$%(4@&$iE>KTF4LroUwstG7JSx3w+dkWS%u>E^q0BrV4BX;%LAhH3T#El=mc zJT<6a?M>?HHj&$(w6tG~iaA#>M{;>7r&wWiayuWHN46>yDlRQ8<$qrT{ACmO{-;sT zSeO)b@W|8@%lbEFX6BTWbUt1Fp74Vjn9S;9nc>z}$+f-K&-aZsepS=kLwHgI zzPkoe?gyUAS&bz3?tLVGLtQZtzkSVy$dv7C0Gdbei$+i?2OeiMF2HrszXQLuwgRmW z`85+OR-qdghZpA_nn^87Us#pM#q9>p7PjB)5KFXksm%}J&1iwZk}YMXj}q2!9Gc!_D#pI!h9KnLDB#YmAL(m zy}O&XjADRV4$>BR!`Xs5L{~#2kWeT8(MQ-zVsdgB~mkGtP?iUTq8VOpm6Vk9 z@d2DTV1+V=dB2*mS--4z-3ECeg>iqEip12(?`v?Sx5k8;BS^^=#WUUh;cH4VPQ&YyMCyyVO;<8QhiwzZM zVhQf7Pi6B1bPQlP$(;**DOForwgx|5zrHeHUs{oq^Gq!2{d<4`^-fMw-n|Pi>@j@x zDovYSA=|;vnJpfqp_?s2KsN=#Zva)b1&AV5(_RNiqNp65oMK{QVL<=|(2+wcYfkd06MYpeiomBXEIIyN-^w>Ad-?M_n~uw0-+V6S>)VIR*Wuzez3R zX=-VyUGmDe_&})e>+M^CZ%#@!>OcBfg?O$EJhpT{JpjUzbpJHV=(2=_1U@h=z}i#b zZb-~4-qwI9&}k6cQ{(RTtF$+r;?1=>F>?+}X6-o&jE?PfEI?QDD(qpvGe+1C(wpL2Ag#(vjeJO`P;K*%f zr+SO=ct^dTL5($J7>75AyAXyU0foK$8wFUtFS8O-QsK)e0C`Fs0Y|M~q@CMf$HmQ^ zF}8-le~(Q5URlXS#6+_1u=s<_#C&;q`5E4lb6%K>z%(lR4Vlta5RhfS@~lmX-u^!z z@dpo3D=#G^{8=WJ9ibG$hMm?0>s?5p3U9PICY73pSuUT8dM*iwl27(R8 zNT*ZyBHq2aA3x;2m2RS<^j@ZdT@Z6A%A9O$nlG#;G)LDf#oxt&ae1tF{&hsmq zfGFPwl8e2)y%4vlO3P8Gd>K&KqsQtllcXnN>`bc}!1arKIB_kj4yNE8V*sQ;dx&Ue zxN&Jg!H@0{2?=82lDG>o2Sz1J>1gs{U~= z2JPmC>K;M0x3ZNr1>$R1U3Eo%PQ13%pt;z(W@FJ$`l^3g?Jexqt*s`=SAZ3inr%)s zWKn;!xtc2T>>2AiCsj7=+8Im9GEjSEdECLn6B`XWOXymsi7hres~9PlA)u`3%{(N<@~}!5YLSWzvq#wk&%D! zx-eXI2RNQ5Hg+pYU%4nzxi}96?ClTMM*I4n*Yo&X)YnDJhdcJBBSz?%-P+l8Wj8@_ z1TP_(`$zu&76gye(vhnN(B6WHo$~jOdc%N50v@AP0^?`qs%-<)VKVco8XCiK8F$s% z%0rC4-B?DU_gVl2adF}O?MG*)iZ5fMM17J%c5k!o$5bJ&+KP&MzCcTvE%jAu?H4^K z=RWXiuBfH~?^L+LGQcy5!U|G&9j*)0){y@NcX!SIA8@zwYK*u@!Xt&GYCw);<_elc zF>p;bct8?qq5<^2YwFDV5%whQ9cxozUlHJq@K{2qPL!96QAT^ImW&66@+e z(6}vmOwjhQf88T5A~k}EfX>d&3g2p0+pBw_fQ`(b3~q-P$D)7FZ=;}_hZ~c`8GZ)) zdwVp7T?w3|1WPSPh=JOz!44*h@K&0p1Hz!sB4_*gy#cPaDyml9S*b0v?KeJFwh|ly zeo~)UPPy(T_g(CRgM%kE(HvJhNPeZtNYo#+lpJ5R{n|KPMejQGNRuNBDG*a(JCy{x zG#I>F@5~Z6p9^d9-+J20pyM$ZNhdYnwT%J2CvX23=ZZudet-W+qe$EB z^nf{Y9e@SE7sjq$MV1yFAA{44D>VmX6g+`EjP)%V47r-r#dXuqTwJ*6AM6C0M%Z}D z926y%_-*Pud6JVpW0@-8cK6@m@|Ku)g}OboiEL;_X8yjT!q;>w?mYj7=}NHm>c6#q zoz|`b9E&cPGIjB`_-AJxMK3^|i&QKyHqXA^Zcm~GCoh=! zqln6N3c$phmyJYq)Nhov7s~M+AB@{n1kSfq(P_kX-Fpb2%mP8lk+|g-IEiSU#UsR( z{y_|Ko^#(+<5q;E`Z}-bJfp2z4hA+~-Qd3VD#zUQis~j{B60l_&GQ}lRNs{qDlnl% zgTgY?b`h^B-2^Gz7>=RdiPbpbSIT|+4l=)Jt*e7#FbvQ41v2?DvDCMUr|dJq+{_G( zf|sglw2hZ??MG$o8Q~6|Q*;m>RLu4%xr5Y7+0kgKu#fKNKx7>o07Lm+->|vL1LK)nq!64l40vm5?Pp;=cb5uM&MBgK22(-;r)XU=CCaBJwv!ZdAH5PU+V=b8OTPn*1vFCJ=}M11c*WqmMr`E zQ09Y|Z;QzS<6kDZ#f!hG4?XV6>uI_M)2XHRGvYgL?zg$IP}%iBc!F|UuXXIp+qc&Z zAoazbcCM}?JgUm>vuZe!|2MpS@?6sUY+K48LEm@ls+-5&Z{>L=#;@hVY5Hd02lPDDS^KiZ3ZC`6L@V z_m+OwD)jc<>X`H^0c0SPm>pB!6|)uJ0W5zzBf+HLgMAjW2|fdnF@DqThqoQJbeXkZ)-Ge|nf8F7tvpv$9TetJmmd z!MQ>7MkAo~tbPH?ikjD6qT-8NIkMkutX5Kf-R%JdMRXax?2lK&StJ5lE?@l#%jOqE2 zo<W^?awDYLtC6)^9F&k@wuArlFNkjnp)u#GA8hdo*rbQlpc|Ku>gZl*%#~_=v@Aq zqiJ@4?9tC^{s+!)KR^DH1`cY3br0~i?ykRhUF%=*)|`LuQ9op%5OE64BO?a9NnuS^ z_|bc(hk(J$c-Gd~ee8IMC>mauLI<5}0KR4*>8_j1e2v4>+7T2_bJHH^qn_xr9-Y59 z)dXV0y5ruQZ{Q$~J9?MXkoAa@>n>?Tsu(KM>J;ZMyMY3%r~r)+ENG~S zxN+}_dSEHf`<&g*{~`cdkJn$&bh$or{&xd3Ak# z(D`a2A2FU#{J!PMeL;TS$a4Y$f+w@=ld*l8j0Mi0%L-1hAdXcR>9;xncNCG!{H!g` z*vqTIxq>oUiqWJ^+aro_({uZMvVT_q$wjALTSk}9$%&#vv-sl79gK1`qQz*|K)`3T z31a6E({hPEsV@(_B_WO@4I$P*-|9@?&jd#d}pDyVE zarPm0NF-x{juAj@=#DLlT7Z_`>jvO$IDbwRu(1Ej9_|O?!5kTU(?R5A}@^J zBx-5?<9)FJP?b}t8s@TGC9H>Yyr3FV3g)KZK`%hOtAS?_3ju>GS ztTwz7o0>|PV=?%JQq{T-IO?;X^z!RRtRo@iT$~&nrr9ww3@0c17VEYw^XN4na1enI z2|}AAZoc{TCxhmFO;V%sMx;y7-Q|RUiDYiG%LkxX4)1--Xf;rNIe&KeH~!##z=WNi z>5WQYw(Qzc1U(G(Y+Z;lgaja2Pzv7-KF4frQx%igj{Jq(6- zylCCou|Km<#%NAE;t=~31}Eul=-&iqmh=e)O#K4`nWxnSGt7&>y5ns#8Bs>k2m?H4 zPa>Rhxfm%;n{|_%p!v4zqN;(fqgdG4`@3I=4~po#c#(5EJTx@mu}oFL_Q9 z+(XPcAkR2{vd(m77B5=K;tIu75c-T0zj+VoN#t)+&waA!E9*YPUj6pdJ25_JMb!({ zV?*Mibqr;o>(3uiFtw%y3I*ExWp2ti#B2Le!@Qf?v7DJ@`)3RH{|bLuUY6r7Ns*7Q ztgH}F@;UCWs7VtZ-d8+aB{1t5FEt31TDtAzF}Sg?VJX6C$Y#4HCWu-9$uWrIhfMCq zVt263Lxtv#o#i5_oKcU-BO@dGeq^OIF_pbp5V4i$yNSOE(k<-gbO7jLW??78{~Za- zTdJF(0Q*F`q?GVMK6MjJ@!R3kvdoH^kofNKqN1V?qB$V2!zA$>IEe*yAD2-ox4c=u zfB&A8BG)CEUDu^Q8*C;hd+Pzy-M>;9w+I= ze`&4_SAcB&>$x|`(FN{F_@2C3p5xj1vH{}ld(Z#o8oYWn{NKL)3%Q2xV`F0jeqjd4 znNoFt?MB?cCp(>b88 z=%YFODN1QEu_jDPE*9qxbdM^Mx$6`|lIuC1+YWV8TSgYy;A2Sh}rdd+VE zD-6oe!IknlJtzdAe^nh2Y5d;Y++14=0br?G0w`+WiPx&K{zM-+x`@)#(*t-gLEsw~ zo;l)w)6$C~%d`GZY5@zxCbnXF3K#D`O-xLHy`8U`nwVGfcPc0HnDWz(KOa;uix6i_7?{?@o$4|3J6SS+|K_;KCkX;F;oz#(+~MBaSAQkP4&4Tt7--zVFGD1K_C{<+rYr{ zMmee8kbdwS`kcQ?C`m!=DUWp6H%*lSOWBO(3mVRez^poG=fkxIugy3;aOT%MtnS4 zWs}MxKubFdD)*YRx)Qk+C#IHBhEZNbX?z@$UfTfJZ8vvxEU%xewwrgp9U2-sa`Nl@ z`}Ia_r$#oLdjLkt8IV6D%>wZMagp700=r2!j|wQAkb2Iuq_Ti|f6xF3H?O0ukHy8| zV-iS?^|z#&KY&1rR8)e{sC*+X3l=sEiDl6Nb^GQL?CbcF@50SlHi&n)fRTCn6rZ}c z6_m;xxf&ZY=)N$yUMFG<1QD@Jn)(wjm6d%x)BTDjoh&U2?AGX-l-*aFk`*2`Wu&K< zQ)~2=NYyhxc_MawYqI1^ioNo-=z6lj_F1$SrHf2rL#0=CCiX8#HqueCRqepE#`gh|s zsHN;Yff9cCDa5v($0G|J#BZvi(hr6-=xfmEOc4Bo3;9irzUmkh&xCstZQCt~b145H ztLlztzfnhU`*uu~Ybd|9n3!K3+Qup&$Sfg?9~5>4d2UQMPFo-c7D!{*RQZ+NpSiwx z5x1O8%KXy5S?VLv{rjeJ-|FIqOupy{753b*R^>SZga7d1!(0on>XV-=-80(-xTIyL z09~~8w~ih10#Nn6Km|_$STjt?W7}D)l`evG8s##an7nBOpm83S=mw5QC+VbS6U!?r zgDu7@H<}BaJ1&6j{WPDr;K>QOE;Fi*N zxXyjM`GP^0<_y#kMA2{z=ol;A{m#=O=y5Re{R}_~gqqycnr0RN7Uj~eEsL35_9SW< z0w^e`XeJsN9(HjjnOHJ>iWZ`%PRaqtcgC_k<_3|!DNw}$l_XI0{Ipp2ov)N}ONXs^ zvH^MkKOb)l>v$Z+@f{SS*o@zH> zLrYTnb7wPkA}7Mm6ZfP7e#6eZkQLr2GIjpyL^ z6Y^b;?LGIh%Le*~4`~TMad*8#=iuC9olyG&xgW*PEdBhK4t<^uv)ZxfpyyZtB;~~b zpB+yLe301P^DW{F&{nH@Q1wMS^JHR*Mxnz)L&4fFe@T&tULCLksQgfw7LeG7#etpd zKQL{)k29OML|*Ws^xFT`+?R$^x&CceYHua7Oe;f#G8HS4p-I%Dfg&1=t3*kLNQqb) zBw6MrW2T)nh|EJRWllw+3?*a6lqoIqd)~D7exCnxydT~V&vCq893gAn>$Y@XNdZG^`*8`bh3ekTv3^&Vw%di77(s20-jqAA zQOKE5A-whKQc%E6PY915YuwECedweU{cl*^lJj3!z4sB}RRYqvM05UM10An;`ATx4 zR@xKyru-qMlhMKFOuug)6j5`>(E{>1Xzl_39_hQh2=mqv>Qxu|?n4(B1Sa)~*E&$G z7Pei1KSVY~N=mA?vFio0DoL;;xH3<_dnHq)6Xav=z%*T9-y19Koj)3DP4VBm>(MMz zd*ozNoKTtMf}5M_H%P2Gc4L0(pIjmrqvAdrC?eI6=s5or4}-lVGs91*auvSuxsM)k z9Ez(1+qky;ZiYjA(mf4?E2eK9H+!zzsR@>@r-9Fzmw#kT)v+$E96-!}=xFr4dHsx# zn|`)MZ8FI>=9Y?{*#LWSv}xX=t3Z!(6RILrtKyaKbc%^Es3MU}_JIqvPg-n7cn;rD zb`j5(J2rp*{2axdODa^pm1TJS@%d}bWni6>)71$&U*(q^IQeS0l3XTIz;zA&z{U#u zfTki{!DCHcSW>K{2j-Z0r%#RvpV5oLy#t<5U?5jN_clJ6Qgv0|E6Hfl8>gOtKZ5gj zKJNIJjLgg)_oRLxHJy!@f&_L(B(_rwl#dx6Jt{tRoe4Df;+lny2nzBZiYR|G-mBF= z&CL~zw6(Q$`Q_N;T!!HU2)mMnPS?HQqegwWIz1q~fwio5N+styEttXkjMPlh6`k|@&-ubcHU8(=~?yrE^Mk9r4V`H=J z$bkbNcCaL#2(;@{!wv6kjM(y=xLrn5R41AlS`YWjY?j4+GO9C?Kp}+dQaMSls#${V zPu9I+CT)vm0VuS+b#9T|TU*^#ZAp7ihug|;7mjn!I~piD7N4PK+m-o_e7(w()X~`~ z(E(NAdzRG*CZ-fy$H}~-7Lc+bd2pMj4lEN4zi$$!V3xD8CZlS3@VOPI$T#=u)~FYN z^QD+wdfMR6D4AmttgE*6b30bE0iZC~Srhx%`Y)IVNf(m!47Yg-N9r#f@0D}zVw`(I zT>pYY_@1zjJ2W+i5tfS6wJD-r%c~x z%p1r2X|6i%J#Go@LVj-j`?n8&pDjt+QZBAiSLrkQqPE@r{kN zqBPD}xFqax;y1Y4%`n?{A~bkI(%J2O#lf*=+PR8btrq?AS^TpE-O!;!huRBz4xZFi z3B0x0eMF`ZP{`>Tt#RAI(~GO#yeY00H&Z=U%B1Y(&5r(Xx|@MP5&Nr)7Av2{#}{@p zoZGW)1jku}3HSRMp~ry;{3ZOjj$FL2v|E9@h$y2TN~-bDW#SWN?Vyj za$IBJ^sAAQK^nDvkcy>r;Ok-4sY@%pBIjECDjpi?F^oz<2C`+dZaY0Yv@5hSE8vd3 z7^zPy-m>3zY2qH!$m9IPwojtCxN_x+%=QCnLqP-RLnmi2kL%BgW?5dikgu|C&6?Lu zlQzqHaXQWpC-g7?S>05$$~jTsHDi%?Ka(kQW~cS@Eh}(teA3kt+85f&h& zgmstG29cb=HwW*k(fk>V8@u*Fx7O$;zb+lu{d#>1JQMQviEqf9=2{}jFG?cCiORF_ zX0|iZbR~;TCc-qoO*LkoTEAfb#GB>c_Cy>%+edj%es$hs@O70Ek5$0NWJ*Q9h{nS9 zHwWFc(?jPGpR?`Vr%$Imo;dB@%Oz(nz_Es|zH$CR?PtcDUloC%_FB-=6^i@3$ciA1 z>7-1~3B~@H`4dd`=QnE7X35NHpA&35iWG`D&MJl6%WtkFpFQ)wf8yVdotZO7Ty{5? zUeDo4D!)Q);fFpnaYYR+K%sYS+okf4530#t;@jUBgEe*R=1O1~{Ly*fP<*d;8`wFh zV)rmPxx|=BpUQh2x23wBj5)$;uJ!XWuclkNN@V6O;>(N;Q!;1ie{A?eO(N2>Y)DPu z+w=5v!(`pNa7z1hJ!Add&2B@e?{mgpUG7NAN!5s8eI&P9q|wuyrl^9`X9=$G?n}^F z=G`bTMeM@zyvAU4VfSk*URZ5@j`>K zPayVVqtDy0(W;A{w9n}$mRZK%?NPX_oPM&4=hZ`R^rbiMod|w3Iq6|F&-UIh)j+|c zsqq>Mel>IFK8UHgx-5OPwcYBC!S!BampO%Y(zLn`EVrPiwM|^>S*>L4E%lJf8Mlem z6My%FKSJyE=Hv)5POriTF;Qa*GAlE}`SdMfANGHj99UQU(sNH;i2QZ|{e_>zPWd`6 zxhr=87GwKcK~Yva^uAQKMf6H~@gSqPiz%~rWtHujUmj$SNsOLZac5m!^DnHw_I5(G z;^5?qdv6z$$B@4ZU`%JMvdpn;?K^O|NM}GWywT18PjP+OL5_zvOB*t0%O}97qV|@G zR7ucLBN}R#^oOn)lN(&IOM30I8Z|n0-}DR9li^4!UEtoqXn*Ec+QUG(q;GB>unjYu zYO*|`Tm73poFTDsqx%P$y!me0N4k?1psRL&6SnnF0mf9kPr!_AL;o(e5}LDf+LH!Q zK<0*JD#%3mNBou7f_uMU4K|`&ZR}&rBWu#_2NLq~_HU%$`U}?d zDYa}*JyjnU{ruY1t8o@vyrw-0^87qloPItgRZQs-Dve--zS%|_S<^9AN6_cJJzwtD zyK^w4Y>TR@>IKpbU8&K6J9&8$x9YLoBOU$*MT^|wDtW@*3Ie0+xdtI5)F zP9&=G5?j7H@LS7kxtA~Zwd~F=n38AEX-{EQ2l^1>3_Ggnwes>C6k=^Oqz0=TgWr** zH3ghn<9xL>1KJ`8{%o6+_Dvln<}Ii7{}rvflw!#W9~GWb@B1bRrIwYT7w0rFwC*F+y}Mrej@ z!Gcc0XM;_D<(}51);lz38PI|R13HNQE5G@vjg&X{OoldJwM-I*WLo8XstVJCL0(pI zx}YmB_Os!u70`nPf>wF)P z9A*CD5fLWpOPsfksn_m5c+h8QSxHHNbOT5St1@8-$>7$KY9Ir|c-_QJBE4*jBpmt- zi(FxNQM62B^M%p1a&i?LkK^~t5+36g9Xeyvfzk_UOX1Gzd@J~D`Ro9*{0K>_eAPtT zr))>Bb8K>UYnku|VyfL@vY&&_hQyhBHAXLv^6}%x+n&dv^SZw;#;08ZHW<+CtXJ}I z0x@tvOQxMmsj#TX*aN;Ro=$$AgQyAxs<}keVueN%i^&0-Ag2^uzIg1EyP4%z26kYYy>WAWRJn(>%40di52V)Vupo= zu7{--%8QLXImyYKPT()=d6FJVODu{*K~WD5*x%5J>&9p~6PP-Bd1(}a7;Dr5T#s6v zp@6HorPXB)ARG_@Ub%TjnL5GMv%w{wHCpC52)<| zu8P2uZKkwm&R>^!kTPR2V%Z=+j_qL`Kp%a_T9q(~x&MWXY#J zTnmEigVa=g`F(I$X@P7RTH4R20J@@$__n9h>^`icBE*6|(uxHSXWH_Qi~z_TG7HC9 zthrF$!Lr=Blih&ZZcCw>9Vy-#^bOY*B=)A4c&|Z=^En?aGObFvOm4z2-IG) z(*n8)06#VS9(LmrIcK`KvW{C>;ayT19%~B%Tz05IiAKVZeWD#>s|l8n-b6G4wpdg z3QOVMJfHq99QfUJZfLjGE|;~kw!Z$CE!ldN)#Oz5I<52KbUqwMVBuR?kU27LTJkckM9d81HF?=^PxFhyZ|uHqXpK7 z<9l>+85i8$;q*)Ieiw&3nR$M&aD2XxH#B$k zBi+@KGVQo+VU}{0A)p~>9O49h*4(Yvt;1w}=(?4WpO@znqSvJZF&-O^%aeqG=3OBkr(NkSv$uf}2BU}3(dC`(iw&g@weU7~mVI@G$F4+X zM~77}SGXFDud^yfOjvjgo9JPy*$mdnf*9z~?-Y#^4h%%t+(H`&W7L2C)wT%UT8k=T zHIVVw1}+va*3cvcTox+XKok-iK(C2kKHl_$Ud9uS(u0>M5e&>`OOMaRzC*sr{-``0 zqsAdM4ReuCS+8oT@ns!x9Z}$b+=&DClh*D8HQh8mnGa`o{^ z(iu$C6oU7lbeXrrN;WFaA2KP_L<4RYajjh+%e&?iVl1bSeG9M}1&gQ|KPBhG@+%TNpm3;J=1ov#wzOQRVDaBaukLDt3tb_O`YUQ&KQUY4+n^TlYLmrgA6&~&ep?s+UoK~V@VhZ5M6u}9HYXnnyS2p@zzY7*?Kn5r4K{UM9ME`My#fUS2Sv95zpa0IQZ!@Ss$! zYWd(9nggKQuTwcBZ?U;Kc6U4fJwoXsG2J#^Ty5cgSI6D81>w z%aP2|j|Y5nf9RnoFW--werE@Oa-`a(XKrUSHDBVGISpK-Qf-!+=ZiR|w+~h|(TC%6h9m z|Cof?`>bQ@xJ39un(pr1mnm%#R&!OA#t@|WJIl*jT4H++KZl<>mbbCd#0~r$QOFmB zg-?l0_zqwsnGhgu<`(8*MlBK@%z~ar(8kd*NVw#yvmo!KCveQO>r0D{WWrnBY4%}n-3^jQ2a(%Fg;`yLj=FojmM_)tN53fU(Z*=vV{r- znoD~S5Y02siT>>1&5`yoX|%IKtB>pG{P|hP;bCAKvOe&RUc+N|71v{Oh_E+6t=)fE zmk0sXL9+p~RQ7vAdfDDdJdzIh(TBkx;v9)pLd8@ zy$@V-$~e#E!HA`#BdiptU%+(@$c8{pZpMNI+wm^&5?g#x8(pz&&Uf7xs1x)JxVSj5cyZ2@o{VBdkybk!_xOTnYuBvdrCjoTY@A-|e(p62JQA-~LVq<~ zaY^BUstt#qT3)RW%hbpf4v@B7GGoYjAvG@|LTHz!_5Sw@*QwY)Isy4eMx=>Lox`Ur zPA70*;D1z}tl-$Iyw!8u=)@%`=U=!Ss8b1i%4CXOI&Bz8i(1V*|Fwdj1q`%oU?4R@ zUc@{@xBps3f!5~-Hh2MS>Bh+x?<6G2Mt~$@XX6QTAP^;*4$w^AG z#kh}jhbTD4#>LH#T$yPx5&vBV6K4H{i4*0vg1KBPlrwpvw(#;8 zXwmF{p~JCCuV#>tF_tDm<~SdAo3reN7nm#5y?e*KQ0CuhLjU7i_N`W-<%xQcpFOkU;}?)x@jMDLN`?@fcqwEQNAc@Pn+bt{9_&U?aDFJAqR}NIy)Lbzoe?OXkuK)c;LCcDF+C6`LlpnEgCWEOF^y2d6%ZqYDEnECd1uk= zq`5E@CNchCr^w2lw70)1`rvBf>di_@yjs^!H~9-rz(|E7`B0Hy0fqk4ZS~6bbbG$B zv9UbCicr;>1IwIR>OnH`bc?)s(>oiH|09**>l>^YPrUKoC6IutU}Up49Vk%?0|m;l z-WYLYKCevVz?CqmGUgx<65{nwgnk5~TkM&KJLXB_YgctmTx82azvN zR7N2Hge(>$AZ2A0l?VkvnLfKKsNMi7OB|@b02f#H+lw6na!&1DL-cakDSB7s3O66W zb5CBeJPiV}Zk}~Zy#u`JHB0NH+lMEfGD%(eD;)>yq9i)Zh7wJgCva#&xm3iz0(&@_ zEK=n`c0J+$W*+V4(`5ZpFdLe&(2yZ!au|n@eyZMXBCK6K6*p}%{WTKYv$1*gmMv3o zJGA{uoliG3GyC>ka((XdUn=H0S(`gMkoiZ;gxWU0Ftq-mr>ECACWD^kJ)iWpp!G^h zo@#Uh10$oq%rEReJ_a961vKW$baWu!$ErbiPmFHdIfnSe(}hM30OGW*$8dr?vDw4s zTHCi9u(^RG3#VlCb50FJ!5e(Cm!VH8pXc!Pp{cWbRZyUxp9#!D>GZABkF2w$1CVgB zZuURYg%;&Ff8CuFmKEdLR=KTFrZ>*x(o?|#sKZMt1P2g?0-0MX7GZ{l^zn9n%F z#*E+}N?n2Ht${X#{&aQ%X~TQ@(qLXIgi^d&w>n;!D4~gp*^WSA0prce^obw*{uXAT z9-=G7ioQs_S&QDw8{%LE(1TK6tHZSCwwZ9thtnA@6yEETuYvU={~ zyBBc?Kuv@=K)_TI5=5iG{`BhFgyFx@!<=mjcr`Ye;CrWi){omh|Bh^R=k+~K0`M#K zsba%*X=H1QZC&<`SSHKt|ApFGN{J10KOhWf{(tVW1@Q17<0ag`R@48B|G+AHAKhFE zNP_^8e$+oLGWW*8LL4VLD&SzOpgM4BGk3nLVPW~Y8SbZtfenql+=d5`oS$4AgC{#= zR&UZPA|S;rTh9-?kk+YfYMQ#jiNbBwGze0w778Z34VE1#2@d9FeFht`N@E6eAmJLd zovkPlG-g6^b>g3;2eJ6?$Uk2M1NY`SKyc3B!hG=HK?Kan9^3-#&!Dq7e?G@m7BGu; zXeRG>Q(Ez*ni;0yiK8fN81jbjo!P8cklH1ed{D5u*iZZJZ4Ya4TWRAwTSyjx&EejoB^JAaO%`4 zJ&it>jbIAm5kepbpN$MQ0gcnZfW+hYyY|lI5UU}}kACH)!LnUvFP=BxB93h&Xm^V* z9BN;&sADtQA0;KjUr}OWol$Q@X`6w@h;SX^vq(67x{G)wKw%<2p1GRVUnHlf-|M7a3h7Rrw)S>wm0dJiGyF;S!b1?Y3QkfRj6sC@3hyvHY=ozOLUI=#XTcs@lXjC4Va$oF^injnmhD`eN*-~a(Ui8 zqeZKA#uj*sZ9e~Q#IV_8m^15RZSDErtLXO+hh}-G(2Z-60Wf9yd_HxtVt_1YQo@l~ z&ek=w5gQtB2Lp2XyfD-t>}VKL6eh8I>}1W6qm_$24ffdE%NHW0IgUSoIglMyBxUZ< zH%j0sL+8%+ykAX&-r4gCF$c06m-Rlj26M={C~-Fg?a_}fTgu;p7;ba~sMSwiL*Ub$vsa1eJNMTO zkXsfSh$~LjVuF==7HzminKTilN0yWFQ84p6Pfxme+kMKCZ{X~`F5CVKSMl`_v%4sY zcRcK)=)asnko3;Z$_iA1 zX*&0K{9QyRhy=^^poKbU85@MD%bl+eG8qLcCs9T5(DKucfO+`1oQ-UB3FD05MeZ&^ zg-V>N;B}RA3ogYcAmG=xO$5!92P$>&KVhj5 z9)8qpY_+1|AlB#oK29+V?a{N`;@cauHJP!tYO7{NbaXVLZzj9yPbI9Z#_yFSnb9?Z z-hcXZ0ViVePB!|?t=IPvcJ($|?(X9NMLtw83gPKM%rx4|N=pkbK`N3cQ4|0G-TGT? zsbZn#>aU53QjF8C^y6MMY&Ww4hb3aazWx9>&@+?aka9ZKr@oZX-1j@|^78X%;_+Yz zTa&arm!7aeP``l=VZC8k^mv5~?iqD;<1Ggq-wX_Xd)*wyRF^h{-w_DNK;c;$n#6w1 zLUp>1vnd{52s<8pLGJ$dU)=Kl-vM_-Rq`*aH&>s;fgpm5Cw@VcQN;0?1t5t%`2ESZ{{Spo B!u + In order to interact with the game, you'll need to setup your entry kicker (the one that drains the ball), and the exit kicker (the one that releases a new ball). This terminology seems weird, because the ball *exits* the playfield when draining, but from the the trough's perspective, that's where the ball *enters*. You can setup the kickers by selecting the trough in the hierarchy panel and linking them to the desired kickers in the inspector panel. @@ -18,8 +20,12 @@ You can setup the kickers by selecting the trough in the hierarchy panel and lin The number of switches of the trough depends on the *Switch Count* property in the inspector panel. For recreations, you can quickly determine the number of trough switches by looking at switch matrix in the operation manual. -Open the [switch manager](../../editor/switch-manager.md) and add the trough switches if they're not already added. As *Destination* select "Device". Under *Element*, select the through you've created and which switch of the trough to connect. For a three-ball trough, it would look something like that: +Open the [switch manager](../../editor/switch-manager.md) and add the trough switches if they're not already added. As *Destination* select "Device". Under *Element*, select the through you've created and which switch of the trough to connect. For a five-ball trough, it would look something like that: + +![Switch Manager](trough-switches.png) ## Coil Setup -VPE's trough currently only supports one coil, which is the eject coil that pushes a new ball into the plunger lane. Open the [coil manager](../../editor/coil-manager.md), find or add the eject coil and link it to the trough's eject like you did with the switches before: \ No newline at end of file +VPE's trough currently only supports one coil, which is the eject coil that pushes a new ball into the plunger lane. Open the [coil manager](../../editor/coil-manager.md), find or add the eject coil and link it to the trough's eject like you did with the switches before: + +![Coil Manager](trough-coils.png) \ No newline at end of file From 90a07e4c7d4407877501ab8aec4eb83c73868607 Mon Sep 17 00:00:00 2001 From: freezy Date: Fri, 30 Oct 2020 23:52:54 +0100 Subject: [PATCH 16/36] trough: Fix coil documentation. --- .../Documentation~/creators-guide/manual/mechanisms/troughs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md index ac836faeb..aa6c084ce 100644 --- a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md +++ b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md @@ -26,6 +26,6 @@ Open the [switch manager](../../editor/switch-manager.md) and add the trough swi ## Coil Setup -VPE's trough currently only supports one coil, which is the eject coil that pushes a new ball into the plunger lane. Open the [coil manager](../../editor/coil-manager.md), find or add the eject coil and link it to the trough's eject like you did with the switches before: +VPE's trough supports up to two coils, an entry coil which pushes the ball from the drain into the trough, and an eject coil which pushes a new ball into the plunger lane. Open the [coil manager](../../editor/coil-manager.md), find or add the eject coil and link it to the trough's eject like you did with the switches before: ![Coil Manager](trough-coils.png) \ No newline at end of file From 8bad2147a56ceb1bb618eccb931a70b1f77b611d Mon Sep 17 00:00:00 2001 From: freezy Date: Sat, 31 Oct 2020 00:48:49 +0100 Subject: [PATCH 17/36] trough: Clean up unnecessary files. --- .../VPT/Trough/TroughBallData.cs | 25 --------- .../VPT/Trough/TroughBallData.cs.meta | 11 ---- .../VPT/Trough/TroughDisplacementSystem.cs | 51 ------------------- .../Trough/TroughDisplacementSystem.cs.meta | 11 ---- .../VPT/Trough/TroughStaticData.cs | 30 ----------- .../VPT/Trough/TroughStaticData.cs.meta | 11 ---- 6 files changed, 139 deletions(-) delete mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs delete mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs.meta delete mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs delete mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs.meta delete mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs delete mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs.meta diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs deleted file mode 100644 index 435a783f5..000000000 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Visual Pinball Engine -// Copyright (C) 2020 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 Unity.Entities; - -namespace VisualPinball.Unity -{ - internal struct TroughBallData : IComponentData - { - public Entity Ball; - } -} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs.meta deleted file mode 100644 index 9b65fbf04..000000000 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughBallData.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 22afee6ab190949a08a93c66465d711b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs deleted file mode 100644 index e0ab18633..000000000 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs +++ /dev/null @@ -1,51 +0,0 @@ -// Visual Pinball Engine -// Copyright (C) 2020 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 NLog; -using Unity.Entities; -using Unity.Mathematics; -using Unity.Profiling; - -namespace VisualPinball.Unity -{ - [UpdateInGroup(typeof(UpdateDisplacementSystemGroup))] - internal class TroughDisplacementSystem : SystemBase - { - private SimulateCycleSystemGroup _simulateCycleSystemGroup; - - private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - private static readonly ProfilerMarker PerfMarker = new ProfilerMarker("TroughDisplacementSystem"); - - protected override void OnCreate() - { - _simulateCycleSystemGroup = World.GetOrCreateSystem(); - } - - protected override void OnUpdate() - { - var dTime = _simulateCycleSystemGroup.HitTime; - var marker = PerfMarker; - - Entities.WithName("TroughDisplacementJob").ForEach((in TroughStaticData trough) => { - - marker.Begin(); - - marker.End(); - - }).Run(); - } - } -} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs.meta deleted file mode 100644 index 24a841b9c..000000000 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughDisplacementSystem.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4c944133fe2574256a389450992e3f12 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs deleted file mode 100644 index fea127129..000000000 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Visual Pinball Engine -// Copyright (C) 2020 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 Unity.Entities; - -namespace VisualPinball.Unity -{ - internal struct TroughStaticData : IComponentData - { - public Entity EntrySwitch; - public Entity EntryKicker; - public Entity ExitKicker; - public int BallCount; - public int SwitchCount; - public float SettleTime; - } -} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs.meta deleted file mode 100644 index 84b238a5d..000000000 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughStaticData.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c4aafd68e91904edebd1ff37bb96b3fb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: From c7e3ff222519d63854bbee4b5cc10092788404bb Mon Sep 17 00:00:00 2001 From: freezy Date: Sat, 31 Oct 2020 00:53:46 +0100 Subject: [PATCH 18/36] trough: Fix switch manager screenshot. --- .../manual/mechanisms/trough-switches.png | Bin 57982 -> 58255 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/trough-switches.png b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/trough-switches.png index 12325faf7aaab49358deef5e478308b7c58543e8..877485438ab4b5b61af97f324a042069da99d426 100644 GIT binary patch literal 58255 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 AuK)l5 literal 57982 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 Mk19P-G`{vf07s@5S^xk5 From 610aa172c823e5bb1da68c437b7bec74c034f7b4 Mon Sep 17 00:00:00 2001 From: Eli Curtz Date: Fri, 30 Oct 2020 17:33:51 -0700 Subject: [PATCH 19/36] Trough document copyedit pass. --- .../creators-guide/manual/mechanisms/troughs.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md index aa6c084ce..79fefbf78 100644 --- a/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md +++ b/VisualPinball.Unity/Documentation~/creators-guide/manual/mechanisms/troughs.md @@ -1,31 +1,31 @@ # Troughs / Ball Drains -If you have never heard about ball troughs, have a quick look at [MPF's documentation](https://mpf-docs.readthedocs.io/en/latest/mechs/troughs/), they do an excellent job explaining it. +If you are unfamiliar with ball troughs, have a quick look at [MPF's documentation](https://mpf-docs.readthedocs.io/en/latest/mechs/troughs/), which does an excellent job explaining them. -VPE comes with a trough mechanism that simulates like a real-world trough behaves. This is important, because when emulating real-world games, the [gamelogic engine](../gamelogic-engine.md) expects the trough's switches to be in a certain state, or else it will complain. +VPE comes with a trough mechanism that simulates the behaviour of a real-world ball trough. This is especially important when emulating existing games, since the [gamelogic engine](../gamelogic-engine.md) expects the trough's switches to be in a plausible state, or else it may have errors. ## Creating a Trough -When importing a `.vpx` file that doesn't have a trough (chances are high, because Visual Pinball doesn't handle troughs like VPE does), VPE will automatically add a trough under the root of the table. If you're creating a new game, click on the *Trough* button in the toolbox. +When importing a `.vpx` file that doesn't have any troughs (which is likely, because Visual Pinball doesn't currently handle them in the same way as VPE), VPE will automatically add a main trough to the root of the table. If you're creating a trough for a new game, click on the *Trough* button in the toolbox. ## Linking to the Playfield -In order to interact with the game, you'll need to setup your entry kicker (the one that drains the ball), and the exit kicker (the one that releases a new ball). This terminology seems weird, because the ball *exits* the playfield when draining, but from the the trough's perspective, that's where the ball *enters*. +To interact with the game, you'll need to setup an entry kicker to drain the ball into the trough, and an exit kicker to release a new ball from the trough. This terminology may seem weird, since the ball *exits* the playfield when draining, but from the the trough's perspective, that's where the ball *enters*. -You can setup the kickers by selecting the trough in the hierarchy panel and linking them to the desired kickers in the inspector panel. +You can setup the kickers by selecting the trough in the hierarchy panel and linking them to the desired kickers using the inspector. ## Switch Setup -The number of switches of the trough depends on the *Switch Count* property in the inspector panel. For recreations, you can quickly determine the number of trough switches by looking at switch matrix in the operation manual. +The number of simulated switches in the trough depends on the *Switch Count* property in the inspector panel. For recreations, you can quickly determine the number of trough switches by looking at the switch matrix in the operation manual, it usually matches the number of balls installed in the game. -Open the [switch manager](../../editor/switch-manager.md) and add the trough switches if they're not already added. As *Destination* select "Device". Under *Element*, select the through you've created and which switch of the trough to connect. For a five-ball trough, it would look something like that: +Open the [switch manager](../../editor/switch-manager.md) and add the trough switches if they're not already there. As *Destination* select "Device", under *Element*, select the trough you've created and which switch to connect. For a five-ball trough, it will look something like this: ![Switch Manager](trough-switches.png) ## Coil Setup -VPE's trough supports up to two coils, an entry coil which pushes the ball from the drain into the trough, and an eject coil which pushes a new ball into the plunger lane. Open the [coil manager](../../editor/coil-manager.md), find or add the eject coil and link it to the trough's eject like you did with the switches before: +VPE's trough supports two coils, an entry coil which drains the ball from the outhole into the trough, and an eject coil which pushes a new ball into the plunger lane. Open the [coil manager](../../editor/coil-manager.md), find or add the coils, and link them to the trough like you did with the switches: ![Coil Manager](trough-coils.png) \ No newline at end of file From e65cd419fec54c36051c2d3213791fa440dd67c2 Mon Sep 17 00:00:00 2001 From: Eli Curtz Date: Sun, 1 Nov 2020 11:39:14 -0800 Subject: [PATCH 20/36] Schedule events for device switches when balls enter and exit trough. --- .../VisualPinball.Unity/Game/DeviceSwitch.cs | 21 +++++-- .../VPT/Trough/TroughApi.cs | 58 ++++++++++++++++--- 2 files changed, 68 insertions(+), 11 deletions(-) diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs b/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs index a19925f33..96b212909 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs @@ -43,14 +43,14 @@ public void AddSwitchId(string switchId, int pulseDelay) _engineSwitchIds.Add(new SwitchConfig(switchId, _isPulseSwitch, pulseDelay)); } - public void OnSwitch(bool normallyClosed) + public void SetSwitch(bool closed) { if (_engine != null && _engineSwitchIds != null) { foreach (var switchConfig in _engineSwitchIds) { - _engine.Switch(switchConfig.SwitchId, normallyClosed); + _engine.Switch(switchConfig.SwitchId, closed); - // time switch opening if closed and pulse - if (normallyClosed && switchConfig.IsPulseSwitch) { + // Schedule switch opening if closed and pulse + if (closed && switchConfig.IsPulseSwitch) { SimulationSystemGroup.ScheduleSwitch(switchConfig.PulseDelay, () => _engine.Switch(switchConfig.SwitchId, false)); } @@ -59,5 +59,18 @@ public void OnSwitch(bool normallyClosed) Logger.Warn("Cannot trigger device switch."); } } + + public void ScheduleSwitch(bool closed, int delay) + { + if (_engine != null && _engineSwitchIds != null) { + foreach (var switchConfig in _engineSwitchIds) { + SimulationSystemGroup.ScheduleSwitch(delay, + () => _engine.Switch(switchConfig.SwitchId, closed)); + } + } + else { + Logger.Warn("Cannot trigger device switch."); + } + } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs index 115e85165..0ae18b961 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs @@ -36,11 +36,16 @@ public class TroughApi : ItemApi, IApi, IApiInitializable, I /// /// The ball switches. These are virtual switches that don't exist on the - /// playfield, but running on them will + /// playfield, but running on them will /// send the event to the gamelogic engine. /// private DeviceSwitch[] _ballSwitches; + /// + /// Number of virtual balls currently in the trough + /// + private int _ballCount = 0; + /// /// Eject coil triggers the kicker that throws out the ball. /// @@ -107,25 +112,64 @@ IApiCoil IApiCoilDevice.Coil(string coilId) return null; } + /// + /// Create a ball in the trough without triggering extra events + /// + internal void AddBall() + { + if (_ballCount < Data.BallCount) { + _ballSwitches[_ballCount].SetSwitch(true); + + _ballCount++; + } + } + + /// + /// If there are any balls in the trough add one to play and + /// trigger any switches which the remaininng balls would activate + /// internal void OnEjectCoil(bool closed) { - if (closed) { + if (closed && (_ballCount > 0)) { Debug.Log("Spawning new ball."); + _exitKicker.CreateBall(); _exitKicker.Kick(); - EntrySwitch.OnSwitch(false); + for (int i = 0; i < _ballCount; i++) { + _ballSwitches[i].ScheduleSwitch(false, Data.SettleTime / 2); + } + + _ballCount--; + + for (int i = 0; i < _ballCount; i++) { + _ballSwitches[i].ScheduleSwitch(true, Data.SettleTime); + } } } + /// + /// If there's room in the trough remove the ball from play + /// and trigger any switches which it would roll over + /// private void OnEntryKickerHit(object sender, EventArgs args) { - Debug.Log("Draining ball."); - (sender as KickerApi)?.DestroyBall(); + if (_ballCount < Data.BallCount) { + Debug.Log("Draining ball."); + + (sender as KickerApi)?.DestroyBall(); + + int openSwitches = Data.BallCount - _ballCount; - // todo properly close ball switch, etc - EntrySwitch.OnSwitch(true); + for (int i = 1; i < openSwitches; i++) { + _ballSwitches[Data.BallCount - i].ScheduleSwitch(true, Data.SettleTime * i); + _ballSwitches[Data.BallCount - i].ScheduleSwitch(false, Data.SettleTime * i + Data.SettleTime / 2); + } + + _ballSwitches[_ballCount].ScheduleSwitch(true, Data.SettleTime * openSwitches); + _ballCount++; + } } #region Wiring From b76401c595b9276ac14df1194f37218a76e4392d Mon Sep 17 00:00:00 2001 From: freezy Date: Mon, 9 Nov 2020 21:31:41 +0100 Subject: [PATCH 21/36] chore: Minor cleanups. --- VisualPinball.Engine/VPT/Trough/Trough.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/VisualPinball.Engine/VPT/Trough/Trough.cs b/VisualPinball.Engine/VPT/Trough/Trough.cs index bd6442c05..d4952d297 100644 --- a/VisualPinball.Engine/VPT/Trough/Trough.cs +++ b/VisualPinball.Engine/VPT/Trough/Trough.cs @@ -30,14 +30,14 @@ public class Trough : Item, IRenderable, ISwitchableDevice, ICoilabl public const string JamSwitchId = "jam"; public const string EjectCoilId = "eject"; - public const string CoilId = "entry"; + public const string EntryCoilId = "entry"; public IEnumerable AvailableSwitches => Enumerable.Repeat(0, Data.SwitchCount) .Select((_, i) => new GamelogicEngineSwitch {Description = SwitchDescription(i), Id = $"{i + 1}"}) .Concat( new[]{ new GamelogicEngineSwitch{Description = "Jam Switch", Id = JamSwitchId} }); public IEnumerable AvailableCoils => new[] { - new GamelogicEngineCoil {Description = "Entry", Id = CoilId}, + new GamelogicEngineCoil {Description = "Entry", Id = EntryCoilId}, new GamelogicEngineCoil {Description = "Eject", Id = EjectCoilId} }; @@ -52,14 +52,12 @@ public Trough(BinaryReader reader, string itemName) : this(new TroughData(reader private string SwitchDescription(int i) { if (i == 0) { - return $"Ball {i + 1} (eject)"; + return "Ball 1 (eject)"; } - if (i == Data.SwitchCount - 1) { - return $"Ball {i + 1} (entry)"; - } - - return $"Ball {i + 1}"; + return i == Data.SwitchCount - 1 + ? $"Ball {i + 1} (entry)" + : $"Ball {i + 1}"; } #region IRenderable From d1c19938ca2a2e62244dd2c1e4d463407e5f4017 Mon Sep 17 00:00:00 2001 From: freezy Date: Mon, 9 Nov 2020 22:41:24 +0100 Subject: [PATCH 22/36] refactor: Change ItemMain* to ItemMainRenderable* and use ItemMain* for non-renderable items (like troughs). --- VisualPinball.Engine/VPT/Trough/Trough.cs | 25 +-- .../DragPoint/DragPointsHandler.cs | 4 +- .../DragPoint/DragPointsItemInspector.cs | 16 +- .../VPT/Gate/GateInspector.cs | 2 +- .../VPT/ItemColliderInspector.cs | 2 +- .../VPT/ItemInspector.cs | 6 +- .../VPT/ItemMainInspector.cs | 3 +- .../VPT/ItemMeshInspector.cs | 2 +- .../VPT/ItemMovementInspector.cs | 2 +- .../VPT/TransformInspector.cs | 6 +- .../Import/VpxConverter.cs | 24 ++- .../VPT/Bumper/BumperAuthoring.cs | 2 +- .../VPT/Flipper/FlipperAuthoring.cs | 2 +- .../VPT/Gate/GateAuthoring.cs | 2 +- .../VPT/HitTarget/HitTargetAuthoring.cs | 2 +- .../VPT/IItemColliderAuthoring.cs | 2 +- .../VPT/IItemMainAuthoring.cs | 36 +--- .../VPT/IItemMainRenderableAuthoring.cs | 61 ++++++ .../VPT/IItemMainRenderableAuthoring.cs.meta | 11 ++ .../VPT/IItemMeshAuthoring.cs | 2 +- .../VPT/ISwitchAuthoring.cs | 1 - .../VisualPinball.Unity/VPT/ItemAuthoring.cs | 2 +- .../VPT/ItemColliderAuthoring.cs | 4 +- .../VPT/ItemMainAuthoring.cs | 184 +++++------------- .../VPT/ItemMainRenderableAuthoring.cs | 153 +++++++++++++++ .../VPT/ItemMainRenderableAuthoring.cs.meta | 11 ++ .../VPT/ItemMeshAuthoring.cs | 4 +- .../VPT/ItemMovementAuthoring.cs | 2 +- .../VPT/ItemSubAuthoring.cs | 4 +- .../VPT/Kicker/KickerAuthoring.cs | 2 +- .../VPT/Light/LightAuthoring.cs | 2 +- .../VPT/Playfield/PlayfieldAuthoring.cs | 2 +- .../VPT/Plunger/PlungerAuthoring.cs | 2 +- .../VPT/Primitive/PrimitiveAuthoring.cs | 2 +- .../VPT/Ramp/RampAuthoring.cs | 2 +- .../VPT/Rubber/RubberAuthoring.cs | 2 +- .../VPT/Spinner/SpinnerAuthoring.cs | 2 +- .../VPT/Surface/SurfaceAuthoring.cs | 2 +- .../VPT/Table/TableAuthoring.cs | 4 +- .../VPT/Trigger/TriggerAuthoring.cs | 2 +- .../VPT/Trough/TroughAuthoring.cs | 9 +- .../VPT/Trough/TroughExtensions.cs | 2 + 42 files changed, 349 insertions(+), 263 deletions(-) create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainRenderableAuthoring.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainRenderableAuthoring.cs.meta create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainRenderableAuthoring.cs create mode 100644 VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainRenderableAuthoring.cs.meta diff --git a/VisualPinball.Engine/VPT/Trough/Trough.cs b/VisualPinball.Engine/VPT/Trough/Trough.cs index d4952d297..a50a3cf90 100644 --- a/VisualPinball.Engine/VPT/Trough/Trough.cs +++ b/VisualPinball.Engine/VPT/Trough/Trough.cs @@ -23,7 +23,7 @@ namespace VisualPinball.Engine.VPT.Trough { - public class Trough : Item, IRenderable, ISwitchableDevice, ICoilableDevice + public class Trough : Item, ISwitchableDevice, ICoilableDevice { public override string ItemName { get; } = "Trough"; public override string ItemGroupName { get; } = null; @@ -60,29 +60,6 @@ private string SwitchDescription(int i) : $"Ball {i + 1}"; } - #region IRenderable - - Matrix3D IRenderable.TransformationMatrix(Table.Table table, Origin origin) - { - return Matrix3D.Identity; - } - - public RenderObject GetRenderObject(Table.Table table, string id = null, Origin origin = Origin.Global, bool asRightHanded = true) - { - return null; - } - - public RenderObjectGroup GetRenderObjects(Table.Table table, Origin origin = Origin.Global, bool asRightHanded = true) - { - return new RenderObjectGroup(Data.Name, "trough", Matrix3D.Identity, new RenderObject[0]); - } - - // todo create a non-renderable abstraction and remove IRenderable from this - public Vertex3D Position { get => Vertex3D.Zero; set { } } - public float RotationY { get => 0f; set { } } - - #endregion - public static Trough GetDefault(Table.Table table) { var primitiveData = new TroughData(table.GetNewName("Trough")); diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/DragPoint/DragPointsHandler.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/DragPoint/DragPointsHandler.cs index 81f4d85d1..121716117 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/DragPoint/DragPointsHandler.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/DragPoint/DragPointsHandler.cs @@ -31,7 +31,7 @@ public class DragPointsHandler /// /// Authoring item /// - public IItemMainAuthoring Editable { get; private set; } + public IItemMainRenderableAuthoring Editable { get; private set; } /// /// Authoring item as IDragPointsEditable @@ -87,7 +87,7 @@ public class DragPointsHandler /// public DragPointsHandler(Object target) { - Editable = target as IItemMainAuthoring + Editable = target as IItemMainRenderableAuthoring ?? throw new ArgumentException("Target must extend `IEditableItemAuthoring`."); DragPointEditable = target as IDragPointsEditable diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/DragPoint/DragPointsItemInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/DragPoint/DragPointsItemInspector.cs index bb1e939a4..ce71c8a9d 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/DragPoint/DragPointsItemInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/DragPoint/DragPointsItemInspector.cs @@ -27,7 +27,7 @@ namespace VisualPinball.Unity.Editor public abstract class DragPointsItemInspector : ItemMainInspector, IDragPointsItemInspector where TData : ItemData where TItem : Item, IHittable, IRenderable - where TMainAuthoring : ItemMainAuthoring + where TMainAuthoring : ItemMainRenderableAuthoring { /// /// Catmull Curve Handler @@ -103,7 +103,7 @@ public void PasteDragPoint(int controlId) /// True if game item is locked, false otherwise. public bool IsItemLocked() { - return !(target is IItemMainAuthoring editable) || editable.IsLocked; + return !(target is IItemMainRenderableAuthoring editable) || editable.IsLocked; } /// @@ -143,7 +143,7 @@ public void FlipDragPoints(FlipAxis flipAxis) public void RemapControlPoints() { var rebuilt = DragPointsHandler.RemapControlPoints(); - if (rebuilt && target is IItemMainAuthoring meshAuthoring) { + if (rebuilt && target is IItemMainRenderableAuthoring meshAuthoring) { meshAuthoring.SetMeshDirty(); } } @@ -179,7 +179,7 @@ public void PrepareUndo(string message) // Set MeshDirty to true there so it'll trigger again after Undo var recordObjs = new List(); - if (target is IItemMainAuthoring meshAuthoring) { + if (target is IItemMainRenderableAuthoring meshAuthoring) { meshAuthoring.SetMeshDirty(); recordObjs.Add(this); } @@ -191,7 +191,7 @@ public override void OnInspectorGUI() { base.OnInspectorGUI(); - var editable = target as IItemMainAuthoring; + var editable = target as IItemMainRenderableAuthoring; var dragPointEditable = target as IDragPointsEditable; if (editable == null || dragPointEditable == null) { return; @@ -243,7 +243,7 @@ public override void OnInspectorGUI() private void UpdateDragPointsLock() { - if (target is IItemMainAuthoring editable && DragPointsHandler.UpdateDragPointsLock(editable.IsLocked)) { + if (target is IItemMainRenderableAuthoring editable && DragPointsHandler.UpdateDragPointsLock(editable.IsLocked)) { HandleUtility.Repaint(); } } @@ -256,14 +256,14 @@ private void OnDragPointPositionChange(Vector3 newPos) private void OnUndoRedoPerformed() { RemapControlPoints(); - if (target is IItemMainAuthoring meshAuthoring) { + if (target is IItemMainRenderableAuthoring meshAuthoring) { meshAuthoring.SetMeshDirty(); } } protected virtual void OnSceneGUI() { - var editable = target as IItemMainAuthoring; + var editable = target as IItemMainRenderableAuthoring; var dragPointEditable = target as IDragPointsEditable; var bh = target as Behaviour; diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/Gate/GateInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/Gate/GateInspector.cs index 039d7029e..2364c17a1 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/Gate/GateInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/Gate/GateInspector.cs @@ -38,7 +38,7 @@ public class GateInspector : ItemMainInspector protected void OnSceneGUI() { - if (target is IItemMainAuthoring editable) { + if (target is IItemMainRenderableAuthoring editable) { var position = editable.GetEditorPosition(); var transform = (target as MonoBehaviour).transform; if (transform != null && transform.parent != null) { diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemColliderInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemColliderInspector.cs index 734a830bc..d7bac471e 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemColliderInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemColliderInspector.cs @@ -29,7 +29,7 @@ public class ItemColliderInspector where TData : ItemData where TItem : Item, IHittable, IRenderable - where TMainAuthoring : ItemMainAuthoring + where TMainAuthoring : ItemMainRenderableAuthoring { protected TColliderAuthoring ColliderAuthoring; diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs index 2c8355580..cb9fb5a33 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs @@ -69,7 +69,7 @@ protected virtual void OnDisable() public override void OnInspectorGUI() { - if (!(target is IItemMainAuthoring item)) { + if (!(target is IItemMainRenderableAuthoring item)) { return; } @@ -117,7 +117,7 @@ private void OnHierarchyChange() protected void OnPreInspectorGUI() { - if (!(target is IItemMainAuthoring item)) { + if (!(target is IItemMainRenderableAuthoring item)) { return; } @@ -348,7 +348,7 @@ protected virtual void FinishEdit(string label, bool dirtyMesh = true) Undo.RecordObject(UndoTarget, undoLabel); break; - case IItemMainAuthoring mainItem: + case IItemMainRenderableAuthoring mainItem: mainItem.SetMeshDirty(); Undo.RecordObject(UndoTarget, undoLabel); break; diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMainInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMainInspector.cs index 53ada5029..e2f5ba167 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMainInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMainInspector.cs @@ -19,14 +19,13 @@ using System.Linq; using UnityEditor; using UnityEngine; -using VisualPinball.Engine.Game; using VisualPinball.Engine.VPT; namespace VisualPinball.Unity.Editor { public class ItemMainInspector : ItemInspector where TData : ItemData - where TItem : Item, IRenderable + where TItem : Item where TMainAuthoring : ItemMainAuthoring { protected TMainAuthoring ItemAuthoring; diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMeshInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMeshInspector.cs index fa54e799e..9393a5d3d 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMeshInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMeshInspector.cs @@ -28,7 +28,7 @@ public class ItemMeshInspector : I where TMeshAuthoring : ItemMeshAuthoring where TData : ItemData where TItem : Item, IRenderable - where TMainAuthoring : ItemMainAuthoring + where TMainAuthoring : ItemMainRenderableAuthoring { protected TMeshAuthoring MeshAuthoring; diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMovementInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMovementInspector.cs index d5faa55f9..6d3a5d167 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMovementInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemMovementInspector.cs @@ -27,7 +27,7 @@ public class ItemMovementInspector where TData : ItemData where TItem : Item, IHittable, IRenderable - where TMainAuthoring : ItemMainAuthoring + where TMainAuthoring : ItemMainRenderableAuthoring { private TMovementAuthoring _movementAuthoring; diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/TransformInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/TransformInspector.cs index 63ce747d0..1436ff923 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/TransformInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/TransformInspector.cs @@ -34,7 +34,7 @@ public class TransformInspector : UnityEditor.Editor /// /// The first selected item /// - private IItemMainAuthoring _primaryItem; + private IItemMainRenderableAuthoring _primaryItem; /// /// On multi-selection, these are the other selected items. @@ -64,7 +64,7 @@ protected virtual void OnEnable() foreach (var t in targets) { // must be main but not the table itself - var item = (t as Transform)?.GetComponent(); + var item = (t as Transform)?.GetComponent(); useDefault = useDefault && (t as Transform)?.GetComponent() == null; if (item != null && !(item is TableAuthoring)) { @@ -361,7 +361,7 @@ private void FinishScale(Vector3 newScale) private class SecondaryItem { public Transform Transform; - public IItemMainAuthoring Item; + public IItemMainRenderableAuthoring Item; public Vector3 Offset; } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs b/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs index 04fa78e49..1b9cee44f 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs @@ -197,20 +197,22 @@ orderby renderable.SubComponent } } - public static ConvertedItem CreateGameObjects(Table table, IRenderable renderable, GameObject parent) + public static ConvertedItem CreateGameObjects(Table table, IItem item, GameObject parent) { - var obj = new GameObject(renderable.Name); + var obj = new GameObject(item.Name); obj.transform.parent = parent.transform; - var importedObject = SetupGameObjects(renderable, obj); + var importedObject = SetupGameObjects(item, obj); // apply transformation - obj.transform.SetFromMatrix(renderable.TransformationMatrix(table, Origin.Original).ToUnityMatrix()); + if (item is IRenderable renderable) { + obj.transform.SetFromMatrix(renderable.TransformationMatrix(table, Origin.Original).ToUnityMatrix()); + } return importedObject; } - private static ConvertedItem SetupGameObjects(IRenderable item, GameObject obj) + private static ConvertedItem SetupGameObjects(IItem item, GameObject obj) { switch (item) { case Bumper bumper: return bumper.SetupGameObject(obj); @@ -326,14 +328,18 @@ public void Destroy() public void DestroyMeshComponent() { - MainAuthoring.DestroyMeshComponent(); - MeshAuthoring = new IItemMeshAuthoring[0]; + if (MainAuthoring is IItemMainRenderableAuthoring renderableAuthoring) { + renderableAuthoring.DestroyMeshComponent(); + MeshAuthoring = new IItemMeshAuthoring[0]; + } } public void DestroyColliderComponent() { - MainAuthoring.DestroyColliderComponent(); - ColliderAuthoring = null; + if (MainAuthoring is IItemMainRenderableAuthoring renderableAuthoring) { + renderableAuthoring.DestroyColliderComponent(); + ColliderAuthoring = null; + } } public bool IsValidChild(ConvertedItem parent) diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperAuthoring.cs index fa684d1ae..d165886cb 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperAuthoring.cs @@ -32,7 +32,7 @@ namespace VisualPinball.Unity { [ExecuteAlways] [AddComponentMenu("Visual Pinball/Game Item/Bumper")] - public class BumperAuthoring : ItemMainAuthoring, + public class BumperAuthoring : ItemMainRenderableAuthoring, ISwitchAuthoring, ICoilAuthoring, IConvertGameObjectToEntity { protected override Bumper InstantiateItem(BumperData data) => new Bumper(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperAuthoring.cs index 0e600c3df..096ed6670 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperAuthoring.cs @@ -34,7 +34,7 @@ namespace VisualPinball.Unity [ExecuteAlways] [RequiresEntityConversion] [AddComponentMenu("Visual Pinball/Game Item/Flipper")] - public class FlipperAuthoring : ItemMainAuthoring, + public class FlipperAuthoring : ItemMainRenderableAuthoring, ISwitchAuthoring, ICoilAuthoring, IConvertGameObjectToEntity { protected override Flipper InstantiateItem(FlipperData data) => new Flipper(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Gate/GateAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Gate/GateAuthoring.cs index fc814ede5..5e7105cf5 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Gate/GateAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Gate/GateAuthoring.cs @@ -34,7 +34,7 @@ namespace VisualPinball.Unity { [ExecuteAlways] [AddComponentMenu("Visual Pinball/Game Item/Gate")] - public class GateAuthoring : ItemMainAuthoring, + public class GateAuthoring : ItemMainRenderableAuthoring, ISwitchAuthoring, IConvertGameObjectToEntity { protected override Gate InstantiateItem(GateData data) => new Gate(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/HitTargetAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/HitTargetAuthoring.cs index 572ea9e49..6fabf2fe4 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/HitTargetAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/HitTargetAuthoring.cs @@ -32,7 +32,7 @@ namespace VisualPinball.Unity { [ExecuteAlways] [AddComponentMenu("Visual Pinball/Game Item/Hit Target")] - public class HitTargetAuthoring : ItemMainAuthoring, + public class HitTargetAuthoring : ItemMainRenderableAuthoring, ISwitchAuthoring, IConvertGameObjectToEntity { protected override HitTarget InstantiateItem(HitTargetData data) => new HitTarget(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemColliderAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemColliderAuthoring.cs index c09ace1bf..69563fa95 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemColliderAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemColliderAuthoring.cs @@ -21,7 +21,7 @@ namespace VisualPinball.Unity { public interface IItemColliderAuthoring : IItemAuthoring { - IItemMainAuthoring MainAuthoring { get; } + IItemMainRenderableAuthoring MainAuthoring { get; } IEnumerable ValidParents { get; } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainAuthoring.cs index fd4d4389e..108478fa5 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainAuthoring.cs @@ -14,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// ReSharper disable InconsistentNaming + using System; using System.Collections.Generic; using UnityEngine; @@ -22,45 +24,11 @@ namespace VisualPinball.Unity { public interface IItemMainAuthoring : IItemAuthoring { - bool IsLocked { get; set; } - - bool CanBeTransformed { get; } IEnumerable ValidParents { get; } GameObject gameObject { get; } - /// - /// Sets the mesh of all mesh sub components to dirty. - /// - void SetMeshDirty(); - void RebuildMeshIfDirty(); - void Destroy(); - void DestroyMeshComponent(); - void DestroyColliderComponent(); - - // the following interfaces allow each item behavior to define which axes should - // be shown on the scene view gizmo, the gizmo itself will use the associated - // get and set methods, which are expected to update item data directly - ItemDataTransformType EditorPositionType { get; } - Vector3 GetEditorPosition(); - void SetEditorPosition(Vector3 pos); - - ItemDataTransformType EditorRotationType { get; } - Vector3 GetEditorRotation(); - void SetEditorRotation(Vector3 pos); - - ItemDataTransformType EditorScaleType { get; } - Vector3 GetEditorScale(); - void SetEditorScale(Vector3 pos); - } - - public enum ItemDataTransformType - { - None, - OneD, - TwoD, - ThreeD, } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainRenderableAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainRenderableAuthoring.cs new file mode 100644 index 000000000..4b9fb0a57 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainRenderableAuthoring.cs @@ -0,0 +1,61 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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.Collections.Generic; +using UnityEngine; + +namespace VisualPinball.Unity +{ + public interface IItemMainRenderableAuthoring : IItemMainAuthoring + { + bool IsLocked { get; set; } + + bool CanBeTransformed { get; } + + /// + /// Sets the mesh of all mesh sub components to dirty. + /// + void SetMeshDirty(); + void RebuildMeshIfDirty(); + + void DestroyMeshComponent(); + void DestroyColliderComponent(); + + // the following interfaces allow each item behavior to define which axes should + // be shown on the scene view gizmo, the gizmo itself will use the associated + // get and set methods, which are expected to update item data directly + ItemDataTransformType EditorPositionType { get; } + Vector3 GetEditorPosition(); + void SetEditorPosition(Vector3 pos); + + ItemDataTransformType EditorRotationType { get; } + Vector3 GetEditorRotation(); + void SetEditorRotation(Vector3 pos); + + ItemDataTransformType EditorScaleType { get; } + Vector3 GetEditorScale(); + void SetEditorScale(Vector3 pos); + } + + public enum ItemDataTransformType + { + None, + OneD, + TwoD, + ThreeD, + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainRenderableAuthoring.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainRenderableAuthoring.cs.meta new file mode 100644 index 000000000..917deec32 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMainRenderableAuthoring.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9001206d60c12264f9454a1da2928b9a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMeshAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMeshAuthoring.cs index 0214a4392..4255a45b5 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMeshAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/IItemMeshAuthoring.cs @@ -28,7 +28,7 @@ public interface IItemMeshAuthoring : IItemAuthoring List MaterialRefs { get; } List TextureRefs { get; } - IItemMainAuthoring IMainAuthoring { get; } + IItemMainRenderableAuthoring IMainAuthoring { get; } GameObject gameObject { get; } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchAuthoring.cs index c8a4d2781..5a08f94f8 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ISwitchAuthoring.cs @@ -14,7 +14,6 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . - using VisualPinball.Engine.Game; namespace VisualPinball.Unity diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemAuthoring.cs index 6d35288f3..fa77b26dd 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemAuthoring.cs @@ -30,7 +30,7 @@ namespace VisualPinball.Unity /// public abstract class ItemAuthoring : MonoBehaviour where TData : ItemData - where TItem : Item, IRenderable + where TItem : Item { public string Name { get => Item.Name; set => Item.Name = value; } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemColliderAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemColliderAuthoring.cs index 431b7239a..516f6ac09 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemColliderAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemColliderAuthoring.cs @@ -33,7 +33,7 @@ public abstract class ItemColliderAuthoring : Item IItemColliderAuthoring where TData : ItemData where TItem : Item, IHittable, IRenderable - where TMainAuthoring : ItemMainAuthoring + where TMainAuthoring : ItemMainRenderableAuthoring { [NonSerialized] public bool ShowGizmos; @@ -49,7 +49,7 @@ public abstract class ItemColliderAuthoring : Item public HitObject[] HitObjects { get; private set; } - public new IItemMainAuthoring MainAuthoring => base.MainAuthoring; + public new IItemMainRenderableAuthoring MainAuthoring => base.MainAuthoring; private void OnDrawGizmosSelected() { diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainAuthoring.cs index 45dafa425..8f330b459 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainAuthoring.cs @@ -1,18 +1,36 @@ -using System; +// Visual Pinball Engine +// Copyright (C) 2020 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 . + +// ReSharper disable InconsistentNaming + +using System; using System.Collections.Generic; using System.Linq; -using Unity.Entities; using UnityEngine; -using VisualPinball.Engine.Game; using VisualPinball.Engine.VPT; namespace VisualPinball.Unity { public abstract class ItemMainAuthoring : ItemAuthoring, IItemMainAuthoring, ILayerableItemAuthoring, IIdentifiableItemAuthoring - where TItem : Item, IRenderable + where TItem : Item where TData : ItemData { + #region Data + /// /// Returns the serialized data. /// @@ -24,19 +42,10 @@ public abstract class ItemMainAuthoring : ItemAuthoring public override TItem Item => _item ?? (_item = InstantiateItem(_data)); - public virtual bool CanBeTransformed => true; - /// - /// List of types for parenting. Empty list if only to own parent. - /// - public abstract IEnumerable ValidParents { get; } - - /// - /// Authoring type of the child class. + /// Applies the GameObject data to the item data. typically name and visibility. /// - protected abstract Type MeshAuthoringType { get; } - - protected abstract Type ColliderAuthoringType { get; } + public abstract void Restore(); /// /// Instantiates a new item based on the item data. @@ -45,11 +54,6 @@ public abstract class ItemMainAuthoring : ItemAuthoringNew item instance protected abstract TItem InstantiateItem(TData data); - /// - /// Applies the GameObject data to the item data. typically name and visibility. - /// - public abstract void Restore(); - /// /// The serialized data, as written to the .vpx file. /// @@ -60,36 +64,14 @@ public abstract class ItemMainAuthoring : ItemAuthoring [SerializeField] - private TData _data; + protected TData _data; /// /// The game item object. This is not serialized and gets re-instantiated /// and cached here. /// [NonSerialized] - private TItem _item; - - /// - /// Returns all child mesh components linked to this data. - /// - protected IEnumerable MeshComponents => MeshAuthoringType != null ? - GetComponentsInChildren(MeshAuthoringType, true) - .Select(c => (IItemMeshAuthoring) c) - .Where(ma => ma.ItemData == _data) : new IItemMeshAuthoring[0]; - - protected IEnumerable ColliderComponents => ColliderAuthoringType != null ? - GetComponentsInChildren(ColliderAuthoringType, true) - .Select(c => (IItemColliderAuthoring) c) - .Where(ca => ca.ItemData == _data) : new IItemColliderAuthoring[0]; - - public IItemMainAuthoring ParentAuthoring => FindParentAuthoring(); - - public bool IsCorrectlyParented { - get { - var parentAuthoring = ParentAuthoring; - return parentAuthoring == null || ValidParents.Any(validParent => parentAuthoring.GetType() == validParent); - } - } + protected TItem _item; public IItemMainAuthoring SetItem(TItem item, string gameObjectName = null) { @@ -100,102 +82,36 @@ public IItemMainAuthoring SetItem(TItem item, string gameObjectName = null) return this; } - public void SetMeshDirty() - { - foreach (var meshComponent in MeshComponents) { - meshComponent.MeshDirty = true; - } - } - - public void RebuildMeshIfDirty() - { - foreach (var meshComponent in MeshComponents) { - if (meshComponent.MeshDirty) { - meshComponent.RebuildMeshes(); - } - } - - // update transform based on item data, but not for "Table" since its the effective "root" and the user might want to move it on their own - var ta = GetComponentInParent(); - if (ta != this) { - transform.SetFromMatrix(Item.TransformationMatrix(Table, Origin.Original).ToUnityMatrix()); - } - } - public void Destroy() { DestroyImmediate(gameObject); } - public void DestroyMeshComponent() - { - foreach (var component in MeshComponents) { - var mb = component as MonoBehaviour; - - // if game object is the same, remove component - if (mb.gameObject == gameObject) { - DestroyImmediate(mb); - - } else { - // otherwise, destroy entire game object - DestroyImmediate(mb.gameObject); - } - } - } - - public void DestroyColliderComponent() - { - foreach (var component in ColliderComponents) { - var mb = component as MonoBehaviour; - - // if game object is the same, remove component - if (mb.gameObject == gameObject) { - DestroyImmediate(mb); + #endregion - } else { - // otherwise, destroy entire game object - DestroyImmediate(mb.gameObject); - } - } - } + #region Parenting - protected void Convert(Entity entity, EntityManager dstManager) - { - Item.Index = entity.Index; - Item.Version = entity.Version; + /// + /// List of types for parenting. Empty list if only to own parent. + /// + public abstract IEnumerable ValidParents { get; } - var parentAuthoring = ParentAuthoring; - if (parentAuthoring != null && !(parentAuthoring is TableAuthoring)) { - Item.ParentIndex = parentAuthoring.IItem.Index; - Item.ParentVersion = parentAuthoring.IItem.Version; - } - } + public IItemMainRenderableAuthoring ParentAuthoring => FindParentAuthoring(); - protected virtual void OnDrawGizmos() - { - // handle dirty whenever scene view draws just in case a field or dependant changed and our - // custom inspector window isn't up to process it - RebuildMeshIfDirty(); - - // Draw invisible gizmos over top of the sub meshes of this item so clicking in the scene view - // selects the item itself first, which is most likely what the user would want - var mfs = GetComponentsInChildren(); - Gizmos.color = Color.clear; - Gizmos.matrix = Matrix4x4.identity; - foreach (var mf in mfs) { - var t = mf.transform; - Gizmos.DrawMesh(mf.sharedMesh, t.position, t.rotation, t.lossyScale); + public bool IsCorrectlyParented { + get { + var parentAuthoring = ParentAuthoring; + return parentAuthoring == null || ValidParents.Any(validParent => parentAuthoring.GetType() == validParent); } } - - private IItemMainAuthoring FindParentAuthoring() + private IItemMainRenderableAuthoring FindParentAuthoring() { - IItemMainAuthoring ma = null; + IItemMainRenderableAuthoring ma = null; var go = gameObject; // search on parent if (go.transform.parent != null) { - ma = go.transform.parent.GetComponent(); + ma = go.transform.parent.GetComponent(); } if (ma is MonoBehaviour mb && mb.GetComponent() != null) { @@ -207,7 +123,7 @@ private IItemMainAuthoring FindParentAuthoring() // search on grand parent if (go.transform.parent.transform.parent != null) { - ma = go.transform.parent.transform.parent.GetComponent(); + ma = go.transform.parent.transform.parent.GetComponent(); } if (ma is MonoBehaviour mb2 && mb2.GetComponent() != null) { @@ -217,24 +133,14 @@ private IItemMainAuthoring FindParentAuthoring() return ma; } - #region Tools - - public virtual ItemDataTransformType EditorPositionType => ItemDataTransformType.None; - public virtual Vector3 GetEditorPosition() => Vector3.zero; - public virtual void SetEditorPosition(Vector3 pos) { } - - public virtual ItemDataTransformType EditorRotationType => ItemDataTransformType.None; - public virtual Vector3 GetEditorRotation() => Vector3.zero; - public virtual void SetEditorRotation(Vector3 rot) { } - - public virtual ItemDataTransformType EditorScaleType => ItemDataTransformType.None; - public virtual Vector3 GetEditorScale() => Vector3.zero; - public virtual void SetEditorScale(Vector3 rot) { } - #endregion + #region ILayerableItemAuthoring + public int EditorLayer { get => Data.EditorLayer; set => Data.EditorLayer = value; } public string EditorLayerName { get => Data.EditorLayerName; set => Data.EditorLayerName = value; } public bool EditorLayerVisibility { get => Data.EditorLayerVisibility; set => Data.EditorLayerVisibility = value; } + + #endregion } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainRenderableAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainRenderableAuthoring.cs new file mode 100644 index 000000000..7239b5d84 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainRenderableAuthoring.cs @@ -0,0 +1,153 @@ +// Visual Pinball Engine +// Copyright (C) 2020 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.Collections.Generic; +using System.Linq; +using Unity.Entities; +using UnityEngine; +using VisualPinball.Engine.Game; +using VisualPinball.Engine.VPT; + +namespace VisualPinball.Unity +{ + public abstract class ItemMainRenderableAuthoring : ItemMainAuthoring, IItemMainRenderableAuthoring + where TItem : Item, IRenderable + where TData : ItemData + { + public virtual bool CanBeTransformed => true; + + /// + /// Authoring type of the child class. + /// + protected abstract Type MeshAuthoringType { get; } + + protected abstract Type ColliderAuthoringType { get; } + + /// + /// Returns all child mesh components linked to this data. + /// + protected IEnumerable MeshComponents => MeshAuthoringType != null ? + GetComponentsInChildren(MeshAuthoringType, true) + .Select(c => (IItemMeshAuthoring) c) + .Where(ma => ma.ItemData == _data) : new IItemMeshAuthoring[0]; + + protected IEnumerable ColliderComponents => ColliderAuthoringType != null ? + GetComponentsInChildren(ColliderAuthoringType, true) + .Select(c => (IItemColliderAuthoring) c) + .Where(ca => ca.ItemData == _data) : new IItemColliderAuthoring[0]; + + public void SetMeshDirty() + { + foreach (var meshComponent in MeshComponents) { + meshComponent.MeshDirty = true; + } + } + + public void RebuildMeshIfDirty() + { + foreach (var meshComponent in MeshComponents) { + if (meshComponent.MeshDirty) { + meshComponent.RebuildMeshes(); + } + } + + // update transform based on item data, but not for "Table" since its the effective "root" and the user might want to move it on their own + var ta = GetComponentInParent(); + if (ta != this) { + transform.SetFromMatrix(Item.TransformationMatrix(Table, Origin.Original).ToUnityMatrix()); + } + } + + public void DestroyMeshComponent() + { + foreach (var component in MeshComponents) { + var mb = component as MonoBehaviour; + + // if game object is the same, remove component + if (mb.gameObject == gameObject) { + DestroyImmediate(mb); + + } else { + // otherwise, destroy entire game object + DestroyImmediate(mb.gameObject); + } + } + } + + public void DestroyColliderComponent() + { + foreach (var component in ColliderComponents) { + var mb = component as MonoBehaviour; + + // if game object is the same, remove component + if (mb.gameObject == gameObject) { + DestroyImmediate(mb); + + } else { + // otherwise, destroy entire game object + DestroyImmediate(mb.gameObject); + } + } + } + + protected void Convert(Entity entity, EntityManager dstManager) + { + Item.Index = entity.Index; + Item.Version = entity.Version; + + var parentAuthoring = ParentAuthoring; + if (parentAuthoring != null && !(parentAuthoring is TableAuthoring)) { + Item.ParentIndex = parentAuthoring.IItem.Index; + Item.ParentVersion = parentAuthoring.IItem.Version; + } + } + + protected virtual void OnDrawGizmos() + { + // handle dirty whenever scene view draws just in case a field or dependant changed and our + // custom inspector window isn't up to process it + RebuildMeshIfDirty(); + + // Draw invisible gizmos over top of the sub meshes of this item so clicking in the scene view + // selects the item itself first, which is most likely what the user would want + var mfs = GetComponentsInChildren(); + Gizmos.color = Color.clear; + Gizmos.matrix = Matrix4x4.identity; + foreach (var mf in mfs) { + var t = mf.transform; + Gizmos.DrawMesh(mf.sharedMesh, t.position, t.rotation, t.lossyScale); + } + } + + #region Tools + + public virtual ItemDataTransformType EditorPositionType => ItemDataTransformType.None; + public virtual Vector3 GetEditorPosition() => Vector3.zero; + public virtual void SetEditorPosition(Vector3 pos) { } + + public virtual ItemDataTransformType EditorRotationType => ItemDataTransformType.None; + public virtual Vector3 GetEditorRotation() => Vector3.zero; + public virtual void SetEditorRotation(Vector3 rot) { } + + public virtual ItemDataTransformType EditorScaleType => ItemDataTransformType.None; + public virtual Vector3 GetEditorScale() => Vector3.zero; + public virtual void SetEditorScale(Vector3 rot) { } + + #endregion + + } +} diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainRenderableAuthoring.cs.meta b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainRenderableAuthoring.cs.meta new file mode 100644 index 000000000..fba920077 --- /dev/null +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMainRenderableAuthoring.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dbbfe725a97483b449275bc9d63c4f86 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMeshAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMeshAuthoring.cs index 4501768a2..bf1d33c20 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMeshAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMeshAuthoring.cs @@ -27,13 +27,13 @@ namespace VisualPinball.Unity public abstract class ItemMeshAuthoring : ItemSubAuthoring, IItemMeshAuthoring where TData : ItemData where TItem : Item, IRenderable - where TAuthoring : ItemMainAuthoring + where TAuthoring : ItemMainRenderableAuthoring { public bool MeshDirty { get => _meshDirty; set => _meshDirty = value; } public List MaterialRefs => _materialRefs ?? (_materialRefs = GetMembersWithAttribute()); public List TextureRefs => _textureRefs ?? (_textureRefs = GetMembersWithAttribute()); - public IItemMainAuthoring IMainAuthoring => MainAuthoring; + public IItemMainRenderableAuthoring IMainAuthoring => MainAuthoring; protected virtual string MeshId => null; protected abstract bool IsVisible { get; set; } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMovementAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMovementAuthoring.cs index 8a6750717..df7513610 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMovementAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemMovementAuthoring.cs @@ -26,7 +26,7 @@ public abstract class ItemMovementAuthoring : Item IItemMovementAuthoring where TData : ItemData where TItem : Item, IHittable, IRenderable - where TMainAuthoring : ItemMainAuthoring + where TMainAuthoring : ItemMainRenderableAuthoring { protected Entity MainEntity { get { diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemSubAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemSubAuthoring.cs index b7b396cc5..fd5981ec6 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemSubAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemSubAuthoring.cs @@ -25,7 +25,7 @@ namespace VisualPinball.Unity public abstract class ItemSubAuthoring : ItemAuthoring where TItem : Item, IRenderable where TData : ItemData - where TMainAuthoring : ItemMainAuthoring + where TMainAuthoring : ItemMainRenderableAuthoring { /// /// We're in a sub component here, so in order to retrieve the data, @@ -59,7 +59,7 @@ public abstract class ItemSubAuthoring : ItemAutho /// public TMainAuthoring MainAuthoring => FindMainAuthoring(); - public IItemMainAuthoring ParentAuthoring => MainAuthoring.ParentAuthoring; + public IItemMainRenderableAuthoring ParentAuthoring => MainAuthoring.ParentAuthoring; public abstract IEnumerable ValidParents { get; } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerAuthoring.cs index b68491ecc..acf83f0b6 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerAuthoring.cs @@ -34,7 +34,7 @@ namespace VisualPinball.Unity { [ExecuteAlways] [AddComponentMenu("Visual Pinball/Game Item/Kicker")] - public class KickerAuthoring : ItemMainAuthoring, + public class KickerAuthoring : ItemMainRenderableAuthoring, ISwitchAuthoring, ICoilAuthoring, IConvertGameObjectToEntity { protected override Kicker InstantiateItem(KickerData data) => new Kicker(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Light/LightAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Light/LightAuthoring.cs index aef49cc77..2157d0555 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Light/LightAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Light/LightAuthoring.cs @@ -30,7 +30,7 @@ namespace VisualPinball.Unity { [AddComponentMenu("Visual Pinball/Game Item/Light")] - public class LightAuthoring : ItemMainAuthoring + public class LightAuthoring : ItemMainRenderableAuthoring { private UnityEngine.Light _unityLight; diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Playfield/PlayfieldAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Playfield/PlayfieldAuthoring.cs index 342fd16e4..6608811ba 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Playfield/PlayfieldAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Playfield/PlayfieldAuthoring.cs @@ -23,7 +23,7 @@ namespace VisualPinball.Unity { - public class PlayfieldAuthoring : ItemMainAuthoring, + public class PlayfieldAuthoring : ItemMainRenderableAuthoring, IConvertGameObjectToEntity { public override bool CanBeTransformed => false; diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Plunger/PlungerAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Plunger/PlungerAuthoring.cs index aa320eb96..7ce56022a 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Plunger/PlungerAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Plunger/PlungerAuthoring.cs @@ -26,7 +26,7 @@ namespace VisualPinball.Unity { [ExecuteAlways] [AddComponentMenu("Visual Pinball/Game Item/Plunger")] - public class PlungerAuthoring : ItemMainAuthoring, + public class PlungerAuthoring : ItemMainRenderableAuthoring, ICoilAuthoring, IConvertGameObjectToEntity { protected override Plunger InstantiateItem(PlungerData data) => new Plunger(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Primitive/PrimitiveAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Primitive/PrimitiveAuthoring.cs index ef0e7175c..8394b311c 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Primitive/PrimitiveAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Primitive/PrimitiveAuthoring.cs @@ -30,7 +30,7 @@ namespace VisualPinball.Unity { [AddComponentMenu("Visual Pinball/Game Item/Primitive")] - public class PrimitiveAuthoring : ItemMainAuthoring, IConvertGameObjectToEntity + public class PrimitiveAuthoring : ItemMainRenderableAuthoring, IConvertGameObjectToEntity { protected override Primitive InstantiateItem(PrimitiveData data) => new Primitive(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Ramp/RampAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Ramp/RampAuthoring.cs index 2bd724802..318871ab8 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Ramp/RampAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Ramp/RampAuthoring.cs @@ -33,7 +33,7 @@ namespace VisualPinball.Unity { [ExecuteAlways] [AddComponentMenu("Visual Pinball/Game Item/Ramp")] - public class RampAuthoring : ItemMainAuthoring, IDragPointsEditable, IConvertGameObjectToEntity + public class RampAuthoring : ItemMainRenderableAuthoring, IDragPointsEditable, IConvertGameObjectToEntity { protected override Ramp InstantiateItem(RampData data) => new Ramp(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Rubber/RubberAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Rubber/RubberAuthoring.cs index b272f8713..a84a27748 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Rubber/RubberAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Rubber/RubberAuthoring.cs @@ -32,7 +32,7 @@ namespace VisualPinball.Unity { [ExecuteAlways] [AddComponentMenu("Visual Pinball/Game Item/Rubber")] - public class RubberAuthoring : ItemMainAuthoring, + public class RubberAuthoring : ItemMainRenderableAuthoring, IDragPointsEditable, IConvertGameObjectToEntity { protected override Rubber InstantiateItem(RubberData data) => new Rubber(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Spinner/SpinnerAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Spinner/SpinnerAuthoring.cs index ca209384d..b2f32de51 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Spinner/SpinnerAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Spinner/SpinnerAuthoring.cs @@ -34,7 +34,7 @@ namespace VisualPinball.Unity { [ExecuteAlways] [AddComponentMenu("Visual Pinball/Game Item/Spinner")] - public class SpinnerAuthoring : ItemMainAuthoring, + public class SpinnerAuthoring : ItemMainRenderableAuthoring, ISwitchAuthoring, IConvertGameObjectToEntity { protected override Spinner InstantiateItem(SpinnerData data) => new Spinner(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Surface/SurfaceAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Surface/SurfaceAuthoring.cs index b46cd03f9..683b923b3 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Surface/SurfaceAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Surface/SurfaceAuthoring.cs @@ -32,7 +32,7 @@ namespace VisualPinball.Unity { [ExecuteAlways] [AddComponentMenu("Visual Pinball/Game Item/Surface")] - public class SurfaceAuthoring : ItemMainAuthoring, + public class SurfaceAuthoring : ItemMainRenderableAuthoring, IConvertGameObjectToEntity, IDragPointsEditable { protected override Surface InstantiateItem(SurfaceData data) => new Surface(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/TableAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/TableAuthoring.cs index 90b18cfea..ba1cbd182 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/TableAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/TableAuthoring.cs @@ -54,7 +54,7 @@ namespace VisualPinball.Unity { [AddComponentMenu("Visual Pinball/Table")] - public class TableAuthoring : ItemMainAuthoring + public class TableAuthoring : ItemMainRenderableAuthoring { protected override Table InstantiateItem(TableData data) => RecreateTable(data); @@ -257,7 +257,7 @@ public Table RecreateTable(TableData tableData) } private void Restore(Table table) where TData : ItemData - where TItem : Item, IRenderable + where TItem : Item where TComp : ItemMainAuthoring { foreach (var component in GetComponentsInChildren(true)) diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trigger/TriggerAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trigger/TriggerAuthoring.cs index 546d81773..ce888e6a6 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trigger/TriggerAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trigger/TriggerAuthoring.cs @@ -33,7 +33,7 @@ namespace VisualPinball.Unity { [ExecuteAlways] [AddComponentMenu("Visual Pinball/Game Item/Trigger")] - public class TriggerAuthoring : ItemMainAuthoring, + public class TriggerAuthoring : ItemMainRenderableAuthoring, ISwitchAuthoring, IDragPointsEditable, IConvertGameObjectToEntity { protected override Trigger InstantiateItem(TriggerData data) => new Trigger(data); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs index 9e4eacc4d..4a4ff5104 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs @@ -28,27 +28,20 @@ namespace VisualPinball.Unity { - [ExecuteAlways] [AddComponentMenu("Visual Pinball/Trough")] public class TroughAuthoring : ItemMainAuthoring, ISwitchDeviceAuthoring, ICoilDeviceAuthoring { public IEnumerable AvailableSwitches => Item.AvailableSwitches; public IEnumerable AvailableCoils => Item.AvailableCoils; + protected override Trough InstantiateItem(TroughData data) => new Trough(data); public override IEnumerable ValidParents { get; } = new Type[0]; - protected override Type MeshAuthoringType { get; } = null; - protected override Type ColliderAuthoringType { get; } = null; public override void Restore() { Item.Name = name; } - private void Awake() - { - GetComponentInParent().RegisterTrough(Item, gameObject); - } - private void OnDestroy() { if (!Application.isPlaying) { diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs index 4906c2d10..ecc9144f8 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs @@ -24,7 +24,9 @@ internal static class TroughExtensions { public static ConvertedItem SetupGameObject(this Engine.VPT.Trough.Trough trough, GameObject obj) { + var mainAuthoring = obj.AddComponent().SetItem(trough); + obj.GetComponentInParent().RegisterTrough(trough, obj); return new ConvertedItem(mainAuthoring); } } From 85d11f77ce686d643bb5c11cc8ef989b402adf6e Mon Sep 17 00:00:00 2001 From: freezy Date: Mon, 9 Nov 2020 23:19:01 +0100 Subject: [PATCH 23/36] trough: Set local position between entry and exit kicker. --- .../Inspectors/TroughInspector.cs | 7 +++++++ .../VPT/ItemInspector.cs | 12 ------------ .../VPT/Trough/TroughAuthoring.cs | 14 ++++++++++++++ .../VPT/Trough/TroughExtensions.cs | 4 +++- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs index 3d19bd00d..919fb3ce3 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Inspectors/TroughInspector.cs @@ -17,6 +17,7 @@ // ReSharper disable AssignmentInConditionalExpression using UnityEditor; +using UnityEngine; using VisualPinball.Engine.VPT.Trough; using VisualPinball.Engine.VPT.Kicker; using VisualPinball.Engine.VPT.Trigger; @@ -36,5 +37,11 @@ public override void OnInspectorGUI() ItemDataField("Switch Count", ref Data.SwitchCount, false); ItemDataField("Settle Time", ref Data.SettleTime, false); } + + protected override void FinishEdit(string label, bool dirtyMesh = true) + { + base.FinishEdit(label, dirtyMesh); + ItemAuthoring.UpdatePosition(); + } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs index cb9fb5a33..6e8fe6bf7 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/VPT/ItemInspector.cs @@ -103,18 +103,6 @@ private void PopulateDropDownOptions() } } - private void OnHierarchyChange() - { - if (target is MonoBehaviour bh && target is IIdentifiableItemAuthoring item && bh != null) { - var go = bh.gameObject; - if (item.Name != go.name) { - var oldName = item.Name; - item.Name = go.name; - ItemRenamed?.Invoke(item, oldName, go.name); - } - } - } - protected void OnPreInspectorGUI() { if (!(target is IItemMainRenderableAuthoring item)) { diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs index 4a4ff5104..b44a64c84 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs @@ -42,6 +42,20 @@ public override void Restore() Item.Name = name; } + public void UpdatePosition() + { + // place trough between entry and exit kicker + var entryPos = string.IsNullOrEmpty(Data.EntryKicker) + ? Vector3.zero + : Table.Kicker(Data.EntryKicker).Data.Center.ToUnityVector3(100f); + var exitPos = string.IsNullOrEmpty(Data.ExitKicker) + ? Vector3.zero + : Table.Kicker(Data.ExitKicker).Data.Center.ToUnityVector3(100f); + + var pos = (entryPos + exitPos) / 2; + transform.localPosition = pos; + } + private void OnDestroy() { if (!Application.isPlaying) { diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs index ecc9144f8..58d311c88 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs @@ -25,7 +25,9 @@ internal static class TroughExtensions public static ConvertedItem SetupGameObject(this Engine.VPT.Trough.Trough trough, GameObject obj) { - var mainAuthoring = obj.AddComponent().SetItem(trough); + var mainAuthoring = obj.AddComponent(); + mainAuthoring.SetItem(trough); + mainAuthoring.UpdatePosition(); obj.GetComponentInParent().RegisterTrough(trough, obj); return new ConvertedItem(mainAuthoring); } From bbe0d5ae7d3f2ec65e269f6331a1006e0f02193a Mon Sep 17 00:00:00 2001 From: freezy Date: Mon, 9 Nov 2020 23:51:17 +0100 Subject: [PATCH 24/36] editor: Draw arrow from entry kicker to trough to exit kicker. --- .../VisualPinball.Unity/VPT/ItemAuthoring.cs | 11 ++++++ .../VPT/Trough/TroughAuthoring.cs | 37 +++++++++++++++---- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemAuthoring.cs index fa77b26dd..086db8296 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/ItemAuthoring.cs @@ -75,5 +75,16 @@ public abstract class ItemAuthoring : MonoBehaviour protected virtual void ItemDataChanged() { } + + protected static void DrawArrow(Vector3 pos, Vector3 direction, float arrowHeadLength = 0.025f, float arrowHeadAngle = 20.0f) + { + Debug.DrawRay(pos, direction); + + var right = Quaternion.LookRotation(direction) * Quaternion.Euler(0,180+arrowHeadAngle,0) * new Vector3(0,0,1); + var left = Quaternion.LookRotation(direction) * Quaternion.Euler(0,180-arrowHeadAngle,0) * new Vector3(0,0,1); + Debug.DrawRay(pos + direction, right * arrowHeadLength); + Debug.DrawRay(pos + direction, left * arrowHeadLength); + } + } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs index b44a64c84..cea75d821 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs @@ -22,7 +22,10 @@ using System; using System.Collections.Generic; +using Unity.Mathematics; +using Unity.Transforms; using UnityEngine; +using UnityEngine.Networking.PlayerConnection; using VisualPinball.Engine.Game.Engines; using VisualPinball.Engine.VPT.Trough; @@ -37,22 +40,40 @@ public class TroughAuthoring : ItemMainAuthoring, ISwitchDev protected override Trough InstantiateItem(TroughData data) => new Trough(data); public override IEnumerable ValidParents { get; } = new Type[0]; + private Vector3 EntryPickerPos(float height) => string.IsNullOrEmpty(Data.EntryKicker) + ? Vector3.zero + : Table.Kicker(Data.EntryKicker).Data.Center.ToUnityVector3(height); + + private Vector3 ExitKickerPos(float height) => string.IsNullOrEmpty(Data.ExitKicker) + ? Vector3.zero + : Table.Kicker(Data.ExitKicker).Data.Center.ToUnityVector3(height); + + public override void Restore() { Item.Name = name; } + private void OnDrawGizmosSelected() + { + if (!string.IsNullOrEmpty(Data.EntryKicker) && !string.IsNullOrEmpty(Data.ExitKicker)) { + var ltw = GetComponentInParent().transform; + var entryPos = EntryPickerPos(0f); + var exitPos = ExitKickerPos(0f); + var entryWorldPos = ltw.TransformPoint(entryPos); + var exitWorldPos = ltw.TransformPoint(exitPos); + var localPos = transform.localPosition; + var localPos0 = new Vector3(localPos.x, localPos.y, 0f); + var pos = ltw.TransformPoint(localPos0); + DrawArrow(entryWorldPos, pos - entryWorldPos); + DrawArrow(pos, exitWorldPos - pos); + } + } + public void UpdatePosition() { // place trough between entry and exit kicker - var entryPos = string.IsNullOrEmpty(Data.EntryKicker) - ? Vector3.zero - : Table.Kicker(Data.EntryKicker).Data.Center.ToUnityVector3(100f); - var exitPos = string.IsNullOrEmpty(Data.ExitKicker) - ? Vector3.zero - : Table.Kicker(Data.ExitKicker).Data.Center.ToUnityVector3(100f); - - var pos = (entryPos + exitPos) / 2; + var pos = (EntryPickerPos(75f) + ExitKickerPos(75f)) / 2; transform.localPosition = pos; } From ab18615fd5989e38cc13bd474da5d039ed5f7e1c Mon Sep 17 00:00:00 2001 From: freezy Date: Wed, 11 Nov 2020 23:57:21 +0100 Subject: [PATCH 25/36] rubber: Fix transformation matrix. --- VisualPinball.Engine/VPT/Rubber/Rubber.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VisualPinball.Engine/VPT/Rubber/Rubber.cs b/VisualPinball.Engine/VPT/Rubber/Rubber.cs index 6ae41f93f..85aa94ca9 100644 --- a/VisualPinball.Engine/VPT/Rubber/Rubber.cs +++ b/VisualPinball.Engine/VPT/Rubber/Rubber.cs @@ -66,7 +66,7 @@ public static Rubber GetDefault(Table.Table table) #region IRenderable - Matrix3D IRenderable.TransformationMatrix(Table.Table table, Origin origin) => Matrix3D.Identity; + Matrix3D IRenderable.TransformationMatrix(Table.Table table, Origin origin) => _meshGenerator.GetPostMatrix(table, origin); public RenderObject GetRenderObject(Table.Table table, string id = null, Origin origin = Origin.Global, bool asRightHanded = true) { From 6110343e6db736d8f9b531a26ff7a77a5a3d2adc Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 12 Nov 2020 00:01:57 +0100 Subject: [PATCH 26/36] trough: Update mapping tests. --- .../Fixtures~/MappingsTest.vpx | Bin 8192 -> 10752 bytes .../VPT/Mappings/MappingsDataTests.cs | 25 ++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/VisualPinball.Engine.Test/Fixtures~/MappingsTest.vpx b/VisualPinball.Engine.Test/Fixtures~/MappingsTest.vpx index d9aa82095414f3ad699b92fb2f0ec8360cd6c00f..d7e8aaa7d44d294b825abb338b4ef4f17d654648 100644 GIT binary patch delta 2417 zcmb`JPfQ$D9LL`*+jSAvvj4j6?hc(QR5qezSwM|i+0IVO(9W`Dh61%MQVOMZ`6E!% z5|eG>LA|y8#amBC(?buYU1PkM)I$>w#>S`@qc=|;dNL+r1i!ywphIOh#4yPxzc+8* zd%y4dz4v}^u6AFwuC+3tR+6Fa@T;444IPgE_#em#-hs-1T3sk-X(Abze!6D8CqJ_V{yy`5amZx*0rG zzPGd6bB?|EftI&;Vs^PVYw#rO@*y>E`JA%pDqFgtvC0U@XAP|$)`I&PaS4hiSH~RE zIS{tDyCJ`ql(4_H6%~f5=b9)T-WwdjG-t%T;M$yKs!b%t5(gB~A~Xcn6e)WkvtQLD zv|yonzQB=RD`!!p2O&*fLct5PeC`li!yL3;u&tikPvPjkbzfY|zV_2=QThM)DsARV zaeVEDoyVdsxPmc)bsNQcB^}QkGz2WbW_zWTP*hr?XylpGZcS;#cr^|R>_#dp z7XK1(+T!%(c=Ct^y0vQ`eH=U3@L4kZ<3O>s`NJ;`9DDxzfrsVb?l$R0ywGsJ?zwmV z{Hf*0=d;C2sh_1O3VQZPGA+jY8=t^X7k%e%zyI5r-uJ#v4S)BNETc+fmJi>b{gQr< zpRBLLEADXnLC+TI_IT;tgcbj&Rz7=htf1Zr7C)GK<@H~=pQ-fN{Sw2ZCem~-;HAsS zqXEI0mhS)_1%ouvAIS#+X$NX*U9~&*;^i0mOYS9APRq~YEy6wV9I>yYas2lzVD3{Q qL)Ya@Jx7f<=i0D7-XAvwEjH?;CeywQULWqHrN+hjc@#O5^Ybq#Q@g+b delta 407 zcmZn&X>gcez{s=F@HaE>zyJUL^D;0n@B#6^je+YKCniWtVmrZN4CGHf!xq2_Qt)qL z;QdV;70isxn=85ZGBPr5Hs@7knq0-}Hd%p5Zu0?t2d2#jgg96>^U2L(oZO^j2NYHi zILy6x~`M=$F^WVcNzw8p91BDoL+*FD>mQH@95;fUH%>ZZz%VY;2 zu2Bt~KS9dxhpB>Ruq-Z0bOs2-Dh($ diff --git a/VisualPinball.Engine.Test/VPT/Mappings/MappingsDataTests.cs b/VisualPinball.Engine.Test/VPT/Mappings/MappingsDataTests.cs index 06f6e0d56..3515b7090 100644 --- a/VisualPinball.Engine.Test/VPT/Mappings/MappingsDataTests.cs +++ b/VisualPinball.Engine.Test/VPT/Mappings/MappingsDataTests.cs @@ -44,7 +44,7 @@ public void ShouldWriteMappingsData() private static void ValidateTableData(MappingsData data) { - data.Switches.Length.Should().Be(4); + data.Switches.Length.Should().Be(13); data.Switches[0].Id.Should().Be("s_create_ball"); data.Switches[0].Description.Should().Be("Create Ball"); @@ -72,7 +72,20 @@ private static void ValidateTableData(MappingsData data) data.Switches[3].Source.Should().Be(SwitchSource.Constant); data.Switches[3].Constant.Should().Be(SwitchConstant.NormallyClosed); - data.Coils.Length.Should().Be(2); + data.Switches[3].Id.Should().Be("s_right_flipper"); + data.Switches[3].Description.Should().Be("Right Flipper"); + data.Switches[3].Source.Should().Be(SwitchSource.Constant); + data.Switches[3].Constant.Should().Be(SwitchConstant.NormallyClosed); + + data.Switches[7].Id.Should().Be("s_trough1"); + data.Switches[7].Description.Should().Be("Trough 1 (eject)"); + data.Switches[7].Source.Should().Be(SwitchSource.Device); + data.Switches[7].Device.Should().Be("Trough"); + data.Switches[7].DeviceItem.Should().Be("1"); + data.Switches[7].Type.Should().Be(SwitchType.OnOff); + data.Switches[7].PulseDelay.Should().Be(250); + + data.Coils.Length.Should().Be(6); data.Coils[0].Id.Should().Be("c_auto_plunger"); data.Coils[0].Description.Should().Be("Auto Plunger"); @@ -86,6 +99,14 @@ private static void ValidateTableData(MappingsData data) data.Coils[1].PlayfieldItem.Should().Be("Flipper1"); data.Coils[1].Type.Should().Be(CoilType.DualWound); data.Coils[1].HoldCoilId.Should().Be("c_left_flipper_hold"); + + data.Coils[5].Id.Should().Be("c_trough_eject"); + data.Coils[5].Description.Should().Be("Trough Eject"); + data.Coils[5].Destination.Should().Be(CoilDestination.Device); + data.Coils[5].Device.Should().Be("Trough"); + data.Coils[5].DeviceItem.Should().Be("eject"); + data.Coils[5].Type.Should().Be(CoilType.SingleWound); + data.Coils[5].HoldCoilId.Should().Be(""); } } } From 0b793fe13d6cd6bd87d8c0ca9b28e187e114d4ed Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 12 Nov 2020 00:03:15 +0100 Subject: [PATCH 27/36] trough: Various runtime fixes. --- VisualPinball.Engine/VPT/Table/Table.cs | 1 - .../VisualPinball.Unity/Game/DeviceSwitch.cs | 2 +- .../VisualPinball.Unity/Game/Player.cs | 13 +++++++++++-- .../VisualPinball.Unity/Import/VpxConverter.cs | 4 ++-- .../Physics/Collision/ColliderHeader.cs | 2 +- .../VPT/Trough/TroughAuthoring.cs | 4 ++++ .../VPT/Trough/TroughExtensions.cs | 1 - 7 files changed, 19 insertions(+), 8 deletions(-) diff --git a/VisualPinball.Engine/VPT/Table/Table.cs b/VisualPinball.Engine/VPT/Table/Table.cs index 5abb747e1..bbef877ed 100644 --- a/VisualPinball.Engine/VPT/Table/Table.cs +++ b/VisualPinball.Engine/VPT/Table/Table.cs @@ -407,7 +407,6 @@ public void ReplaceAll(IEnumerable items) where T : IItem /// True if the game item exists, false otherwise public bool Has(string name) where T : IItem => GetItemDictionary().ContainsKey(name); - /// /// Returns all game items of a given type. /// diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs b/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs index 96b212909..224e556b8 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/DeviceSwitch.cs @@ -69,7 +69,7 @@ public void ScheduleSwitch(bool closed, int delay) } } else { - Logger.Warn("Cannot trigger device switch."); + Logger.Warn("Cannot schedule device switch."); } } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs b/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs index bd90e2a45..1e8786b6b 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Game/Player.cs @@ -368,17 +368,26 @@ private void SetupSwitchMapping() case SwitchSource.Device when !string.IsNullOrEmpty(switchData.Device) - && _switchDevices.ContainsKey(switchData.Device): { - } + && _switchDevices.ContainsKey(switchData.Device): + { var device = _switchDevices[switchData.Device]; var deviceSwitch = device.Switch(switchData.DeviceItem); if (deviceSwitch != null) { deviceSwitch.AddSwitchId(switchData.Id, 0); + Debug.Log($"Adding switch {switchData.Id} to device {switchData.Device} ({switchData.DeviceItem})"); } else { Logger.Warn($"Unknown switch \"{switchData.DeviceItem}\" in switch device \"{switchData.Device}\"."); } break; + } + case SwitchSource.Device when string.IsNullOrEmpty(switchData.Device): + Logger.Warn($"Switch device not set for switch \"{switchData.Id}\"."); + break; + + case SwitchSource.Device when !_switchDevices.ContainsKey(switchData.Device): + Logger.Warn($"Unknown switch device \"{switchData.Device}\" for switch \"{switchData.Id}\"."); + break; case SwitchSource.Constant: break; diff --git a/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs b/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs index 1b9cee44f..fbee9a2e4 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Import/VpxConverter.cs @@ -275,10 +275,10 @@ private void MakeSerializable(GameObject go, Table table) private void CreateTrough() { var troughData = new TroughData("Trough"); - if (_table.Kicker("BallRelease") != null) { + if (_table.Has("BallRelease")) { troughData.ExitKicker = "BallRelease"; } - if (_table.Kicker("Drain") != null) { + if (_table.Has("Drain")) { troughData.EntryKicker = "Drain"; } var item = new Trough(troughData); diff --git a/VisualPinball.Unity/VisualPinball.Unity/Physics/Collision/ColliderHeader.cs b/VisualPinball.Unity/VisualPinball.Unity/Physics/Collision/ColliderHeader.cs index 1760e9e6d..46af86ab1 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Physics/Collision/ColliderHeader.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Physics/Collision/ColliderHeader.cs @@ -57,7 +57,7 @@ internal struct ColliderHeader public void Init(ColliderType type, HitObject src) { if (src.ItemIndex == 0 && src.ItemVersion == 0) { - throw new InvalidOperationException("Entity of " + type + " " + ItemType + " not set!"); + throw new InvalidOperationException("Entity of " + type + " " + ItemType + " (" + src.Item.Name + ") not set!"); } Type = type; ItemType = src.ObjType; diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs index cea75d821..f54680aa2 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs @@ -48,6 +48,10 @@ private Vector3 ExitKickerPos(float height) => string.IsNullOrEmpty(Data.ExitKic ? Vector3.zero : Table.Kicker(Data.ExitKicker).Data.Center.ToUnityVector3(height); + private void Awake() + { + GetComponentInParent().RegisterTrough(Item, gameObject); + } public override void Restore() { diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs index 58d311c88..98aceafbc 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughExtensions.cs @@ -24,7 +24,6 @@ internal static class TroughExtensions { public static ConvertedItem SetupGameObject(this Engine.VPT.Trough.Trough trough, GameObject obj) { - var mainAuthoring = obj.AddComponent(); mainAuthoring.SetItem(trough); mainAuthoring.UpdatePosition(); From cea94d7eacb43bf95c2822d7624a3d64f1fb11af Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 12 Nov 2020 00:05:51 +0100 Subject: [PATCH 28/36] trough: Use our own logger. --- .../VisualPinball.Unity/VPT/Trough/TroughApi.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs index 0ae18b961..0f91e65d4 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughApi.cs @@ -16,8 +16,10 @@ using System; using System.Collections.Generic; +using NLog; using UnityEngine; using VisualPinball.Engine.VPT.Trough; +using Logger = NLog.Logger; namespace VisualPinball.Unity { @@ -74,6 +76,8 @@ public class TroughApi : ItemApi, IApi, IApiInitializable, I private DeviceSwitch EntrySwitch => _ballSwitches[Data.SwitchCount - 1]; private DeviceSwitch EjectSwitch => _ballSwitches[0]; + private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); + /// /// Event emitted when the table is started. /// @@ -126,12 +130,12 @@ internal void AddBall() /// /// If there are any balls in the trough add one to play and - /// trigger any switches which the remaininng balls would activate + /// trigger any switches which the remaining balls would activate /// internal void OnEjectCoil(bool closed) { if (closed && (_ballCount > 0)) { - Debug.Log("Spawning new ball."); + Logger.Info("Spawning new ball."); _exitKicker.CreateBall(); _exitKicker.Kick(); @@ -155,7 +159,7 @@ internal void OnEjectCoil(bool closed) private void OnEntryKickerHit(object sender, EventArgs args) { if (_ballCount < Data.BallCount) { - Debug.Log("Draining ball."); + Logger.Info("Draining ball."); (sender as KickerApi)?.DestroyBall(); @@ -208,7 +212,7 @@ void IApiInitializable.OnInit(BallManager ballManager) //_switchLookup[sw.Id] = _jamSwitch; } else { - Debug.LogWarning($"Unknown switch ID {sw.Id}"); + Logger.Warn($"Unknown switch ID {sw.Id}"); } } @@ -221,7 +225,7 @@ void IApiInitializable.OnInit(BallManager ballManager) void IApi.OnDestroy() { - Debug.Log("Destroying trough!"); + Logger.Info("Destroying trough!"); if (_entryKicker != null) { _entryKicker.Hit -= OnEntryKickerHit; From f4de22deb573f16a263dd64ab74de165d37a3fd5 Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 12 Nov 2020 00:18:37 +0100 Subject: [PATCH 29/36] trough: Only register when gamelogic engine is set. --- .../VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs index f54680aa2..70ec006d0 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trough/TroughAuthoring.cs @@ -48,7 +48,7 @@ private Vector3 ExitKickerPos(float height) => string.IsNullOrEmpty(Data.ExitKic ? Vector3.zero : Table.Kicker(Data.ExitKicker).Data.Center.ToUnityVector3(height); - private void Awake() + private void Start() { GetComponentInParent().RegisterTrough(Item, gameObject); } From dbfdd6a536c1f91809abce99ee399c6c977c7898 Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 12 Nov 2020 21:23:15 +0100 Subject: [PATCH 30/36] doc: Update switch- and coil manager screenshots. --- .../creators-guide/editor/coil-manager.png | Bin 43920 -> 71363 bytes .../creators-guide/editor/switch-manager.png | Bin 135109 -> 98894 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.png b/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.png index 9e3c15f6a627f7269767130a6680ad472eb1b8cb..7553fd4fd638e08991a7e3615f99904fac0165b5 100644 GIT binary patch literal 71363 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 literal 43920 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 r-~K^d-604_cQ+`VBGRlymz02X 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
;cjf>z;h2N1sz&_GwzSr>kpdV$aD|b^BBc>$ z+35)H({1TBcp{GMRRDE-0={Z+aB$H*W_0{5a%o1tI41+%Qh{=9%m28xaD=H_Gibxj zJFidH5&L_eA6b~yUC|C#Xh^FRlaqVny#e9k&}Xynl&3q40Ysiv`*Erp8pa)Q%sYxj zNf~u@x+xnV66~ScO-D`VYfb07S)#M7oe@%;s$Go{p;k~)_aEqOmQZNL&D0McB+4wZ z8|nK-L)~lo6jnRvYx+h!lx5?hV`2_RL_$n`Ms256SmB5b%kd zADZ}zx@|q&bR_*=s->e7B>VhgrFxLb0%hxaCs#o7GHB1@s6F-VaC_d~>*7aj(>J07 zwxhU_%Jo-ARZVAo$||z*@=+Z*85wOsEw+u`y**HvswkujS~+s%+xj{;xlHc2#A^BQ z;V=mfSb4I z^E=G>W?*uj;1pJKUZMtVH#fICFF=OV2a*jo{o38dSi@#r(83rFuv{_;dGnF_3NLWc zsRo4)SXdOUO?zFO9oSQ`=~Zu`K#iUtIs5LYLIv8o^D{tzh#K&*e_EthL-R)9Y{Sk+ z%@1zrsbiKdF30pPk@@IJ542h;2VKPnmD((H5jl)X+6>COap%iK?wJ_C93ziQG+<>F z6!!YnX(tDp^Q+&d8knw=vZ|f=#>T{SH$0@T7EJ4?C@+6os{tUvC6s4JPlJVDfPw~v z`5ckK9x_;;pqx=uO>S=Yr#d4Wxy4FU67E{}CkdZ3twFVw(gMF_Vdl7>pYo@@6L6N@ zSO^GZIo%yp0yqqDzclUdMAU#LNuC_Qi)#M&>F7RLovs;P*|gG}(-E~7;_ z8YY11D`{GtoSkK4hT6UuWiFVoRAGS?TF# z`e^3W4e}anmvZ&*%vB|e4tameUI62gqqE*dZl0ccHuybt?JXgCZhKYH2nJ)V|1vbB z9tnSYx3#Se3NU$K9bH{r^9Jy&Q5OLHo@2TgPA(KuS`5FEa{9RDm)FzNGsv8nO(_7n zgikxl-bF?_Zq0lGK}CmHHtOmLCl}WqokQP=881+=$_2&0CC;1y9I@cykwulifu$n~ z3ErmmBzF7bsR6s;oxuoX%^yy-$@3Sq0AFOqR`eaGBHN!Spsek4+DJ(A(8W36rYDN$=DU*etwRgmAqLu9ZRc~B4B8lH|MhE@cHAOuPEPy%8h|w<& zmsDzt`W_^_J^Aau$QB?cFF>l;3Wao@QC+0jV3;}zft{-i^`?q=-qpD)L zLlUt4y>1iqz8yiKyTwZ%X5$MWiU;-4pD>AbSCN&K1vk#Z9to=zSN4eptD%Z~ZM(>s ze{Cx1;16E9-PnzL7vXOm|c(Dva@D#QumIgbY^|>0CPW=hVC68c4 z=6wk~vq|DN@3cYGu!*++pcDTxXxx9HJebs`>VIX265t&7fB!9t+H>(63Hd2-^5_5M zb&4$yVLSAHunzFV7-+@(L7l*lldkOQy;X$ z{R2WmLIMM4TO=^4*R!x@^Ey1Je*S*z{CX6EJS{70x%oA=XB^n_88@}(-jf?(w_~ID zQ-&|#iD&od=^M#WCFDO3piaNf<9jfg2v4NdYw*xms02pKs$2Q?1`*gn3jN<5Y@MsZ z$|B3l%VQaT{P=Om4pjBTO6+hIrLyZbn44^ikY`UoH4j3?FdPAlC5FxLb35QvjVTc| zYlQ+F#@J9i^YAPKX?_D#^=!`T(@iNT_SC-@k>5U%tLZZbANAgx5^g~5gG}=H=%}Ow zoN|BAcWW3$$Lj^f``iqe{B-1?&k9jT%3qJ zkXU9k{;y4)kT##J0d?6nrt!sx6!_vdf)wtT$WUnFPbq+V__;E;hplq~-0olUQ(&V0 zC7hq~vr>l5qi)4k2Mfp@h_$$gy1q%VMX?47aB`3{6vKDB8OZ-LQ#doW0Lk4Kz= zuf)?a0f#Re&LsdHGTH%%2&KKL)7Ax!P>lX;X6(xj+UvA21Y^0b4i~_(9dwRv#(1at^X1Krq#x=k}*ay^= z^~ZRzceHd=Rp(lTu&CAQtt6MPMq)#IKE1*K(c*0pX#d8?$5&KTU;?IBORBFgx}c(P2pn-I=W-N6?_*pKw7F2fPD0L{Y*wPhX-G%E%tn#^B>_=H4nXgk$64?j0QP_M(GgliBnR0YQn!o;8*h03KUgE#gg6NygXa z=U<6)aBx(&i~Hjpg;Kq#SlJnhbv!%X^V5R5?E{j?0pHye8L>>U!JtvYe4>^r5jwhz z%uISVw*K!+ZN*k%p5&^ePvmejkLX83GL!LntE}Y(E{#yS_4Qm`zRoe4ubm!pMHlT% z#DJBF>EndcZMjO{TXKFtoz_kgK){Sg8u@RVXV{f?C02GBk*V=~^sswVs8$O(V`Ngb ziosELa?Dmbq2B;*!EL@k^m?^Smf|}x-;W<3LWn+d$`=eVQf%K9bm_EZxV&ln_;J9w zh73Sy;|;TObHCnL`?Bl;fP(sG$D@1S2GT9fLhcIE51_iYMJ0qpY_lN7fv7_pzP7eD zyd&Py(y})=MDR&=@VN_ma7b-ZF^s1oE9q{9){`gMNq3{el9GBmBEn>*%bU+`*YsuD z_VKd$Y04=m;Nmg7Ovt!4=ox9Frl!>CTWl@m72PYe)!p-Y6qhZBuna(RXCk(50U8yr zbZ_nO<8}A~^9U4+DFz2P#?b>F%+^%U%bI}JTRolFP)Ot+YgflDcG|$g!b0_}o#%#{ zuD8629nbe0$@x&B#FLIR&q7`^txos;fk%cdjic70)7C?!#6J-*S?5Z8^CsY(>GjI? zO`*AAwQWe0gU%Ijl%OT4!xb(YNfr?m8!HDZrsXMOQgoVY#UgJ$srR`!2LuYhkpL30 zubrEl1L@7!C%Coetv1|(YlV1*1OXmn{9^L*Z!!n#?4?-4|}!j1(EN1;v#uKm_Zp5^*XyG_K$j zJ>cclI?{Is2wU|>AhbCqPQ8++ua}w$wAGTs!ti}l1e}A?5qd0DpAMDn1SON6#*vP! z0(uI5fR@}@RL>V}Zq{yje}H->^E+NMPxENxoqC8qm!T>ZF9Uo1`gJ$9pE%$S{eWBh zjRsxGnYz~&fu!H0P7tCa*JKFt-vY$|;|o8gmKJZG1My5V~Bjj-E*HnjNWkYIw--AHU_BhVSo zJbijckW>FHJh6>TbTyrdjLQl}NQSMu=02n|S!I{f8#a-1B{Ml+KTQJAa*8-pu~-)Y z&xyM%pROu9J6naV*_rPtT%HDE-lB@lD<_>2uLObiVX&1q_)nyLW=nweE` zJ~J#0dNfs^CcpaTEkZi_pIXZO?EC_!=0`5#`GhO7>(PAQ2VQ8^CkP1H(Ka0L@G8VWpn1~SrmeK>QII9b#Jfy`4r61#8|B$CME`=Eh#*8 zYg5YFI`{37I=#l?(h_5z?}E8xag{Di5LDa7BA}MjEMm0+al$}xyhQTU0&wz*ttupp zjNUW56dD{2GxWWY0d$IAK3by0I{)B@IfWaLd`JJB0;+k7OfO3^J+Tt;Gd67nf#5M5`^tc@vZOSqWNF?12BlQByojX6`}W;8{MEg0U6u6i zS9RejBSX7t{BjyKK@Wuuo20Pf`Rs%#Al-n9@G+AO)_kz)a;5>(K)r)4gPzzILXss~ zCcz1TT5vIkPP2WYTxil&1kIVw>L2=4miz_s+;a*FcxbEQ?cf_Wt5^<>dF>u-c1tf@ zB>*hUJca6mn!eoSNv~X{59a0iqe#b0K|w);(NKW0c7pM?hsV-!nSSs@+o58cQPzwy z$E{_9Zs={h`aS7KBU@$9q@O@;FWG3gTp1vXqQ|;^-5LNR%#zyW515#GzGrrKPeA>G z-<-ZRTAP5vhr3@cT8oK`E3g(y)C7m+d?}Zbk^=oEorK~X!^1Am9W?BA`%Iw(%f8i> z7*ZPG^SCYJR!Ao_B&978WfAgWjqTd)iOzNtk6uCLhcC&A!d5I^rF{m} zP>_5AHuK2nX!<2U=u_`kA*(wPEU|x$^s`XpzA11`(UzHcI5%I}vYHqxsTVXz&2HH* z6a)Ig%#4vjdAf8cV+&Ihi}xO4;TAD*OQw3|aG5x4ur7)wY0Z^hV{^ndE{m@r8{doH z%q6$9mmd^cnQntY5VhNugS-*lDtk(fONqqgg-_$H_Q|4C&U>HO{`O}?pRayxqFSQ- ztvpa|*x(aXn%Z7fYyIJk3g*HqI&cJV0Rp@-Z(`N>>+ZtI3?A=gQ0pbU1wkqoK@jhrJJmk4rB}L} zo|$C%z=7p4Y#JS3taHIe2f%L`XA-nIQ-qfb#sNFsv4vvo$mEqknd5MYipAga;&d2?~Px? zqs?DZ2;!}HK^CHF_^(mkhN+V{Q6ZMa8?_;c&35NtJDm>))vC+`AA-53$$|Z zlG`F!Qmafs0ahJ|G_Tq=pZe_~fB-<8Nt;V$6KB+WZR_`ZA!Y$GPW`Cc#Jr3Re6S0; zD$H!3w^ct!{oZ@l$i!H>U~aJ^kB*7wy4&JVdizaEI55{am+Nl+kr5Hx1E*(a2kYbM zA=jR9aB~mU=0kFkm7YiNo2pZu9O7kVWqS(OCipU5JhUoElJgn%$GiKLy8^fa zWOnooR-$)@X{gV#u|SJ!qh|o@87>KC2;wUB*Dl3 zc)bMu{~pBSCt0&`A&!Dteq%@_1pm;|!H@ZH-@p+9|H797g8xO*!lZ5m;KJV-rvLEm z7=6{z;bAWTZa|HG;U9Nx__eI~@VJLv*uKxj=EYgl`RK**El|7~KFkZKBw+dAHAx}J zDW+%J|AdB*@9+Tc`9esn@u!zpL1OuAt)R*q?6np5;j6diB*A4~1p>mB79_o`8E`}b zkByPZz=#vNI#upKum1MIK}X#u2*7yqpSu8ZSoD&hkc+8r^;mL=gxeut;kN46?MG1v zJUyU{pd~UjGbAyx`IMe+A%{u*9V@|-dk9joy8Hg!Q}#%QFhr|lyr_>z@_blW*fi1L z`&wnIY=IKxK4kRt*>_jFhP{y@pEDbk10QKj>IGuc2SMdwht`cPCel&?Z#GDTA3b^$ z7^sU!$v@#ym=1>NUioyQYg3Dx+StfQ*gQMgs6w^2&hLXOsJh(8Not{j?5zT8vyk*Q z9S;}Ta>fOMB#Dxe(m~~03g6QYL9Yc?ncsp2{9K#c@;lctc~BMK`l6UtA(3bW$74VV z&#M29HRuK9R8(XM)Op+;omjZ>bHT{DN~2F`0~6my2*m=P(F7%SX=emsDC|68s~tD} zc~Vn}=S@wb1@h7luO=Kldg6O@Fzu64006%ymp48fU52f9Vmg!vr{9M_D$`2415v|n zU~mYw_5~7R1JuBkV&2^QIoZ!kF(qGsXsagBqLE)bdZI~M=`AZQ)0elh?=hEEvAkz^re=;^!Zn4?e+RDQB`a?5@rz90%u0$`~ zXH=AukceY`o8O|K6$6}=9_$Lek3=fQ#?4pp$}lk81d^ibT~Ls5fqV{-|IB!0=?js! ziK~v})!xvhZkTE)cu1K)?!3TJYVilezr8ha(5Q;Wmw3o6mqy0f!SEB^1@>73CG3U* zFcBCtD97>I0gB%KQXX%qKcxx4=Vm=IHHY=~{dji;%E64x6dE{(AQH?6WOEj@s3ts^$^a9C&I>4Z=@&5i zCNiSm4pN&GQJ)aU2G1kH{vFVc$9Fs4wPHX3Mg_F*OJ)SEkHq=md?*78K~^VJxAGo| zHB``b0}mHh(l;({EbU4gu!_$W&bjk5OlS_61o*h&;jPLJEq^W!7pw_7ui(zM6l7&( zXRyhnUNzZvjSim7P*6||3=Dt{l8vS1M;}iYi>6m_1bPf&>-3WgF+pEMlsP?KpW0e* zn>3{tdMNf(Y=PY<5KQ>is~aN9Vkp{oh>vRm0Md<_2J%$tLgc zHJB%TL(GPv31R|{KLv$8m_=d7bx12}I@b{nV}U^S0bmR0`>QlymXb&X1_l93EH*_3 zCQ8d3SCx23@qE;-6@gKjz&StP$081kAP=4a!(!{}wixpuCM-hM;JQvuyMRfbwmk_b z-sb(u1%XH32599PliO_!ij5xG*%i?%DkOaB}Hmp9@G8%9m=v?ME*-T zOpBGkUo}Sxxoy2)<8iAAqLmI=00i*FIshTHx3`1&Gn`pK2Lxo{NZkqrV0`?HfIg`F z8DvFCK5Zc?{;cKz_Kl_{P7Cb(kWm&VPY<^JuPWqfte zMS!NB-dmzcKyFu+@rwZSwQn<=$-WK_{u*P2MkB)R|_CaE`!r*J?soWMl}Z z+-haelv1odf9}$#lvak^@9RT^h!bLjn*~GeX}xhG5`(pzU_X=hHY~rF5g!PmI?l3TCn z63hZ|MBIT=# zUwfA`%|T8AdLL5qJM-oRZ~TUbhxsNZCkya~qWY$%DHU_fx#OemJ$PU_+x+_2c2CRy z*$Yop_b(HkSXISacyl-#_6AzZs?J;=0+3~fT>8MSXB>`8@*iX$KYrK+CVh#6QSMEp z=Y|EDjJ?`S!+Z+>hkCV!Kw%PQdU1XRiT+e`z`@3LBa4ZREsI{VrjMWo_eMm1G9=g1 z8B7^!TPqxbE)!sr)VS}M(}}scRp)1iMMr0dhJT1IzzU%hEi`Elww^|2QQDm-L}y$#6ckFBzFuH{(ShW{$QOI_oh7${QJVBL zLPElAV*XNnER;hueS%DFk><4>d;ZXr^Tk3XXse|Xba!_vUlT_ORt&J(&D&r3-Dhg? z-CK*+Qdg%E0^llE;F~w%o#SN|(mWz&1*sq=De#Gzb|NHV5i@U~6Xl@2Bi{(pE?|%n zl9D;|zJ7l6pmSdwrLyW5|6U9XF7Y&_0cx?Mg({coghUiVRN=WL7_X9$sB>D0 zh>azlxN0T4Q1u1)CP3`Tz~`!A;M)80Soqn#e0=^CxVUq#k6`v?a8PZj_vH9^wFeYE zKfwKVuK;zu^(Z$tS5`kFIhmsGIX#`fc9}W2Zw4(4qRQ&(vDy!oDM-I%^2R(5Gl8Mi zxwbdBa%OJ&*)PCw%3kn8$IN>rD+V9$53oH{R#oL(Z3DBj)byUzLbp0E0AFb7U?hxs z1pHG1^gZmi4>;J_zd%offb1aUFZg^hMSz4Shsq zM!+SlViOAuXBM$7{~L!v56Q*QeW`xLXWkBcE8i{#6GxO<4>RsQ0)4?m5wBXpkp6E4 zUpB1g(yxf|9m}32Df_0cMHK-I+jr$^KYB`d(@!4-02#j2jV(+$=`i~v=GhntUW~;` zpbNl}-4Q4QkgcT=svae=uwNhJSc_Q>y2bRtY^06?lR)YA=Sklfgpo$`o#$PEMvYab z%yC0UM`vd6Dh5UiO#_$+LT|1U1tdNxOL5F&PC9C2$vZ(;RgkHf%WG&vlkD6a&||C8 zuYq6P{Mh1uW0n|jycySy^A4za*s9{YaG3!&z5D~%u)3C3Y;?4KoeQpEitsbYs@|wd zR%>^Zsx#ug8R+EHIj`MLdKiV@1~RXRSrblcS9|+nFlCmOCU%pi`kf{HE~f$%%A#k; zR|^6hpgXo(_|E4Y@vQfDLM;tHOnrHr+9j0(x_fVmwvvYB;5s#h;2(YH2}-u?RBo{x zz_+lp#JuY#1>4?icd@e0$m=KQIRTU zjemPzQE_Y5l6%*t$_pe==^@JEj=>M>?{eNy7slNOTPhA_&XD8~Ionl32kar0K);6! zHx?^p{D8tRp}aSqDewlRHU|_W6Ph|6ZVRJ7aKWI_s60WN7Wy1M4OIe;y|~!Di{-lX zp!I6xeqH!Gm!UV->9mT9ikb^tN7|Mk(ygikTs0=yb*VRg)t*GS#OK2MC}@WUIffmBc%{bHRK3@4k%u{7giG%85c zY=AIXEC)sjwAIucmwHK_G^bU6TJ-gQKxrf#wD{axStjHV^U%}wx$?d0aNtD4J?1TZ<=ls^1cF(3 zkTQW$DHIfUK%FzcSZ2< zl9X0Ken2S5$f#sR4CEVuB7D_eJ6I6l!ag)ys-&RK>Ad%lJ~;O^golvTL65!)baT40 z(VR?Wse}m7U7Vd$v6a0YUJRDFZW`>d9sf9y)z*$T{*2k7GG-U~5OxJj@s=jHJie%t zyvcj&FP$$@n4SHQs@}wGiJ`ICr455l(b{?yWTaqdZ1$51%IYso$q0$Z*s77M-gsbN zf~*A9lQTCP8{6SyOs!1TiF;MS31si)M#Nale`j5N@|3}z6| z-y;2Z%V&r|o^i!T_g)sDHg}UNtueh{dE^)1KHrY(Y=jz>ALzD<@gKCXRE61CTZ>`# z-fbC>Uv*p=>?VIQR()K~$pV1RB2RNbc9vENFzO zn%N6W&%?^bCRz>vHfN7TW_u<-DJ*6b=hmd$cy(VwfENcd)Z zpC&LCL2Er(Ks_a-kUV}pK0fQRsLbo4V%@#Bs6zGfd8=Kt`c|!8Ew>}5R9sT>g3+^?^T%hM@yAO#)%5enx3_QKYNmCFs)bDDHVRE5_2Bbo z(@MQ1?wzCUE>8F2`wQCak-=AJx^PMU5Kpn<;iDzZo#Q?bp;kp6C`;IQbhB#D8LJJQ zYYfRL3Ds@aOZlokO6^Whq8yYb>HuyOAqF zXZK;aF(mW8|EpJK?+r*C3sZc7f&xJCO^_C(#o-Eb2ACsU#z+Ml;iB7gcB!D z$Tsp=EpOTU4)^`JTPlzaWZJf#UmnfZArM0uqIY;`n

vucx?Z9@N@YQC+QQIN06Y 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 P@Q;?7zUp1&BYyt_m^h#T literal 135109 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 z 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 Date: Thu, 12 Nov 2020 21:27:20 +0100 Subject: [PATCH 31/36] doc: Fix selection in screenshot. --- .../creators-guide/editor/coil-manager.png | Bin 71363 -> 71290 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.png b/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.png index 7553fd4fd638e08991a7e3615f99904fac0165b5..7d45211ab613753356121a2ba8f61aaff0b295ef 100644 GIT binary patch literal 71290 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�lF7f45WOh!`F+_a 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 Z{2lW-c!^==wc9HEIwhwpn=NhV^Iz}CP{{xQ literal 71363 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 From 710edd39acce7cbd9af2aa7e8a769727fa956dc8 Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 12 Nov 2020 21:44:45 +0100 Subject: [PATCH 32/36] doc: Update coil- and switch manager with devices. --- .../Documentation~/creators-guide/editor/coil-manager.md | 7 +++++-- .../Documentation~/creators-guide/editor/switch-manager.md | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.md b/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.md index 01d407a33..fb0bac54a 100644 --- a/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.md +++ b/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.md @@ -23,11 +23,14 @@ The **Description** column is an optional free text field. If you're setting up ### Destination -The **Destination** column defines where the element in the next column is located. Currently, VPE only supports playfield items with one coil. In the future, VPE will support devices with multiple coils, which will also be listed here. +The **Destination** column defines where the element in the next column is located. There are two options: + +- *Playfield* lets you select a game element on the playfield that features a coil +- *Device* lets you choose a mechanism which includes multiple coils. We call them *coil devices*, for example [troughs](../manual/mechanisms/troughs.md). ### Element -The **Element** column is where you choose the playfield element with the coil. VPE can receive coil events for bumpers, flippers, kickers and plungers. +The **Element** column is where you choose which element in the previous destination column should be activated. VPE can receive coil events for bumpers, flippers, kickers and plungers and of course coile devices. > [!note] > Bumpers are currently hard-wired, i.e. their switch will directly trigger the coil without going through the gamelogic engine. That means they don't need to be configured in the switch- or coil manager. VPE will make this configurable in the future. diff --git a/VisualPinball.Unity/Documentation~/creators-guide/editor/switch-manager.md b/VisualPinball.Unity/Documentation~/creators-guide/editor/switch-manager.md index 98cba60ac..82b25b738 100644 --- a/VisualPinball.Unity/Documentation~/creators-guide/editor/switch-manager.md +++ b/VisualPinball.Unity/Documentation~/creators-guide/editor/switch-manager.md @@ -38,6 +38,8 @@ The **Source** column defines where the element in the next column is located. T - *Playfield* lets you choose a game item in the playfield - *Input System* lets you choose an input action from a pre-defined list, i.e. cabinet switches - *Constant* sets the switch at the beginning of the game to the given value. +- *Device* lets you choose a switch device to select a switch from. Switch devices are mechanisms that contain multiple switches, for example [troughs](../manual/mechanisms/troughs.md). + ### Element @@ -50,6 +52,8 @@ For **Playfield**, you can choose a game item that triggers switch events. Curre If **Input System** is selected, you choose which input action to use. We call it "input action", because it's not an actual key binding. While actions have default key bindings, the final bindings will be defined in the host application (the VPE player). So what VPE is dealing with in terms of keyboard input is what we call *input actions*. +If the source is **Device**, there are two values to select. Firstly, the actual switch device, and secondly which switch of that device should be connected to the gamelogic engine. + Finally, if **Constant** is selected, you choose the value that will be permanently set at the beginning of the game. ### Pulse Delay From cfaa0dae06276c7e1fa34fdb68505d59f6a181a2 Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 12 Nov 2020 22:09:51 +0100 Subject: [PATCH 33/36] doc: Update README with a few more links. --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a63e8e57c..f33d08e7f 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ other "current gen" engines, while keeping backwards-compatibility. VPE also aims to significantly improve the editor experience by extending the editor of the game engine. +For a more detailed overview, header over to the [website](https://docs.visualpinball.org/creators-guide/introduction/overview.html)! + ## How? The "core" of VPE (i.e. the `VisualPinball.Engine` project) is a pure C# port @@ -32,7 +34,7 @@ VPE is still work in progress. You can check the current features list [here](ht 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), -where you can discuss. +where you can discuss. Screenshots are [here](https://github.com/freezy/VisualPinball.Engine/wiki/Unity-Screenshots! :) ## Credits From 7929ba993d970ea33d388869b6a09f139cb30345 Mon Sep 17 00:00:00 2001 From: freezy Date: Thu, 12 Nov 2020 22:10:31 +0100 Subject: [PATCH 34/36] trough: Address comments from @jsm174. --- VisualPinball.Engine/VPT/Item.cs | 1 - VisualPinball.Engine/VPT/Mappings/Mappings.cs | 2 -- VisualPinball.Engine/VPT/Trough/Trough.cs | 1 - VisualPinball.Engine/VPT/Trough/TroughData.cs | 14 +++++++------- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/VisualPinball.Engine/VPT/Item.cs b/VisualPinball.Engine/VPT/Item.cs index 34de7558e..d2f0ee8b5 100644 --- a/VisualPinball.Engine/VPT/Item.cs +++ b/VisualPinball.Engine/VPT/Item.cs @@ -15,7 +15,6 @@ // along with this program. If not, see . using System; -using VisualPinball.Engine.Math; namespace VisualPinball.Engine.VPT { diff --git a/VisualPinball.Engine/VPT/Mappings/Mappings.cs b/VisualPinball.Engine/VPT/Mappings/Mappings.cs index 331908688..fece24b9d 100644 --- a/VisualPinball.Engine/VPT/Mappings/Mappings.cs +++ b/VisualPinball.Engine/VPT/Mappings/Mappings.cs @@ -15,11 +15,9 @@ // along with this program. If not, see . using System.Collections.Generic; -using System.Diagnostics; using System.IO; using System.Linq; using System.Text.RegularExpressions; -using NetVips; using NLog; using VisualPinball.Engine.Common; using VisualPinball.Engine.Game; diff --git a/VisualPinball.Engine/VPT/Trough/Trough.cs b/VisualPinball.Engine/VPT/Trough/Trough.cs index a50a3cf90..035dea9d6 100644 --- a/VisualPinball.Engine/VPT/Trough/Trough.cs +++ b/VisualPinball.Engine/VPT/Trough/Trough.cs @@ -19,7 +19,6 @@ using System.Linq; using VisualPinball.Engine.Game; using VisualPinball.Engine.Game.Engines; -using VisualPinball.Engine.Math; namespace VisualPinball.Engine.VPT.Trough { diff --git a/VisualPinball.Engine/VPT/Trough/TroughData.cs b/VisualPinball.Engine/VPT/Trough/TroughData.cs index f3bcac470..74e79b289 100644 --- a/VisualPinball.Engine/VPT/Trough/TroughData.cs +++ b/VisualPinball.Engine/VPT/Trough/TroughData.cs @@ -35,25 +35,25 @@ public class TroughData : ItemData public override string GetName() => Name; public override void SetName(string name) { Name = name; } - [BiffString("NAME", IsWideString = true, Pos = 9)] + [BiffString("NAME", IsWideString = true, Pos = 1)] public string Name; - [BiffString("ENTK", Pos = 1)] + [BiffString("ENTK", Pos = 2)] public string EntryKicker = string.Empty; - [BiffString("EXIT", Pos = 10)] + [BiffString("EXIT", Pos = 3)] public string ExitKicker = string.Empty; - [BiffString("JAMS", Pos = 2)] + [BiffString("JAMS", Pos = 4)] public string JamSwitch = string.Empty; - [BiffInt("BCNT", Pos = 3)] + [BiffInt("BCNT", Pos = 5)] public int BallCount = 6; - [BiffInt("SCNT", Pos = 4)] + [BiffInt("SCNT", Pos = 6)] public int SwitchCount = 6; - [BiffInt("TIME", Pos = 5)] + [BiffInt("TIME", Pos = 7)] public int SettleTime = 100; public TroughData(string name) : base(StoragePrefix.GameItem) From ba8ccb7d8f64be5e6560c60faf83b2d4ab69f874 Mon Sep 17 00:00:00 2001 From: Eli Curtz Date: Thu, 12 Nov 2020 13:42:04 -0800 Subject: [PATCH 35/36] Coil manager documentation pass. --- .../creators-guide/editor/coil-manager.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.md b/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.md index fb0bac54a..1309e9816 100644 --- a/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.md +++ b/VisualPinball.Unity/Documentation~/creators-guide/editor/coil-manager.md @@ -1,58 +1,58 @@ # Coil Manager -On a real pinball table, most moving parts, including the flippers, are triggered by [coils](https://en.wikipedia.org/wiki/Inductor) (also called [solenoids](https://en.wikipedia.org/wiki/Solenoid)). It's the job of the [gamelogic engine](~/creators-guide/manual/gamelogic-engine.md) to trigger them when needed. +On a real pinball table most moving parts, including the flippers, are triggered by [coils](https://en.wikipedia.org/wiki/Inductor) (also called [solenoids](https://en.wikipedia.org/wiki/Solenoid)). In VPE it's the job of the [gamelogic engine](~/creators-guide/manual/gamelogic-engine.md) to trigger them when needed. -On a typical table there are usually several coils that need to be wired up to the controller board. In VPE, you can do that with the coil manager under *Visual Pinball -> Coil Manager*. +Just as the coils are physically wired to the power driver board on a regular machine they can be virtually connected in VPE using the coil manager under *Visual Pinball -> Coil Manager*. ![Coil Manager](coil-manager.png) ## Setup -Every row in the coil manager corresponds to a wire going from the gamelogic engine output to the coil. Similar to switches, a coil can be linked to multiple outputs, and an output can be linked to multiple coils. +Every row in the coil manager corresponds to a logical wire going from a gamelogic engine output to the coil. As with switches, a single coil can be linked to multiple outputs, and an output can be linked to multiple coils. ### IDs -The first column **ID** shows the coil names that the gamelogic engine expects to be wired up. +The first column, **ID** shows the name that the gamelogic engine exports for each coil. > [!note] -> As we cannot be 100% sure that the gamelogic engine has accurate data about the coil names, you can also add coil IDs yourself, but that should be the exception. +> As we cannot be 100% sure that the gamelogic engine has accurate data about the coil names, you can also add coil IDs manually, but that should be the exception. ### Description -The **Description** column is an optional free text field. If you're setting up a re-creation, that's where you typically put what is in the game manual. It's purely for your own benefit, and you can keep this empty if you want. +The **Description** column is optional. If you're setting up a re-creation, you would typically use this for the coil name from the game manual. It's purely for your own benefit, and you can keep this empty if you want. ### Destination -The **Destination** column defines where the element in the next column is located. There are two options: +The **Destination** column defines where the element in the following column is located. There are two options: -- *Playfield* lets you select a game element on the playfield that features a coil -- *Device* lets you choose a mechanism which includes multiple coils. We call them *coil devices*, for example [troughs](../manual/mechanisms/troughs.md). +- *Playfield* lets you select a game element on the playfield that features the coil +- *Device* lets you choose a *coil device*, a mechanism which may include multiple coils, such as a [trough](../manual/mechanisms/troughs.md). ### Element -The **Element** column is where you choose which element in the previous destination column should be activated. VPE can receive coil events for bumpers, flippers, kickers and plungers and of course coile devices. +The **Element** column is where you choose which specifc element in the destination column should be activated. VPE can receive coil events for bumpers, flippers, kickers and plungers and coil devices. > [!note] -> Bumpers are currently hard-wired, i.e. their switch will directly trigger the coil without going through the gamelogic engine. That means they don't need to be configured in the switch- or coil manager. VPE will make this configurable in the future. +> Bumpers are currently hard-wired, i.e. their switch will directly trigger the coil without going through the gamelogic engine. That means they don't need to be configured in the switch or coil manager. VPE will make this configurable in the future. ### Type In the **Type** column you can define whether the coil is single-wound or dual-wound. There's an excellent page about the differences in [MPF's documentation](https://docs.missionpinball.org/en/latest/mechs/coils/dual_vs_single_wound.html). In short, dual-wound coils have two circuits, one for powering the coil, and one for holding it, while single-wound coils only have one. -This changes in how the coils power off: +This changes how the coil powers off: -- For **single-wound** coils, VPE uses the same coil event for powering on and off. +- For **single-wound** coils, VPE uses the same coil's events for powering on and off. - For **dual-wound** coils, it uses the *on* event from the main coil and the *off* event from the hold coil. ### Hold Coil -If the coil type is set to *Dual-Wound*, this column defines the hold coil event, i.e. on which event the coil powers off. +When the coil type is set to *Dual-Wound*, this column defines the hold coil event, i.e. the event on which the coil powers off. -These coils are pretty common. For example, *Medieval Madness* has the following dual-wound coils: +Dual-wound coils are fairly common. For example, *Medieval Madness* has the following dual-wound coils: ![Medieval Madness dual-wound coils](dual-wound-coils.png) *From the Medieval Madness manual* -In VPE, this would map to the following configuration: +In VPE, the two flippers would map to the following configuration: ![Dual-wound example configuration](switch-manager-dual-wound.png) From 35b13de72e0ef6670277ece1497b35f391b909ea Mon Sep 17 00:00:00 2001 From: Eli Curtz Date: Thu, 12 Nov 2020 14:08:02 -0800 Subject: [PATCH 36/36] Switch manager documentation pass. --- .../creators-guide/editor/switch-manager.md | 54 ++++++++----------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/VisualPinball.Unity/Documentation~/creators-guide/editor/switch-manager.md b/VisualPinball.Unity/Documentation~/creators-guide/editor/switch-manager.md index 82b25b738..65c0f932f 100644 --- a/VisualPinball.Unity/Documentation~/creators-guide/editor/switch-manager.md +++ b/VisualPinball.Unity/Documentation~/creators-guide/editor/switch-manager.md @@ -1,8 +1,8 @@ # Switch Manager -During gameplay, the [gamelogic engine](~/creators-guide/manual/gamelogic-engine.md) needs to know what is happening on the playfield. For that reason, real pinball tables have switches all over the playfield that signal when a ball rolls over a certain position. These switches are also built into targets, bumpers, kickers, and some other items (see *[Supported Game Mechanisms](#supported-game-mechanisms)* below). +During gameplay, the [gamelogic engine](~/creators-guide/manual/gamelogic-engine.md) needs to know what is happening on the playfield. For that, real pinball tables have switches on the playfield that signal when a ball rolls over or settles in a certain position. These switches are also built into targets, bumpers, kickers, and other mechanisms (see *[Supported Game Mechanisms](#supported-game-mechanisms)* below). -Wiring these switches up to the gamelogic engine per code can be a tedious process. That's why VPE provides a graphical interface where you can do it easily. It even can guess which switch maps to which game item, if you've named them accordingly. +Wiring these switches up to the gamelogic engine with code can be a tedious process, so VPE provides a graphical interface where you can do it easily. If you've named them appropriately it can even guess which switch maps to which game item. You can open the switch manager under *Visual Pinball -> Switch Manager*. @@ -10,72 +10,64 @@ You can open the switch manager under *Visual Pinball -> Switch Manager*. ## Setup -Imagine every row as a wire connecting the physical switch to the gamelogic engine. The relation between the two is *0..n -> 0..n*, meaning you can link multiple switches an input and a switch to multiple inputs. - -> [!note] -> We use the terms "open" and "close" for switches, since that's what they do in real life. In electrical terms these are called "NC" (normally closed) and "NO" (normally open). In summary, these terms are synonyms: -> -> | Technical | Status | Common Term | In code | -> |-----------|--------|-------------|---------| -> | NO | Open | Off | `false` | -> | NC | Closed | On | `true` | +Imagine every row as a wire connecting the physical switch to the gamelogic engine. The relation between the two is *0..n -> 0..n*, meaning you can link multiple switches to one input or a single switch to multiple inputs. ### IDs -The first column **ID** shows the switch names that the gamelogic engine expects to be wired up. +The first column **ID** shows the names of each switch that the gamelogic engine is aware of. > [!note] -> As we cannot be 100% sure that the gamelogic engine has accurate data about the switch names, you can also add switch IDs yourself, but that should be the exception. +> As we cannot be 100% sure that the gamelogic engine has accurate data about the switch names, you can also add switch IDs yourself, but those should be the exception. ### Description -The **Description** column is an optional free text field. If you're setting up a re-creation, that's where you typically put what's in the game manual. It's purely for your own benefit and you can keep this empty if you want. +The **Description** column is optional. If you're setting up a re-creation, you would typically use this for the switch name from the game manual. It's purely for your own benefit, and you can keep this empty if you want. ### Source -The **Source** column defines where the element in the next column is located. There are three options: +The **Source** column defines where the element in the following column originates. There are four options: -- *Playfield* lets you choose a game item in the playfield -- *Input System* lets you choose an input action from a pre-defined list, i.e. cabinet switches -- *Constant* sets the switch at the beginning of the game to the given value. -- *Device* lets you choose a switch device to select a switch from. Switch devices are mechanisms that contain multiple switches, for example [troughs](../manual/mechanisms/troughs.md). +- *Playfield* lets you choose a game item from the playfield +- *Input System* lets you choose an input action from a pre-defined list, e.g. cabinet switches +- *Constant* sets the switch once at the beginning of the game to the given value. +- *Device* lets you choose a switch device containing the switch. Switch devices are mechanisms that include multiple switches, for example [troughs](../manual/mechanisms/troughs.md). ### Element The **Element** column is where you choose which element triggers the switch. -For **Playfield**, you can choose a game item that triggers switch events. Currently, VPE only emits switch events for items that would do the same in real life, i.e. bumpers, flippers, gates, targets, kickers, spinners and triggers. +For **Playfield** sources, you can choose a game item that triggers switch events. Currently, VPE only emits switch events for items that would do so in real life, i.e. bumpers, flippers, gates, targets, kickers, spinners and triggers. > [!note] > We realize that you might want to use other game items like ramps and walls to emit switch events as well, and we will address this at some point, but for now we're keeping it simple. -If **Input System** is selected, you choose which input action to use. We call it "input action", because it's not an actual key binding. While actions have default key bindings, the final bindings will be defined in the host application (the VPE player). So what VPE is dealing with in terms of keyboard input is what we call *input actions*. +If **Input System** is selected, you choose which input action to use (it's an "action", because it's not an permanent key binding). Actions may have default key bindings, but the final bindings to a key or other input will be defined in the host application (the VPE player). -If the source is **Device**, there are two values to select. Firstly, the actual switch device, and secondly which switch of that device should be connected to the gamelogic engine. +If the source is a **Device**, then there are two values to select. The actual switch device, and which switch of that device should be connected to the gamelogic engine. Finally, if **Constant** is selected, you choose the value that will be permanently set at the beginning of the game. ### Pulse Delay -Internally, VPX connects switches to events. For example, a trigger on the playfield has a `Hit` event, which occurs when the ball rolls into the trigger's zone, and an `UnHit` event when the ball leaves that zone. These two events close and open the trigger's switch. +Internally, VPX connects switches to events. For example, a trigger on the playfield has a `Hit` event, which occurs when the ball rolls into the trigger's collision zone, and an `UnHit` event when the ball leaves that zone. These two events close and open the trigger's switch. -However, not all mechanisms behave like that. For example a spinner just emits one `Spin` event. So in order to not let the switch closed indefinitely, VPE automatically re-opens it after a given delay. +However, not all mechanisms behave like that. For example a spinner emits a single `Spin` event. So to prevent the switch from being closed indefinitely VPE automatically re-opens it after a given delay. -We call that the **Pulse Delay**. "Pulse", because it gets triggered by one event and opens immediately right after. +We call that the **Pulse Delay**. "Pulse", because it gets triggered by one event and reopens after a brief delay. -In most cases, you can leave the default delay of 250ms. What's important is that gamelogic engine gets notified not too long after the switch was closed. Note that when setting it to 0, the switch will stay closed. +In most cases, you can leave the default delay of 250ms. What's important is that the gamelogic engine gets notified not too long after the switch was closed. Note that if pulse delay is set to 0, the switch will stay closed. ## Supported Game Mechanisms Below a list of game mechanisms that contain built-in switches. -| | Close | Open | +| | Closes | Opens | |-------------|--------------------------------------------------------|------------------------------------------------------------------------------| -| **Bumper** | On ball collision | *Opens after pulse delay* | +| **Bumper** | On ball collision | *After pulse delay* | | **Flipper** | On EOS, i.e. when the flipper reaches its end position | When the flipper switch is opened, i.e. the flipper starts moving down again | | **Gate** | When ball is passing through the gate | When ball has passed through | -| **Target** | On collision | *Opens after pulse delay* | -| **Kicker** | When ball goes into the kicker | When ball's outside the kicker | -| **Spinner** | On each spin | *Opens after pulse delay* | +| **Target** | On collision | *After pulse delay* | +| **Kicker** | When ball enters the kicker | When ball's outside the kicker | +| **Spinner** | On each spin | *After pulse delay* | | **Trigger** | When the ball rolls over the trigger | When the ball is outside of the trigger | \ No newline at end of file