public SerializableItem Remove(string itemName) { if (!root) { return(null); } SerializableItem result = null; LinkedTransform next = root, prev = null, temp = null; do { if (itemName.Equals(next.itemDisplayProxy._name)) { result = next.stack.take(); if (next.stack.empty) { //TODO: at this point, does the linkedtransform destroy itself / get destroyed? Remove(prev, next); } return(result); } temp = next; prev = next; next = temp.child; } while (next.child); return(null); }
private void setRoot(LinkedTransform _root) { root = _root; if (root) { root.transform.position = anchor.position; root.transform.SetParent(anchor); } }
private void Remove(LinkedTransform prev, LinkedTransform remove) { if (!prev) { setRoot(remove.child); return; } prev.child = remove.child; }
private IEnumerable <LinkedTransform> getLinks() { LinkedTransform next = root; while (next) { yield return(next); next = next.child; } }
public ItemDisplayProxy Add(SerializableItem item) { LinkedTransform lt = getLinkedTransform(item.name); if (lt && lt.stack) { lt.stack.add(item); } else { lt = add(new ItemStack(item)); } return(lt.itemDisplayProxy); }
private LinkedTransform add(ItemStack stack) { if (!root) { if (stack == null) { return(null); } setRoot(new LinkedTransform(stack)); return(root); } LinkedTransform last = root; while (last.child) { last = last.child; } if (stack == null) { return(last); } last.child = new LinkedTransform(stack); return(last.child); }