@Override protected void removed(int id) { int target = sourceToTarget.size() > id ? sourceToTarget.get(id) : -1; if (target != -1) sourceToTarget.set(id, -1); if (listener != null) listener.onLinkKilled(id, target); } }
@Override protected void insert(int id) { int target = fieldMutator.read(mapper.get(id), field); sourceToTarget.set(id, target); if (target != -1 && listener != null) listener.onLinkEstablished(id, target); }
@Override protected void insert(int id) { int target = fieldMutator.read(mapper.get(id), field); sourceToTarget.set(id, target); if (target != -1 && listener != null) listener.onLinkEstablished(id, target); }
@Override protected void removed(int id) { int target = sourceToTarget.size() > id ? sourceToTarget.get(id) : -1; if (target != -1) sourceToTarget.set(id, -1); if (listener != null) listener.onLinkKilled(id, target); } }
void translate(Component c, Field field, Bag<Entity> translatedIds) { try { IntBag bag = (IntBag) field.get(c); for (int i = 0, s = bag.size(); s > i; i++) { int oldId = bag.get(i); bag.set(i, translatedIds.get(oldId).getId()); } } catch (ReflectionException e) { throw new RuntimeException(e); } } },
void translate(Component c, Field field, Bag<Entity> translatedIds) { try { IntBag bag = (IntBag) field.get(c); for (int i = 0, s = bag.size(); s > i; i++) { int oldId = bag.get(i); bag.set(i, translatedIds.get(oldId).getId()); } } catch (ReflectionException e) { throw new RuntimeException(e); } } },
@Override protected void check(int id) { // -1 == not linked int target = fieldMutator.read(mapper.get(id), field); if (target != -1 && !activeEntityIds.unsafeGet(target)) { // target is dead or linked field is set to null/-1 target = -1; fieldMutator.write(target, mapper.get(id), field); } int oldTarget = sourceToTarget.get(id); if (target != oldTarget) { if (listener != null) { fireLinkListener(id, target); } sourceToTarget.set(id, target); } }
@Override protected void check(int id) { // -1 == not linked int target = fieldMutator.read(mapper.get(id), field); if (target != -1 && !activeEntityIds.unsafeGet(target)) { // target is dead or linked field is set to null/-1 target = -1; fieldMutator.write(target, mapper.get(id), field); } int oldTarget = sourceToTarget.get(id); if (target != oldTarget) { if (listener != null) { fireLinkListener(id, target); } sourceToTarget.set(id, target); } }