/
TON618OFF
/
Unity-Project-RTU
Обзор
Документация
Войти
/
TON618OFF
/
Unity-Project-RTU
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Library/PackageCache/com.unity.visualscripting@1.9.4/Runtime/VisualScripting.Flow/Framework/Codebase/MemberUnit.cs
71 строка
2 KB
TON618OFF
release
03 окт 2024, 22:20
03 окт 2024, 22:20
7c70e9f
Код
Авторство
О чём код?
using System; using System.Collections.Generic; using UnityObject = UnityEngine.Object; namespace Unity.VisualScripting { [SpecialUnit] public abstract class MemberUnit : Unit, IAotStubbable { protected MemberUnit() : base() { } protected MemberUnit(Member member) : this() { this.member = member; } [Serialize] [MemberFilter(Fields = true, Properties = true, Methods = true, Constructors = true)] public Member member { get; set; } /// <summary> /// The target object. /// </summary> [DoNotSerialize] [PortLabelHidden] [NullMeansSelf] public ValueInput target { get; private set; } public override bool canDefine => member != null; protected override void Definition() { member.EnsureReflected(); if (!IsMemberValid(member)) { throw new NotSupportedException("The member type is not valid for this unit."); } if (member.requiresTarget) { target = ValueInput(member.targetType, nameof(target)); target.SetDefaultValue(member.targetType.PseudoDefault()); if (typeof(UnityObject).IsAssignableFrom(member.targetType)) { target.NullMeansSelf(); } } } protected abstract bool IsMemberValid(Member member); public override void Prewarm() { if (member != null && member.isReflected) { member.Prewarm(); } } public override IEnumerable<object> GetAotStubs(HashSet<object> visited) { if (member != null && member.isReflected) { yield return member.info; } } } }