void addChild(const std::string &name, ConfigurableObject *child) { if (child->getClass()->derivesFrom(MTS_CLASS(BSDF))) { BSDF *bsdf = static_cast<BSDF *>(child); m_bsdfs.push_back(bsdf); bsdf->incRef(); } else { BSDF::addChild(name, child); } }
MixtureBSDF(Stream *stream, InstanceManager *manager) : BSDF(stream, manager) { size_t bsdfCount = stream->readSize(); m_weights.resize(bsdfCount); for (size_t i=0; i<bsdfCount; ++i) { m_weights[i] = stream->readFloat(); BSDF *bsdf = static_cast<BSDF *>(manager->getInstance(stream)); bsdf->incRef(); m_bsdfs.push_back(bsdf); } configure(); }