#include #include #include #include #include #include "../orxonox.h" #include "../graphicsEngine.h" #include "../../tinyxml/tinyxml.h" #include "../../misc/Tokenizer.h" #include "../../misc/String2Number.h" #include "../core/Debug.h" #include "Camera.h" namespace orxonox { CreateFactory(Camera); Camera::Camera() { RegisterObject(Camera); } Camera::~Camera() { } void Camera::loadParams(TiXmlElement* xmlElem) { Ogre::SceneManager* mgr = orxonox::Orxonox::getSingleton()->getSceneManager(); if (xmlElem->Attribute("name") && xmlElem->Attribute("pos") && xmlElem->Attribute("lookat") && xmlElem->Attribute("node")) { // std::string name = xmlElem->Attribute("name"); std::string pos = xmlElem->Attribute("pos"); std::string lookat = xmlElem->Attribute("lookat"); Ogre::Camera *cam = mgr->createCamera(name); float x, y, z; std::vector posVec = tokenize(xmlElem->Attribute("pos"),","); String2Number(x, posVec[0]); String2Number(y, posVec[1]); String2Number(z, posVec[2]); cam->setPosition(Vector3(x,y,z)); posVec = tokenize(xmlElem->Attribute("lookat"),","); String2Number(x, posVec[0]); String2Number(y, posVec[1]); String2Number(z, posVec[2]); cam->lookAt(Vector3(x,y,z)); std::string node = xmlElem->Attribute("node"); Ogre::SceneNode* sceneNode = (Ogre::SceneNode*)mgr->getRootSceneNode()->getChild(node); sceneNode->attachObject((Ogre::MovableObject*)cam); Ogre::Viewport* vp = orxonox::Orxonox::getSingleton()->getOgrePointer()->getRoot()->getAutoCreatedWindow()->addViewport(cam); COUT(4) << "Loader: Created camera "<< name << std::endl << std::endl; } } }