Skip to content

Commit c944458

Browse files
committed
OSC engine helper methods to send multi-arg OSC messages
1 parent 9cde95a commit c944458

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

src/main/java/heronarts/lx/osc/LXOscEngine.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,30 @@ public LXOscEngine sendMessage(String path, String value) {
354354
return this;
355355
}
356356

357+
public LXOscEngine sendMessage(String path, Object ... args) {
358+
if (this.engineTransmitter != null) {
359+
this.engineTransmitter.sendMessage(path, args);
360+
}
361+
for (LXOscConnection.Output output : this.outputs) {
362+
if (output.transmitter != null) {
363+
output.transmitter.sendMessage(path, args);
364+
}
365+
}
366+
return this;
367+
}
368+
369+
public LXOscEngine sendMessage(String path, OscArgument ... args) {
370+
if (this.engineTransmitter != null) {
371+
this.engineTransmitter.sendMessage(path, args);
372+
}
373+
for (LXOscConnection.Output output : this.outputs) {
374+
if (output.transmitter != null) {
375+
output.transmitter.sendMessage(path, args);
376+
}
377+
}
378+
return this;
379+
}
380+
357381
public LXOscEngine sendParameter(LXParameter parameter) {
358382
if (this.engineTransmitter != null) {
359383
this.engineTransmitter.onParameterChanged(parameter);
@@ -588,6 +612,37 @@ public void onParameterChanged(LXParameter parameter) {
588612
_sendMessage(oscMessage);
589613
}
590614

615+
private void sendMessage(String address, Object ... args) {
616+
if (isActive() && !isAddressFiltered(address)) {
617+
oscMessage.clearArguments();
618+
oscMessage.setAddressPattern(address);
619+
for (Object arg : args) {
620+
oscMessage.add(switch (arg) {
621+
case OscArgument a -> a;
622+
case Integer i -> new OscInt(i);
623+
case Long l -> new OscLong(l);
624+
case Float f -> new OscFloat(f);
625+
case Double d -> new OscDouble(d);
626+
case String s -> new OscString(s);
627+
case Boolean b -> b.booleanValue() ? new OscTrue() : new OscFalse();
628+
default -> throw new IllegalArgumentException("Invalid OSC argument: " + arg);
629+
});
630+
}
631+
_sendMessage(oscMessage);
632+
}
633+
}
634+
635+
private void sendMessage(String address, OscArgument ... args) {
636+
if (isActive() && !isAddressFiltered(address)) {
637+
oscMessage.clearArguments();
638+
oscMessage.setAddressPattern(address);
639+
for (OscArgument arg : args) {
640+
oscMessage.add(arg);
641+
}
642+
_sendMessage(oscMessage);
643+
}
644+
}
645+
591646
private void sendMessage(String address, int value) {
592647
if (isActive() && !isAddressFiltered(address)) {
593648
oscMessage.clearArguments();

0 commit comments

Comments
 (0)