/// <summary> /// Finds all nodes of a certain type containing one or more components matching the specified type and a given search predicate within a tree of nodes. /// </summary> /// <typeparam name="TNode">The type of the nodes to search in.</typeparam> /// <typeparam name="TComponent">The type of the components to look for.</typeparam> /// <param name="root">The root node where to start the search.</param> /// <param name="match">The search predicate. Typically specified as a Lambda expression.</param> /// <returns> /// All nodes of the specified type containing components matching both, type and predicate. /// </returns> public static IEnumerable <TNode> FindNodesWhereComponent <TNode, TComponent>(this SceneNodeContainer root, Predicate <TComponent> match) where TNode : SceneNodeContainer where TComponent : SceneComponentContainer { return(new SceneNodeWhereComponentEnumerable <TNode, TComponent> { _match = match, _rootList = SceneVisitorHelpers.SingleRootEnumerator(root) }); }
/// <summary> /// Performs a <see cref="Viserator{TItem,TState}"/> action on the specified tree. /// </summary> /// <typeparam name="TViserator">The type of the viserator.</typeparam> /// <typeparam name="TResult">The type of the elements resulting from the Viserate traversal.</typeparam> /// <param name="root">The root where to start the traversal.</param> /// <returns>All items yielded from within the traversal (see <see cref="ViseratorBase{TItem}.YieldItem"/>).</returns> public static IEnumerable <TResult> Viserate <TViserator, TResult>(this SceneNodeContainer root) where TViserator : ViseratorBase <TResult>, new() { return(new ViseratorEnumerable <TViserator, TResult> { _rootList = SceneVisitorHelpers.SingleRootEnumerator(root) }); }
/// <summary> /// Finds nodes of a certain type and matching the given search predicate within a tree of nodes. /// </summary> /// <typeparam name="TNode">The type of nodes to find.</typeparam> /// <param name="root">The root node where to start the search.</param> /// <param name="match">The search predicate. Typically specified as a Lambda expression.</param> /// <returns>All nodes of the specified type matching the predicate.</returns> public static IEnumerable <TNode> FindNodes <TNode>(this SceneNodeContainer root, Predicate <TNode> match) where TNode : SceneNodeContainer { return(new SceneNodeEnumerable <TNode> { _match = match, _rootList = SceneVisitorHelpers.SingleRootEnumerator(root) }); }
/// <summary> /// Finds all nodes containing one or more components matching a given search predicate within a tree of nodes. /// </summary> /// <param name="root">The root node where to start the search.</param> /// <param name="match">The search predicate. Typically specified as a Lambda expression.</param> /// <returns>All nodes containing matching components.</returns> public static IEnumerable <SceneNodeContainer> FindNodesWhereComponent(this SceneNodeContainer root, Predicate <SceneComponentContainer> match) { return(new SceneNodeWhereComponentEnumerable <SceneNodeContainer, SceneComponentContainer> { _match = match, _rootList = SceneVisitorHelpers.SingleRootEnumerator(root) }); }