SimObject* DistanceSensor::clone() const { DistanceSensor* newDistanceSensor = new DistanceSensor(); newDistanceSensor->copyStandardMembers(this); newDistanceSensor->sensorDataSize = sensorDataSize; newDistanceSensor->sensorReading = sensorReading; newDistanceSensor->sensorReading.data.doubleArray = new double[sensorDataSize]; newDistanceSensor->standardRenderingBuffer = standardRenderingBuffer; std::list<SimObject*>::const_iterator pos; for(pos = childNodes.begin(); pos != childNodes.end(); ++pos) { SimObject* childNode = (*pos)->clone(); newDistanceSensor->addChildNode(childNode, false); } SimObject* newObject = newDistanceSensor; return newObject; }