Skip to content

Commit bf218a6

Browse files
Added rest of the types for #25, verified tests pass, and sanity-checked responses from getSourceFilters and getSourceFilterInfo methods (added exclude for Main.java class to make development a bit easier since OBS testing is manual atm.
1 parent 62f5dde commit bf218a6

File tree

13 files changed

+195
-1
lines changed

13 files changed

+195
-1
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# Exclude 'Main' java class
2+
**/Main.java
3+
14
# Filesystem Stuff
25
**.DS_Store
36

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
import net.twasi.obsremotejava.requests.GetSceneItemProperties.GetSceneItemPropertiesRequest;
2525
import net.twasi.obsremotejava.requests.GetSceneList.GetSceneListRequest;
2626
import net.twasi.obsremotejava.requests.GetSceneList.GetSceneListResponse;
27+
import net.twasi.obsremotejava.requests.GetSourceFilterInfo.GetSourceFilterInfoRequest;
28+
import net.twasi.obsremotejava.requests.GetSourceFilterInfo.GetSourceFilterInfoResponse;
29+
import net.twasi.obsremotejava.requests.GetSourceFilters.GetSourceFiltersRequest;
30+
import net.twasi.obsremotejava.requests.GetSourceFilters.GetSourceFiltersResponse;
2731
import net.twasi.obsremotejava.requests.GetSourceSettings.GetSourceSettingsRequest;
2832
import net.twasi.obsremotejava.requests.GetSourceSettings.GetSourceSettingsResponse;
2933
import net.twasi.obsremotejava.requests.GetStreamingStatus.GetStreamingStatusRequest;
@@ -55,6 +59,8 @@
5559
import net.twasi.obsremotejava.requests.SetPreviewScene.SetPreviewSceneResponse;
5660
import net.twasi.obsremotejava.requests.SetSceneItemProperties.SetSceneItemPropertiesRequest;
5761
import net.twasi.obsremotejava.requests.SetSceneItemProperties.SetSceneItemPropertiesResponse;
62+
import net.twasi.obsremotejava.requests.SetSourceFilterVisibility.SetSourceFilterVisibilityRequest;
63+
import net.twasi.obsremotejava.requests.SetSourceFilterVisibility.SetSourceFilterVisibilityResponse;
5864
import net.twasi.obsremotejava.requests.SetSourceSettings.SetSourceSettingsRequest;
5965
import net.twasi.obsremotejava.requests.SetSourceSettings.SetSourceSettingsResponse;
6066
import net.twasi.obsremotejava.requests.SetStudioModeEnabled.SetStudioModeEnabledRequest;
@@ -125,6 +131,7 @@ public class OBSCommunicator {
125131
private Callback<TransitionListChangedResponse> onTransitionListChanged;
126132
private Callback<TransitionBeginResponse> onTransitionBegin;
127133
private Callback<TransitionEndResponse> onTransitionEnd;
134+
private Callback<SourceFilterVisibilityChangedResponse> onSourceFilterVisibilityChanged;
128135

129136
private GetVersionResponse versionInfo;
130137

@@ -292,6 +299,11 @@ private void processIncomingEvent(String msg, EventType eventType) {
292299
onScenesChanged.run(new Gson().fromJson(msg, ScenesChangedResponse.class));
293300
}
294301
break;
302+
case SourceFilterVisibilityChanged:
303+
if(onSourceFilterVisibilityChanged != null) {
304+
onSourceFilterVisibilityChanged.run(new Gson().fromJson(msg, SourceFilterVisibilityChangedResponse.class));
305+
}
306+
break;
295307
case SwitchTransition:
296308
if (onSwitchTransition != null) {
297309
onSwitchTransition.run(new Gson().fromJson(msg, SwitchTransitionResponse.class));
@@ -407,6 +419,10 @@ public void registerOnScenesChanged(Callback<ScenesChangedResponse> onScenesChan
407419
this.onScenesChanged = onScenesChanged;
408420
}
409421

422+
public void registerOnSourceFilterVisibilityChanged(Callback<SourceFilterVisibilityChangedResponse> onSourceFilterVisibilityChanged) {
423+
this.onSourceFilterVisibilityChanged = onSourceFilterVisibilityChanged;
424+
}
425+
410426
public void registerOnSwitchTransition(Callback<SwitchTransitionResponse> onSwitchTransition) {
411427
this.onSwitchTransition = onSwitchTransition;
412428
}
@@ -493,6 +509,24 @@ public void setSourceSettings(String sourceName, Map<String, Object> settings, C
493509
callbacks.put(SetSourceSettingsResponse.class, callback);
494510
}
495511

512+
public void getSourceFilters(String sourceName, Callback<GetSourceFiltersResponse> callback) {
513+
GetSourceFiltersRequest request = new GetSourceFiltersRequest(sourceName);
514+
session.getRemote().sendStringByFuture(new Gson().toJson(request));
515+
callbacks.put(GetSourceFiltersResponse.class, callback);
516+
}
517+
518+
public void getSourceFilterInfo(String sourceName, String filterName, Callback<GetSourceFilterInfoResponse> callback) {
519+
GetSourceFilterInfoRequest request = new GetSourceFilterInfoRequest(sourceName, filterName);
520+
session.getRemote().sendStringByFuture(new Gson().toJson(request));
521+
callbacks.put(GetSourceFilterInfoResponse.class, callback);
522+
}
523+
524+
public void setSourceFilterVisibility(String sourceName, String filterName, boolean filterEnabled, Callback<SetSourceFilterVisibilityResponse> callback) {
525+
SetSourceFilterVisibilityRequest request = new SetSourceFilterVisibilityRequest(sourceName, filterName, filterEnabled);
526+
session.getRemote().sendStringByFuture(new Gson().toJson(request));
527+
callbacks.put(callback.getClass().getSuperclass(), callback);
528+
}
529+
496530
public void startRecording(Callback<StartRecordingResponse> callback) {
497531
StartRecordingRequest request = new StartRecordingRequest(this);
498532

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.twasi.obsremotejava;
22

3+
import com.google.gson.Gson;
34
import net.twasi.obsremotejava.callbacks.Callback;
45
import net.twasi.obsremotejava.callbacks.ErrorCallback;
56
import net.twasi.obsremotejava.callbacks.StringCallback;
@@ -10,6 +11,10 @@
1011
import net.twasi.obsremotejava.requests.GetCurrentScene.GetCurrentSceneResponse;
1112
import net.twasi.obsremotejava.requests.GetPreviewScene.GetPreviewSceneResponse;
1213
import net.twasi.obsremotejava.requests.GetSceneList.GetSceneListResponse;
14+
import net.twasi.obsremotejava.requests.GetSourceFilterInfo.GetSourceFilterInfoRequest;
15+
import net.twasi.obsremotejava.requests.GetSourceFilterInfo.GetSourceFilterInfoResponse;
16+
import net.twasi.obsremotejava.requests.GetSourceFilters.GetSourceFiltersRequest;
17+
import net.twasi.obsremotejava.requests.GetSourceFilters.GetSourceFiltersResponse;
1318
import net.twasi.obsremotejava.requests.GetSourceSettings.GetSourceSettingsResponse;
1419
import net.twasi.obsremotejava.requests.GetStreamingStatus.GetStreamingStatusResponse;
1520
import net.twasi.obsremotejava.requests.GetStudioModeEnabled.GetStudioModeEnabledResponse;
@@ -25,6 +30,8 @@
2530
import net.twasi.obsremotejava.requests.SetMute.SetMuteResponse;
2631
import net.twasi.obsremotejava.requests.SetPreviewScene.SetPreviewSceneResponse;
2732
import net.twasi.obsremotejava.requests.SetSceneItemProperties.SetSceneItemPropertiesResponse;
33+
import net.twasi.obsremotejava.requests.SetSourceFilterVisibility.SetSourceFilterVisibilityRequest;
34+
import net.twasi.obsremotejava.requests.SetSourceFilterVisibility.SetSourceFilterVisibilityResponse;
2835
import net.twasi.obsremotejava.requests.SetSourceSettings.SetSourceSettingsResponse;
2936
import net.twasi.obsremotejava.requests.SetStudioModeEnabled.SetStudioModeEnabledResponse;
3037
import net.twasi.obsremotejava.requests.SetTransitionDuration.SetTransitionDurationResponse;
@@ -218,6 +225,10 @@ public void registerTransitionEndCallback(Callback<TransitionEndResponse> onTran
218225
communicator.registerOnTransitionEnd(onTransitionEnd);
219226
}
220227

228+
public void registerSourceFilterVisibilityChangedCallback(Callback<SourceFilterVisibilityChangedResponse> onSourceVisibilityChanged) {
229+
communicator.registerOnSourceFilterVisibilityChanged(onSourceVisibilityChanged);
230+
}
231+
221232
public void await() throws InterruptedException {
222233
communicator.await();
223234
}
@@ -248,6 +259,22 @@ public void getSceneItemProperties(String scene, String source, Callback<SetScen
248259
communicator.getSceneItemProperties(scene, source, callback);
249260
}
250261

262+
public void getSourceProperties(String scene, String source, Callback<SetSceneItemPropertiesResponse> callback) {
263+
getSceneItemProperties(scene, source, callback);
264+
}
265+
266+
public void getSourceFilters(String sourceName, Callback<GetSourceFiltersResponse> callback) {
267+
communicator.getSourceFilters(sourceName, callback);
268+
}
269+
270+
public void getSourceFilterInfo(String sourceName, String filterName, Callback<GetSourceFilterInfoResponse> callback) {
271+
communicator.getSourceFilterInfo(sourceName, filterName, callback);
272+
}
273+
274+
public void setSourceFilterVisibility(String sourceName, String filterName, boolean filterEnabled, Callback<SetSourceFilterVisibilityResponse> callback) {
275+
communicator.setSourceFilterVisibility(sourceName, filterName, filterEnabled, callback);
276+
}
277+
251278
public void getTransitionList(Callback<GetTransitionListResponse> callback) {
252279
communicator.getTransitionList(callback);
253280
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public enum EventType {
1111
StreamStopped,
1212
SwitchScenes,
1313
ScenesChanged,
14+
SourceFilterVisibilityChanged,
1415
SwitchTransition,
1516
TransitionListChanged,
1617
TransitionBegin,
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.twasi.obsremotejava.objects;
2+
3+
import java.util.Map;
4+
5+
public class SourceFilterInfo {
6+
7+
private boolean filterStatus; // whether the filter is visible or not
8+
private String type;
9+
private String name;
10+
private Map<String, String> settings;
11+
12+
public boolean isFilterVisible() {
13+
return filterStatus;
14+
}
15+
16+
public String getType() {
17+
return type;
18+
}
19+
20+
public String getName() {
21+
return name;
22+
}
23+
24+
public Map<String, String> getSettings() {
25+
return settings;
26+
}
27+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package net.twasi.obsremotejava.objects;
2+
3+
import java.util.Collection;
4+
import java.util.Map;
5+
6+
public class SourceFilterSettings {
7+
private Collection<Map<String,String>> map;
8+
9+
public Collection<Map<String, String>> getMap() {
10+
return map;
11+
}
12+
13+
@Override
14+
public String toString() {
15+
return "SourceFilterSettings{" +
16+
map +
17+
'}';
18+
}
19+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package net.twasi.obsremotejava.requests.GetSourceFilterInfo;
2+
3+
import net.twasi.obsremotejava.requests.BaseRequest;
4+
import net.twasi.obsremotejava.requests.RequestType;
5+
6+
public class GetSourceFilterInfoRequest extends BaseRequest {
7+
private final String sourceName;
8+
private final String filterName;
9+
10+
public GetSourceFilterInfoRequest(String sourceName, String filterName) {
11+
super(RequestType.GetSourceFilterInfo);
12+
this.sourceName = sourceName;
13+
this.filterName = filterName;
14+
}
15+
16+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package net.twasi.obsremotejava.requests.GetSourceFilterInfo;
2+
3+
import net.twasi.obsremotejava.objects.SourceFilterInfo;
4+
import net.twasi.obsremotejava.requests.ResponseBase;
5+
6+
import java.util.Map;
7+
8+
public class GetSourceFilterInfoResponse extends ResponseBase {
9+
private boolean filterStatus; // whether the filter is visible or not
10+
private String type;
11+
private String name;
12+
private Map<String, String> settings;
13+
14+
public boolean isFilterVisible() {
15+
return filterStatus;
16+
}
17+
18+
public String getType() {
19+
return type;
20+
}
21+
22+
public String getName() {
23+
return name;
24+
}
25+
26+
public Map<String, String> getSettings() {
27+
return settings;
28+
}
29+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package net.twasi.obsremotejava.requests.GetSourceFilters;
2+
3+
import net.twasi.obsremotejava.requests.BaseRequest;
4+
import net.twasi.obsremotejava.requests.RequestType;
5+
6+
public class GetSourceFiltersRequest extends BaseRequest {
7+
private final String sourceName;
8+
9+
public GetSourceFiltersRequest(String sourceName) {
10+
super(RequestType.GetSourceFilters);
11+
this.sourceName = sourceName;
12+
}
13+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package net.twasi.obsremotejava.requests.GetSourceFilters;
2+
3+
import net.twasi.obsremotejava.objects.SourceFilterInfo;
4+
import net.twasi.obsremotejava.requests.GetSourceSettings.GetSourceSettingsResponse;
5+
import net.twasi.obsremotejava.requests.ResponseBase;
6+
7+
import java.util.List;
8+
9+
public class GetSourceFiltersResponse extends ResponseBase {
10+
11+
List<SourceFilterInfo> filters;
12+
13+
public List<SourceFilterInfo> getFilters() {
14+
return filters;
15+
}
16+
}

0 commit comments

Comments
 (0)