All pastes #884847 Raw Edit

Entity-Mist

public cpp v1 · immutable
#884847 ·published 2008-01-30 17:05 UTC
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_*/