rendered paste body#ifndef SCENEGRAPH_H_#define SCENEGRAPH_H_#include <map>#include <string>#include <iostream>#include <vector>#include <pthread.h>#include <OpenSG/OSGConfig.h>#include <OpenSG/OSGSimpleGeometry.h>#include <OpenSG/OSGImage.h>#include <OpenSG/OSGSimpleTexturedMaterial.h>#include <OpenSG/OSGMatrix.h>#include "../include/ThemePack.h"#include "../include/GraphicObject.h"#include "../include/GraphicObject2DImage.h"#include "../include/GraphicObject3DModell.h"#include "../include/Sound.h"#include "../include/XMLNode.h"#include "../include/Entity.h"#include "../include/Coordinates.h"using namespace std;class Scenegraph{public: Scenegraph(); virtual ~Scenegraph(); map<string, Entity*> mEntitiesOpenSG; map<string, Entity*> mEntitiesOpenGL; // methods void createBackground(); void createScenegraph(OSG::NodePtr camBeacon, OSG::NodePtr lightBeacon, OSG::NodePtr lightNode); void createLight(); void createObjectMaps(); void doOpenGL(); void addImage2D(string name, string id, Coordinates *position, Coordinates *size); void deleteImage2D(string id); void addObject3D(string name, string id, Coordinates *position); void deleteObject3D(string id); void addCube(string id, Coordinates *position, float xSize, float ySize, float zSize, unsigned short hor, unsigned short vert, unsigned short depth); void deleteCube(string id); void addSphere(Coordinates *position, unsigned short depth, float radius); void deleteSphere(string id); void addPlane(string id, Coordinates *position, float xSize, float ySize, unsigned short hor, unsigned short vert); void deletePlane(string id); void addCone(string id, Coordinates *position, float height, float botRadius, unsigned short sides, bool doSide, bool doBottom); void deleteCone(string id); void addCylinder(string id, Coordinates *position, float height, float radius, unsigned short sides, bool doSide, bool doTop, bool doBottom); void deleteCylinder(string id); void addTorus(string id, Coordinates *position, float innerRadius, float outerRadius, unsigned short sides, unsigned short rings); void deleteTorus(string id); void deleteEntity(string id); void changePosition(string id,Coordinates *position); void addLine(string id, Coordinates *begin, Coordinates *end, float width, Coordinates *color); void deleteLine(string id); void setEndsOfLine(string id, Coordinates *begin, Coordinates *end); OSG::NodePtr getRoot(); private: // variables OSG::NodePtr mRoot, mBackGeoNode, mBackTransNode; OSG::Matrix mBackMatrix; OSG::TransformPtr mBackTransCore; XMLNode mTpXmlNode; string mPathToTP; //vector<Entity*> mEntity; pthread_mutex_t mutex1;// = PTHREAD_MUTEX_INITIALIZER; vector<string> mObjectsInScenegraph; map<string, GraphicObject2DImage> mGraphicObjects2DImage; map<string, GraphicObject3DModell> mGraphicObjects3DModell; vector<string> mObjectsInCurrentScenegraph; vector<string> mObjectsInCurrentXMLFile; // methods bool isNameInScenegraph(string id);};#endif /*SCENEGRAPH_H_*/#ifndef ENTITY_H_#define ENTITY_H_#include <iostream>#include <string>#include <OpenSG/OSGImage.h>#include <OpenSG/OSGSimpleTexturedMaterial.h>#include "../include/GraphicObject2DImage.h"#include "../include/GraphicObject3DModell.h"#include "../include/Coordinates.h"#include "../include/Scenegraph.h"using namespace std;class Entity{ public: Entity(); virtual ~Entity(); virtual void setPosition(Coordinates *position) = 0; virtual void setBeginAndEnd(Coordinates *begin, Coordinates *end) = 0; virtual void deleteEntity(Scenegraph *scenegraph, string id) = 0; virtual OSG::NodePtr getNode() = 0; // is only implemented in EntityOpenSGRenderable virtual void drawOpenGL() = 0; private: Coordinates* mPosition;// TODO: setColor() and getColor() in EntityOpenSGRenderable implementieren Coordinates* mColor;};#endif /*ENTITY_H_*/#ifndef ENTITYOPENGLRENDERABLE_H_#define ENTITYOPENGLRENDERABLE_H_#include "../include/Entity.h"class EntityOpenGLRenderable : public Entity{public: EntityOpenGLRenderable(); virtual ~EntityOpenGLRenderable(); void setPosition(Coordinates *position); virtual void setBeginAndEnd(Coordinates *begin, Coordinates *end) = 0; virtual void drawOpenGL() = 0; void deleteEntity(Scenegraph *scenegraph, string id); private: float mWidth; bool mPositionIsSet; // true if mPosition is allready manualy specified};#endif /*ENTITYOPENGLRENDERABLE_H_*/#ifndef ENTITYOPENSGRENDERABLE_H_#define ENTITYOPENSGRENDERABLE_H_#include "../include/Entity.h"class EntityOpenSGRenderable : public Entity{public: EntityOpenSGRenderable(); virtual ~EntityOpenSGRenderable(); void setPosition(Coordinates *position); void setBeginAndEnd(Coordinates *begin, Coordinates *end); OSG::NodePtr getNode(); void deleteEntity(Scenegraph *scenegraph, string id); private: OSG::Matrix mTranslation; OSG::Matrix mTransformation; OSG::NodePtr mTransformationNode; OSG::TransformPtr mTransformationCore; OSG::NodePtr mGeometryNode; OSG::GeometryPtr mGeometryCore; void setNodesAndCores();};#endif /*ENTITYOPENSGRENDERABLE_H_*/