public void AddModifier(IPoseModifier obj) { if (obj == null) { return; } if (modifierSet == null) { modifierSet = new OrderedIndexedSet <IPoseModifier>(); modifierSet.Add(obj); } else if (!modifierSet.Contains(obj)) { // insert obj with right priority order if (obj.priority > modifierSet[modifierSet.Count - 1].priority) { modifierSet.Add(obj); } else { for (int i = 0, imax = modifierSet.Count; i < imax; ++i) { if (obj.priority <= modifierSet[i].priority) { modifierSet.Insert(i, obj); break; } } } } }
protected bool AddGrabber(TGrabber grabber) { if (grabber == null || m_grabbers.Contains(grabber)) { return(false); } CheckRecursiveException("AddGrabber"); if (isGrabbed && m_beforeGrabberReleased != null) { m_grabMutex = true; m_beforeGrabberReleased(); m_grabMutex = false; } m_grabbers.Add(grabber); currentGrabber = grabber; if (m_afterGrabberGrabbed != null) { m_afterGrabberGrabbed(); } return(true); }
public void AddModifier(IPoseModifier obj) { if (obj == null) { return; } if (modifierSet == null) { modifierSet = new OrderedIndexedSet <IPoseModifier>(); modifierSet.Add(obj); } else if (!modifierSet.Contains(obj)) { for (int i = modifierSet.Count - 1; i >= 0; --i) { if (modifierSet[i].priority <= obj.priority) { modifierSet.Insert(i + 1, obj); } } } }
public void RefreshSelectedRoleBindings() { var roleMap = m_roleSetButtonList[m_selectedRoleIndex].roleMap; var bindingTable = roleMap.BindingTable; // update bound device list and keep the original order for (int i = 0, imax = m_boundDevices.Count; i < imax; ++i) { m_tempDevices.Add(m_boundDevices[i]); } for (int i = 0, imax = bindingTable.Count; i < imax; ++i) { var boundDevice = bindingTable.GetKeyByIndex(i); if (!m_tempDevices.Remove(boundDevice)) { m_boundDevices.Add(boundDevice); } } for (int i = 0, imax = m_tempDevices.Count; i < imax; ++i) { m_boundDevices.Remove(m_tempDevices[i]); } m_tempDevices.Clear(); if (m_bindingList.Count == 0) { m_bindingList.Add(m_bindingItem); m_bindingItem.onEditPress += StartEditBinding; m_bindingItem.onRemovePress += RemoveBinding; } var bindingIndex = 0; for (int max = m_boundDevices.Count; bindingIndex < max; ++bindingIndex) { BindingInterfaceRoleSetBindingItem item; if (bindingIndex >= m_bindingList.Count) { var itemObj = Instantiate(m_bindingItem.gameObject); itemObj.transform.SetParent(m_bindingItem.transform.parent, false); // set child index to secnd last, last index is for add item itemObj.transform.SetSiblingIndex(itemObj.transform.parent.childCount - 2); m_bindingList.Add(item = itemObj.GetComponent <BindingInterfaceRoleSetBindingItem>()); item.onEditPress += StartEditBinding; item.onRemovePress += RemoveBinding; } else { item = m_bindingList[bindingIndex]; } item.gameObject.SetActive(true); item.deviceSN = m_boundDevices[bindingIndex]; item.isEditing = isEditing && item.deviceSN == m_editingDevice; item.isHeighLight = hasHeightLight && item.deviceSN == m_heighLightDevice; item.RefreshDisplayInfo(roleMap); } // FIXME: issue in 2017.2.0b2, item won't refresh at the first time, force refresh m_bindingItem.transform.parent.gameObject.SetActive(false); m_bindingItem.transform.parent.gameObject.SetActive(true); for (int max = m_bindingList.Count; bindingIndex < max; ++bindingIndex) { m_bindingList[bindingIndex].gameObject.SetActive(false); } }