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; }
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); }