public VisitStatus VisitCollectionProperty <TProperty2, TContainer2, TValue2>(TProperty2 property, ref TContainer2 container, ref ChangeTracker changeTracker) where TProperty2 : ICollectionProperty <TContainer2, TValue2> { if (Result) { int count = property.GetCount(ref container); for (int i = 0; i != count && Result; ++i) { var getter = new MemberInfoGetter <TContainer2>(); property.GetPropertyAtIndex(ref container, i, ref changeTracker, ref getter); ContextMemberInfo info; if (getter.Found) { info = new ContextMemberInfo( ContextFieldInfo.MakeOperator("[" + i + "]") , getter.Result ); } else { // Unknown type info = new ContextMemberInfo( ContextFieldInfo.MakeOperator("[" + i + "]") , new ContextTypeInfo() ); } Result = Visitor(info); } } return(VisitStatus.Handled); }
VisitStatus IPropertyVisitor.VisitProperty <TProperty2, TContainer2, TValue2>(TProperty2 property, ref TContainer2 container, ref ChangeTracker changeTracker) { if (Result) { var info = new ContextMemberInfo( ContextFieldInfo.Make(property.GetName()), ContextTypeInfo.MakeProperty(property) ); Result = Visitor(info); } return(VisitStatus.Handled); }
public override bool VisitAllMembers(Func <ContextMemberInfo, bool> visitor) { foreach (var e in World.EntityManager.GetAllEntities()) { var info = new ContextMemberInfo(ContextFieldInfo.MakeOperator($"[{e.Index}]"), ContextTypeInfo.Make(typeof(PropertyPathContext <EntityContainer, EntityContainer>))); if (!visitor(info)) { return(false); } } return(true); }
public override bool VisitAllMembers(Func <ContextMemberInfo, bool> visitor) { var comps = GO.GetComponents <Component>(); for (int i = 0; i != comps.Length; ++i) { var info = new ContextMemberInfo( ContextFieldInfo.MakeOperator($"[{i}]"), ContextTypeInfo.Make(comps[i].GetType()) ); if (!visitor(info)) { return(false); } } return(true); }
public ScopeContext(IWatchContext parent, string relativePath, ContextMemberInfo info) : base(parent, relativePath, info) { }
public WatchContext(IWatchContext parent, string relativePath, ContextMemberInfo info) { Parent = parent; RelativePath = relativePath; memberInfo = info; }
public DictionaryContext(IWatchContext parent, string relativePath, ContextMemberInfo info) : base(parent, relativePath, info) { }