Example #1
0
        private bool RemoveCollidingBond(uint instanceId, BondAttachment attachment, List <Bond> previousBonds, BondType newBondType)
        {
            bool result = true;

            if (!attachment.IsGuide() && bonds.ContainsKey(instanceId))
            {
                Bond cb = null;
                foreach (Bond b in bonds[instanceId])
                {
                    cb = b.GetCollidingBond(attachment);
                    if (cb != null)
                    {
                        break;
                    }
                }

                if (cb != null)
                {
                    bool oldIsFlow = cb.ChainType != ChainType.None;
                    bool newIsLock = newBondType == BondType.Lock;
                    // locks can't break flow bonds
                    if (oldIsFlow && newIsLock)
                    {
                        result = false;
                    }
                    else
                    {
                        RemoveBond(cb);
                        previousBonds.Add(cb);
                    }
                }
            }
            return(result);
        }