public static void Display(string qName, Quaternion q, Vector3 anchorPos, Color color, float vectorSizeMultiplier, bool displayAngle) { if (!instance) { Debug.LogError("No QuaternionDisplayService in the scene!"); return; } if (dicoQuatDisplay == null) { dicoQuatDisplay = new Dictionary <string, LogicalQuaternionDisplay>(); } LogicalQuaternionDisplay qDisplay; if (!dicoQuatDisplay.TryGetValue(qName, out qDisplay)) { VectorDisplay vectorDisplay = Instantiate(instance.m_VectorDisplayPrefab); vectorDisplay.name = qName + "_VECTOR_DISPLAY"; vectorDisplay.transform.SetParent(instance ? instance.transform : null); qDisplay = new LogicalQuaternionDisplay(qName, vectorDisplay); dicoQuatDisplay.Add(qName, qDisplay); } qDisplay.DisplayVector(q, anchorPos, color, vectorSizeMultiplier, displayAngle); }
void OnGUI() { if (dicoQuatDisplay == null || dicoQuatDisplay.Count == 0) { return; } foreach (var item in dicoQuatDisplay) { LogicalQuaternionDisplay qDisplay = item.Value; qDisplay.DisplayUI(); } }
void Update() { if (dicoQuatDisplay != null && dicoQuatDisplay.Count > 0) { List <LogicalQuaternionDisplay> toBeRemoved = new List <LogicalQuaternionDisplay>(); foreach (var item in dicoQuatDisplay.Values) { if (Time.frameCount - item.latestDisplayFrame > 1) { toBeRemoved.Add(item); } } for (int i = 0; i < toBeRemoved.Count; i++) { LogicalQuaternionDisplay qDisplay = toBeRemoved[i]; Destroy(qDisplay.gameObject); dicoQuatDisplay.Remove(qDisplay.name); } } }