Hello,
The Unity Transport 2.1 change log states the following:
However, the property public NetworkFamily Family does not allow setting or getting a a NetworkFamily.Custom value.
/// <summary>Get or set the family of the endpoint.</summary>
/// <value>Address family of the endpoint.</value>
public NetworkFamily Family
{
get => FromBaselibFamily((Binding.Baselib_NetworkAddress_Family)BaselibAddress.family);
set => BaselibAddress.family = (byte)ToBaselibFamily(value);
}
This is because FromBaseLibFamily() and ToBaseLibFamily() do not have a case for Custom.
private static NetworkFamily FromBaselibFamily(Binding.Baselib_NetworkAddress_Family family)
{
switch (family)
{
case Binding.Baselib_NetworkAddress_Family.IPv4:
return NetworkFamily.Ipv4;
case Binding.Baselib_NetworkAddress_Family.IPv6:
return NetworkFamily.Ipv6;
default:
return NetworkFamily.Invalid;
}
}
private static Binding.Baselib_NetworkAddress_Family ToBaselibFamily(NetworkFamily family)
{
switch (family)
{
case NetworkFamily.Ipv4:
return Binding.Baselib_NetworkAddress_Family.IPv4;
case NetworkFamily.Ipv6:
return Binding.Baselib_NetworkAddress_Family.IPv6;
default:
return Binding.Baselib_NetworkAddress_Family.Invalid;
Baselib_NetworkAddress_Family lives in
Unity.Baselib.LowLevel so I cannot modify it.
public enum Baselib_NetworkAddress_Family
{
Invalid,
IPv4,
IPv6,
}
I am attempting to yeet custom in there like below, but I am still having trouble with it returning to ipv4 by the time I endpoint reaches my custom INetworkInterface’s bind() method.
private static NetworkFamily FromBaselibFamily(Binding.Baselib_NetworkAddress_Family family)
{
if ((int)family == (int)NetworkFamily.Custom)
{
return NetworkFamily.Custom;
}
switch (family)
{
case Binding.Baselib_NetworkAddress_Family.IPv4:
return NetworkFamily.Ipv4;
case Binding.Baselib_NetworkAddress_Family.IPv6:
return NetworkFamily.Ipv6;
default:
return NetworkFamily.Invalid;
}
}
private static Binding.Baselib_NetworkAddress_Family ToBaselibFamily(NetworkFamily family)
{
if (family == NetworkFamily.Custom)
{
return (Binding.Baselib_NetworkAddress_Family)NetworkFamily.Custom;
}
switch (family)
{
case NetworkFamily.Ipv4:
return Binding.Baselib_NetworkAddress_Family.IPv4;
case NetworkFamily.Ipv6:
return Binding.Baselib_NetworkAddress_Family.IPv6;
default:
return Binding.Baselib_NetworkAddress_Family.Invalid;
}
}
Goal is for these end points to be carrying steam IDs for my steamworks transport integration.
Any advice for a workaround?
Cheers.