TDME2 1.9.121
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ParticleSystemEditorTabController.h
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <string>
5
6#include <tdme/tdme.h>
11#include <tdme/math/Vector3.h>
17
18using std::array;
19using std::string;
20
37
38/**
39 * Particle system editor tab controller
40 * @author Andreas Drewke
41 * @version $Id$
42 */
44 : public TabController
45{
46
47private:
54 PopUps* popUps { nullptr };
55
56 array<string, 3> applyBaseNodes {
57 "particletype_type",
58 "particleemitter_type",
59 "particleemitter_type_details"
60 };
61
62 array<string, 6> applyOPSNodes {
63 "particletype_object_scale",
64 "particletype_object_maxcount",
65 "particletype_object_autoemit"
66 };
67
68 array<string, 6> applyPPSNodes {
69 "particletype_point_size",
70 "particletype_point_maxcount",
71 "particletype_point_horizontal_sprites",
72 "particletype_point_vertical_sprites",
73 "particletype_point_fps",
74 "particletype_point_autoemit"
75 };
76
77 array<string, 5> applyFPSNodes {
78 "particletype_fog_size",
79 "particletype_fog_maxcount",
80 "particletype_fog_horizontal_sprites",
81 "particletype_fog_vertical_sprites",
82 "particletype_fog_fps",
83 };
84
85 array<string, 24> applyBBPENodes {
86 "particleemitter_box_location_x",
87 "particleemitter_box_location_y",
88 "particleemitter_box_location_z",
89 "particleemitter_box_rotation_x",
90 "particleemitter_box_rotation_y",
91 "particleemitter_box_rotation_z",
92 "particleemitter_box_halfsize_x",
93 "particleemitter_box_halfsize_y",
94 "particleemitter_box_halfsize_z",
95 "particleemitter_box_colorstart",
96 "particleemitter_box_colorend",
97 "particleemitter_box_count",
98 "particleemitter_box_lifetime_min",
99 "particleemitter_box_lifetime_max",
100 "particleemitter_box_velocity_min_x",
101 "particleemitter_box_velocity_min_y",
102 "particleemitter_box_velocity_min_z",
103 "particleemitter_box_velocity_max_x",
104 "particleemitter_box_velocity_max_y",
105 "particleemitter_box_velocity_max_z",
106 "particleemitter_box_mass_min",
107 "particleemitter_box_mass_max"
108 };
109
110 array<string, 14> applyPPENodes {
111 "particleemitter_point_location_x",
112 "particleemitter_point_location_y",
113 "particleemitter_point_location_z",
114 "particleemitter_point_count",
115 "particleemitter_point_lifetime_min",
116 "particleemitter_point_lifetime_max",
117 "particleemitter_point_velocity_min_x",
118 "particleemitter_point_velocity_min_y",
119 "particleemitter_point_velocity_min_z",
120 "particleemitter_point_velocity_max_x",
121 "particleemitter_point_velocity_max_y",
122 "particleemitter_point_velocity_max_z",
123 "particleemitter_point_mass_min",
124 "particleemitter_point_mass_max"
125 };
126
127 array<string, 15> applySPENodes {
128 "particleemitter_sphere_location_x",
129 "particleemitter_sphere_location_y",
130 "particleemitter_sphere_location_z",
131 "particleemitter_sphere_radius",
132 "particleemitter_sphere_count",
133 "particleemitter_sphere_lifetime_min",
134 "particleemitter_sphere_lifetime_max",
135 "particleemitter_sphere_velocity_min_x",
136 "particleemitter_sphere_velocity_min_y",
137 "particleemitter_sphere_velocity_min_z",
138 "particleemitter_sphere_velocity_max_x",
139 "particleemitter_sphere_velocity_max_y",
140 "particleemitter_sphere_velocity_max_z",
141 "particleemitter_sphere_mass_min",
142 "particleemitter_sphere_mass_max"
143 };
144
145 array<string, 18> applyCPENodes {
146 "particleemitter_circle_location_x",
147 "particleemitter_circle_location_y",
148 "particleemitter_circle_location_z",
149 "particleemitter_circle_rotation_x",
150 "particleemitter_circle_rotation_y",
151 "particleemitter_circle_rotation_z",
152 "particleemitter_circle_radius",
153 "particleemitter_circle_count",
154 "particleemitter_circle_lifetime_min",
155 "particleemitter_circle_lifetime_max",
156 "particleemitter_circle_velocity_min_x",
157 "particleemitter_circle_velocity_min_y",
158 "particleemitter_circle_velocity_min_z",
159 "particleemitter_circle_velocity_max_x",
160 "particleemitter_circle_velocity_max_y",
161 "particleemitter_circle_velocity_max_z",
162 "particleemitter_circle_mass_min",
163 "particleemitter_circle_mass_max",
164 };
165
166 array<string, 16> applyRPENodes {
167 "particleemitter_radial_location_x",
168 "particleemitter_radial_location_y",
169 "particleemitter_radial_location_z",
170 "particleemitter_radial_rotation_x",
171 "particleemitter_radial_rotation_y",
172 "particleemitter_radial_rotation_z",
173 "particleemitter_radial_radius",
174 "particleemitter_radial_colorstart",
175 "particleemitter_radial_colorend",
176 "particleemitter_radial_count",
177 "particleemitter_radial_lifetime_min",
178 "particleemitter_radial_lifetime_max",
179 "particleemitter_radial_velocity_min",
180 "particleemitter_radial_velocity_max",
181 "particleemitter_radial_mass_min",
182 "particleemitter_radial_mass_max"
183 };
184
185public:
186 /**
187 * Public constructor
188 * @param view view
189 */
191
192 /**
193 * Destructor
194 */
196
197 /**
198 * @return display sub screen controller
199 */
202 }
203
204 /**
205 * @return pyhsics sub screen controller
206 */
209 }
210
211 /**
212 * @return prototype sounds sub screen controller
213 */
216 }
217
218 /**
219 * Get view
220 */
222
223 // overridden method
224 GUIScreenNode* getScreenNode() override;
225
226 // overridden methods
227 void initialize(GUIScreenNode* screenNode) override;
228 void dispose() override;
229 void save() override;
230 void saveAs() override;
231
232 // overridden methods
233 void onValueChanged(GUIElementNode* node) override;
234 void onActionPerformed(GUIActionListenerType type, GUIElementNode* node) override;
235 void onFocus(GUIElementNode* node) override;
236 void onUnfocus(GUIElementNode* node) override;
237 void onContextMenuRequested(GUIElementNode* node, int mouseX, int mouseY) override;
238
239 /**
240 * Set outliner content
241 */
242 void setOutlinerContent();
243
244 /**
245 * Set outliner add drop down content
246 */
248
249 /**
250 * Set particle system details
251 * @param particleSystemIdx particle system index
252 */
253 void setParticleSystemDetails(int particleSystemIdx);
254
255 /**
256 * Apply particle system details
257 * @param particleSystemIdx particle system index
258 */
259 void applyParticleSystemDetails(int particleSystemIdx);
260
261 /**
262 * Update details panel
263 * @param outlinerNode outliner node
264 */
265 void updateDetails(const string& outlinerNode);
266
267 /**
268 * Update point particle system emitter
269 * @param position position
270 */
271 void updatePointParticleSystemEmitter(const Vector3& position);
272
273 /**
274 * Update bounding box particle system emitter
275 * @param center center
276 * @param axis0 axis 0
277 * @param axis1 axis 1
278 * @param axis2 axis 2
279 * @param halfExtension half extension
280 */
281 void updateBoundingBoxParticleSystemEmitter(const Vector3& center, const Vector3& axis0, const Vector3& axis1, const Vector3& axis2, const Vector3& halfExtension);
282
283 /**
284 * Update circle particle system emitter
285 * @param center center
286 * @param axis0 axis 0
287 * @param axis1 axis 1
288 * @param axis2 axis 2
289 * @param radius radius
290 */
291 void updateCircleParticleSystemEmitter(const Vector3& center, const Vector3& axis0, const Vector3& axis1, float radius);
292
293 /**
294 * Update radial particle system emitter
295 * @param center center
296 * @param axis0 axis 0
297 * @param axis1 axis 1
298 * @param axis2 axis 2
299 * @param radius radius
300 */
301 void updateRadialParticleSystemEmitter(const Vector3& center, const Vector3& axis0, const Vector3& axis1, float radius);
302
303 /**
304 * Update sphere particle system emitter
305 * @param center center
306 * @param radius radius
307 */
308 void updateSphereParticleSystemEmitter(const Vector3& center, float radius);
309
310 /**
311 * Update info text line
312 * @param text text
313 */
314 void updateInfoText(const MutableString& text);
315
316 /**
317 * Shows the error pop up
318 * @param caption caption
319 * @param message message
320 */
321 void showErrorPopUp(const string& caption, const string& message);
322
323};
GUI parent node base class thats supporting child nodes.
Definition: GUIParentNode.h:43
GUI screen node that represents a screen that can be rendered via GUI system.
Definition: GUIScreenNode.h:57
3D vector 3 class
Definition: Vector3.h:22
Pop ups controller accessor class.
Definition: PopUps.h:19
void applyParticleSystemDetails(int particleSystemIdx)
Apply particle system details.
void updateSphereParticleSystemEmitter(const Vector3 &center, float radius)
Update sphere particle system emitter.
void onContextMenuRequested(GUIElementNode *node, int mouseX, int mouseY) override
On mouse over.
void onActionPerformed(GUIActionListenerType type, GUIElementNode *node) override
ParticleSystemEditorTabController(ParticleSystemEditorTabView *view)
Public constructor.
void updateCircleParticleSystemEmitter(const Vector3 &center, const Vector3 &axis0, const Vector3 &axis1, float radius)
Update circle particle system emitter.
void updateRadialParticleSystemEmitter(const Vector3 &center, const Vector3 &axis0, const Vector3 &axis1, float radius)
Update radial particle system emitter.
void showErrorPopUp(const string &caption, const string &message)
Shows the error pop up.
void setParticleSystemDetails(int particleSystemIdx)
Set particle system details.
void updatePointParticleSystemEmitter(const Vector3 &position)
Update point particle system emitter.
void updateBoundingBoxParticleSystemEmitter(const Vector3 &center, const Vector3 &axis0, const Vector3 &axis1, const Vector3 &axis2, const Vector3 &halfExtension)
Update bounding box particle system emitter.
Mutable string class.
Definition: MutableString.h:16
GUI action listener interface.
GUI change listener interface.
Tab controller, which connects UI with logic.
Definition: TabController.h:23