protected override async Task <Result> InitializeInternal() { try { if (!this.websocket.IsOpen()) { if (!await this.ConnectWebSocket()) { return(new Result(MixItUp.Base.Resources.VTubeStudioConnectionFailed)); } } JObject data = new JObject(); data["pluginName"] = websocketPluginName; data["pluginDeveloper"] = websocketPluginDeveloper; data["authenticationToken"] = this.token?.accessToken; VTubeStudioWebSocketResponsePacket response = await this.websocket.SendAndReceive(new VTubeStudioWebSocketRequestPacket("AuthenticationRequest", data)); if (response != null && response.data != null && response.data.TryGetValue("authenticated", out JToken authenticated) && authenticated.Value <bool>() == true) { this.WebSocketConnected = true; this.websocket.OnDisconnectOccurred += Websocket_OnDisconnectOccurred; return(new Result()); } } catch (Exception ex) { Logger.Log(ex); } return(new Result(MixItUp.Base.Resources.VTubeStudioConnectionFailed)); }
public async Task <IEnumerable <VTubeStudioHotKey> > GetHotKeys(string modelID = null) { List <VTubeStudioHotKey> results = new List <VTubeStudioHotKey>(); VTubeStudioWebSocketRequestPacket packet = new VTubeStudioWebSocketRequestPacket("HotkeysInCurrentModelRequest"); if (!string.IsNullOrEmpty(modelID)) { packet.data = new JObject(); packet.data["modelID"] = modelID; } VTubeStudioWebSocketResponsePacket response = await this.websocket.SendAndReceive(packet); if (response != null && response.data != null && response.data.TryGetValue("availableHotkeys", out JToken hotKeys) && hotKeys is JArray) { foreach (VTubeStudioHotKey hotKey in ((JArray)hotKeys).ToTypedArray <VTubeStudioHotKey>()) { if (hotKey != null) { results.Add(hotKey); } } } return(results); }
public async Task <bool> MoveModel(double timeInSeconds, bool relative, double?x, double?y, double?rotation, double?size) { JObject data = new JObject(); data["timeInSeconds"] = timeInSeconds; data["valuesAreRelativeToModel"] = relative; if (x.HasValue) { data["positionX"] = x; } if (y.HasValue) { data["positionY"] = y; } if (rotation.HasValue) { data["rotation"] = rotation; } if (size.HasValue) { data["size"] = size; } VTubeStudioWebSocketResponsePacket response = await this.websocket.SendAndReceive(new VTubeStudioWebSocketRequestPacket("MoveModelRequest", data)); if (response != null && response.data != null) { return(true); } return(false); }
public async Task <bool> RunHotKey(string hotKeyID) { JObject data = new JObject(); data["hotkeyID"] = hotKeyID; VTubeStudioWebSocketResponsePacket response = await this.websocket.SendAndReceive(new VTubeStudioWebSocketRequestPacket("HotkeyTriggerRequest", data)); if (response != null && response.data != null && response.data.ContainsKey("hotkeyID")) { return(true); } return(false); }
public async Task <bool> LoadModel(string modelID) { JObject data = new JObject(); data["modelID"] = modelID; VTubeStudioWebSocketResponsePacket response = await this.websocket.SendAndReceive(new VTubeStudioWebSocketRequestPacket("ModelLoadRequest", data)); if (response != null && response.data != null && response.data.ContainsKey("modelID")) { return(true); } return(false); }
public async Task <VTubeStudioModel> GetCurrentModel() { VTubeStudioWebSocketResponsePacket response = await this.websocket.SendAndReceive(new VTubeStudioWebSocketRequestPacket("CurrentModelRequest")); if (response != null && response.data != null) { VTubeStudioModel result = response.data.ToObject <VTubeStudioModel>(); if (result != null && result.modelLoaded) { return(result); } } return(null); }
protected override Task ProcessReceivedPacket(string packet) { try { Logger.Log(LogLevel.Debug, "VTube Studio Packet Received - " + packet); VTubeStudioWebSocketResponsePacket response = JSONSerializerHelper.DeserializeFromString <VTubeStudioWebSocketResponsePacket>(packet); if (response != null && !string.IsNullOrEmpty(response.requestID)) { this.responses[response.requestID] = response; } } catch (Exception ex) { Logger.Log(ex); } return(Task.FromResult(0)); }
public async Task <IEnumerable <VTubeStudioModel> > GetAllModels() { List <VTubeStudioModel> results = new List <VTubeStudioModel>(); VTubeStudioWebSocketResponsePacket response = await this.websocket.SendAndReceive(new VTubeStudioWebSocketRequestPacket("AvailableModelsRequest")); if (response != null && response.data != null && response.data.TryGetValue("availableModels", out JToken models) && models is JArray) { foreach (VTubeStudioModel model in ((JArray)models).ToTypedArray <VTubeStudioModel>()) { if (model != null) { results.Add(model); } } } return(results); }
public override async Task <Result> Connect(OAuthTokenModel token) { try { this.token = token; if (await this.ConnectWebSocket()) { VTubeStudioWebSocketResponsePacket response = await this.websocket.SendAndReceive(new VTubeStudioWebSocketRequestPacket("APIStateRequest")); if (response != null && response.data != null && response.data.ContainsKey("active")) { return(await this.InitializeInternal()); } } } catch (Exception ex) { Logger.Log(ex); } return(new Result(MixItUp.Base.Resources.VTubeStudioConnectionFailed)); }
public override async Task <Result> Connect() { try { this.token = null; if (await this.ConnectWebSocket()) { VTubeStudioWebSocketResponsePacket response = await this.websocket.SendAndReceive(new VTubeStudioWebSocketRequestPacket("APIStateRequest")); if (response != null && response.data != null && response.data.ContainsKey("active")) { JObject data = new JObject(); data["pluginName"] = websocketPluginName; data["pluginDeveloper"] = websocketPluginDeveloper; data["pluginIcon"] = websocketPluginIcon; response = await this.websocket.SendAndReceive(new VTubeStudioWebSocketRequestPacket("AuthenticationTokenRequest", data), 60); if (response != null && response.data != null && response.data.ContainsKey("authenticationToken")) { this.token = new OAuthTokenModel() { accessToken = response.data["authenticationToken"].ToString() }; return(await this.InitializeInternal()); } } } } catch (Exception ex) { Logger.Log(ex); } return(new Result(MixItUp.Base.Resources.VTubeStudioConnectionFailed)); }