public void Register(Actor actor, GrantConditionOnPrerequisite u, string[] prerequisites)
        {
            var key = MakeKey(prerequisites);

            if (!upgradables.ContainsKey(key))
            {
                upgradables.Add(key, new List <Pair <Actor, GrantConditionOnPrerequisite> >());
                techTree.Add(key, prerequisites, 0, this);
            }

            upgradables[key].Add(Pair.New(actor, u));
            u.PrerequisitesUpdated(actor, techTree.HasPrerequisites(prerequisites));
        }
        void Update()
        {
            enabled = !IsTraitDisabled;
            if (IsTraitDisabled)
            {
                return;
            }

            if (Info.Factions.Any())
            {
                enabled = Info.Factions.Contains(faction);
            }

            if (Info.RequiresPrerequisites.Any() && enabled)
            {
                enabled = techTree.HasPrerequisites(Info.RequiresPrerequisites);
            }
        }