Revert "Добавлены mux/demux" (#3512)
This commit is contained in:
parent
f1eb4ac903
commit
0d1bc48d24
15 changed files with 1 additions and 531 deletions
|
|
@ -1,72 +0,0 @@
|
|||
using Content.Shared.DeviceLinking;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Audio;
|
||||
using Content.Shared.Tools;
|
||||
using Content.Shared._Sunrise.AdvancedDevices;
|
||||
|
||||
namespace Content.Server._Sunrise.AdvancedDevices;
|
||||
|
||||
[RegisterComponent, Access(typeof(MultiplexerSystem))]
|
||||
public sealed partial class MultiplexerComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public MuxState State = MuxState.Mux;
|
||||
[DataField]
|
||||
public SoundSpecifier CycleSound = new SoundPathSpecifier("/Audio/Machines/lightswitch.ogg");
|
||||
[DataField]
|
||||
public ProtoId<ToolQualityPrototype> CycleQuality = "Screwing";
|
||||
|
||||
[DataField]
|
||||
public ProtoId<SinkPortPrototype> InputPortA = "MuxInputA";
|
||||
[DataField]
|
||||
public ProtoId<SinkPortPrototype> InputPortB = "MuxInputB";
|
||||
[DataField]
|
||||
public ProtoId<SinkPortPrototype> InputPortC = "MuxInputC";
|
||||
[DataField]
|
||||
public ProtoId<SinkPortPrototype> InputPortD = "MuxInputD";
|
||||
|
||||
[DataField]
|
||||
public ProtoId<SourcePortPrototype> OutputPortA = "MuxOutputA";
|
||||
[DataField]
|
||||
public ProtoId<SourcePortPrototype> OutputPortB = "MuxOutputB";
|
||||
[DataField]
|
||||
public ProtoId<SourcePortPrototype> OutputPortC = "MuxOutputC";
|
||||
[DataField]
|
||||
public ProtoId<SourcePortPrototype> OutputPortD = "MuxOutputD";
|
||||
|
||||
[DataField]
|
||||
public ProtoId<SinkPortPrototype> SelectPortA = "MuxSelectA";
|
||||
[DataField]
|
||||
public ProtoId<SinkPortPrototype> SelectPortB = "MuxSelectB";
|
||||
|
||||
[DataField]
|
||||
public ProtoId<SourcePortPrototype> OutputMuxPort = "MuxOutput";
|
||||
[DataField]
|
||||
public ProtoId<SinkPortPrototype> InputDemuxPort = "DemuxInput";
|
||||
|
||||
[DataField]
|
||||
public SignalState StateA = SignalState.Low;
|
||||
[DataField]
|
||||
public SignalState StateB = SignalState.Low;
|
||||
[DataField]
|
||||
public SignalState StateC = SignalState.Low;
|
||||
[DataField]
|
||||
public SignalState StateD = SignalState.Low;
|
||||
[DataField]
|
||||
public SignalState SelectA = SignalState.Low;
|
||||
[DataField]
|
||||
public SignalState SelectB = SignalState.Low;
|
||||
[DataField]
|
||||
public SignalState DemuxInputState = SignalState.Low;
|
||||
|
||||
[DataField]
|
||||
public bool LastMuxOutput;
|
||||
[DataField]
|
||||
public bool LastDemuxOutputA;
|
||||
[DataField]
|
||||
public bool LastDemuxOutputB;
|
||||
[DataField]
|
||||
public bool LastDemuxOutputC;
|
||||
[DataField]
|
||||
public bool LastDemuxOutputD;
|
||||
}
|
||||
|
|
@ -1,196 +0,0 @@
|
|||
using Content.Server.DeviceLinking.Systems;
|
||||
using Content.Shared.DeviceLinking;
|
||||
using Content.Shared.DeviceLinking.Events;
|
||||
using Content.Shared.DeviceNetwork;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Tools.Systems;
|
||||
using Content.Shared.Popups;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Content.Shared.Timing;
|
||||
using Content.Shared._Sunrise.AdvancedDevices;
|
||||
|
||||
namespace Content.Server._Sunrise.AdvancedDevices;
|
||||
|
||||
public sealed class MultiplexerSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly DeviceLinkSystem _deviceLink = default!;
|
||||
[Dependency] private readonly SharedToolSystem _tool = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly UseDelaySystem _useDelay = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<MultiplexerComponent, ComponentInit>(OnInit);
|
||||
SubscribeLocalEvent<MultiplexerComponent, SignalReceivedEvent>(OnSignalReceived);
|
||||
SubscribeLocalEvent<MultiplexerComponent, InteractUsingEvent>(OnInteractUsing);
|
||||
SubscribeLocalEvent<MultiplexerComponent, ExaminedEvent>(OnExamined);
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
var query = EntityQueryEnumerator<MultiplexerComponent>();
|
||||
while (query.MoveNext(out var uid, out var component))
|
||||
{
|
||||
component.StateA = component.StateA == SignalState.Momentary ? SignalState.Low : component.StateA;
|
||||
component.StateB = component.StateB == SignalState.Momentary ? SignalState.Low : component.StateB;
|
||||
component.StateC = component.StateC == SignalState.Momentary ? SignalState.Low : component.StateC;
|
||||
component.StateD = component.StateD == SignalState.Momentary ? SignalState.Low : component.StateD;
|
||||
component.SelectA = component.SelectA == SignalState.Momentary ? SignalState.Low : component.SelectA;
|
||||
component.SelectB = component.SelectB == SignalState.Momentary ? SignalState.Low : component.SelectB;
|
||||
component.DemuxInputState = component.DemuxInputState == SignalState.Momentary ? SignalState.Low : component.DemuxInputState;
|
||||
|
||||
UpdateOutputs(uid, component);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnInit(EntityUid uid, MultiplexerComponent comp, ComponentInit args)
|
||||
{
|
||||
SwitchPorts(uid, comp);
|
||||
}
|
||||
|
||||
private void SwitchPorts(EntityUid uid, MultiplexerComponent comp)
|
||||
{
|
||||
RemComp<DeviceLinkSinkComponent>(uid);
|
||||
RemComp<DeviceLinkSourceComponent>(uid);
|
||||
|
||||
if (comp.State == MuxState.Mux)
|
||||
{
|
||||
_deviceLink.EnsureSinkPorts(uid, comp.InputPortA, comp.InputPortB, comp.InputPortC, comp.InputPortD, comp.SelectPortA, comp.SelectPortB);
|
||||
_deviceLink.EnsureSourcePorts(uid, comp.OutputMuxPort);
|
||||
}
|
||||
else
|
||||
{
|
||||
_deviceLink.EnsureSinkPorts(uid, comp.InputDemuxPort, comp.SelectPortA, comp.SelectPortB);
|
||||
_deviceLink.EnsureSourcePorts(uid, comp.OutputPortA, comp.OutputPortB, comp.OutputPortC, comp.OutputPortD);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnExamined(EntityUid uid, MultiplexerComponent comp, ExaminedEvent args)
|
||||
{
|
||||
if (!args.IsInDetailsRange)
|
||||
return;
|
||||
|
||||
var stateText = comp.State == MuxState.Mux ? "multiplexer" : "demultiplexer";
|
||||
args.PushMarkup(Loc.GetString("multiplexer-state", ("state", stateText)));
|
||||
}
|
||||
|
||||
private void OnInteractUsing(EntityUid uid, MultiplexerComponent comp, InteractUsingEvent args)
|
||||
{
|
||||
if (args.Handled || !_tool.HasQuality(args.Used, comp.CycleQuality))
|
||||
return;
|
||||
|
||||
if (TryComp<UseDelayComponent>(uid, out var useDelay)
|
||||
&& !_useDelay.TryResetDelay((uid, useDelay), true))
|
||||
return;
|
||||
|
||||
comp.State = comp.State == MuxState.Mux ? MuxState.Demux : MuxState.Mux;
|
||||
|
||||
SwitchPorts(uid, comp);
|
||||
UpdateOutputs(uid, comp);
|
||||
|
||||
_audio.PlayPvs(comp.CycleSound, uid);
|
||||
var msg = Loc.GetString("multiplexer-mode-switch", ("mode", comp.State == MuxState.Mux ? "MUX" : "DEMUX"));
|
||||
_popup.PopupEntity(msg, uid, args.User);
|
||||
_appearance.SetData(uid, MultiplexerVisuals.Gate, comp.State);
|
||||
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void OnSignalReceived(EntityUid uid, MultiplexerComponent comp, ref SignalReceivedEvent args)
|
||||
{
|
||||
var state = SignalState.Momentary;
|
||||
args.Data?.TryGetValue(DeviceNetworkConstants.LogicState, out state);
|
||||
|
||||
switch (args.Port)
|
||||
{
|
||||
case var _ when args.Port == comp.InputPortA: comp.StateA = state; break;
|
||||
case var _ when args.Port == comp.InputPortB: comp.StateB = state; break;
|
||||
case var _ when args.Port == comp.InputPortC: comp.StateC = state; break;
|
||||
case var _ when args.Port == comp.InputPortD: comp.StateD = state; break;
|
||||
case var _ when args.Port == comp.SelectPortA: comp.SelectA = state; break;
|
||||
case var _ when args.Port == comp.SelectPortB: comp.SelectB = state; break;
|
||||
case var _ when args.Port == comp.InputDemuxPort: comp.DemuxInputState = state; break;
|
||||
}
|
||||
|
||||
UpdateOutputs(uid, comp);
|
||||
}
|
||||
|
||||
private void UpdateOutputs(EntityUid uid, MultiplexerComponent comp)
|
||||
{
|
||||
if (comp.State == MuxState.Mux)
|
||||
{
|
||||
UpdateMuxOutput(uid, comp);
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateDemuxOutputs(uid, comp);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateMuxOutput(EntityUid uid, MultiplexerComponent comp)
|
||||
{
|
||||
var a = comp.StateA != SignalState.Low;
|
||||
var b = comp.StateB != SignalState.Low;
|
||||
var c = comp.StateC != SignalState.Low;
|
||||
var d = comp.StateD != SignalState.Low;
|
||||
var selA = comp.SelectA != SignalState.Low;
|
||||
var selB = comp.SelectB != SignalState.Low;
|
||||
|
||||
var output = selB ? (selA ? d : c) : (selA ? b : a);
|
||||
|
||||
if (output != comp.LastMuxOutput)
|
||||
{
|
||||
comp.LastMuxOutput = output;
|
||||
_deviceLink.SendSignal(uid, comp.OutputMuxPort, output);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateDemuxOutputs(EntityUid uid, MultiplexerComponent comp)
|
||||
{
|
||||
var input = comp.DemuxInputState != SignalState.Low;
|
||||
var selA = comp.SelectA != SignalState.Low;
|
||||
var selB = comp.SelectB != SignalState.Low;
|
||||
|
||||
var outputA = false;
|
||||
var outputB = false;
|
||||
var outputC = false;
|
||||
var outputD = false;
|
||||
|
||||
if (input)
|
||||
{
|
||||
if (!selB && !selA) outputA = true;
|
||||
else if (!selB && selA) outputB = true;
|
||||
else if (selB && !selA) outputC = true;
|
||||
else if (selB && selA) outputD = true;
|
||||
}
|
||||
|
||||
if (outputA != comp.LastDemuxOutputA)
|
||||
{
|
||||
comp.LastDemuxOutputA = outputA;
|
||||
_deviceLink.SendSignal(uid, comp.OutputPortA, outputA);
|
||||
}
|
||||
|
||||
if (outputB != comp.LastDemuxOutputB)
|
||||
{
|
||||
comp.LastDemuxOutputB = outputB;
|
||||
_deviceLink.SendSignal(uid, comp.OutputPortB, outputB);
|
||||
}
|
||||
|
||||
if (outputC != comp.LastDemuxOutputC)
|
||||
{
|
||||
comp.LastDemuxOutputC = outputC;
|
||||
_deviceLink.SendSignal(uid, comp.OutputPortC, outputC);
|
||||
}
|
||||
|
||||
if (outputD != comp.LastDemuxOutputD)
|
||||
{
|
||||
comp.LastDemuxOutputD = outputD;
|
||||
_deviceLink.SendSignal(uid, comp.OutputPortD, outputD);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._Sunrise.AdvancedDevices;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum MultiplexerVisuals : byte
|
||||
{
|
||||
Gate
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum MultiplexerLayers : byte
|
||||
{
|
||||
Gate
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum MuxState : byte
|
||||
{
|
||||
Demux,
|
||||
Mux
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
ent-Multiplexer = multiplexer
|
||||
.desc = A high-level logic element for routing signals. You can change the executable function using a screwdriver.
|
||||
.suffix = Mux
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
multiplexer-state = Currently set to: { $state }
|
||||
multiplexer-mode-switch = Mode switched to: { $mode }
|
||||
|
||||
# Port names and descriptions
|
||||
signal-port-name-multiplexer-input-a = Input A
|
||||
signal-port-description-multiplexer-input-a = First multiplexer input signal
|
||||
|
||||
signal-port-name-multiplexer-input-b = Input B
|
||||
signal-port-description-multiplexer-input-b = Second multiplexer input signal
|
||||
|
||||
signal-port-name-multiplexer-input-c = Input C
|
||||
signal-port-description-multiplexer-input-c = Third multiplexer input signal
|
||||
|
||||
signal-port-name-multiplexer-input-d = Input D
|
||||
signal-port-description-multiplexer-input-d = Fourth multiplexer input signal
|
||||
|
||||
signal-port-name-demultiplexer-input = Input
|
||||
signal-port-description-demultiplexer-input = Demultiplexer input signal
|
||||
|
||||
signal-port-name-multiplexer-select-a = Select A
|
||||
signal-port-description-multiplexer-select-a = Channel selection least significant bit
|
||||
|
||||
signal-port-name-multiplexer-select-b = Select B
|
||||
signal-port-description-multiplexer-select-b = Channel selection most significant bit
|
||||
|
||||
signal-port-name-multiplexer-output = Output
|
||||
signal-port-description-multiplexer-output = Multiplexer output signal
|
||||
|
||||
signal-port-name-demultiplexer-output-a = Output A
|
||||
signal-port-description-demultiplexer-output-a = First demultiplexer output signal
|
||||
|
||||
signal-port-name-demultiplexer-output-b = Output B
|
||||
signal-port-description-demultiplexer-output-b = Second demultiplexer output signal
|
||||
|
||||
signal-port-name-demultiplexer-output-c = Output C
|
||||
signal-port-description-demultiplexer-output-c = Third demultiplexer output signal
|
||||
|
||||
signal-port-name-demultiplexer-output-d = Output D
|
||||
signal-port-description-demultiplexer-output-d = Fourth demultiplexer output signal
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
ent-Multiplexer = мультиплексор
|
||||
.desc = Высокоуровневый логический элемент для маршрутизации сигналов. Можно изменить исполняемую функцию с помощью отвертки.
|
||||
.suffix = Mux
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
multiplexer-state = Сейчас установлен режим: { $state }.
|
||||
multiplexer-mode-switch = Режим переключен на: { $mode }
|
||||
|
||||
# Порт names and descriptions
|
||||
signal-port-name-multiplexer-input-a = Вход A
|
||||
signal-port-description-multiplexer-input-a = Первый входной сигнал мультиплексора
|
||||
|
||||
signal-port-name-multiplexer-input-b = Вход B
|
||||
signal-port-description-multiplexer-input-b = Второй входной сигнал мультиплексора
|
||||
|
||||
signal-port-name-multiplexer-input-c = Вход C
|
||||
signal-port-description-multiplexer-input-c = Третий входной сигнал мультиплексора
|
||||
|
||||
signal-port-name-multiplexer-input-d = Вход D
|
||||
signal-port-description-multiplexer-input-d = Четвертый входной сигнал мультиплексора
|
||||
|
||||
signal-port-name-demultiplexer-input = Вход
|
||||
signal-port-description-demultiplexer-input = Входной сигнал демультиплексора
|
||||
|
||||
signal-port-name-multiplexer-select-a = Выбор A
|
||||
signal-port-description-multiplexer-select-a = Младший бит выбора канала
|
||||
|
||||
signal-port-name-multiplexer-select-b = Выбор B
|
||||
signal-port-description-multiplexer-select-b = Старший бит выбора канала
|
||||
|
||||
signal-port-name-multiplexer-output = Выход
|
||||
signal-port-description-multiplexer-output = Выходной сигнал мультиплексора
|
||||
|
||||
signal-port-name-demultiplexer-output-a = Выход A
|
||||
signal-port-description-demultiplexer-output-a = Первый выходной сигнал демультиплексора
|
||||
|
||||
signal-port-name-demultiplexer-output-b = Выход B
|
||||
signal-port-description-demultiplexer-output-b = Второй выходной сигнал демультиплексора
|
||||
|
||||
signal-port-name-demultiplexer-output-c = Выход C
|
||||
signal-port-description-demultiplexer-output-c = Третий выходной сигнал демультиплексора
|
||||
|
||||
signal-port-name-demultiplexer-output-d = Выход D
|
||||
signal-port-description-demultiplexer-output-d = Четвертый выходной сигнал демультиплексора
|
||||
|
|
@ -15,6 +15,4 @@ recipe-gauze-description = Несколько стерильных марлев
|
|||
recipe-blingfold-name = повязка на глаза
|
||||
recipe-blingfold-description = Полоса непроницаемого материала.
|
||||
recipe-makeshifthandcuffs-name = самодельные наручники
|
||||
recipe-makeshifthandcuffs-description = Самодельные наручники, изготовленные из запасных кабелей.
|
||||
recipe-Multiplexer-name = мультиплексор
|
||||
recipe-Multiplexer-description = Высокоуровневый логический элемент для маршрутизации сигналов. Можно изменить исполняемую функцию с помощью отвертки.
|
||||
recipe-makeshifthandcuffs-description = Самодельные наручники, изготовленные из запасных кабелей.
|
||||
|
|
@ -51,15 +51,6 @@
|
|||
- material: Cable
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
#Sunrise-start
|
||||
- to: multiplexer
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
- material: Manipulator
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
#Sunrise-end
|
||||
- node: logic_gate
|
||||
entity: LogicGateOr
|
||||
edges:
|
||||
|
|
@ -111,19 +102,3 @@
|
|||
- !type:SpawnPrototype
|
||||
prototype: CableApcStack1
|
||||
amount: 2
|
||||
#Sunrise-start
|
||||
- node: multiplexer
|
||||
entity: Multiplexer
|
||||
edges:
|
||||
- to: empty
|
||||
steps:
|
||||
- tool: Prying
|
||||
doAfter: 2
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MicroManipulatorStockPart
|
||||
amount: 2
|
||||
#Sunrise-end
|
||||
|
|
@ -37,13 +37,3 @@
|
|||
targetNode: memory_cell
|
||||
category: construction-category-tools
|
||||
objectType: Item
|
||||
|
||||
#Sunrise-start
|
||||
- type: construction
|
||||
id: Multiplexer
|
||||
graph: LogicGate
|
||||
startNode: start
|
||||
targetNode: multiplexer
|
||||
category: construction-category-tools
|
||||
objectType: Item
|
||||
#Sunrise-end
|
||||
|
|
|
|||
|
|
@ -1,99 +0,0 @@
|
|||
- type: entity
|
||||
parent: BaseLogicItem
|
||||
id: Multiplexer
|
||||
name: multiplexer
|
||||
description: A configurable multiplexer/demultiplexer device that can route signals between multiple inputs and outputs.
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: ThinPipe
|
||||
sprite: _Sunrise/DeviceAdvanced/gates.rsi
|
||||
layers:
|
||||
- state: base
|
||||
- state: mux
|
||||
map: ["enum.MultiplexerLayers.Gate"]
|
||||
- type: UseDelay
|
||||
delay: 0.5
|
||||
- type: Multiplexer
|
||||
- type: DeviceLinkSink
|
||||
ports:
|
||||
- MuxInputA
|
||||
- MuxInputB
|
||||
- MuxInputC
|
||||
- MuxInputD
|
||||
- MuxSelectA
|
||||
- MuxSelectB
|
||||
- DemuxInput
|
||||
- type: DeviceLinkSource
|
||||
ports:
|
||||
- MuxOutput
|
||||
- MuxOutputA
|
||||
- MuxOutputB
|
||||
- MuxOutputC
|
||||
- MuxOutputD
|
||||
- type: Construction
|
||||
node: multiplexer
|
||||
- type: Appearance
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.MultiplexerVisuals.Gate:
|
||||
enum.MultiplexerLayers.Gate:
|
||||
Mux: { state: mux }
|
||||
Demux: { state: demux }
|
||||
|
||||
# Multiplexer Input Ports
|
||||
- type: sinkPort
|
||||
id: MuxInputA
|
||||
name: signal-port-name-multiplexer-input-a
|
||||
description: signal-port-description-multiplexer-input-a
|
||||
- type: sinkPort
|
||||
id: MuxInputB
|
||||
name: signal-port-name-multiplexer-input-b
|
||||
description: signal-port-description-multiplexer-input-b
|
||||
- type: sinkPort
|
||||
id: MuxInputC
|
||||
name: signal-port-name-multiplexer-input-c
|
||||
description: signal-port-description-multiplexer-input-c
|
||||
- type: sinkPort
|
||||
id: MuxInputD
|
||||
name: signal-port-name-multiplexer-input-d
|
||||
description: signal-port-description-multiplexer-input-d
|
||||
|
||||
# Demultiplexer Input Port
|
||||
- type: sinkPort
|
||||
id: DemuxInput
|
||||
name: signal-port-name-demultiplexer-input
|
||||
description: signal-port-description-demultiplexer-input
|
||||
|
||||
# Select Ports shared
|
||||
- type: sinkPort
|
||||
id: MuxSelectA
|
||||
name: signal-port-name-multiplexer-select-a
|
||||
description: signal-port-description-multiplexer-select-a
|
||||
- type: sinkPort
|
||||
id: MuxSelectB
|
||||
name: signal-port-name-multiplexer-select-b
|
||||
description: signal-port-description-multiplexer-select-b
|
||||
|
||||
# Multiplexer Output Port
|
||||
- type: sourcePort
|
||||
id: MuxOutput
|
||||
name: signal-port-name-multiplexer-output
|
||||
description: signal-port-description-multiplexer-output
|
||||
|
||||
# Demultiplexer Output Ports
|
||||
- type: sourcePort
|
||||
id: MuxOutputA
|
||||
name: signal-port-name-demultiplexer-output-a
|
||||
description: signal-port-description-demultiplexer-output-a
|
||||
- type: sourcePort
|
||||
id: MuxOutputB
|
||||
name: signal-port-name-demultiplexer-output-b
|
||||
description: signal-port-description-demultiplexer-output-b
|
||||
- type: sourcePort
|
||||
id: MuxOutputC
|
||||
name: signal-port-name-demultiplexer-output-c
|
||||
description: signal-port-description-demultiplexer-output-c
|
||||
- type: sourcePort
|
||||
id: MuxOutputD
|
||||
name: signal-port-name-demultiplexer-output-d
|
||||
description: signal-port-description-demultiplexer-output-d
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 293 B |
|
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "prl.png originally created by d0lbaeb_1(discord), 2025",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "base"
|
||||
},
|
||||
{
|
||||
"name": "mux"
|
||||
},
|
||||
{
|
||||
"name": "demux"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 288 B |
Loading…
Add table
Reference in a new issue