-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSingleObject.h
109 lines (85 loc) · 4.12 KB
/
SingleObject.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
* File: Objet.h
* Author: Aztyu
*
* Created on 22 décembre 2014, 15:06
*/
#ifndef SINGLEOBJECT_H
#define SINGLEOBJECT_H
#include "Object.h"
//! Enumeration utilise pour lors de la creation d'objets
enum object {
rectangle, /**< Énumération du carré(2D). */
line, /**< Énumération de la ligne(2D). */
circle, /**< Énumération du cercle(2D). */
trapeze, /**< Énumération du trapeze(2D). */
cube, /**< Énumération du cube. */
pyramid, /**< Énumération d'une pyramide. */
sphere, /**< Énumération d'une sphere. */
cylinder, /**< Énumération du cylindre. */
group}; /**< Énumération du groupe. */
//! Classe qui est utilise pour creer un simple objet
class SingleObject : public Object{
public:
//! Constructeur de base.
/** \param obj Pointeur vers le ISceneNode qui est donne par Irrlicht.
* \param name Le nom desire pour l'objet.
* \param parent L'ISceneNode de la Zone.
* \param type Une énumération de type oject qui indique la forme de l'objet(Carré, Cylindre, ...). */
SingleObject(irr::scene::ISceneNode* obj, const char* name, irr::scene::ISceneNode* parent, object type);
//! Constructeur avec echelle.
/** \param obj Pointeur vers le ISceneNode qui est donne par Irrlicht.
* \param name Le nom desire pour l'objet.
* \param total_scale Un entier qui indique l'echelle de l'objet.
* \param parent L'ISceneNode de la Zone.
* \param type Une énumération de type oject qui indique la forme de l'objet(Carré, Cylindre, ...).*/
SingleObject(irr::scene::ISceneNode* obj, const char* name, irr::scene::ISceneNode* parent, float total_scale, object type);
//! Constructeur avec position de base.
/** \param obj Pointeur vers le ISceneNode qui est donne par Irrlicht.
* \param name Le nom desire pour l'objet.
* \param parent L'ISceneNode de la Zone.
* \param position Vector3df qui contient la position voulue.
* \param type Une énumération de type oject qui indique la forme de l'objet(Carré, Cylindre, ...). */
SingleObject(irr::scene::ISceneNode* obj, const char* name, irr::scene::ISceneNode* parent, irr::core::vector3df position, object type);
//! Destructeur de base.
~SingleObject();
//Selection/Deselection
//! Selection de l'objet.
void selectObject();
//! Selection de l'objet par son groupe.
void groupSelectObject();
//! Deselectionne l'objet dans tout les cas.
void unselectObject();
//! Exporte tous les objets
void exportObject(TiXmlElement* windows);
//Gestion de groupe
//! Definit l'élèment parent de l'objet(donc le groupe).
/** \param new_parent Pointeur vers l'Object qui deviendra le parent. */
void setParent(Object* new_parent);
//! Permet de savoir si l'objet est déjà dans un groupe ou non.
/** \return True si l'objet est dans un groupe, False si l'objet n'est pas dans un groupe. */
bool hasParent();
//! Recupere le pointeur vers cette objet.
/** \return Un pointeur vers cette objet */
SingleObject* getPointer();
//! Recupere l'enumeration du type de l'objet.
/** \return Un enum de type object */
object getType();
//! Renvoie le type de la classe.
/** \return Une string qui donne le type. */
std::string getClassType();
//! Renvoie le pointeur vers le parent du SingleObject.
/** \return Le pointeur vers l'Object parent. */
Object* getParent();
//! Renvoie un boolèen qui nous indique si le SingleObject appartient ou non à un groupe.
/** \return True si le SingleObject est dans un groupe, False sinon. */
bool isInGroup();
//! Supprime le scenenode dans Irrlicht, à utiliser seulement si on supprime un seule SingleObject
void Remove();
private:
//! Le pointeur vers le parent du SingleObject.
Object* parent;
//! L'énumération de type object qui nous indique la forme du SingleObject
object type;
};
#endif /* SINGLEOBJECT_H */