private void OnEnable() { if (PlayerManager.GetAllPlayers() != null) { Player[] allPlayers = PlayerManager.GetAllPlayers(); GlobalDynamicBones.dynamicBones = new List <DynamicBoneSync>(allPlayers.Length); foreach (Player player in allPlayers) { DynamicBoneSync component = player.GetComponent <DynamicBoneSync>(); if (component != null) { Debug.Log("DynamicBoneSync toggle on: " + player.name); component.enabled = true; component.OnUpdateDynamics(); if (player != PlayerManager.GetCurrentPlayer()) { GlobalDynamicBones.dynamicBones.Add(component); } } else { GlobalDynamicBones.OnPlayerAdd(player); } } } }
private void OnDestroy() { if (GlobalDynamicBones.Instance == this) { GlobalDynamicBones.Instance = null; } }
private void Awake() { if (GlobalDynamicBones.Instance == null) { GlobalDynamicBones.Instance = this; return; } }
internal static void OnUpdateDynamics() { foreach (DynamicBoneSync dynamicBoneSync in GlobalDynamicBones.dynamicBones) { dynamicBoneSync.active = false; } GlobalDynamicBones.myColliders = GlobalDynamicBones.GetHandColliders(VRCPlayer.Instance); GlobalDynamicBones.myBones = VRCPlayer.Instance.GetComponentsInChildren <DynamicBone>(true); Debug.Log(string.Format("DynamicBoneSync: MyDynamicBones: {0} + MyColliders: {1}", GlobalDynamicBones.myBones.Length, GlobalDynamicBones.myColliders.Length)); }
private void Update() { if (RoomManagerBase.currentRoom == null || PlayerManager.GetCurrentPlayer() == null) { return; } GlobalDynamicBones.timeToUpdate -= Time.deltaTime; if (GlobalDynamicBones.timeToUpdate > 0f) { return; } GlobalDynamicBones.timeToUpdate = GlobalDynamicBones.updateTime; Player player = PlayerManager.GetCurrentPlayer(); if (player == null) { return; } if (player.vrcPlayer == null) { return; } if (player.vrcPlayer.avatarGameObject == null) { return; } Vector3 position = player.vrcPlayer.avatarGameObject.transform.position; float num = GlobalDynamicBones.maxDistance * GlobalDynamicBones.maxDistance; foreach (DynamicBoneSync dynamicBoneSync in GlobalDynamicBones.dynamicBones) { if ((dynamicBoneSync.transform.position - position).sqrMagnitude < num) { if (!dynamicBoneSync.active) { dynamicBoneSync.active = true; GlobalDynamicBones.ApplyColliders(dynamicBoneSync.bones, GlobalDynamicBones.myColliders); GlobalDynamicBones.ApplyColliders(GlobalDynamicBones.myBones, dynamicBoneSync.colliders); } } else if (dynamicBoneSync.active) { dynamicBoneSync.active = false; GlobalDynamicBones.RemoveColliders(dynamicBoneSync.bones, GlobalDynamicBones.myColliders); GlobalDynamicBones.RemoveColliders(GlobalDynamicBones.myBones, dynamicBoneSync.colliders); } } }
internal void OnUpdateDynamics() { this.player = base.GetComponent <VRC.Player>(); if (this.player == null) { return; } if (!(this.player != PlayerManager.GetCurrentPlayer())) { GlobalDynamicBones.OnUpdateDynamics(); return; } GlobalDynamicBones.RemoveColliders(GlobalDynamicBones.myBones, this.colliders); this.bones = base.GetComponentsInChildren <DynamicBone>(true); this.colliders = GlobalDynamicBones.GetHandColliders(this.player.vrcPlayer); this.active = false; }
internal void OnDestroy() { GlobalDynamicBones.OnPlayerDelete(this); }