Guest User

Untitled

a guest
Nov 18th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.85 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using UnityEngine;
  7.  
  8. [AddOnNewScene]
  9. public class MultiplayerDynamicBonesStandalone : MonoBehaviour
  10. {
  11.     private bool active;
  12.     private bool allDisabled;
  13.     private Dictionary<DBID, DynamicBone> originalSettings;
  14.  
  15.     void Start()
  16.     {
  17.         active = false;
  18.         allDisabled = false;
  19.         originalSettings = new Dictionary<DBID, DynamicBone>();
  20.     }
  21.  
  22.     void Update()
  23.     {
  24.         if (Input.GetKeyDown(KeyCode.B))
  25.         {
  26.             active = !active;
  27.             if (allDisabled)
  28.             {
  29.                 allDisabled = !allDisabled;
  30.                 ToggleDynamicBones();
  31.             }
  32.             DynamicBones();
  33.         }
  34.         if (Input.GetKeyDown(KeyCode.D))
  35.         {
  36.             allDisabled = !allDisabled;
  37.             ToggleDynamicBones();
  38.         }
  39.     }
  40.  
  41.     void ToggleDynamicBones()
  42.     {
  43.         if (allDisabled)
  44.         {
  45.             if (originalSettings.Count == 0)
  46.             {
  47.                 active = true;
  48.                 DynamicBones();
  49.                 active = false;
  50.                 DynamicBones();
  51.             }
  52.             foreach (DynamicBone db in originalSettings.Values.ToArray())
  53.             {
  54.                 db.enabled = false;
  55.             }
  56.         }
  57.         else
  58.         {
  59.             foreach (DynamicBone db in originalSettings.Values.ToArray())
  60.             {
  61.                 db.enabled = true;
  62.             }
  63.         }
  64.     }
  65.  
  66.     void DynamicBones()
  67.     {
  68.         if (active)
  69.         {
  70.             List<DynamicBone> dynamicBones = new List<DynamicBone>();
  71.             List<DynamicBoneCollider> dynamicBonesColliders = new List<DynamicBoneCollider>();
  72.             foreach (GameObject gameObject in base.gameObject.scene.GetRootGameObjects())
  73.             {
  74.                 if (gameObject.activeInHierarchy && gameObject.name.Contains("VRCPlayer"))
  75.                 {
  76.                     foreach(DynamicBone db in gameObject.GetComponentsInChildren<DynamicBone>(true))
  77.                     {
  78.                         dynamicBones.Add(db);
  79.                         if (db.gameObject.GetComponent<DBID>() == null)
  80.                         {
  81.                             db.gameObject.AddComponent<DBID>();
  82.                             originalSettings.Add(db.gameObject.GetComponent<DBID>(), db);
  83.                         }
  84.  
  85.                     }
  86.                     dynamicBonesColliders.AddRange(gameObject.GetComponentsInChildren<DynamicBoneCollider>(true));
  87.                 }
  88.             }
  89.             foreach (DynamicBone dynamicBone in dynamicBones)
  90.             {
  91.                 foreach (DynamicBoneCollider collider in dynamicBonesColliders)
  92.                 {
  93.                     if (!dynamicBone.m_Colliders.Contains(collider))
  94.                     {
  95.                         dynamicBone.m_Colliders.Add(collider);
  96.                     }
  97.                 }
  98.                 dynamicBone.enabled = false;
  99.                 dynamicBone.m_DistanceToObject = 10f;
  100.                 dynamicBone.m_DistantDisable = true;
  101.                 dynamicBone.enabled = true;
  102.             }
  103.         }
  104.         else
  105.         {
  106.             foreach (GameObject gameObject in base.gameObject.scene.GetRootGameObjects())
  107.             {
  108.                 if (gameObject.activeInHierarchy && gameObject.name.Contains("VRCPlayer"))
  109.                 {
  110.                     foreach (DBID dbid in gameObject.GetComponentsInChildren<DBID>())
  111.                     {
  112.                         DynamicBone db = dbid.gameObject.GetComponent<DynamicBone>();
  113.                         db = originalSettings[dbid];
  114.                     }
  115.                 }
  116.             }
  117.         }
  118.     }
  119. }
  120.  
  121. public class DBID : MonoBehaviour
  122. {
  123.     public string ID;
  124.     void Start()
  125.     {
  126.         ID = Guid.NewGuid().ToString();
  127.     }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment