public static CharacterPosition GetCharacterInfo() { HandOffset leftOffs = GetLeftHandOffs(); return(new CharacterPosition { headPos = WorldController.GetXRNodeWorldPosRot(XRNode.Head).Position, headRot = WorldController.GetXRNodeWorldPosRot(XRNode.Head).Rotation, leftHandPos = WorldController.GetXRNodeWorldPosRot(XRNode.LeftHand).Position + leftOffs.LeftHandPos, leftHandRot = WorldController.GetXRNodeWorldPosRot(XRNode.LeftHand).Rotation *leftOffs.LeftHandRot, rightHandPos = WorldController.GetXRNodeWorldPosRot(XRNode.RightHand).Position, rightHandRot = WorldController.GetXRNodeWorldPosRot(XRNode.RightHand).Rotation }); }
public void UpdatePlayerPacket() { _playerInfo.avatarHash = ModelSaberAPI.cachedAvatars.FirstOrDefault(x => x.Value == CustomAvatar.Plugin.Instance.PlayerAvatarManager.GetCurrentAvatar()).Key; if (_playerInfo.avatarHash == null) { _playerInfo.avatarHash = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"; } _playerInfo.playerName = SteamAPI.GetUserName(); _playerInfo.playerId = SteamAPI.GetUserID(); WorldController.CharacterPosition pos = WorldController.GetCharacterInfo(); _playerInfo.headPos = pos.headPos; _playerInfo.headRot = pos.headRot; _playerInfo.leftHandPos = pos.leftHandPos; _playerInfo.leftHandRot = pos.leftHandRot; _playerInfo.rightHandPos = pos.rightHandPos; _playerInfo.rightHandRot = pos.rightHandRot; }
void Update() { try { if (avatar != null && !forcePlayerPacket) { if (GameController.TPS < (1f / Time.smoothDeltaTime)) { interpolationProgress += Time.deltaTime * GameController.TPS; } else { interpolationProgress = 1f; } if (interpolationProgress > 1f) { interpolationProgress = 1f; } interpHeadPos = Vector3.Lerp(lastHeadPos, targetHeadPos, interpolationProgress); interpLeftHandPos = Vector3.Lerp(lastLeftHandPos, targetLeftHandPos, interpolationProgress); interpRightHandPos = Vector3.Lerp(lastRightHandPos, targetRightHandPos, interpolationProgress); interpHeadRot = Quaternion.Lerp(lastHeadRot, targetHeadRot, interpolationProgress); interpLeftHandRot = Quaternion.Lerp(lastLeftHandRot, targetLeftHandRot, interpolationProgress); interpRightHandRot = Quaternion.Lerp(lastRightHandRot, targetRightHandRot, interpolationProgress); transform.position = interpHeadPos; } } catch (Exception e) { Logger.Error("Unable to lerp avatar position! Exception: " + e); } try { if (IllusionInjector.PluginManager.Plugins.Any(x => x.Name == "CameraPlus") && _camera == null) { _camera = FindObjectsOfType <Camera>().FirstOrDefault(x => x.name == "Camera Plus"); } if (playerNameText) { playerNameText.rectTransform.rotation = Quaternion.LookRotation(playerNameText.rectTransform.position - WorldController.GetXRNodeWorldPosRot(XRNode.Head).Position); } } catch (Exception e) { Logger.Warning("Unable to rotate text to the camera! Exception: " + e); } }