123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using System.Collections;
- using System.Linq;
-
- namespace Unity.VisualScripting
- {
- /// <summary>
- /// Counts all items in a collection or enumeration.
- /// </summary>
- [UnitCategory("Collections")]
- public sealed class CountItems : Unit
- {
- /// <summary>
- /// The collection.
- /// </summary>
- [DoNotSerialize]
- [PortLabelHidden]
- public ValueInput collection { get; private set; }
-
- /// <summary>
- /// The number of items contained in the collection.
- /// </summary>
- [DoNotSerialize]
- [PortLabelHidden]
- public ValueOutput count { get; private set; }
-
- protected override void Definition()
- {
- collection = ValueInput<IEnumerable>(nameof(collection));
- count = ValueOutput(nameof(count), Count);
-
- Requirement(collection, count);
- }
-
- public int Count(Flow flow)
- {
- var enumerable = flow.GetValue<IEnumerable>(collection);
-
- if (enumerable is ICollection)
- {
- return ((ICollection)enumerable).Count;
- }
- else
- {
- return enumerable.Cast<object>().Count();
- }
- }
- }
- }
|