forked from Aztyu/Editeur-3D
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGroupObject.h
83 lines (64 loc) · 2.97 KB
/
GroupObject.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
/*
* File: GroupObject.h
* Author: Aztyu
*
* Created on 21 avril 2015, 17:07
*/
#ifndef GROUPOBJECT_H
#define GROUPOBJECT_H
#include "SingleObject.h"
//! Classe qui est utilise pour creer un groupe d' objet
class GroupObject : 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. */
GroupObject(irr::scene::ISceneNode* obj, const char* name, irr::scene::ISceneNode* parent);
//! 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. */
GroupObject(irr::scene::ISceneNode* obj, const char* name, irr::scene::ISceneNode* parent, float total_scale);
//! 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 Vector3D qui contient la position de l'objet */
GroupObject(irr::scene::ISceneNode* obj, const char* name, irr::scene::ISceneNode* parent, const irr::core::vector3df& position);
//! Destructeur par defaut
virtual ~GroupObject();
//Select/Unselect
//! Selectionne tous les objets du groupes en changeant la couleur.
void selectObject();
//Select/Unselect
//! Deselectionne tous les objets du groupes en changeant la couleur.
void unselectObject();
//Gestion des objets du groupe
//! Ajoute un objet au groupe.
/** \param object Objet a ajouter. */
void addMember(SingleObject* object);
//! Supprime un objet du groupe selon sa place dans le vector.
/** \param index Position de l'objet dans le groupe. */
void removeMember(int index);
//! Supprime un objet du groupe selon un pointeur de l'objet.
/** \param objet Pointeur de l'objet du groupe. */
void removeMember(SingleObject* objet);
//! Nettoie le GroupObject de tous SingleObject étant null
void removeMember();
//! Renvoie le type de la classe.
/** \return Une string qui donne le type. */
std::string getClassType();
//! Renvoie le type de la classe.
/** \param windows Pointeur vers un TiXmlElement qui represente la base du fichier Xml de sauvegarde. */
void exportObject(TiXmlElement* windows);
//! Supprime le scenenode dans Irrlicht, à utiliser seulement si on supprime un seul GroupObject
void Remove();
//! Indique à tous les enfant de GroupObject de changer leur parent à NULL
void updateChild();
private:
//! vector qui contient les pointeurs vers tous les SingleObject du GroupObject.
std::vector<SingleObject*> member_object;
};
#endif /* GROUPOBJECT_H */