Skip to content

Commit

Permalink
Update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
Natsumi-sama committed Sep 14, 2024
1 parent a8c51fb commit 56283f4
Showing 1 changed file with 17 additions and 14 deletions.
31 changes: 17 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,30 +19,31 @@ Quest support, it can auto discover VRC running on the same local network.

```c#
// listen on localhost
new OscQueryServer(
var localHostServer = new OscQueryServer(
"HelloWorld", // service name
"127.0.0.1", // ip address for udp and http server
FoundVrcClient, // optional callback on vrc discovery
UpdateAvailableParameters // parameter list callback on vrc discovery
IPAddress.Loopback // ip address for udp and http server
);
localHostServer.FoundVrcClient += FoundVrcClient; // event on vrc discovery
localHostServer.ParameterUpdate += UpdateAvailableParameters; // event on parameter list update
// listen for VRC on every network interface (Quest only)
var host = Dns.GetHostEntry(Dns.GetHostName());
var host = await Dns.GetHostEntryAsync(Dns.GetHostName());
foreach (var ip in host.AddressList)
{
if (ip.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
continue;

var ipAddress = ip.ToString();
_ = new OscQueryServer(
var server = new OscQueryServer(
"HelloWorld", // service name
ipAddress, // ip address for udp and http server
FoundVrcClient, // optional callback on vrc discovery
UpdateAvailableParameters // parameter list callback on vrc discovery
ip
);

server.FoundVrcClient += FoundVrcClient; // event on vrc discovery
server.ParameterUpdate += UpdateAvailableParameters; // event on parameter list update
server.Start();
}

private static void FoundVrcClient()
private static Task FoundVrcClient(OscQueryServer oscQueryServer, IPEndPoint ipEndPoint)
{
// stop tasks
Task.Delay(1000).Wait(); // wait for tasks to stop
Expand All @@ -51,22 +52,24 @@ private static void FoundVrcClient()

_gameConnection = new OscDuplex(
new IPEndPoint(IPAddress.Parse(OscQueryServer.OscIpAddress), OscQueryServer.OscReceivePort),
new IPEndPoint(IPAddress.Parse(OscQueryServer.OscIpAddress), OscQueryServer.OscSendPort)
ipEndPoint)
);
Task.Run(ReceiverLoopAsync);
return Task.CompletedTask;
}

private static void UpdateAvailableParameters(Dictionary<string, object?> parameterList)
private static Task UpdateAvailableParameters(Dictionary<string, object?> parameterList, string s)
{
// ran when client connects or optionally when user changes avatar
// the parameter values are in their initial state so they are mostly useless
foreach (var parameter in parameterList)
{
Console.WriteLine(parameter.Key);
}
return Task.CompletedTask;
}

// depending on your OSC library you might want to run this method on avatar change to update your list of available parameters
// depending on your OSC library you may want to run this method on avatar change to update your list of available parameters
if (received.Address == "/avatar/change")
OscQueryServer.GetParameters();

Expand Down

0 comments on commit 56283f4

Please sign in to comment.