1using System.Collections;
2using System.Collections.Generic;
7using Valve.VR.InteractionSystem;
16 private readonly Dictionary<string, GameObject> genericTools =
new Dictionary<string, GameObject>();
24 foreach (var tool
in tools)
26 tool.SetActive(
false);
35 foreach (var tool
in tools)
37 tool.SetActive(
false);
42 return tools.Contains(tool) || genericTools.ContainsValue(tool) || tool.GetComponent<
ToolGO>();
53 foreach (var t
in tools)
61 foreach (var item
in genericTools)
63 if (item.Value.name == tool)
75 foreach (var blue
in allBlue)
77 if (blue.name.Contains(tool.name))
return blue.gameObject;
79 var fallback = GameObject.Find(tool.name +
"_blue");
85 if (genericTools.ContainsKey(toolHash))
87 return genericTools[toolHash];
92 genericTools.Add(toolHash, tool);
95 var blue = Instantiate(tool);
96 RecursiveBlueJob(blue.transform);
97 blue.SetActive(
false);
98 blue.name = tool.name +
"_blue";
99 var ltm = blue.AddComponent<
LerpToMe>();
101 var coll = blue.AddComponent<BoxCollider>();
103 var bounds =
new Bounds (transform.position, Vector3.one);
104 var renderers = GetComponentsInChildren<Renderer>();
105 foreach (Renderer renderer
in renderers)
107 bounds.Encapsulate (renderer.bounds);
110 coll.center = bounds.center;
111 coll.size = bounds.size;
113 var isStatic = tool.GetComponent<
StaticGO>();
114 var hasRigidbody = tool.GetComponent<Rigidbody>();
117 var hasInteractable = tool.GetComponent<Interactable>();
128 tool.gameObject.AddComponent<Rigidbody>().isKinematic =
true;
136 if (!hasInteractable)
138 tool.gameObject.AddComponent<Interactable>();
150 private void RecursiveBlueJob(Transform parent)
152 var mr = parent.GetComponent<MeshRenderer>();
153 var coll = parent.GetComponent<Collider>();
156 var matnum = mr.materials.Length;
157 for (
int i = 0; i < matnum; i++)
167 foreach (Transform c
in parent)