forked from Aztyu/Editeur-3D
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathObject.h
More file actions
153 lines (120 loc) · 6.6 KB
/
Object.h
File metadata and controls
153 lines (120 loc) · 6.6 KB
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/*
* File: Object.h
* Author: Aztyu
*
* Created on 21 avril 2015, 17:07
*/
#ifndef OBJECT_H
#define OBJECT_H
#include <iostream>
#include "irrlicht.h"
#include "libraries/tinyxml/tinyxml.h"
#include "libraries/rapidxml/rapidxml.hpp"
#include <vector>
//! Classe de base pour SIngleObject et GroupObject, gere les ISceneNodes natif a Irrlicht
class 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. */
Object(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. */
Object(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 */
Object(irr::scene::ISceneNode* obj, const char* name, irr::scene::ISceneNode* parent, const irr::core::vector3df& position);
//! Destructeur par defaut
virtual ~Object();
//Modification de l'objet
//! Change la position de l'objet pour celle passee en parametre.
/** \param x Position en x par rapport a l'origine.
* \param y Position en y par rapport a l'origine.
* \param z Position en z par rapport a l'origine. */
void setPosition(float x, float y, float z);
//! Change la position de l'objet pour celle passee en parametre.
/** \param values Vector3D qui contient la nouvelle position. */
void setPosition(irr::core::vector3df values);
//! Change l'echelle de l'objet pour celle passee en parametre.
/** \param x Echelle x par rapport a l'echelle d'origine.
* \param y Echelle y par rapport a l'echelle d'origine.
* \param z Echelle z par rapport a l'echelle d'origine. */
void setScale(float x, float y, float z);
//! Change l'echelle de l'objet pour celle passee en parametre.
/** \param values Vector3D qui contient la nouvelle echelle. */
void setScale(irr::core::vector3df values);
//! Change la rotation de l'objet pour celle passee en parametre.
/** \param x Rotation en degre sur l'axe x par rapport a la rotation d'origine.
* \param y Rotation en degre sur l'axe y par rapport a la rotation d'origine.
* \param z Rotation en degre sur l'axe z par rapport a la rotation d'origine. */
void setRotation(float x, float y, float z);
//! Change la rotation de l'objet pour celle passee en parametre.
/** \param values Vector3D qui contient la rotation en degre sur tous les axes. */
void setRotation(irr::core::vector3df values);
//! Modifie la position de l'objet par celle passee en parametre.
/** \param x Decalage en x par rapport a la position actuelle.
* \param y Decalage en y par rapport a la position actuelle.
* \param z Decalage en z par rapport a la position actuelle. */
void modifyPositionBy(float x, float y, float z);
//! Modifie la position de l'objet par celle passee en parametre.
/** \param values Vector3D qui contient le decalage dans toutes les directions par rapport a la position actuelle. */
void modifyPositionBy(irr::core::vector3df values);
//! Multiplie ou divise l'échelle de l'objet par celle passée en paramètre.
/** \param x Nombre par laquelle on multiplie(+) ou divise(-) l'échelle en x.
* \param y Nombre par laquelle on multiplie(+) ou divise(-) l'échelle en y.
* \param z Nombre par laquelle on multiplie(+) ou divise(-) l'échelle en z. */
void modifyScaleBy(float x, float y, float z);
//! Multiplie ou divise l'échelle de l'objet par celle passée en paramètre.
/** \param values Vector3D qui contient le nombre par laquelle on multiplie(+) ou divise(-) l'échelle dans toutes les directions. */
void modifyScaleBy(irr::core::vector3df values);
//! Modifie la rotation de l'objet par celle passee en parametre.
/** \param x Rotation en degre sur l'axe x par rapport a la rotation actuelle.
* \param y Rotation en degre sur l'axe y par rapport a la rotation actuelle.
* \param z Rotation en degre sur l'axe z par rapport a la rotation actuelle. */
void modifyRotationBy(float x, float y, float z);
//! Modifie la rotation de l'objet par celle passee en parametre.
/** \param values Vector3D qui contient la rotation en degre sur tous les axes par rapport a la rotation actuelle. */
void modifyRotationBy(irr::core::vector3df values);
//Recuperation des informations
//! Recupere la position de l'objet
/** \return Un vector3df qui contient la position de l'objet*/
const irr::core::vector3df& getPosition();
//! Recupere l'échelle de l'objet
/** \return Un vector3df qui contient l'échelle de l'objet*/
const irr::core::vector3df& getScale();
//! Recupere la rotation de l'objet
/** \return Un vector3df qui contient la rotation de l'objet*/
const irr::core::vector3df& getRotation();
//! Deselectionne l'objet en changeant la couleur.
virtual void unselectObject()=0;
//! Selectionne l'objet en changeant la couleur.
virtual void selectObject()=0;
//! Retourne le type d'objet Group ou Single
/** \return Une string contenant le type d'objet*/
virtual std::string getClassType()=0;
//Recuperation d'information
//! Retourne l'ISceneNode contenu dans l'objet
/** \return Pointeur vers l'ISceneNode(l'objet sous Irrlicht)*/
irr::scene::ISceneNode* getSceneNode();
//! Retourne le nom de l'objet
/** \return Le nom de l'objet*/
std::string getName();
//! Donner le nom de l'objet
/** \param name Le nom de l'objet*/
void setName(std::string name);
protected:
//! Contient le pointeur vers l'élèment de Irrlicht qui matérialise l'Object.
irr::scene::ISceneNode* objet;
//! Le nom de l'Object.
std::string object_name;
//! Pointeur vers l'élèment Irrlicht de la Zone.
irr::scene::ISceneNode* default_parent;
};
#endif /* OBJECT_H */