Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using UnityEngine;
- [AddOnNewScene]
- public class MultiplayerDynamicBonesStandalone : MonoBehaviour
- {
- private bool active;
- private bool allDisabled;
- private Dictionary<DBID, DynamicBone> originalSettings;
- void Start()
- {
- active = false;
- allDisabled = false;
- originalSettings = new Dictionary<DBID, DynamicBone>();
- }
- void Update()
- {
- if (Input.GetKeyDown(KeyCode.B))
- {
- active = !active;
- if (allDisabled)
- {
- allDisabled = !allDisabled;
- ToggleDynamicBones();
- }
- DynamicBones();
- }
- if (Input.GetKeyDown(KeyCode.D))
- {
- allDisabled = !allDisabled;
- ToggleDynamicBones();
- }
- }
- void ToggleDynamicBones()
- {
- if (allDisabled)
- {
- if (originalSettings.Count == 0)
- {
- active = true;
- DynamicBones();
- active = false;
- DynamicBones();
- }
- foreach (DynamicBone db in originalSettings.Values.ToArray())
- {
- db.enabled = false;
- }
- }
- else
- {
- foreach (DynamicBone db in originalSettings.Values.ToArray())
- {
- db.enabled = true;
- }
- }
- }
- void DynamicBones()
- {
- if (active)
- {
- List<DynamicBone> dynamicBones = new List<DynamicBone>();
- List<DynamicBoneCollider> dynamicBonesColliders = new List<DynamicBoneCollider>();
- foreach (GameObject gameObject in base.gameObject.scene.GetRootGameObjects())
- {
- if (gameObject.activeInHierarchy && gameObject.name.Contains("VRCPlayer"))
- {
- foreach(DynamicBone db in gameObject.GetComponentsInChildren<DynamicBone>(true))
- {
- dynamicBones.Add(db);
- if (db.gameObject.GetComponent<DBID>() == null)
- {
- db.gameObject.AddComponent<DBID>();
- originalSettings.Add(db.gameObject.GetComponent<DBID>(), db);
- }
- }
- dynamicBonesColliders.AddRange(gameObject.GetComponentsInChildren<DynamicBoneCollider>(true));
- }
- }
- foreach (DynamicBone dynamicBone in dynamicBones)
- {
- foreach (DynamicBoneCollider collider in dynamicBonesColliders)
- {
- if (!dynamicBone.m_Colliders.Contains(collider))
- {
- dynamicBone.m_Colliders.Add(collider);
- }
- }
- dynamicBone.enabled = false;
- dynamicBone.m_DistanceToObject = 10f;
- dynamicBone.m_DistantDisable = true;
- dynamicBone.enabled = true;
- }
- }
- else
- {
- foreach (GameObject gameObject in base.gameObject.scene.GetRootGameObjects())
- {
- if (gameObject.activeInHierarchy && gameObject.name.Contains("VRCPlayer"))
- {
- foreach (DBID dbid in gameObject.GetComponentsInChildren<DBID>())
- {
- DynamicBone db = dbid.gameObject.GetComponent<DynamicBone>();
- db = originalSettings[dbid];
- }
- }
- }
- }
- }
- }
- public class DBID : MonoBehaviour
- {
- public string ID;
- void Start()
- {
- ID = Guid.NewGuid().ToString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment