ParticleSystem* ParticleSystemManager::createSystem(const std::string& className) {
	std::map< std::string, ParticleSystemClassDesc* >::iterator it = m_systemClasses.find(className);
	if(it != m_systemClasses.end()) {
		ParticleSystem *ps =  (*it).second->create();
		ps->create();
		return ps;
	}
	assert("Unkown Particle System Class");
	return NULL;
}
Example #2
0
	Movable *Level::createMovable (XmlFile *file, int type, std::string name, Movable *parent, XMLElement *element, bool createNow)
	{
		Movable *objObject = 0;

		if (type == GOT_ENTITY)
		{
			Entity *eEntity = new Entity (name);

			if (element != 0)
				eEntity->parseXML (file, element, parent);

			if (createNow == true)
				eEntity->create (parent);

			objObject = eEntity;
		}

		if (type == GOT_CAMERA)
		{
			Camera *cCamera = new Camera (name);

			if (element != 0)
				cCamera->parseXML (file, element, parent);

			if (createNow == true)
				cCamera->create (0, parent);

			objObject = cCamera;
		}

		if (type == GOT_PARTICLE_SYSTEM)
		{
			ParticleSystem *psSystem = new ParticleSystem (name);

			if (element != 0)
				psSystem->parseXML (file, element, parent);

			if (createNow == true)
				psSystem->create (parent);

			objObject = psSystem;
		}

		if (type == GOT_LIGHT)
		{
			Light *lLight = new Light (name);

			if (element != 0)
				lLight->parseXML (file, element, parent);

			if (createNow == true)
				lLight->create (parent);

			objObject = lLight;
		}

		if (type == GOT_ANIMATION_TRACK)
		{
			AnimationTrackObject *atoObject = new AnimationTrackObject (name);

			if (element != 0)
				atoObject->parseXML (file, element, parent);

			if (createNow == true)
				atoObject->create (parent);

			objObject = atoObject;
			aryAnimations.push_back (atoObject);
		}

		if (type == GOT_AUDIO_LISTENER)
		{
			AudioListener *alListener = new AudioListener (name);

			if (element != 0)
				alListener->parseXML (file, element, parent);

			if (createNow == true)
				alListener->create (parent);

			objObject = alListener;
		}

		if (type == GOT_SOUND)
		{
			Sound *sSound = new Sound (name);

			if (element != 0)
				sSound->parseXML (file, element, parent);

			if (createNow == true)
				sSound->create (parent);

			objObject = sSound;
		}

		if (type == GOT_OVERLAY)
		{
			Overlay *oOverlay = new Overlay (name);

			if (element != 0)
				oOverlay->parseXML (file, element, parent);

			if (createNow == true)
				oOverlay->create (parent);

			aryOverlays.push_back (oOverlay);
			objObject = oOverlay;
		}

		if (type == GOT_OVERLAY_ELEMENT)
		{
			OverlayElement *oOverlayElement = new OverlayElement (name);

			if (element != 0)
				oOverlayElement->parseXML (file, element, parent);

			if (createNow == true)
				oOverlayElement->create (parent);

			aryOverlayElements.push_back (oOverlayElement);
			objObject = oOverlayElement;
		}

		addMovable (objObject);

		return (objObject);
	}