void LLOcclusionCullingGroup::clearOcclusionState(eOcclusionState state, S32 mode) { if (mode > STATE_MODE_SINGLE) { if (mode == STATE_MODE_DIFF) { LLSpatialClearOcclusionStateDiff clearer(state); clearer.traverse(mOctreeNode); } else if (mode == STATE_MODE_BRANCH) { LLSpatialClearOcclusionState clearer(state); clearer.traverse(mOctreeNode); } else { for (U32 i = 0; i < LLViewerCamera::NUM_CAMERAS; i++) { mOcclusionState[i] &= ~state; } } } else { mOcclusionState[LLViewerCamera::sCurCameraID] &= ~state; } }
int main() { setter(); saver(); clearer(); start_counter(); loader(); stop_counter(); dumper(); clearer(); start_counter(); loader_mem(); stop_counter(); dumper(); }
void code_heap::sweep() { clear_free_blocks_from_all_blocks_iterator clearer(this); allocator->sweep(clearer); #ifdef FACTOR_DEBUG verify_all_blocks_set(); #endif }
void Costmap2D::raytraceFreespace(const Observation& clearing_observation){ //create the functor that we'll use to clear cells from the costmap ClearCell clearer(costmap_); double ox = clearing_observation.origin_.x; double oy = clearing_observation.origin_.y; sensor_msgs::PointCloud cloud = clearing_observation.cloud_; //get the map coordinates of the origin of the sensor unsigned int x0, y0; if(!worldToMap(ox, oy, x0, y0)){ ROS_WARN("The origin for the sensor at (%.2f, %.2f) is out of map bounds. So, the costmap cannot raytrace for it.", ox, oy); return; } //we can pre-compute the enpoints of the map outside of the inner loop... we'll need these later double map_end_x = origin_x_ + getSizeInMetersX(); double map_end_y = origin_y_ + getSizeInMetersY(); //for each point in the cloud, we want to trace a line from the origin and clear obstacles along it for(unsigned int i = 0; i < cloud.points.size(); ++i){ double wx = cloud.points[i].x; double wy = cloud.points[i].y; //now we also need to make sure that the enpoint we're raytracing //to isn't off the costmap and scale if necessary double a = wx - ox; double b = wy - oy; //the minimum value to raytrace from is the origin if(wx < origin_x_){ double t = (origin_x_ - ox) / a; wx = origin_x_; wy = oy + b * t; } if(wy < origin_y_){ double t = (origin_y_ - oy) / b; wx = ox + a * t; wy = origin_y_; } //the maximum value to raytrace to is the end of the map if(wx > map_end_x){ double t = (map_end_x - ox) / a; wx = map_end_x; wy = oy + b * t; } if(wy > map_end_y){ double t = (map_end_y - oy) / b; wx = ox + a * t; wy = map_end_y; } //now that the vector is scaled correctly... we'll get the map coordinates of its endpoint unsigned int x1, y1; //check for legality just in case if(!worldToMap(wx, wy, x1, y1)) continue; unsigned int cell_raytrace_range = cellDistance(clearing_observation.raytrace_range_); //and finally... we can execute our trace to clear obstacles along that line raytraceLine(clearer, x0, y0, x1, y1, cell_raytrace_range); } }