Use OBSWebsocket methods for requests

This commit is contained in:
glax 2024-04-16 22:46:24 +02:00
parent f001d877ba
commit 0aaa832140

View File

@ -96,10 +96,11 @@ public class Blur
private void AddBlur(WindowInfo windowInfo) private void AddBlur(WindowInfo windowInfo)
{ {
int sceneItemId = _websocket.GetSceneItemId(_currentObsScene, "Blur", 0);
Dictionary<string, object> duplicateSceneItemRequest = new() Dictionary<string, object> duplicateSceneItemRequest = new()
{ {
{"sceneName", _currentObsScene}, {"sceneName", _currentObsScene},
{"sceneItemId", GetSceneItemUuid("Blur")} {"sceneItemId", sceneItemId}
}; };
try try
{ {
@ -133,60 +134,16 @@ public class Blur
BoundsType = SceneItemBoundsType.OBS_BOUNDS_STRETCH, BoundsType = SceneItemBoundsType.OBS_BOUNDS_STRETCH,
Alignnment = 5 Alignnment = 5
}; };
_websocket.SetSceneItemTransform(_currentObsScene, (int)_windowHandleSceneItems[windowInfo.WindowHandle], info);
Dictionary<string, object> setSceneItemTransformRequest = new() _websocket.SetSceneItemEnabled(_currentObsScene, (int)_windowHandleSceneItems[windowInfo.WindowHandle], true);
{
{"sceneName", _currentObsScene},
{"sceneItemId", _windowHandleSceneItems[windowInfo.WindowHandle]},
{"sceneItemTransform", info}
};
try
{
_websocket.SendRequest("SetSceneItemTransform", JObject.FromObject(setSceneItemTransformRequest));
}
catch (ErrorResponseException e)
{
_logger?.LogError(e, "Request 'SetSceneItemTransform'");
throw;
}
Dictionary<string, object> setSceneItemEnabledRequest = new()
{
{"sceneName", _currentObsScene},
{"sceneItemId", _windowHandleSceneItems[windowInfo.WindowHandle]},
{"sceneItemEnabled", true}
};
try
{
_websocket.SendRequest("SetSceneItemEnabled", JObject.FromObject(setSceneItemEnabledRequest));
}
catch (ErrorResponseException e)
{
_logger?.LogError(e, "Request 'SetSceneItemEnabled'");
throw;
}
} }
private void DeleteBlur(IntPtr windowHandle) private void DeleteBlur(IntPtr windowHandle)
{ {
if (!_windowHandleSceneItems.TryGetValue(windowHandle, out uint sceneItemId)) if (!_windowHandleSceneItems.TryGetValue(windowHandle, out uint sceneItemId))
return; return;
Dictionary<string, object> removeSceneItemRequest = new() _websocket.RemoveSceneItem(_currentObsScene, (int)sceneItemId);
{ _windowHandleSceneItems.Remove(windowHandle);
{"sceneName", _currentObsScene},
{"sceneItemId", sceneItemId}
};
try
{
_websocket.SendRequest("RemoveSceneItem", JObject.FromObject(removeSceneItemRequest));
_windowHandleSceneItems.Remove(windowHandle);
}
catch (ErrorResponseException e)
{
_logger?.LogError(e, "Request 'RemoveSceneItem'");
throw;
}
} }
private void DeleteBlur(WindowInfo windowInfo) private void DeleteBlur(WindowInfo windowInfo)
@ -194,53 +151,16 @@ public class Blur
DeleteBlur(windowInfo.WindowHandle); DeleteBlur(windowInfo.WindowHandle);
} }
private uint GetSceneItemUuid(string sourceName) private void SetScaleFactors(SceneItemTransformInfo? sceneItemTransformInfo = null)
{ {
Dictionary<string, string> request = new() int displayCapture = _websocket.GetSceneItemId(_currentObsScene, _displayCaptureName, 0);
{ sceneItemTransformInfo ??= _websocket.GetSceneItemTransform(_currentObsScene, displayCapture);
{"sceneName", _currentObsScene},
{"sourceName", sourceName}
};
try
{
JObject response = _websocket.SendRequest("GetSceneItemId", JObject.FromObject(request));
if (!response.ContainsKey("sceneItemId"))
throw new KeyNotFoundException("sceneItemId not in response.");
return response["sceneItemId"]!.Value<uint>();
}
catch (Exception e)
{
_logger?.LogError(e, $"Request 'GetSceneItemId' in GetSceneItemUuid {sourceName}");
throw;
}
}
private void SetScaleFactors()
{
Dictionary<string, object> request = new()
{
{"sceneName", _currentObsScene},
{"sceneItemId", GetSceneItemUuid(_displayCaptureName)}
};
try
{
JObject response = _websocket.SendRequest("GetSceneItemTransform", JObject.FromObject(request));
if(!response.TryGetValue("sceneItemTransform", out JToken? sceneItemTransform))
throw new KeyNotFoundException("Response missing key sceneItemTransform");
SceneItemTransformInfo sceneItemTransformInfo = sceneItemTransform.ToObject<SceneItemTransformInfo>()!;
Rectangle desktopRectangle = WindowManager.GetDesktopRectangle();
this._scaleWidth = sceneItemTransformInfo.Width / desktopRectangle.Width;
this._scaleHeight = sceneItemTransformInfo.Height / desktopRectangle.Height;
this._xOffset = sceneItemTransformInfo.X;
this._yOffset = sceneItemTransformInfo.Y;
}
catch (Exception e)
{
_logger?.LogError(e, "Request 'GetVideoSettings'");
throw;
}
Rectangle desktopRectangle = WindowManager.GetDesktopRectangle();
this._scaleWidth = sceneItemTransformInfo.Width / desktopRectangle.Width;
this._scaleHeight = sceneItemTransformInfo.Height / desktopRectangle.Height;
this._xOffset = sceneItemTransformInfo.X;
this._yOffset = sceneItemTransformInfo.Y;
} }
private void WindowManagerOnWindowZOrderChanged(IntPtr[] neworder) private void WindowManagerOnWindowZOrderChanged(IntPtr[] neworder)