public static TargetLedger GetLedger(Component target, string memberName) { if (target == null) { return(null); } var ledger = target.GetComponent <CompoundStateLedger>(); if (ledger == null) { ledger = target.AddComponent <CompoundStateLedger>(); } var token = new Token(target, memberName); TargetLedger result; if (ledger._table.TryGetValue(token, out result)) { return(result); } result = TargetLedger.Create(ledger, target, memberName); ledger._table[new Token(target, memberName)] = result; return(result); }
internal static TargetLedger Create(CompoundStateLedger owner, Component target, string memberName) { if (target == null || string.IsNullOrEmpty(memberName)) { return(null); } var member = DynamicUtil.GetMember(target, memberName, true); if (member == null) { return(null); } var entry = new TargetLedger(); entry._owner = owner; entry._target = target; entry._memberName = memberName; entry._accessor = new DynamicMemberAccessor(memberName); entry.ReinitBaseValue(); return(entry); }