/** Add artemis managed components to entity. */ public EntityBuilder with(Class<? extends Component> component) { edit.create(component); return this; }
/** * Removes the component from this entity. * * @param component the component to remove from this entity. * @return this EntityEdit for chaining */ public EntityEdit remove(Component component) { return remove(component.getClass()); }
/** Assemble, add to world */ public Entity build() { return edit.getEntity(); }
private EntityEdit entityEdit() { if (pool.isEmpty()) { return new EntityEdit(world); } else { return pool.removeLast(); } }
/** * Get entity editor. * @return a fast albeit verbose editor to perform batch changes to entities. * @param entityId entity to fetch editor for. */ EntityEdit obtainEditor(int entityId) { int size = edited.size(); if (size != 0 && edited.get(size - 1).getEntityId() == entityId) return edited.get(size - 1); EntityEdit edit = entityEdit(); edited.add(edit); edit.entityId = entityId; return edit; }
/** Assemble, add to world */ public Entity build() { return edit.getEntity(); }
private EntityEdit entityEdit() { if (pool.isEmpty()) { return new EntityEdit(world); } else { return pool.removeLast(); } }
/** * Get entity editor. * @return a fast albeit verbose editor to perform batch changes to entities. * @param entityId entity to fetch editor for. */ EntityEdit obtainEditor(int entityId) { int size = edited.size(); if (size != 0 && edited.get(size - 1).getEntityId() == entityId) return edited.get(size - 1); EntityEdit edit = entityEdit(); edited.add(edit); edit.entityId = entityId; return edit; }
/** Add artemis managed components to entity. */ public EntityBuilder with(Class<? extends Component> component1, Class<? extends Component> component2, Class<? extends Component> component3, Class<? extends Component> component4) { edit.create(component1); edit.create(component2); edit.create(component3); edit.create(component4); return this; }
/** * Removes the component from this entity. * * @param component the component to remove from this entity. * @return this EntityEdit for chaining */ public EntityEdit remove(Component component) { return remove(component.getClass()); }
/** Register entity with group. Requires registered TagManager */ public EntityBuilder group(String group) { resolveManager(GroupManager.class).add(edit.getEntity(), group); return this; }
/** * Remove component by its type. * * @param type the class type of component to remove from this entity * @return this EntityEdit for chaining */ public EntityEdit remove(Class<? extends Component> type) { return remove(cm.typeFactory.getTypeFor(type)); }
/** Register entity with tag. Requires registered TagManager */ public EntityBuilder tag(String tag) { resolveManager(TagManager.class).register(tag, edit.getEntity()); return this; }
/** Add artemis managed components to entity. */ public EntityBuilder with(Class<? extends Component> component1, Class<? extends Component> component2, Class<? extends Component> component3, Class<? extends Component> component4, Class<? extends Component> component5) { edit.create(component1); edit.create(component2); edit.create(component3); edit.create(component4); edit.create(component5); return this; }
/** Add component to entity. */ public EntityBuilder with(Component component) { edit.add(component); return this; }
@Override public boolean act(float delta, Entity e) { e.edit().remove(componentClass); return true; }