Example #1
0
        /// <summary>
        /// Returns a pair of connectors at distinct positions on tile which match glue1 and glue2 in GlueRelation.
        /// If no such pair exist, then both returned connectors are null.
        /// Method is used for insertion of the "tile" between existing connectors with "glue1" and "glue2"
        /// </summary>
        public Tuple <ConnectorOnTile, ConnectorOnTile> MatchingConectors(Tile tile, Glue glue1, Glue glue2)
        {
            ConnectorOnTile conn2 = null;
            var             conn1 = tile.Connectors.FirstOrDefault(
                connector1 => tile.Vertices.ContainsPoint(connector1.Positions[0]) &&
                GlueRelation.MatchAsymmetric(glue1, connector1.Glue) &&
                (conn2 = tile.Connectors.FirstOrDefault(
                     connector2 => !connector1.Positions[0].MyEquals(connector2.Positions[0]) &&
                     tile.Vertices.ContainsPoint(connector2.Positions[0]) &&
                     GlueRelation.MatchAsymmetric(glue2, connector2.Glue)))
                != null);

            return(Tuple.Create(conn1, conn2));
        }