Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
blob: 9a276cbb503cb0cbe7efff662bab1997612fc904 (plain)
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
/*
   entityproperties.h
   This file is part of the Project::OSiRiON world editor 
   and is distributed under the terms and conditions of 
   the GNU General Public License version 2
*/

#ifndef __INCLUDED_EDITOR_ENTITYPROPERTIES__
#define __INCLUDED_EDITOR_ENTITYPROPERTIES__

#include "properties.h"

namespace editor
{

/**
 * @brief contains the game properties for an entity
 * */
class EntityProperties : public Properties
{
public:
	EntityProperties();
	virtual ~EntityProperties();
	
	/**
	 * @brief save ini formatted entity properties to a textstream
	 * */
	virtual void save(QTextStream &textstream);
	
	/* ---- inspectors ---- */
	
	/**
	 * @brief returns the type string of this object
	 * */
	inline const QString & type() const {
		return properties_type;
	}
	
	/**
	 * @brief returns the object radius
	 * */
	inline const float radius() const {
		return properties_radius;
	}
	
	/**
	 * @brief returns the angles of this object
	 * */
	inline const Vector3f &angles() const {
		return properties_angles;
	}
	
	/**
	 * @brief returns the yaw angle of this object
	 * */
	inline const float yaw() const {
		return properties_angles[0];
	}	
	
	/**
	 * @brief returns the subsections string of this object
	 * */
	inline const QString & subsections() const {
		return properties_subsections;
	}
	
	/* ---- mutators ---- */
	
	/**
	 * @brief set the subsection string of this object
	 * */
	void set_subsections(const QString &text) {
		properties_subsections = text;
	}
	
	/**
	 * @brief add a header to the subsection string of this object
	 * */
	void add_subsection_header(const QString &header, const QString &comment);
	
	/**
	 * @brief add a value key pair to the subsection string of this object
	 * */
	void add_subsection_value(const QString &key, const QString &value,const QString &comment);
	
	/**
	 * @brief set the type string of this object
	 * */
	inline void set_type(const QString &type) {
		properties_type = type;
	}
	
	/**
	 * @brief set the object radius
	 * */
	inline void set_radius(const float radius) {
		properties_radius = radius;
	}
	
	/**
	 * @brief set the object angles
	 * */
	inline void set_angles(const Vector3f &angles) {
		properties_angles.assign(angles);
	}
	
	/**
	 * @brief set the object yaw angle
	 * */
	inline void set_yaw(const float yaw) {
		properties_angles[0] = yaw;
	}

	/**
	 * @brief set the object pitch angle
	 * */
	inline void set_pitch(const float pitch) {
		properties_angles[1] = pitch;
	}
	
	/**
	 * @brief set the object roll angle
	 * */
	inline void set_roll (const float roll ) {
		properties_angles[2] = roll ;
	}
	
	/**
	 * @brief set the object angles
	 * */
	inline void set_angles(const float yaw, const float pitch, const float roll) {
		properties_angles.assign(yaw, pitch, roll);
	}
	
private:
	float			properties_radius;
	
	QString			properties_subsections;
	QString			properties_type;
	
	Vector3f		properties_angles;
};

} // namespace editor

#endif // __INCLUDED_EDITOR_ENTITYPROPERTIES__