@Override public String toString() { return "EntityReference{" + componentType.getSimpleName() + "." + field.getName() + " (" + fieldType + "), operations=" + operations.size() + '}'; }
EntityReference find(Class<?> componentType, String fieldName) { for (int i = 0, s = referenced.size(); s > i; i++) { EntityReference ref = referenced.get(i); if (ref.componentType.equals(componentType) && ref.field.getName().equals(fieldName)) return ref; } throw new RuntimeException( componentType.getSimpleName() + "." + fieldName); }
EntityReference find(Class<?> componentType, String fieldName) { for (int i = 0, s = referenced.size(); s > i; i++) { EntityReference ref = referenced.get(i); if (ref.componentType.equals(componentType) && ref.field.getName().equals(fieldName)) return ref; } throw new RuntimeException( componentType.getSimpleName() + "." + fieldName); }
/** Converts java classes to component types. */ private ComponentType[] resolveTypes(World world) { ComponentTypeFactory tf = world.getComponentManager().typeFactory; ComponentType[] types = new ComponentType[classes.size()]; for (int i = 0, s = classes.size(); s > i; i++) types[i] = tf.getTypeFor(classes.get(i)); return types; } }
/** Converts java classes to component types. */ private ComponentType[] resolveTypes(World world) { ComponentTypeFactory tf = world.getComponentManager().typeFactory; ComponentType[] types = new ComponentType[classes.size()]; for (int i = 0, s = classes.size(); s > i; i++) types[i] = tf.getTypeFor(classes.get(i)); return types; } }
void processComponentIdentity(int id, BitVector componentBits) { for (int i = 0, s = subscriptions.size(); s > i; i++) { subscriptions.get(i).processComponentIdentity(id, componentBits); } }
@Override public void initialize(Bag<ComponentType> types) { for (int i = 0, s = types.size(); s > i; i++) { onCreated(types.get(i)); } }
/** Fetch unique identity for passed composition. */ int getIdentity(BitVector components) { Object[] bitsets = compositionBits.getData(); int size = compositionBits.size(); for (int i = NO_COMPONENTS; size > i; i++) { // want to start from 1 so that 0 can mean null if (components.equals(bitsets[i])) return i; } return -1; }
void processComponentIdentity(int id, BitVector componentBits) { for (int i = 0, s = subscriptions.size(); s > i; i++) { subscriptions.get(i).processComponentIdentity(id, componentBits); } }
private int getComponentCount(SaveFileFormat.ComponentIdentifiers identifiers) { int count = 0; for (int i = 0, s = components.size(); s > i; i++) { Component c = components.get(i); if (identifiers.isTransient(c.getClass())) continue; if (defaultValues.hasDefaultValues(c)) continue; count++; } return count; }
/** @inheritDoc */ @Override protected final void processSystem() { Bag<Entity> entities = getEntities(); Object[] array = entities.getData(); for (int i = 0, s = entities.size(); s > i; i++) { process((Entity) array[i]); } } }
@SuppressWarnings("unchecked") <T extends PooledComponent> T obtain() { try { return (T) ((cache.size() > 0) ? cache.removeLast() : ClassReflection.newInstance(type)); } catch (ReflectionException e) { throw new InvalidComponentException(type, e.getMessage(), e); } }
private void removeComponents(int entityId) { Bag<ComponentMapper> mappers = componentMappers(entityId); for (int i = 0, s = mappers.size(); s > i; i++) { mappers.get(i).internalRemove(entityId); } setIdentity(entityId, 0); }
@Override public void onCreated(ComponentType type) { Bag<LinkSite> links = linkFactory.create(type); if (links.isEmpty()) return; for (int i = 0, s = links.size(); s > i; i++) { elm.linkSites.add(links.get(i)); } } }
private void informListeners() { for (int i = 0, s = listeners.size(); s > i; i++) { SubscriptionListener listener = listeners.get(i); if (removed.size() > 0) listener.removed(removed); if (inserted.size() > 0) listener.inserted(inserted); } } }
private void growEntityStores() { int newSize = 2 * entities.getCapacity(); entities.ensureCapacity(newSize); ComponentManager cm = world.getComponentManager(); cm.ensureCapacity(newSize); for (int i = 0, s = entityBitVectors.size(); s > i; i++) { entityBitVectors.get(i).ensureCapacity(newSize); } }
@Override public void validate(int sourceId, Bag<Entity> entities, LinkListener listener) { for (int i = 0; entities.size() > i; i++) { Entity e = entities.get(i); if (!all.getActiveEntityIds().unsafeGet(e.getId())) { entities.remove(i--); if (listener != null) listener.onTargetDead(sourceId, e.getId()); } } }
int allocateIdentity(BitVector componentBits, ComponentManager cm) { Bag<ComponentMapper> mappers = new Bag<ComponentMapper>(ComponentMapper.class, componentBits.cardinality()); ComponentTypeFactory tf = cm.getTypeFactory(); for (int i = componentBits.nextSetBit(0); i >= 0; i = componentBits.nextSetBit(i + 1)) { mappers.add(cm.getMapper(tf.getTypeFor(i).getType())); } compositionMappers.add(mappers); compositionBits.add(new BitVector(componentBits)); return compositionBits.size() - 1; } }