VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
bdiQWidgetParticleSystem.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
6 
10 
11 #pragma once
12 
14 
16 
17 #include <QtCore/QTimer>
18 
19 #include <QtCore/QVariant>
20 #include <QtGui/QIcon>
21 #include <QtWidgets/QApplication>
22 #include <QtWidgets/QCheckBox>
23 #include <QtWidgets/QComboBox>
24 #include <QtWidgets/QFrame>
25 #include <QtWidgets/QGridLayout>
26 #include <QtWidgets/QHBoxLayout>
27 #include <QtWidgets/QLabel>
28 #include <QtWidgets/QLineEdit>
29 #include <QtWidgets/QPushButton>
30 #include <QtWidgets/QSpacerItem>
31 #include <QtWidgets/QSpinBox>
32 #include <QtWidgets/QSplitter>
33 #include <QtWidgets/QWidget>
34 
35 class bdiQTextEdit;
36 
37 class QTreeWidgetItem;
38 class QToolButton;
39 
40 class bdiScenario;
41 class bdiScenarioApp;
42 class bdiLight;
43 
44 class diguyScenario;
45 class bdiParticleDesc;
46 
47 namespace makVrv
48 {
49  class DtParticleSystemModelAgent;
50  class DtEntityFacade;
51  class bdiQWidgetScenarioElementSelector2;
52  class bdiQPropTreeItemLightCombo;
53  class bdiQParticlePropTreeContainer;
54  class bdiQPropTree;
55  class bdiQPropTreeItem;
56  class bdiQPropTreeItemCombo;
57  class bdiQPropTreeItemFarPosition;
58  class bdiQPropTreeItemEdit;
59  class bdiQPropTreeItemColor;
60  class bdiQWidgetKeyFrameEditor;
61 
62  class DtDe;
63  class DtFxParticleSystemManager;
64  class DtFxParticleDesc;
65  class DtFxParticleSystem;
66 
70  {
71  Q_OBJECT;
72  public:
73 
74  bdiQWidgetParticleSystem(makVrv::DtDe& de, makVrv::DtFxParticleSystemManager* manager, int show_selector = 1, QWidget* parent = 0,
75  const char* name = 0, Qt::WindowFlags fl = 0);
76  virtual ~bdiQWidgetParticleSystem();
77 
78  virtual void hideEvent(QHideEvent* event);
79 
81 
82  void set_particle_desc(DtFxParticleDesc* particle_desc, int force_update = 0);
83 
84  void set_preview_location(double x, double y, double z);
85  bool isPreviewActive();
88 
90  virtual void drawDebugLines(const bdiFarPosition& eyePoint, const bdiMat4f& geocentricMatrix,
91  bdiVec3fArray& verts, bdiVec4fArray& colors);
92 
93  virtual void systemShutDown();
95  virtual void update_size_keys();
96  virtual void update_color_keys();
97 
98  public slots:
99 
105 
111  void slot_button_load_desc();
113 
114  void slot_read_name();
115  void slot_convert_clicked();
120  void slot_global_paused(bool);
121 
122  void slot_save_file();
123 
124  void slot_origin_changed();
125  // right click context menu
127  void slot_revertItem();
128  void slot_saveItem();
130  //void slot_key_frame_editor();
131 
132  // preview
133  void slot_num_preview_changed(int);
134  void slot_restart_preview();
135  void slot_step_preview();
136  void slot_toggle_play_paused(bool);
137  void slot_recompileScripts();
138  void slot_toggle_wireframe_mode(bool);
139  void slot_toggle_texture_mode(bool);
140 
141  void slot_timer_trigger();
144  void slot_debugMenuChecked();
146 
148 
149  signals:
150 
151  void desc_list_changed();
152  void signal_show_window_log(int);
153 
154 
155  protected:
156 
157  void setupUi();
158 
159  void build_ui(int force_ui_update = 0);
160 
161  void create_size_keys();
162  void create_color_keys();
163 
166 
167  void reset_ui();
168  void build_light_ui(bdiQPropTreeItem* pRoot);
169  void restoreState(void);
170  void saveState(void);
171  // Scaled font size to take into account windows Display Settings scaling
172  int headerFontSize(void);
173 
174  protected:
175 
177 
179 
181  bdiScenarioApp* m_app;
185 
186  QString m_string_name;
189  bdiLight* m_light;
198 
202 
203  // legacy osg system previewing remove when system is gone
206  QStringList myLegacySystems;
207  DtParticleSystemModelAgent* myLegacyAgent;
210  double myPreviewPosition[3];
211  float myFontScale;
212 
213  QTimer* m_update_timer;
214 
215  QMap<QString, bool> m_state_map;
218 
224 
229 
230  // from old ui file
231  QGridLayout* gridLayout_2;
232  QSplitter* m_splitter;
237  QGridLayout* gridLayout;
246  QSpacerItem* horizontalSpacer_2;
248  QGridLayout* gridLayout1;
253  QSpacerItem* spacer47;
255  QHBoxLayout* horizontalLayout;
257  QHBoxLayout* m_preview_layout;
258  QHBoxLayout* m_global_debug_layout;
263  };
264 }
light UI control
Definition: bdiQParticlePropTreeClasses.h:60
virtual void drawDebugLines(const bdiFarPosition &eyePoint, const bdiMat4f &geocentricMatrix, bdiVec3fArray &verts, bdiVec4fArray &colors)
DtFxDebugDrawCallbackInterface.
QToolButton * m_button_wireframe
Definition: bdiQWidgetParticleSystem.h:262
Definition: bdiQPropTreeItemCombo.h:107
QMap< QString, bool > m_state_map
Definition: bdiQWidgetParticleSystem.h:215
DtFxParticleDesc * m_particle_isolated_desc
Definition: bdiQWidgetParticleSystem.h:184
Core particle editing class.
Definition: bdiQWidgetParticleSystem.h:69
QToolButton * m_button_auto_loop
Definition: bdiQWidgetParticleSystem.h:242
DtFxParticleSystemManager is the manager for all the particle systems and descriptions diguy sdk comm...
Definition: DtFxParticleSystemManager.h:47
void set_particle_desc(DtFxParticleDesc *particle_desc, int force_update=0)
QToolButton * m_button_global
Definition: bdiQWidgetParticleSystem.h:243
QSplitter * m_splitter
Definition: bdiQWidgetParticleSystem.h:232
bdiQPropTreeItemEdit * m_size_item
Definition: bdiQWidgetParticleSystem.h:196
QToolButton * m_button_textures
Definition: bdiQWidgetParticleSystem.h:261
QPushButton * m_save_button
Definition: bdiQWidgetParticleSystem.h:259
void build_ui(int force_ui_update=0)
void createPreviewNodes(DtFxParticleSystem *pre)
bdiQPropTreeItemColor * m_color_item
Definition: bdiQWidgetParticleSystem.h:197
QGridLayout * gridLayout_2
Definition: bdiQWidgetParticleSystem.h:231
QAction * m_action_debug_lights
Definition: bdiQWidgetParticleSystem.h:220
Definition: bdiQPropTreeItemColor.h:30
QComboBox * m_library_combo
Definition: bdiQWidgetParticleSystem.h:252
bdiQPropTreeItem * m_global_objects_node
Definition: bdiQWidgetParticleSystem.h:195
QMenu * myMenu
Definition: bdiQWidgetParticleSystem.h:209
QVBoxLayout * myPropertyEditorAndPreviewLayout
Definition: bdiQWidgetParticleSystem.h:235
Definition: bdiQParticlePropTreeClasses.h:99
bdiQPropTree * m_tree
Definition: bdiQWidgetParticleSystem.h:188
QFrame * frame_2
Definition: bdiQWidgetParticleSystem.h:254
QCheckBox * m_check_preview_system
Definition: bdiQWidgetParticleSystem.h:238
void build_light_ui(bdiQPropTreeItem *pRoot)
bdiQPropTreeItemEdit * m_previewIntensity
Definition: bdiQWidgetParticleSystem.h:193
QGridLayout * gridLayout1
Definition: bdiQWidgetParticleSystem.h:248
QLabel * TextLabel3
Definition: bdiQWidgetParticleSystem.h:249
bdiQPropTreeItemCombo * myLegacyCombo
Definition: bdiQWidgetParticleSystem.h:204
QPushButton * myAdvancedDebuggingSettingsButton
Definition: bdiQWidgetParticleSystem.h:241
Definition: bdiQPropTreeItem.h:33
makVrv::DtDe & myDe
Definition: bdiQWidgetParticleSystem.h:201
QHBoxLayout * m_name_filesource_layout
Definition: bdiQWidgetParticleSystem.h:256
The DtEntityFacade is a facade around agents that make up an entity. This entity facade represents a ...
Definition: DtEntityFacade.h:35
int m_current_index
Definition: bdiQWidgetParticleSystem.h:199
Definition: bdiQPropTree_subclasses.h:109
Definition: bdiQWidgetScenarioElementSelector2.h:52
QSpinBox * m_spin_preview_count
Definition: bdiQWidgetParticleSystem.h:244
QString m_string_name
Definition: bdiQWidgetParticleSystem.h:186
virtual void systemShutDown()
DtFxDebugDrawCallbackInterface.
QPushButton * m_button_restart
Definition: bdiQWidgetParticleSystem.h:240
QPushButton * m_keys_button
Definition: bdiQWidgetParticleSystem.h:247
QPushButton * m_button_play_pause
Definition: bdiQWidgetParticleSystem.h:239
bdiQPropTreeItemEdit general value editors
Definition: bdiQPropTreeItemEdit.h:22
float myFontScale
Definition: bdiQWidgetParticleSystem.h:211
virtual void hideEvent(QHideEvent *event)
DtParticleSystemModelAgent * myLegacyAgent
Definition: bdiQWidgetParticleSystem.h:207
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtParticleSystem is implementation of the particle system, vrvOsg communicates with it via DtParticle...
Definition: DtFxParticleSystem.h:397
QLabel * label
Definition: bdiQWidgetParticleSystem.h:251
bool m_updating_keyframe_editor
Definition: bdiQWidgetParticleSystem.h:217
bdiQWidgetKeyFrameEditor * m_keyframe_editor
Definition: bdiQWidgetParticleSystem.h:216
QPushButton * m_button_step
Definition: bdiQWidgetParticleSystem.h:245
QFrame * m_prop_frame
Definition: bdiQWidgetParticleSystem.h:236
QSpacerItem * spacer47
Definition: bdiQWidgetParticleSystem.h:253
QTimer * m_update_timer
Definition: bdiQWidgetParticleSystem.h:213
Definition: bdiQWidgetKeyFrameEditor.h:28
QFrame * m_frame_selector
Definition: bdiQWidgetParticleSystem.h:233
int m_block_ui_rebuild
Definition: bdiQWidgetParticleSystem.h:200
DtFxParticleSystemManager * m_ps_manager
Definition: bdiQWidgetParticleSystem.h:182
bdiQPropTreeItemFarPosition * m_previewPosition
Definition: bdiQWidgetParticleSystem.h:191
void set_preview_location(double x, double y, double z)
QAction * m_action_debug_bounding_boxes
Definition: bdiQWidgetParticleSystem.h:226
bdiQPropTreeItem * m_previewNode
Definition: bdiQWidgetParticleSystem.h:190
void slot_selected_selector_element(QTreeWidgetItem *lvi, QTreeWidgetItem *prev)
QHBoxLayout * m_preview_layout
Definition: bdiQWidgetParticleSystem.h:257
QAction * m_action_debug_forces
Definition: bdiQWidgetParticleSystem.h:221
QHBoxLayout * m_global_debug_layout
Definition: bdiQWidgetParticleSystem.h:258
QAction * m_action_debug_velocities
Definition: bdiQWidgetParticleSystem.h:225
Base class to provide boost signal/slot management.
QHBoxLayout * horizontalLayout
Definition: bdiQWidgetParticleSystem.h:255
QLineEdit * m_edit_name
Definition: bdiQWidgetParticleSystem.h:250
bdiScenarioApp * m_app
Definition: bdiQWidgetParticleSystem.h:181
bool myAttachToMouse
Definition: bdiQWidgetParticleSystem.h:228
double myPreviewPosition[3]
Definition: bdiQWidgetParticleSystem.h:210
DtEntityFacade * myLegacyFacade
Definition: bdiQWidgetParticleSystem.h:208
QAction * m_action_debug_all
Definition: bdiQWidgetParticleSystem.h:219
Contains the declaration for makVrv::DtFxDebugDrawCallbackInterface.
A simple interface for allowing the qt particle editor to draw lines at the right time...
Definition: DtFxDebugDrawCallbackInterface.h:23
QSpacerItem * horizontalSpacer_2
Definition: bdiQWidgetParticleSystem.h:246
QPushButton * m_show_col_planes
Definition: bdiQWidgetParticleSystem.h:260
QAction * m_action_debug_force_vectors
Definition: bdiQWidgetParticleSystem.h:222
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:72
bdiQParticlePropTreeContainer * m_prop_widget
Definition: bdiQWidgetParticleSystem.h:187
bdiQPropTreeItem * myTestSystems
Definition: bdiQWidgetParticleSystem.h:205
QList< QWidget * > myEnabledOnAdvancedDebuggingSettings
Definition: bdiQWidgetParticleSystem.h:178
bdiQPropTreeItem * m_global_forces_node
Definition: bdiQWidgetParticleSystem.h:194
DtFxParticleDesc * m_particle_desc
Definition: bdiQWidgetParticleSystem.h:183
QStringList myLegacySystems
Definition: bdiQWidgetParticleSystem.h:206
QAction * m_action_debug_objects
Definition: bdiQWidgetParticleSystem.h:227
DtSignalConnectionManager myConnections
Definition: bdiQWidgetParticleSystem.h:176
void slot_toggleAdvancedDebuggingSettings(bool)
bdiLight * m_light
Definition: bdiQWidgetParticleSystem.h:189
a subclass of bdiParticleDesc, currently reimplements all of configuration file reading and writing...
Definition: DtFxParticleSystem.h:113
QGridLayout * gridLayout
Definition: bdiQWidgetParticleSystem.h:237
QAction * m_action_debug_force_vectors_3D
Definition: bdiQWidgetParticleSystem.h:223
bdiQPropTreeItemEdit * m_previewScale
Definition: bdiQWidgetParticleSystem.h:192
Definition: bdiQPropTree.h:51
QFrame * frame
Definition: bdiQWidgetParticleSystem.h:234
void slot_particle_desc_isolated(DtFxParticleDesc *desc)
bdiQWidgetParticleSystem(makVrv::DtDe &de, makVrv::DtFxParticleSystemManager *manager, int show_selector=1, QWidget *parent=0, const char *name=0, Qt::WindowFlags fl=0)
bdiQWidgetScenarioElementSelector2 * m_selector
Definition: bdiQWidgetParticleSystem.h:180

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)