本文整理汇总了C++中SortedVector::remove方法的典型用法代码示例。如果您正苦于以下问题:C++ SortedVector::remove方法的具体用法?C++ SortedVector::remove怎么用?C++ SortedVector::remove使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SortedVector
的用法示例。
在下文中一共展示了SortedVector::remove方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: android_media_AudioRecord_release
static void android_media_AudioRecord_release(JNIEnv *env, jobject thiz) {
sp<AudioRecord> lpRecorder = setAudioRecord(env, thiz, 0);
if (lpRecorder == NULL) {
return;
}
ALOGV("About to delete lpRecorder: %x\n", (int)lpRecorder.get());
lpRecorder->stop();
audiorecord_callback_cookie *lpCookie = (audiorecord_callback_cookie *)env->GetIntField(
thiz, javaAudioRecordFields.nativeCallbackCookie);
// reset the native resources in the Java object so any attempt to access
// them after a call to release fails.
env->SetIntField(thiz, javaAudioRecordFields.nativeCallbackCookie, 0);
// delete the callback information
if (lpCookie) {
Mutex::Autolock l(sLock);
ALOGV("deleting lpCookie: %x\n", (int)lpCookie);
while (lpCookie->busy) {
if (lpCookie->cond.waitRelative(sLock,
milliseconds(CALLBACK_COND_WAIT_TIMEOUT_MS)) !=
NO_ERROR) {
break;
}
}
sAudioRecordCallBackCookies.remove(lpCookie);
env->DeleteGlobalRef(lpCookie->audioRecord_class);
env->DeleteGlobalRef(lpCookie->audioRecord_ref);
delete lpCookie;
}
}
示例2: testSortedVector
void testSortedVector()
{
printf("Test Firebird::SortedVector: ");
SortedVector<int, 100> v;
int i;
for (i = 0; i < 100; i++)
v.add(99 - i);
for (i = 0; i < 50; i++)
v.remove(0);
bool passed = true;
for (i = 50; i < 100; i++)
if (v[i - 50] != i)
passed = false;
printf(passed ? "PASSED\n" : "FAILED\n");
}
示例3: destroyObjectFromWorld
void ZoneComponent::destroyObjectFromWorld(SceneObject* sceneObject, bool sendSelfDestroy) {
ManagedReference<SceneObject*> par = sceneObject->getParent();
sceneObject->broadcastDestroy(sceneObject, sendSelfDestroy);
ManagedReference<Zone*> rootZone = sceneObject->getZone();
ManagedReference<Zone*> zone = sceneObject->getLocalZone();
if (par != NULL) {
uint64 parentID = sceneObject->getParentID();
par->removeObject(sceneObject, NULL, false);
if (par->isCellObject()) {
ManagedReference<BuildingObject*> build = cast<BuildingObject*>(par->getParent().get().get());
if (build != NULL) {
CreatureObject* creature = cast<CreatureObject*>(sceneObject);
if (creature != NULL)
build->onExit(creature, parentID);
}
}
sceneObject->notifyObservers(ObserverEventType::OBJECTREMOVEDFROMZONE, sceneObject, 0);
} else if (zone != NULL) {
zone->removeObject(sceneObject, NULL, false);
}
if (rootZone != NULL) {
Locker locker(rootZone);
if (!sceneObject->isActiveArea())
rootZone->remove(sceneObject);
rootZone->dropSceneObject(sceneObject);
SharedBuildingObjectTemplate* objtemplate = dynamic_cast<SharedBuildingObjectTemplate*>(sceneObject->getObjectTemplate());
if (objtemplate != NULL) {
String modFile = objtemplate->getTerrainModificationFile();
if (!modFile.isEmpty()) {
rootZone->getPlanetManager()->getTerrainManager()->removeTerrainModification(sceneObject->getObjectID());
}
}
locker.release();
SortedVector<ManagedReference<QuadTreeEntry*> > closeSceneObjects;
CloseObjectsVector* closeobjects = (CloseObjectsVector*) sceneObject->getCloseObjects();
if (closeobjects != NULL) {
try {
closeobjects->safeCopyTo(closeSceneObjects);
while (closeSceneObjects.size() > 0) {
ManagedReference<QuadTreeEntry*> obj = closeSceneObjects.get(0);
if (obj != NULL && obj != sceneObject && obj->getCloseObjects() != NULL)
obj->removeInRangeObject(sceneObject);
sceneObject->removeInRangeObject((int) 0);
closeSceneObjects.remove((int) 0);
}
closeobjects->removeAll();
} catch (...) {
}
} else {
SortedVector<ManagedReference<QuadTreeEntry*> > closeSceneObjects;
sceneObject->info("Null closeobjects vector in ZoneComponent::destroyObjectFromWorld", true);
rootZone->getInRangeObjects(sceneObject->getPositionX(), sceneObject->getPositionY(), 512, &closeSceneObjects, false);
for (int i = 0; i < closeSceneObjects.size(); ++i) {
QuadTreeEntry* obj = closeSceneObjects.get(i);
if (obj != sceneObject && obj->getCloseObjects() != NULL)
obj->removeInRangeObject(sceneObject);
}
}
// rootZone->dropSceneObject(sceneObject);
// locker.release();
Vector<ManagedReference<ActiveArea*> >* activeAreas = sceneObject->getActiveAreas();
while (activeAreas->size() > 0) {
Locker _alocker(sceneObject->getContainerLock());
ManagedReference<ActiveArea*> area = activeAreas->get(0);
activeAreas->remove(0);
_alocker.release();
//.........这里部分代码省略.........
示例4: if
//.........这里部分代码省略.........
delete collision;
if (path != NULL) delete path;
continue;
}
}
if (len > 0 && len < finalLengthSq) {
if (finalpath)
delete finalpath;
finalLengthSq = len;
finalpath = path;
path = NULL;
}
} else if (collisionSize == 0) { // we're already inside a navmesh (or there are no navmeshes around)
for (int i = 0; i < areas.size(); i++) {
if (!getRecastPath(startTemp, targetTemp, areas.get(i), path, len, allowPartial)) {
continue;
}
if (len > 0 && len < finalLengthSq) {
if (finalpath)
delete finalpath;
finalLengthSq = len;
finalpath = path;
path = new Vector<WorldCoordinates>();
}
}
} else if (collisionSize == 2) { // we're crossing over a mesh or dealing with multiple meshes
NavCollision* collision1 = collisions.get(0);
NavArea *area1 = collision1->getNavArea();
NavCollision* collision2 = collisions.get(1);
NavArea *area2 = collision2->getNavArea();
if (area1 == area2) { // crossing same mesh
path->add(pointA);
Vector3 position1 = collision1->getPosition();
position1.setZ(CollisionManager::getWorldFloorCollision(position1.getX(), position1.getY(), zone, false));
Vector3 position2 = collision2->getPosition();
position2.setZ(CollisionManager::getWorldFloorCollision(position2.getX(), position2.getY(), zone, false));
if (!getRecastPath(position1, position2, area1, path, len, allowPartial)) {
delete collision1;
delete collision2;
if (path != NULL) delete path;
continue;
}
path->add(pointB);
if (len > 0 && len < finalLengthSq) {
if (finalpath)
delete finalpath;
finalLengthSq = len;
finalpath = path;
path = NULL;
}
} else { // TODO: handle multiple meshes
}
} else { // TODO: handle multiple meshes
}
} catch (...) {
error("Unhandled pathing exception");
for (int i=collisions.size()-1; i>=0; i--) {
NavCollision *collision = collisions.remove(i);
delete collision;
}
delete path;
path = NULL;
}
for (int i=collisions.size()-1; i>=0; i--) {
NavCollision *collision = collisions.remove(i);
delete collision;
}
if (path != NULL)
delete path;
}
if (finalpath && finalpath->size() < 2) { // path could not be evaluated, just return the start/end position
finalpath->removeAll();
finalpath->add(pointA);
finalpath->add(endPoints.get(0));
}
#ifdef PROFILE_PATHING
t.stop();
totalTime.add(t.getElapsedTime());
info("Spent " + String::valueOf(totalTime.get()) + " in recast", true);
#endif
return finalpath;
}