Ejemplo n.º 1
0
        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;;
        }
Ejemplo n.º 2
0
 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);
     }
 }
Ejemplo n.º 3
0
    // 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);
    }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
    // 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);
        }
    }
Ejemplo n.º 6
0
 internal Navigator(IkController ikController, SparkFunSerial16X2Lcd display, Gps.Gps gps)
 {
     _ikController = ikController;
     _gps          = gps;
     _display      = display;
 }