/** * Add a manager into this world. It can be retrieved later. * World will notify this manager of changes to entity. * * @param <T> Manager type * @param manager to be added * @return the manager that was added */ public <T extends Manager> T setManager(T manager) { managers.add(manager); manager.setWorld(this); return manager; }
/** * Makes sure all managers systems are initialized * in the order they were added. */ public void initialize() { // Can't use iterators here because initialize often calls // getSystem or getManager for (int i = 0; i < managers.size; i++) { managers.get(i).initialize(); } if (eventSystem != null) { eventSystem.initialize(); } for (int i = 0; i < systems.size; i++) { systems.get(i).initialize(); } }
@Override public void dispose() { em.dispose(); cm.dispose(); added.clear(); changed.clear(); deleted.clear(); enable.clear(); disable.clear(); for (Manager manager : managers) { manager.dispose(); } managers.clear(); systems.clear(); if (eventSystem != null) { eventSystem.dispose(); eventSystem = null; } }