bool MoverGroup::add(MoverPtr mover) { if (numMovers == MAX_MOVERGROUP_COUNT) { Fatal(0, " MoverGroup.add: Group too big "); //---------------------------------------- // Should we choose to remove the fatal... return (false); } moverWIDs[numMovers++] = mover->getWatchID(); mover->setGroupId(id, true); return (true); }
long MoverGroup::disband (void) { for (long i = 0; i < numMovers; i++) { MoverPtr mover = getMover(i); mover->setGroupId(-1, true); } #ifdef USE_IFACE if (pointHandle) theInterface->setPoint(pointHandle, false); #endif pointWID = 0; numMovers = 0; return(NO_ERR); }
bool MoverGroup::remove (MoverPtr mover) { GameObjectWatchID moverWID = mover->getWatchID(); if (moverWID == pointWID) { disband(); return(true); } else { for (long i = 0; i < numMovers; i++) if (moverWIDs[i] == moverWID) { mover->setGroupId(-1, true); moverWIDs[i] = moverWIDs[numMovers - 1]; moverWIDs[numMovers - 1] = 0; numMovers--; return(true); } } return(false); }