public static int CountPrototypeOccurencesRecursive(this ContainerManagerComponent mgr, string prototypeId) { int total = 0; foreach (var container in mgr.GetAllContainers()) { foreach (var entity in container.ContainedEntities) { if (entity.Prototype?.ID == prototypeId) { total++; } if (!entity.TryGetComponent <ContainerManagerComponent>(out var component)) { continue; } total += component.CountPrototypeOccurencesRecursive(prototypeId); } } return(total); }
public static int CountPrototypeOccurencesRecursive(this ContainerManagerComponent mgr, string prototypeId) { var entMan = IoCManager.Resolve <IEntityManager>(); int total = 0; foreach (var container in mgr.GetAllContainers()) { foreach (var entity in container.ContainedEntities) { if (entMan.GetComponent <MetaDataComponent>(entity).EntityPrototype?.ID == prototypeId) { total++; } if (!entMan.TryGetComponent <ContainerManagerComponent?>(entity, out var component)) { continue; } total += component.CountPrototypeOccurencesRecursive(prototypeId); } } return(total); }