CParticleEmitterTypePtr CParticleManager::LoadEmitterType(const VfsPath& path) { boost::unordered_map<VfsPath, CParticleEmitterTypePtr>::iterator it = m_EmitterTypes.find(path); if (it != m_EmitterTypes.end()) return it->second; CParticleEmitterTypePtr emitterType(new CParticleEmitterType(path, *this)); m_EmitterTypes[path] = emitterType; return emitterType; }
/*! \details No detailed. */ zisc::UniqueMemoryPointer<EmitterModel> EmitterModel::makeEmitter( System& system, const SettingNodeBase* settings, const zisc::pmr::vector<const TextureModel*>& texture_list) noexcept { const auto emitter_settings = castNode<EmitterSettingNode>(settings); zisc::UniqueMemoryPointer<EmitterModel> emitter; auto& data_resource = system.dataMemoryManager(); switch (emitter_settings->emitterType()) { case EmitterType::kNonDirectional: { emitter = zisc::UniqueMemoryPointer<NonDirectionalEmitter>::make(&data_resource, settings, texture_list); break; } default: { zisc::raiseError("EmitterError: Unsupported type is specified."); break; } } emitter->setName(emitter_settings->name()); return emitter; }