| 41 | } |
| 42 | |
| 43 | ParticleVariantCreator ParticleDatabase::particleCreator(Json const& kindOrConfig, String const& relativePath) const { |
| 44 | if (kindOrConfig.isType(Json::Type::String)) { |
| 45 | auto pconfig = config(kindOrConfig.toString()); |
| 46 | return [pconfig]() { return pconfig->instance(); }; |
| 47 | } else { |
| 48 | Particle particle(kindOrConfig.toObject(), relativePath); |
| 49 | Particle variance(kindOrConfig.getObject("variance", {}), relativePath); |
| 50 | return makeParticleVariantCreator(std::move(particle), std::move(variance)); |
| 51 | } |
| 52 | } |
| 53 | |
| 54 | Particle ParticleDatabase::particle(Json const& kindOrConfig, String const& relativePath) const { |
| 55 | return particleCreator(kindOrConfig, relativePath)(); |