/** * Sort bag. * Entities must implement Sortable. * * Be aware that bags require a resort when you * remove entries. */ public static void sort(Bag bag) { if ( !bag.isEmpty() ) { Arrays.sort(bag.getData(), 0, bag.size()); } }
/** * Sort bag. * Entities must implement Sortable. * * Be aware that bags require a resort when you * remove entries. */ public static void sort(Bag bag) { if ( !bag.isEmpty() ) { Arrays.sort(bag.getData(), 0, bag.size()); } }
/** 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; }
/** Fetch unique identity for passed composition. */ int getIdentity(BitVector components) { BitVector[] 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; }
protected void processEntities(Bag<Entity> entities) { Object[] ids = entities.getData(); for (int i = 0, s = entities.size(); s > i; i++) { process((Entity)ids[i]); } }
/** Fetch unique identity for passed composition. */ int getIdentity(BitVector components) { BitVector[] 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; }
protected void processEntities(Bag<Entity> entities) { Object[] ids = entities.getData(); for (int i = 0, s = entities.size(); s > i; i++) { process((Entity)ids[i]); } }
/** * Dispatch event to registered listeners. * Events are called on the call stack, avoid deeply nested or circular event calls. */ @Override public void dispatch(Event event) { if ( event == null ) throw new NullPointerException("Event required."); final Bag<EventListener> listeners = getListenersForHierarchical(event.getClass()); /** Fetch hierarchical list of listeners. */ Object[] data = listeners.getData(); for (int i = 0, s = listeners.size(); i < s; i++) { final EventListener listener = (EventListener) data[i]; if (listener != null) { listener.handle(event); } } }
/** * Dispatch event to registered listeners. * Events are called on the call stack, avoid deeply nested or circular event calls. */ @Override public void dispatch(Event event) { if ( event == null ) throw new NullPointerException("Event required."); final Bag<EventListener> listeners = getListenersForHierarchical(event.getClass()); /** Fetch hierarchical list of listeners. */ Object[] data = listeners.getData(); for (int i = 0, s = listeners.size(); i < s; i++) { final EventListener listener = (EventListener) data[i]; if (listener != null) { listener.handle(event); } } }
/** @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]); } } }
/** @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]); } } }
/** * Faster adding of components into the entity. * <p> * Not necessary to use this, but in some cases you might need the extra * performance. * </p> * * @param component the component to add. Does not support packed or pooled. * @param type the type of the component * @return this EntityEdit for chaining * @see #create(Class) */ public EntityEdit add(Component component, ComponentType type) { if (type.isPooled) { throw new InvalidComponentException(component.getClass(), "Use EntityEdit#create(Class<Component>) for adding non-basic component types"); } ComponentMapper mapper = cm.getMapper(type.getType()); mapper.create(entityId); mapper.components.getData()[entityId] = component; return this; }
@Override public void process() { Object[] eventsToDispatch = eventQueue.getData(); int i = 0; int s = eventQueue.size(); while (i < s) { for (; i < s; i++) { Event event = (Event) eventsToDispatch[i]; super.dispatch(event); } // we may end up having more events to dispatch at this point // - some event handlers could dispatch more events s = eventQueue.size(); } eventQueue.clear(); }
@Override public void process() { Object[] eventsToDispatch = eventQueue.getData(); int i = 0; int s = eventQueue.size(); while (i < s) { for (; i < s; i++) { Event event = (Event) eventsToDispatch[i]; super.dispatch(event); } // we may end up having more events to dispatch at this point // - some event handlers could dispatch more events s = eventQueue.size(); } eventQueue.clear(); }
private void processProfileSystems(Bag<BaseSystem> systems) { final Object[] systemsData = systems.getData(); for (int i = 0, s = systems.size(); s > i; i++) { if (disabled.get(i)) continue; updateEntityStates(); processProfileSystem(profilers[i], (BaseSystem) systemsData[i]); } updateEntityStates(); }
private void processProfileSystems(Bag<BaseSystem> systems) { final Object[] systemsData = systems.getData(); for (int i = 0, s = systems.size(); s > i; i++) { if (disabled.get(i)) continue; updateEntityStates(); processProfileSystem(profilers[i], (BaseSystem) systemsData[i]); } updateEntityStates(); }
@Override public void process() { Object[] eventsToDispatch = eventQueue.getData(); int i = 0; int s = eventQueue.size(); while (i < s) { for (; i < s; i++) { Event event = (Event) eventsToDispatch[i]; super.dispatch(event); pools.free(event); } // we may end up having more events to dispatch at this point // - some event handlers could dispatch more events s = eventQueue.size(); } eventQueue.clear(); }
/** * Processes all systems in order. * <p> * Should guarantee artemis is in a sane state using calls to #updateEntityStates * before each call to a system, and after the last system has been called, or if no * systems have been called at all. */ @Override protected void process() { BaseSystem[] systemsData = systems.getData(); for (int i = 0, s = systems.size(); s > i; i++) { if (disabled.get(i)) continue; updateEntityStates(); systemsData[i].process(); } updateEntityStates(); } }
/** * Processes all systems in order. * * Should guarantee artemis is in a sane state using calls to #updateEntityStates * before each call to a system, and after the last system has been called, or if no * systems have been called at all. */ @Override protected void process() { Object[] systemsData = systems.getData(); for (int i = 0, s = systems.size(); s > i; i++) { if (disabled.get(i)) continue; updateEntityStates(); ((BaseSystem)systemsData[i]).process(); } updateEntityStates(); } }
/** * Processes all systems in order. * <p> * Should guarantee artemis is in a sane state using calls to #updateEntityStates * before each call to a system, and after the last system has been called, or if no * systems have been called at all. */ @Override protected void process() { BaseSystem[] systemsData = systems.getData(); for (int i = 0, s = systems.size(); s > i; i++) { if (disabled.get(i)) continue; updateEntityStates(); systemsData[i].process(); } updateEntityStates(); } }