Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
/*!
  \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;
}