public PatternResult Register(PatternIdent patternIdent)
        {
            if (InstanceId != 0)
            {
                throw new InvalidOperationException();
            }

            if (!m_IdLink.ContainsValue(patternIdent.Name))
            {
                var id = m_IdCounter++;
                m_IdLink[id] = patternIdent.Name;

                var patternResult = new PatternResult
                {
                    Id       = id,
                    Internal = patternIdent
                };

                m_ResultLink[patternIdent.Name] = patternResult;
                PatternRegister?.Invoke(patternResult);
            }
            else
            {
                Debug.LogWarning($"Some systems are trying to register an already existing pattern! (p={patternIdent.Name})");
            }

            m_StringLink[patternIdent.Name] = patternIdent;

            return(GetPatternResult(patternIdent));
        }
 public bool FullEquals(PatternResult other)
 {
     return(Internal == other.Internal);
 }
 public bool Equals(PatternResult other)
 {
     return(Id == other.Id);
 }
 public void ForceLink(PatternResult patternResult)
 {
     m_IdLink[patternResult.Id] = patternResult.Internal.Name;
     m_ResultLink[patternResult.Internal.Name] = patternResult;
     m_StringLink[patternResult.Internal.Name] = patternResult.Internal;
 }