Skip to content

Commit 56f6c22

Browse files
authored
Merge pull request #5 from sampie777/add_sceneschanged_and_transition_events
Added three more events
2 parents f174c56 + d6f873b commit 56f6c22

File tree

7 files changed

+140
-2
lines changed

7 files changed

+140
-2
lines changed

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

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
import com.google.gson.JsonObject;
66
import com.google.gson.JsonParser;
77
import net.twasi.obsremotejava.events.EventType;
8+
import net.twasi.obsremotejava.events.responses.ScenesChangedResponse;
89
import net.twasi.obsremotejava.events.responses.SwitchScenesResponse;
10+
import net.twasi.obsremotejava.events.responses.TransitionBeginResponse;
11+
import net.twasi.obsremotejava.events.responses.TransitionEndResponse;
912
import net.twasi.obsremotejava.requests.GetAuthRequired.GetAuthRequiredRequest;
1013
import net.twasi.obsremotejava.requests.GetAuthRequired.GetAuthRequiredResponse;
1114
import net.twasi.obsremotejava.requests.GetCurrentProfile.GetCurrentProfileRequest;
@@ -97,6 +100,9 @@ public class OBSCommunicator {
97100
private Callback onReplayStopped;
98101
private Callback onReplayStopping;
99102
private Callback onSwitchScenes;
103+
private Callback onScenesChanged;
104+
private Callback onTransitionBegin;
105+
private Callback onTransitionEnd;
100106

101107
private GetVersionResponse versionInfo;
102108

@@ -205,10 +211,25 @@ public void onMessage(String msg) {
205211
onSwitchScenes.run(new Gson().fromJson(msg, SwitchScenesResponse.class));
206212
}
207213
break;
214+
case ScenesChanged:
215+
if (onScenesChanged != null) {
216+
onScenesChanged.run(new Gson().fromJson(msg, ScenesChangedResponse.class));
217+
}
218+
break;
219+
case TransitionBegin:
220+
if (onTransitionBegin != null) {
221+
onTransitionBegin.run(new Gson().fromJson(msg, TransitionBeginResponse.class));
222+
}
223+
break;
224+
case TransitionEnd:
225+
if (onTransitionEnd != null) {
226+
onTransitionEnd.run(new Gson().fromJson(msg, TransitionEndResponse.class));
227+
}
228+
break;
208229
}
209230
}
210231
} catch (Exception e) {
211-
System.out.println("Websockte Exception: " + e.getMessage());
232+
System.out.println("Websocket Exception: " + e.getMessage());
212233
}
213234
}
214235

@@ -240,6 +261,18 @@ public void registerOnSwitchScenes(Callback onSwitchScenes) {
240261
this.onSwitchScenes = onSwitchScenes;
241262
}
242263

264+
public void registerOnScenesChanged(Callback onScenesChanged) {
265+
this.onScenesChanged = onScenesChanged;
266+
}
267+
268+
public void registerOnTransitionBegin(Callback onTransitionBegin) {
269+
this.onTransitionBegin = onTransitionBegin;
270+
}
271+
272+
public void registerOnTransitionEnd(Callback onTransitionEnd) {
273+
this.onTransitionEnd = onTransitionEnd;
274+
}
275+
243276
public void getScenes(Callback callback) {
244277
session.getRemote().sendStringByFuture(new Gson().toJson(new GetSceneListRequest(this)));
245278
callbacks.put(GetSceneListResponse.class, callback);

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,18 @@ public void registerSwitchScenesCallback(Callback onSwitchScenes) {
9999
communicator.registerOnSwitchScenes(onSwitchScenes);
100100
}
101101

102+
public void registerScenesChangedCallback(Callback onScenesChanged) {
103+
communicator.registerOnScenesChanged(onScenesChanged);
104+
}
105+
106+
public void registerTransitionBeginCallback(Callback onTransitionBegin) {
107+
communicator.registerOnTransitionBegin(onTransitionBegin);
108+
}
109+
110+
public void registerTransitionEndCallback(Callback onTransitionEnd) {
111+
communicator.registerOnTransitionEnd(onTransitionEnd);
112+
}
113+
102114
public void await() throws InterruptedException {
103115
communicator.await();
104116
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,8 @@ public enum EventType {
55
ReplayStarted,
66
ReplayStopping,
77
ReplayStopped,
8-
SwitchScenes
8+
SwitchScenes,
9+
ScenesChanged,
10+
TransitionBegin,
11+
TransitionEnd
912
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package net.twasi.obsremotejava.events.responses;
2+
3+
import net.twasi.obsremotejava.requests.ResponseBase;
4+
5+
public class ScenesChangedResponse extends ResponseBase {}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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 TransitionBeginResponse extends ResponseBase {
7+
private String name;
8+
private String type;
9+
10+
@SerializedName("from-scene")
11+
private String fromScene;
12+
13+
@SerializedName("to-scene")
14+
private String toScene;
15+
16+
private Integer duration;
17+
18+
public String getName() {
19+
return name;
20+
}
21+
22+
public String getType() {
23+
return type;
24+
}
25+
26+
public String getFromScene() {
27+
return fromScene;
28+
}
29+
30+
public String getToScene() {
31+
return toScene;
32+
}
33+
34+
public Integer getDuration() {
35+
return duration;
36+
}
37+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
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 TransitionEndResponse extends ResponseBase {
7+
private String name;
8+
private String type;
9+
10+
@SerializedName("to-scene")
11+
private String toScene;
12+
13+
private Integer duration;
14+
15+
public String getName() {
16+
return name;
17+
}
18+
19+
public String getType() {
20+
return type;
21+
}
22+
23+
public String getToScene() {
24+
return toScene;
25+
}
26+
27+
public Integer getDuration() {
28+
return duration;
29+
}
30+
}

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

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

33
import net.twasi.obsremotejava.Callback;
44
import net.twasi.obsremotejava.OBSRemoteController;
5+
import net.twasi.obsremotejava.events.responses.ScenesChangedResponse;
56
import net.twasi.obsremotejava.events.responses.SwitchScenesResponse;
7+
import net.twasi.obsremotejava.events.responses.TransitionBeginResponse;
8+
import net.twasi.obsremotejava.events.responses.TransitionEndResponse;
69
import net.twasi.obsremotejava.requests.GetVersion.GetVersionResponse;
710
import net.twasi.obsremotejava.requests.ResponseBase;
811
import org.junit.jupiter.api.Test;
@@ -243,6 +246,21 @@ public void run(ResponseBase response) {
243246
SwitchScenesResponse switchScenesResponse = (SwitchScenesResponse) res;
244247
System.out.println("Switched to scene: " + switchScenesResponse.getSceneName());
245248
});
249+
250+
controller.registerScenesChangedCallback(res -> {
251+
ScenesChangedResponse scenesChangedResponse = (ScenesChangedResponse) res;
252+
System.out.println("Scenes changed");
253+
});
254+
255+
controller.registerTransitionBeginCallback(res -> {
256+
TransitionBeginResponse transitionBeginResponse = (TransitionBeginResponse) res;
257+
System.out.println("Transition started from scene: '" + transitionBeginResponse.getFromScene() + "' to scene: '" + transitionBeginResponse.getToScene() + "'");
258+
});
259+
260+
controller.registerTransitionEndCallback(res -> {
261+
TransitionEndResponse transitionEndResponse = (TransitionEndResponse) res;
262+
System.out.println("Transition ended with scene: " + transitionEndResponse.getToScene());
263+
});
246264
}
247265
});
248266

0 commit comments

Comments
 (0)