123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using System.Collections;
- using System.Linq;
-
- namespace Unity.VisualScripting
- {
- /// <summary>
- /// Returns the first item in a collection or enumeration.
- /// </summary>
- [UnitCategory("Collections")]
- public sealed class FirstItem : Unit
- {
- /// <summary>
- /// The collection.
- /// </summary>
- [DoNotSerialize]
- [PortLabelHidden]
- public ValueInput collection { get; private set; }
-
- /// <summary>
- /// The first item of the collection.
- /// </summary>
- [DoNotSerialize]
- [PortLabelHidden]
- public ValueOutput firstItem { get; private set; }
-
- protected override void Definition()
- {
- collection = ValueInput<IEnumerable>(nameof(collection));
- firstItem = ValueOutput(nameof(firstItem), First);
-
- Requirement(collection, firstItem);
- }
-
- public object First(Flow flow)
- {
- var enumerable = flow.GetValue<IEnumerable>(collection);
-
- if (enumerable is IList)
- {
- return ((IList)enumerable)[0];
- }
- else
- {
- return enumerable.Cast<object>().First();
- }
- }
- }
- }
|