Skip to content

Commit 9117bce

Browse files
committed
events: add lamp event and lamp group nodes. refactor project layout.
1 parent d4d7638 commit 9117bce

26 files changed

+516
-35
lines changed

Editor/Descriptors.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using Unity.VisualScripting;
2+
3+
namespace VisualPinball.Unity.VisualScripting
4+
{
5+
[Descriptor(typeof(LampEventUnit))]
6+
public class LampEventUnitDescriptor : UnitDescriptor<LampEventUnit>
7+
{
8+
public LampEventUnitDescriptor(LampEventUnit target) : base(target)
9+
{
10+
}
11+
12+
protected override void DefinedPort(IUnitPort port, UnitPortDescription description)
13+
{
14+
base.DefinedPort(port, description);
15+
16+
description.showLabel = false;
17+
}
18+
}
19+
}

Editor/Descriptors/LampEventUnitDescriptor.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/DummyEditorDependency.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
internal class DummyEditorDependency : UnityEditor.Editor { }

Editor/DummyEditorDependency.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/VisualPinball.Engine.Unity.VisualScripting.Editor.asmdef

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"name": "VisualPinball.Unity.VisualScripting.Editor",
3+
"rootNamespace": "",
4+
"references": [
5+
"Unity.VisualScripting.Core",
6+
"Unity.VisualScripting.Core.Editor",
7+
"Unity.VisualScripting.Flow",
8+
"Unity.VisualScripting.Flow.Editor",
9+
"VisualPinball.Unity.VisualScripting.Runtime",
10+
"VisualPinball.Unity",
11+
"VisualPinball.Engine"
12+
],
13+
"includePlatforms": [
14+
"Editor"
15+
],
16+
"excludePlatforms": [],
17+
"allowUnsafeCode": false,
18+
"overrideReferences": false,
19+
"precompiledReferences": [],
20+
"autoReferenced": true,
21+
"defineConstraints": [],
22+
"versionDefines": [],
23+
"noEngineReferences": false
24+
}

Editor/VisualPinball.Engine.Unity.VisualScripting.Editor.asmdef.meta renamed to Editor/VisualPinball.Unity.VisualScripting.Editor.asmdef.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/Widgets.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using Unity.VisualScripting;
4+
using VisualPinball.Unity;
5+
6+
namespace VisualPinball.Unity.VisualScripting
7+
{
8+
[Widget(typeof(LampEventUnit))]
9+
public sealed class LampEventUnitWidget : UnitWidget<LampEventUnit>
10+
{
11+
public LampEventUnitWidget(FlowCanvas canvas, LampEventUnit unit) : base(canvas, unit)
12+
{
13+
lampIdInspectorConstructor = (metadata) => new VariableNameInspector(metadata, GetNameSuggestions);
14+
}
15+
16+
protected override NodeColorMix baseColor => NodeColorMix.TealReadable;
17+
18+
private VariableNameInspector lampIdInspector;
19+
private Func<Metadata, VariableNameInspector> lampIdInspectorConstructor;
20+
21+
public override Inspector GetPortInspector(IUnitPort port, Metadata metadata)
22+
{
23+
if (port == unit.id)
24+
{
25+
// This feels so hacky. The real holy grail here would be to support attribute decorators like Unity does.
26+
InspectorProvider.instance.Renew(ref lampIdInspector, metadata, lampIdInspectorConstructor);
27+
28+
return lampIdInspector;
29+
}
30+
31+
return base.GetPortInspector(port, metadata);
32+
}
33+
34+
private IEnumerable<string> GetNameSuggestions()
35+
{
36+
List<string> list = new List<string>();
37+
38+
var tableComponent = TableSelector.Instance.SelectedTable;
39+
40+
if (tableComponent != null)
41+
{
42+
var gle = tableComponent.gameObject.GetComponent<IGamelogicEngine>();
43+
44+
if (gle != null)
45+
{
46+
foreach (var lamp in gle.AvailableLamps)
47+
{
48+
list.Add(lamp.Id);
49+
}
50+
}
51+
}
52+
53+
return list;
54+
}
55+
}
56+
}

0 commit comments

Comments
 (0)