mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-07 06:56:04 +02:00
Update copyright year
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
@@ -28,7 +28,7 @@ namespace VRCX
|
|||||||
|
|
||||||
public string GetAssetId(string id, string variant = "")
|
public string GetAssetId(string id, string variant = "")
|
||||||
{
|
{
|
||||||
using(var sha256 = SHA256.Create())
|
using (var sha256 = SHA256.Create())
|
||||||
{
|
{
|
||||||
byte[] hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(id + variant));
|
byte[] hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(id + variant));
|
||||||
StringBuilder idHex = new StringBuilder(hash.Length * 2);
|
StringBuilder idHex = new StringBuilder(hash.Length * 2);
|
||||||
@@ -62,7 +62,8 @@ namespace VRCX
|
|||||||
if (hexString.Length != 32)
|
if (hexString.Length != 32)
|
||||||
return (0, 0); // it's cooked
|
return (0, 0); // it's cooked
|
||||||
|
|
||||||
try {
|
try
|
||||||
|
{
|
||||||
var variantVersionHexString = hexString.Substring(0, 8); // 0..8
|
var variantVersionHexString = hexString.Substring(0, 8); // 0..8
|
||||||
var versionHexString = hexString.Substring(24, 8); // 24..32
|
var versionHexString = hexString.Substring(24, 8); // 24..32
|
||||||
var versionBytes = new byte[4];
|
var versionBytes = new byte[4];
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019 pypy. All rights reserved.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
// For a copy, see <https://opensource.org/licenses/MIT>.
|
// For a copy, see <https://opensource.org/licenses/MIT>.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
Generated
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019 pypy. All rights reserved.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
// For a copy, see <https://opensource.org/licenses/MIT>.
|
// For a copy, see <https://opensource.org/licenses/MIT>.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
+75
-75
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
@@ -438,82 +438,82 @@ namespace VRCX
|
|||||||
case ETrackedDeviceClass.Controller:
|
case ETrackedDeviceClass.Controller:
|
||||||
case ETrackedDeviceClass.GenericTracker:
|
case ETrackedDeviceClass.GenericTracker:
|
||||||
case ETrackedDeviceClass.TrackingReference:
|
case ETrackedDeviceClass.TrackingReference:
|
||||||
{
|
|
||||||
var err = ETrackedPropertyError.TrackedProp_Success;
|
|
||||||
var batteryPercentage = system.GetFloatTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_DeviceBatteryPercentage_Float, ref err);
|
|
||||||
if (err != ETrackedPropertyError.TrackedProp_Success)
|
|
||||||
{
|
{
|
||||||
batteryPercentage = 1f;
|
var err = ETrackedPropertyError.TrackedProp_Success;
|
||||||
}
|
var batteryPercentage = system.GetFloatTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_DeviceBatteryPercentage_Float, ref err);
|
||||||
|
if (err != ETrackedPropertyError.TrackedProp_Success)
|
||||||
err = ETrackedPropertyError.TrackedProp_Success;
|
|
||||||
var isCharging = system.GetBoolTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_DeviceIsCharging_Bool, ref err);
|
|
||||||
if (err != ETrackedPropertyError.TrackedProp_Success)
|
|
||||||
{
|
|
||||||
isCharging = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
sb.Clear();
|
|
||||||
system.GetStringTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_TrackingSystemName_String, sb, (uint)sb.Capacity, ref err);
|
|
||||||
var isOculus = sb.ToString().IndexOf("oculus", StringComparison.OrdinalIgnoreCase) >= 0;
|
|
||||||
// Oculus : B/Y, Bit 1, Mask 2
|
|
||||||
// Oculus : A/X, Bit 7, Mask 128
|
|
||||||
// Vive : Menu, Bit 1, Mask 2,
|
|
||||||
// Vive : Grip, Bit 2, Mask 4
|
|
||||||
var role = system.GetControllerRoleForTrackedDeviceIndex(i);
|
|
||||||
if (role == ETrackedControllerRole.LeftHand || role == ETrackedControllerRole.RightHand)
|
|
||||||
{
|
|
||||||
if (_overlayHand == 0 ||
|
|
||||||
(_overlayHand == 1 && role == ETrackedControllerRole.LeftHand) ||
|
|
||||||
(_overlayHand == 2 && role == ETrackedControllerRole.RightHand))
|
|
||||||
{
|
{
|
||||||
if (system.GetControllerState(i, ref state, (uint)Marshal.SizeOf(state)) &&
|
batteryPercentage = 1f;
|
||||||
(state.ulButtonPressed & (_menuButton ? 2u : isOculus ? 128u : 4u)) != 0)
|
}
|
||||||
{
|
|
||||||
_nextOverlayUpdate = DateTime.MinValue;
|
|
||||||
if (role == ETrackedControllerRole.LeftHand)
|
|
||||||
{
|
|
||||||
Array.Copy(_translationLeft, _translation, 3);
|
|
||||||
Array.Copy(_rotationLeft, _rotation, 3);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Array.Copy(_translationRight, _translation, 3);
|
|
||||||
Array.Copy(_rotationRight, _rotation, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
overlayIndex = i;
|
err = ETrackedPropertyError.TrackedProp_Success;
|
||||||
|
var isCharging = system.GetBoolTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_DeviceIsCharging_Bool, ref err);
|
||||||
|
if (err != ETrackedPropertyError.TrackedProp_Success)
|
||||||
|
{
|
||||||
|
isCharging = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.Clear();
|
||||||
|
system.GetStringTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_TrackingSystemName_String, sb, (uint)sb.Capacity, ref err);
|
||||||
|
var isOculus = sb.ToString().IndexOf("oculus", StringComparison.OrdinalIgnoreCase) >= 0;
|
||||||
|
// Oculus : B/Y, Bit 1, Mask 2
|
||||||
|
// Oculus : A/X, Bit 7, Mask 128
|
||||||
|
// Vive : Menu, Bit 1, Mask 2,
|
||||||
|
// Vive : Grip, Bit 2, Mask 4
|
||||||
|
var role = system.GetControllerRoleForTrackedDeviceIndex(i);
|
||||||
|
if (role == ETrackedControllerRole.LeftHand || role == ETrackedControllerRole.RightHand)
|
||||||
|
{
|
||||||
|
if (_overlayHand == 0 ||
|
||||||
|
(_overlayHand == 1 && role == ETrackedControllerRole.LeftHand) ||
|
||||||
|
(_overlayHand == 2 && role == ETrackedControllerRole.RightHand))
|
||||||
|
{
|
||||||
|
if (system.GetControllerState(i, ref state, (uint)Marshal.SizeOf(state)) &&
|
||||||
|
(state.ulButtonPressed & (_menuButton ? 2u : isOculus ? 128u : 4u)) != 0)
|
||||||
|
{
|
||||||
|
_nextOverlayUpdate = DateTime.MinValue;
|
||||||
|
if (role == ETrackedControllerRole.LeftHand)
|
||||||
|
{
|
||||||
|
Array.Copy(_translationLeft, _translation, 3);
|
||||||
|
Array.Copy(_rotationLeft, _rotation, 3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Array.Copy(_translationRight, _translation, 3);
|
||||||
|
Array.Copy(_rotationRight, _rotation, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
overlayIndex = i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
var type = string.Empty;
|
var type = string.Empty;
|
||||||
if (devClass == ETrackedDeviceClass.Controller)
|
if (devClass == ETrackedDeviceClass.Controller)
|
||||||
{
|
|
||||||
if (role == ETrackedControllerRole.LeftHand)
|
|
||||||
{
|
{
|
||||||
type = "leftController";
|
if (role == ETrackedControllerRole.LeftHand)
|
||||||
|
{
|
||||||
|
type = "leftController";
|
||||||
|
}
|
||||||
|
else if (role == ETrackedControllerRole.RightHand)
|
||||||
|
{
|
||||||
|
type = "rightController";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
type = "controller";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (role == ETrackedControllerRole.RightHand)
|
else if (devClass == ETrackedDeviceClass.GenericTracker)
|
||||||
{
|
{
|
||||||
type = "rightController";
|
type = "tracker";
|
||||||
}
|
}
|
||||||
else
|
else if (devClass == ETrackedDeviceClass.TrackingReference)
|
||||||
{
|
{
|
||||||
type = "controller";
|
type = "base";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if (devClass == ETrackedDeviceClass.GenericTracker)
|
|
||||||
{
|
|
||||||
type = "tracker";
|
|
||||||
}
|
|
||||||
else if (devClass == ETrackedDeviceClass.TrackingReference)
|
|
||||||
{
|
|
||||||
type = "base";
|
|
||||||
}
|
|
||||||
|
|
||||||
var item = new[]
|
var item = new[]
|
||||||
{
|
{
|
||||||
type,
|
type,
|
||||||
system.IsTrackedDeviceConnected(i)
|
system.IsTrackedDeviceConnected(i)
|
||||||
? "connected"
|
? "connected"
|
||||||
@@ -524,18 +524,18 @@ namespace VRCX
|
|||||||
(batteryPercentage * 100).ToString(),
|
(batteryPercentage * 100).ToString(),
|
||||||
poses[i].eTrackingResult.ToString()
|
poses[i].eTrackingResult.ToString()
|
||||||
};
|
};
|
||||||
_deviceListLock.EnterWriteLock();
|
_deviceListLock.EnterWriteLock();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_deviceList.Add(item);
|
_deviceList.Add(item);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
_deviceListLock.ExitWriteLock();
|
_deviceListLock.ExitWriteLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
@@ -366,82 +366,82 @@ namespace VRCX
|
|||||||
case ETrackedDeviceClass.Controller:
|
case ETrackedDeviceClass.Controller:
|
||||||
case ETrackedDeviceClass.GenericTracker:
|
case ETrackedDeviceClass.GenericTracker:
|
||||||
case ETrackedDeviceClass.TrackingReference:
|
case ETrackedDeviceClass.TrackingReference:
|
||||||
{
|
|
||||||
var err = ETrackedPropertyError.TrackedProp_Success;
|
|
||||||
var batteryPercentage = system.GetFloatTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_DeviceBatteryPercentage_Float, ref err);
|
|
||||||
if (err != ETrackedPropertyError.TrackedProp_Success)
|
|
||||||
{
|
{
|
||||||
batteryPercentage = 1f;
|
var err = ETrackedPropertyError.TrackedProp_Success;
|
||||||
}
|
var batteryPercentage = system.GetFloatTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_DeviceBatteryPercentage_Float, ref err);
|
||||||
|
if (err != ETrackedPropertyError.TrackedProp_Success)
|
||||||
err = ETrackedPropertyError.TrackedProp_Success;
|
|
||||||
var isCharging = system.GetBoolTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_DeviceIsCharging_Bool, ref err);
|
|
||||||
if (err != ETrackedPropertyError.TrackedProp_Success)
|
|
||||||
{
|
|
||||||
isCharging = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
sb.Clear();
|
|
||||||
system.GetStringTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_TrackingSystemName_String, sb, (uint)sb.Capacity, ref err);
|
|
||||||
var isOculus = sb.ToString().IndexOf("oculus", StringComparison.OrdinalIgnoreCase) >= 0;
|
|
||||||
// Oculus : B/Y, Bit 1, Mask 2
|
|
||||||
// Oculus : A/X, Bit 7, Mask 128
|
|
||||||
// Vive : Menu, Bit 1, Mask 2,
|
|
||||||
// Vive : Grip, Bit 2, Mask 4
|
|
||||||
var role = system.GetControllerRoleForTrackedDeviceIndex(i);
|
|
||||||
if (role == ETrackedControllerRole.LeftHand || role == ETrackedControllerRole.RightHand)
|
|
||||||
{
|
|
||||||
if (_overlayHand == 0 ||
|
|
||||||
(_overlayHand == 1 && role == ETrackedControllerRole.LeftHand) ||
|
|
||||||
(_overlayHand == 2 && role == ETrackedControllerRole.RightHand))
|
|
||||||
{
|
{
|
||||||
if (system.GetControllerState(i, ref state, (uint)Marshal.SizeOf(state)) &&
|
batteryPercentage = 1f;
|
||||||
(state.ulButtonPressed & (_menuButton ? 2u : isOculus ? 128u : 4u)) != 0)
|
}
|
||||||
{
|
|
||||||
_nextOverlayUpdate = DateTime.MinValue;
|
|
||||||
if (role == ETrackedControllerRole.LeftHand)
|
|
||||||
{
|
|
||||||
Array.Copy(_translationLeft, _translation, 3);
|
|
||||||
Array.Copy(_rotationLeft, _rotation, 3);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Array.Copy(_translationRight, _translation, 3);
|
|
||||||
Array.Copy(_rotationRight, _rotation, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
overlayIndex = i;
|
err = ETrackedPropertyError.TrackedProp_Success;
|
||||||
|
var isCharging = system.GetBoolTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_DeviceIsCharging_Bool, ref err);
|
||||||
|
if (err != ETrackedPropertyError.TrackedProp_Success)
|
||||||
|
{
|
||||||
|
isCharging = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.Clear();
|
||||||
|
system.GetStringTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_TrackingSystemName_String, sb, (uint)sb.Capacity, ref err);
|
||||||
|
var isOculus = sb.ToString().IndexOf("oculus", StringComparison.OrdinalIgnoreCase) >= 0;
|
||||||
|
// Oculus : B/Y, Bit 1, Mask 2
|
||||||
|
// Oculus : A/X, Bit 7, Mask 128
|
||||||
|
// Vive : Menu, Bit 1, Mask 2,
|
||||||
|
// Vive : Grip, Bit 2, Mask 4
|
||||||
|
var role = system.GetControllerRoleForTrackedDeviceIndex(i);
|
||||||
|
if (role == ETrackedControllerRole.LeftHand || role == ETrackedControllerRole.RightHand)
|
||||||
|
{
|
||||||
|
if (_overlayHand == 0 ||
|
||||||
|
(_overlayHand == 1 && role == ETrackedControllerRole.LeftHand) ||
|
||||||
|
(_overlayHand == 2 && role == ETrackedControllerRole.RightHand))
|
||||||
|
{
|
||||||
|
if (system.GetControllerState(i, ref state, (uint)Marshal.SizeOf(state)) &&
|
||||||
|
(state.ulButtonPressed & (_menuButton ? 2u : isOculus ? 128u : 4u)) != 0)
|
||||||
|
{
|
||||||
|
_nextOverlayUpdate = DateTime.MinValue;
|
||||||
|
if (role == ETrackedControllerRole.LeftHand)
|
||||||
|
{
|
||||||
|
Array.Copy(_translationLeft, _translation, 3);
|
||||||
|
Array.Copy(_rotationLeft, _rotation, 3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Array.Copy(_translationRight, _translation, 3);
|
||||||
|
Array.Copy(_rotationRight, _rotation, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
overlayIndex = i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
var type = string.Empty;
|
var type = string.Empty;
|
||||||
if (devClass == ETrackedDeviceClass.Controller)
|
if (devClass == ETrackedDeviceClass.Controller)
|
||||||
{
|
|
||||||
if (role == ETrackedControllerRole.LeftHand)
|
|
||||||
{
|
{
|
||||||
type = "leftController";
|
if (role == ETrackedControllerRole.LeftHand)
|
||||||
|
{
|
||||||
|
type = "leftController";
|
||||||
|
}
|
||||||
|
else if (role == ETrackedControllerRole.RightHand)
|
||||||
|
{
|
||||||
|
type = "rightController";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
type = "controller";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (role == ETrackedControllerRole.RightHand)
|
else if (devClass == ETrackedDeviceClass.GenericTracker)
|
||||||
{
|
{
|
||||||
type = "rightController";
|
type = "tracker";
|
||||||
}
|
}
|
||||||
else
|
else if (devClass == ETrackedDeviceClass.TrackingReference)
|
||||||
{
|
{
|
||||||
type = "controller";
|
type = "base";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if (devClass == ETrackedDeviceClass.GenericTracker)
|
|
||||||
{
|
|
||||||
type = "tracker";
|
|
||||||
}
|
|
||||||
else if (devClass == ETrackedDeviceClass.TrackingReference)
|
|
||||||
{
|
|
||||||
type = "base";
|
|
||||||
}
|
|
||||||
|
|
||||||
var item = new[]
|
var item = new[]
|
||||||
{
|
{
|
||||||
type,
|
type,
|
||||||
system.IsTrackedDeviceConnected(i)
|
system.IsTrackedDeviceConnected(i)
|
||||||
? "connected"
|
? "connected"
|
||||||
@@ -452,18 +452,18 @@ namespace VRCX
|
|||||||
(batteryPercentage * 100).ToString(),
|
(batteryPercentage * 100).ToString(),
|
||||||
poses[i].eTrackingResult.ToString()
|
poses[i].eTrackingResult.ToString()
|
||||||
};
|
};
|
||||||
_deviceListLock.EnterWriteLock();
|
_deviceListLock.EnterWriteLock();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_deviceList.Add(item);
|
_deviceList.Add(item);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
_deviceListLock.ExitWriteLock();
|
_deviceListLock.ExitWriteLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019 pypy. All rights reserved.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
// For a copy, see <https://opensource.org/licenses/MIT>.
|
// For a copy, see <https://opensource.org/licenses/MIT>.
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2022 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2019 pypy & Natsumi
|
Copyright (c) 2019-2025 pypy and individual contributors.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2024 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
//
|
//
|
||||||
// Copyright(c) 2019-2021 pypy and individual contributors.
|
// Copyright(c) 2019-2025 pypy and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ mixin loginPage
|
|||||||
.x-legal-notice-container
|
.x-legal-notice-container
|
||||||
div(style='text-align: center; font-size: 12px')
|
div(style='text-align: center; font-size: 12px')
|
||||||
p #[a.x-link(@click='openExternalLink("https://vrchat.com/home/password")') {{ $t('view.login.forgotPassword') }}]
|
p #[a.x-link(@click='openExternalLink("https://vrchat.com/home/password")') {{ $t('view.login.forgotPassword') }}]
|
||||||
p © 2019-2024 #[a.x-link(@click='openExternalLink("https://github.com/pypy-vrc")') pypy] & #[a.x-link(@click='openExternalLink("https://github.com/Natsumi-sama")') Natsumi]
|
p © 2019-2025 #[a.x-link(@click='openExternalLink("https://github.com/pypy-vrc")') pypy] & #[a.x-link(@click='openExternalLink("https://github.com/Natsumi-sama")') Natsumi]
|
||||||
p {{ $t('view.settings.general.legal_notice.info') }}
|
p {{ $t('view.settings.general.legal_notice.info') }}
|
||||||
p {{ $t('view.settings.general.legal_notice.disclaimer1') }}
|
p {{ $t('view.settings.general.legal_notice.disclaimer1') }}
|
||||||
p {{ $t('view.settings.general.legal_notice.disclaimer2') }}
|
p {{ $t('view.settings.general.legal_notice.disclaimer2') }}
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ mixin settingsTab
|
|||||||
.options-container(style='margin-top: 45px; border-top: 1px solid #eee; padding-top: 30px')
|
.options-container(style='margin-top: 45px; border-top: 1px solid #eee; padding-top: 30px')
|
||||||
span.header {{ $t('view.settings.general.legal_notice.header') }}
|
span.header {{ $t('view.settings.general.legal_notice.header') }}
|
||||||
.options-container-item
|
.options-container-item
|
||||||
p © 2019-2024 #[a.x-link(@click='openExternalLink("https://github.com/pypy-vrc")') pypy] & #[a.x-link(@click='openExternalLink("https://github.com/Natsumi-sama")') Natsumi]
|
p © 2019-2025 #[a.x-link(@click='openExternalLink("https://github.com/pypy-vrc")') pypy] & #[a.x-link(@click='openExternalLink("https://github.com/Natsumi-sama")') Natsumi]
|
||||||
p {{ $t('view.settings.general.legal_notice.info') }}
|
p {{ $t('view.settings.general.legal_notice.info') }}
|
||||||
p {{ $t('view.settings.general.legal_notice.disclaimer1') }}
|
p {{ $t('view.settings.general.legal_notice.disclaimer1') }}
|
||||||
p {{ $t('view.settings.general.legal_notice.disclaimer2') }}
|
p {{ $t('view.settings.general.legal_notice.disclaimer2') }}
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
//
|
//
|
||||||
// Copyright(c) 2019-2021 pypy and individual contributors.
|
// Copyright(c) 2019-2025 pypy and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright(c) 2019-2024 pypy, Natsumi and individual contributors.
|
// Copyright(c) 2019-2025 pypy, Natsumi and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
//
|
//
|
||||||
// Copyright(c) 2019-2021 pypy and individual contributors.
|
// Copyright(c) 2019-2025 pypy and individual contributors.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This work is licensed under the terms of the MIT license.
|
// This work is licensed under the terms of the MIT license.
|
||||||
|
|||||||
Reference in New Issue
Block a user