private readonly Stopwatch _dpadStopwatch = new Stopwatch(); //Basically a "debounce" internal Hexapi(IkController ikController, XboxController xboxController, Navigator navigator, SparkFunSerial16X2Lcd display, Gps.Gps gps, IoTClient ioTClient) { _ik = ikController; _xboxController = xboxController; _gps = gps; _navigator = navigator; _display = display; _ioTClient = ioTClient; _functionStopwatch.Start(); _dpadStopwatch.Start(); SetGaitOptions(); XboxController.LeftDirectionChanged += XboxController_LeftDirectionChanged; XboxController.RightDirectionChanged += XboxController_RightDirectionChanged; XboxController.DpadDirectionChanged += XboxController_DpadDirectionChanged; XboxController.LeftTriggerChanged += XboxController_LeftTriggerChanged; XboxController.RightTriggerChanged += XboxController_RightTriggerChanged; XboxController.FunctionButtonChanged += XboxController_FunctionButtonChanged; XboxController.BumperButtonChanged += XboxController_BumperButtonChanged; XboxController.DisconnectedEvent += XboxController_DisconnectedEvent;; }
private static void VrikInitPatch(VRCVrIkController __instance, Animator animator, VRCPlayer?__2) { if (__2 != null && __2.prop_Player_0?.prop_APIUser_0?.id == APIUser.CurrentUser?.id) { ourLastIkController = __instance.field_Private_IkController_0; ourLastInitializedIk = __instance.field_Private_VRIK_0; ourCachedSolver = new CachedSolver(ourLastInitializedIk.solver); var handler = new HumanPoseHandler(animator.avatar, animator.transform); var hips = animator.GetBoneTransform(HumanBodyBones.Hips); ourAnimationsHandler = new AnimationsHandler(handler, hips, in ourCachedSolver); ourCustomSpineSolver = new CustomSpineSolver(in ourCachedSolver); ourWallFreezeFixer = new WallFreezeFixer(__instance); HandOffsetsManager?.Dispose(); HandOffsetsManager = new HandOffsetsManager(__instance); } }
// Token: 0x060051E2 RID: 20962 RVA: 0x001C09CC File Offset: 0x001BEDCC public static Transform GetTrackedTransform(VRC_PlayerApi player, VRC_PlayerApi.TrackingDataType tt) { if (player == null) { return(null); } Transform result = null; if (tt != VRC_PlayerApi.TrackingDataType.Head) { if (tt != VRC_PlayerApi.TrackingDataType.LeftHand) { if (tt == VRC_PlayerApi.TrackingDataType.RightHand) { IkController componentInChildren = player.GetComponentInChildren <IkController>(); if (componentInChildren != null) { result = componentInChildren.RightEffector.transform; } } } else { IkController componentInChildren = player.GetComponentInChildren <IkController>(); if (componentInChildren != null) { result = componentInChildren.LeftEffector.transform; } } } else if (player.isLocal) { VRCTrackingManager vrctrackingManager = UnityEngine.Object.FindObjectOfType <VRCTrackingManager>(); if (vrctrackingManager != null) { Camera componentInChildren2 = vrctrackingManager.GetComponentInChildren <Camera>(); if (componentInChildren2 != null) { result = componentInChildren2.transform; } } } return(result); }
public async void Run(IBackgroundTaskInstance taskInstance) { _deferral = taskInstance.GetDeferral(); _display = new SparkFunSerial16X2Lcd(); _xboxController = new XboxController(_display); _ntripClient = new NtripClient("172.16.0.237", 8000, "", "", "", _display); //172.16.0.227 _ioTClient = new IoTClient(_display); _gps = new Gps.Gps(_display, _ntripClient); _inverseKinematics = new InverseKinematics(_display); _ikController = new IkController(_inverseKinematics, _display, _ioTClient, _gps); //Range and yaw/pitch/roll data from Arduino and SparkFun Razor IMU _navigator = new Navigator(_ikController, _display, _gps); _hexapi = new Hexapi(_ikController, _xboxController, _navigator, _display, _gps, _ioTClient); _initializeTasks.Add(_display.InitializeAsync()); _initializeTasks.Add(_xboxController.InitializeAsync()); _initializeTasks.Add(_ikController.InitializeAsync()); _initializeTasks.Add(_ntripClient.InitializeAsync()); _initializeTasks.Add(_gps.InitializeAsync()); _initializeTasks.Add(_inverseKinematics.InitializeAsync()); _initializeTasks.Add(_ioTClient.InitializeAsync()); _startTasks.Add(_ntripClient.StartAsync()); _startTasks.Add(_ikController.StartAsync()); _startTasks.Add(_gps.StartAsync()); _startTasks.Add(_inverseKinematics.StartAsync()); //_startTasks.Add(_ioTClient.StartAsync());//only needed if expecting messages from the server //foreach (var d in await SerialDeviceHelper.ListAvailablePorts()) //{ // await _ioTClient.SendEvent(d); //} await Task.WhenAll(_initializeTasks.ToArray()); await Task.WhenAll(_startTasks.ToArray()); }
// Token: 0x0600577A RID: 22394 RVA: 0x001E20CC File Offset: 0x001E04CC public void MeasureHumanAvatar(Animator A) { this.headTransform = A.GetBoneTransform(HumanBodyBones.Head); Transform transform = base.transform; A.transform.localPosition = Vector3.zero; transform.localPosition = Vector3.zero; VRC_AnimationController vrc_AnimationController = null; if (this._vrcPlayer != null) { vrc_AnimationController = this._vrcPlayer.GetComponentInChildren <VRC_AnimationController>(); } float a = 0f; float b = 0f; Transform boneTransform = A.GetBoneTransform(HumanBodyBones.LeftHand); Transform boneTransform2 = A.GetBoneTransform(HumanBodyBones.RightHand); if (boneTransform) { a = (this.headTransform.position - boneTransform.position).magnitude; } if (boneTransform2) { b = (this.headTransform.position - boneTransform2.position).magnitude; } float num = Mathf.Max(a, b); if (num > 0f) { this.currentAvatarArmLength = num; } else { this.currentAvatarArmLength = VRCTracking.DefaultArmLength; } Vector3 viewPosition = this.currentAvatarDescriptor.ViewPosition; this.currentAvatarEyeHeight = viewPosition.y; Vector3 headToViewPointOffset = viewPosition - transform.InverseTransformPoint(this.headTransform.position); headToViewPointOffset.z = -headToViewPointOffset.z; if (this.localPlayer) { VRCTrackingManager.SetAvatarViewPoint(viewPosition, headToViewPointOffset); } this.headScale = this.headTransform.localScale; GameObject gameObject = new GameObject("HmdPivot"); gameObject.transform.position = transform.TransformPoint(new Vector3(viewPosition.x, viewPosition.y, viewPosition.z)); gameObject.transform.SetParent(this.headTransform, true); gameObject.transform.rotation = transform.rotation; if (vrc_AnimationController != null) { this.maxHeadRadius = 0.5f * this.currentAvatarArmLength / VRCTracking.DefaultArmLength; IkController component = vrc_AnimationController.HeadAndHandsIkController.GetComponent <IkController>(); component.InitHeadEffector(A, this.localPlayer); } this.WasMeasured = true; if (this.localPlayer) { VRCTrackingManager.AdjustViewPositionToAvatar(); Vector3 neckToEyeOffset = base.transform.InverseTransformVector(gameObject.transform.position - this.headTransform.position); VRCVrCamera.GetInstance().SetNeckToEyeOffset(neckToEyeOffset); } }
internal Navigator(IkController ikController, SparkFunSerial16X2Lcd display, Gps.Gps gps) { _ikController = ikController; _gps = gps; _display = display; }