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}