A game about forced loneliness, made by TACStudios
1namespace Unity.VisualScripting 2{ 3 /// <summary> 4 /// Gets the value of a field or property via reflection. 5 /// </summary> 6 public sealed class GetMember : MemberUnit 7 { 8 public GetMember() { } 9 10 public GetMember(Member member) : base(member) { } 11 12 [DoNotSerialize] 13 [MemberFilter(Fields = true, Properties = true, WriteOnly = false)] 14 public Member getter 15 { 16 get 17 { 18 return member; 19 } 20 set 21 { 22 member = value; 23 } 24 } 25 26 [DoNotSerialize] 27 [PortLabelHidden] 28 public ValueOutput value { get; private set; } 29 30 protected override void Definition() 31 { 32 base.Definition(); 33 34 value = ValueOutput(member.type, nameof(value), Value); 35 36 if (member.isPredictable) 37 { 38 value.Predictable(); 39 } 40 41 if (member.requiresTarget) 42 { 43 Requirement(target, value); 44 } 45 } 46 47 protected override bool IsMemberValid(Member member) 48 { 49 return member.isAccessor && member.isGettable; 50 } 51 52 private object Value(Flow flow) 53 { 54 var target = member.requiresTarget ? flow.GetValue(this.target, member.targetType) : null; 55 56 return member.Get(target); 57 } 58 59 #region Analytics 60 61 public override AnalyticsIdentifier GetAnalyticsIdentifier() 62 { 63 var aid = new AnalyticsIdentifier 64 { 65 Identifier = $"{member.targetType.FullName}.{member.name}(Get)", 66 Namespace = member.targetType.Namespace 67 }; 68 aid.Hashcode = aid.Identifier.GetHashCode(); 69 return aid; 70 } 71 72 #endregion 73 } 74}