static public FilteredMsgTypeList Filtered(GameObject inGameObject, MsgFlags inAll, MsgFlags inAny = MsgFlags.None) { if (inGameObject == null && (inAll == MsgFlags.None && inAny == MsgFlags.None)) { return(All()); } Initialize(); List <MsgType> types = null; MsgUtil.GetAvailableMsgTypes(inGameObject, ref types); List <Metadata> metadatas = new List <Metadata>(types.Count); for (int i = 0; i < types.Count; ++i) { Metadata metadata = Manager.Get().Database.Find(types[i]); if (metadata == null) { continue; } if ((inAll == MsgFlags.None || metadata.HasFlags(inAll)) && (inAny == MsgFlags.None || metadata.HasAnyFlags(inAny)) && !metadatas.Contains(metadata)) { metadatas.Add(metadata); } } metadatas.Sort(); return(new FilteredMsgTypeList(metadatas)); }