diff --git a/Viagg-io/Assets/Packages/MyBT/BTC/BTC.cs b/Viagg-io/Assets/Packages/MyBT/BTC/BTC.cs index b94e1910..428a5a52 100644 --- a/Viagg-io/Assets/Packages/MyBT/BTC/BTC.cs +++ b/Viagg-io/Assets/Packages/MyBT/BTC/BTC.cs @@ -61,23 +61,49 @@ public class BTC : MonoBehaviour { } public List namedObjects = new List(); + private Dictionary namedLookup = new(); + + private void OnEnable() + { + BuildLookup(); + } #region update list of objects in rooms public void ClearObjects() { - namedObjects = new List(); + //namedObjects = new List(); + namedObjects.Clear(); + namedLookup.Clear(); } - public T GetNamedObject(string objectName) where T : ComponentController { + /* public T GetNamedObject(string objectName) where T : ComponentController { for (int i = namedObjects.Count - 1; i >= 0; i--) { T ngo = namedObjects[i] as T; if (ngo != null) { // if name equals if (ngo.objectName == objectName) { + Debug.Log("BTC returns namedObject"); return ngo; } } } return null; + }*/ + + public void BuildLookup() + { + namedLookup.Clear(); + foreach (var ctrl in namedObjects) + { + if (!string.IsNullOrEmpty(ctrl.objectName)) + namedLookup[ctrl.objectName] = ctrl; + } + } + + public T GetNamedObject(string objectName) where T : ComponentController + { + if (namedLookup.TryGetValue(objectName, out var obj)) + return obj as T; + return null; } public List GetHandlers (string objectName) {