Skip to content

Commit 77210a7

Browse files
author
Christopher Brousseau
committed
Adding new OBS event callbacks: SwitchTransition, TransitionListChanged.
These events are defined by the https://github.com/Palakis/obs-websocket/blob/4.x-current/docs/generated/protocol.md (version 4.0.0)
1 parent f2532e0 commit 77210a7

File tree

6 files changed

+72
-8
lines changed

6 files changed

+72
-8
lines changed

src/main/java/net/twasi/obsremotejava/OBSCommunicator.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@
88
import net.twasi.obsremotejava.callbacks.ErrorCallback;
99
import net.twasi.obsremotejava.callbacks.StringCallback;
1010
import net.twasi.obsremotejava.events.EventType;
11-
import net.twasi.obsremotejava.events.responses.ScenesChangedResponse;
12-
import net.twasi.obsremotejava.events.responses.SwitchScenesResponse;
13-
import net.twasi.obsremotejava.events.responses.TransitionBeginResponse;
14-
import net.twasi.obsremotejava.events.responses.TransitionEndResponse;
11+
import net.twasi.obsremotejava.events.responses.*;
1512
import net.twasi.obsremotejava.objects.throwables.InvalidResponseTypeError;
1613
import net.twasi.obsremotejava.requests.Authenticate.AuthenticateRequest;
1714
import net.twasi.obsremotejava.requests.Authenticate.AuthenticateResponse;
@@ -123,6 +120,8 @@ public class OBSCommunicator {
123120
private Callback onStreamStopped;
124121
private Callback onSwitchScenes;
125122
private Callback onScenesChanged;
123+
private Callback onSwitchTransition;
124+
private Callback onTransitionListChanged;
126125
private Callback onTransitionBegin;
127126
private Callback onTransitionEnd;
128127

@@ -292,6 +291,16 @@ private void processIncomingEvent(String msg, EventType eventType) {
292291
onScenesChanged.run(new Gson().fromJson(msg, ScenesChangedResponse.class));
293292
}
294293
break;
294+
case SwitchTransition:
295+
if (onSwitchTransition != null) {
296+
onSwitchTransition.run(new Gson().fromJson(msg, SwitchTransitionResponse.class));
297+
}
298+
break;
299+
case TransitionListChanged:
300+
if (onTransitionListChanged != null) {
301+
onTransitionListChanged.run(new Gson().fromJson(msg, TransitionListChangedResponse.class));
302+
}
303+
break;
295304
case TransitionBegin:
296305
if (onTransitionBegin != null) {
297306
onTransitionBegin.run(new Gson().fromJson(msg, TransitionBeginResponse.class));
@@ -397,6 +406,14 @@ public void registerOnScenesChanged(Callback onScenesChanged) {
397406
this.onScenesChanged = onScenesChanged;
398407
}
399408

409+
public void registerOnSwitchTransition(Callback onSwitchTransition) {
410+
this.onSwitchTransition = onSwitchTransition;
411+
}
412+
413+
public void registerOnTransitionListChanged(Callback onTransitionListChanged) {
414+
this.onTransitionListChanged = onTransitionListChanged;
415+
}
416+
400417
public void registerOnTransitionBegin(Callback onTransitionBegin) {
401418
this.onTransitionBegin = onTransitionBegin;
402419
}

src/main/java/net/twasi/obsremotejava/OBSRemoteController.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,14 @@ public void registerScenesChangedCallback(Callback onScenesChanged) {
170170
communicator.registerOnScenesChanged(onScenesChanged);
171171
}
172172

173+
public void registerSwitchTransitionCallback(Callback onSwitchTransition) {
174+
communicator.registerOnSwitchTransition(onSwitchTransition);
175+
}
176+
177+
public void registerTransitionListChangedCallback(Callback onTransitionListChanged) {
178+
communicator.registerOnTransitionListChanged(onTransitionListChanged);
179+
}
180+
173181
public void registerTransitionBeginCallback(Callback onTransitionBegin) {
174182
communicator.registerOnTransitionBegin(onTransitionBegin);
175183
}

src/main/java/net/twasi/obsremotejava/events/EventType.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ public enum EventType {
1111
StreamStopped,
1212
SwitchScenes,
1313
ScenesChanged,
14+
SwitchTransition,
15+
TransitionListChanged,
1416
TransitionBegin,
1517
TransitionEnd
1618
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package net.twasi.obsremotejava.events.responses;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import net.twasi.obsremotejava.requests.ResponseBase;
5+
6+
public class SwitchTransitionResponse extends ResponseBase {
7+
@SerializedName("transition-name")
8+
private String transitionName;
9+
10+
public String getTransitionName() {
11+
return transitionName;
12+
}
13+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package net.twasi.obsremotejava.events.responses;
2+
3+
import net.twasi.obsremotejava.requests.ResponseBase;
4+
5+
public class TransitionListChangedResponse extends ResponseBase {
6+
// Leaving this empty for now to match ScenesChangedResponse event strategy.
7+
//
8+
// We may want to populate both of these with scenes/transitions when changed:
9+
// The list of available transitions has been modified. Transitions have been added, removed, or renamed.
10+
//
11+
// Response Items:
12+
//
13+
// Name Type Description
14+
// --- --- ---
15+
// transitions Array<Object> Transitions list.
16+
// transitions.*.name String Transition name.
17+
}

src/test/java/net/twasi/obsremotejava/test/OBSRemoteControllerUnsecuredIT.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
import net.twasi.obsremotejava.callbacks.Callback;
44
import net.twasi.obsremotejava.OBSRemoteController;
5-
import net.twasi.obsremotejava.events.responses.ScenesChangedResponse;
6-
import net.twasi.obsremotejava.events.responses.SwitchScenesResponse;
7-
import net.twasi.obsremotejava.events.responses.TransitionBeginResponse;
8-
import net.twasi.obsremotejava.events.responses.TransitionEndResponse;
5+
import net.twasi.obsremotejava.events.responses.*;
96
import net.twasi.obsremotejava.requests.GetVersion.GetVersionResponse;
107
import net.twasi.obsremotejava.requests.ResponseBase;
118
import org.junit.jupiter.api.Disabled;
@@ -265,6 +262,16 @@ public void run(ResponseBase response) {
265262
System.out.println("Scenes changed");
266263
});
267264

265+
controller.registerSwitchTransitionCallback(res -> {
266+
SwitchTransitionResponse switchTransitionResponse = (SwitchTransitionResponse) res;
267+
System.out.println("Switched active transition to: " + switchTransitionResponse.getTransitionName());
268+
});
269+
270+
controller.registerTransitionListChangedCallback(res -> {
271+
TransitionListChangedResponse transitionListChangedResponse = (TransitionListChangedResponse) res;
272+
System.out.println("Transition list changed");
273+
});
274+
268275
controller.registerTransitionBeginCallback(res -> {
269276
TransitionBeginResponse transitionBeginResponse = (TransitionBeginResponse) res;
270277
System.out.println("Transition started from scene: '" + transitionBeginResponse.getFromScene() + "' to scene: '" + transitionBeginResponse.getToScene() + "'");

0 commit comments

Comments
 (0)