VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtFxParticleSystem.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2019 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
6 #pragma once
7 
11 
12 #include <tbb/mutex.h>
13 
14 #include <osg/Texture2D>
15 
18 
19 #include <vrvFx/vrvFx.h>
20 
21 // diguy internal headers
22 #include <bdiKeyFrames.h>
23 #include <declspec_bdiutil.h>
24 #include <libvecmat_float.h>
25 #include <bdiFarPosition.h>
26 #include <bdiOctTreeBoundingBox.h>
27 #include <bdi_vector_arrays.h>
28 
29 #include <bdiString.h>
30 #include <diguy_constants.h>
31 #include <bdi_simple_templates.h>
32 #include <bdiParticleDesc.h>
33 
34 #include <diguyMaterialType.h>
35 #include <diguyParticleSystem.h>
36 
37 // speed tree support for float16
38 #include <vrvFx/vrv_float16.h>
39 
41 #include <vrvFx/DtFxForce.h>
42 #include <vrvFx/DtFxScriptData.h>
43 
44 
45 #undef LIBBDIOBJECT_ARRAY_TYPE
46 #undef LIBBDIOBJECT_ARRAY_CLASS_NAME
47 #define LIBBDIOBJECT_ARRAY_TYPE bdiVec3f
48 #define LIBBDIOBJECT_ARRAY_CLASS_NAME bdiVec3fPtrArray
49 
51 
52 #undef LIBBDIOBJECT_ARRAY_TYPE
53 #undef LIBBDIOBJECT_ARRAY_CLASS_NAME
54 
55 class bdiVec3fArray;
56 class bdiVec4fArray;
57 
58 namespace makVrv
59 {
60 
64  {
65  public:
66  bdiString m_name;
67  bdiVec3f m_offset;
69  DtFxChildSystem() :m_time_offset(0) { ; }
70  };
71 
72 }
73 
74 
75 #define LIBBDIOBJECT_ARRAY_TYPE makVrv::DtFxChildSystem
76 #define LIBBDIOBJECT_ARRAY_CLASS_NAME DtFxChildSystemArray
77 #define LIBBDIOBJECT_ARRAY_INLINE
78 #define LIBBDIOBJECT_ARRAY_DISABLE_BOUNDS_CHECKING
79 
82 
83 #undef LIBBDIOBJECT_ARRAY_DISABLE_BOUNDS_CHECKING
84 #undef LIBBDIOBJECT_ARRAY_INLINE
85 #undef LIBBDIOBJECT_ARRAY_TYPE
86 #undef LIBBDIOBJECT_ARRAY_CLASS_NAME
87 
89 namespace makVrv
90 {
93  {
94  CIRCLE_EDGE = NUM_NOISE_TYPES,
100  };
101 
102  class DtFxOsgParticleDrawable;
103  struct DtFxParticleVertex;
104  class DtDe;
105  class DtLight;
106  class DtFxParticleSystemManager;
107  class DtOsgArticulatedModel;
108 
109 
113  {
114  public:
117 
119  virtual ~DtFxParticleDesc();
120 
123 
125  DtFxParticleDesc& operator=(const DtFxParticleDesc& orig);
126 
128  virtual void reset();
129 
131  virtual int read_cfg_entries(bdiCfgEntry* cfg_entry);
132 
134  virtual int write_cfg_entries(bdiCfgReader* cfg_reader);
135 
137  virtual bdiCfgEntry* create_cfg_entry();
138 
140  virtual void set_texture_name(const char* chTexFile);
141 
143  virtual void set_normal_texture_name(const char* chTexFile);
144 
146  virtual void setFileSouce(const char* file_source);
147 
149  virtual void setEdited(bool edited);
150 
152  virtual bool edited();
153 
155  virtual void setDiffuseTexture(osg::Texture2D* osg_diffuse_texture);
156 
158  virtual void setNormalTexture(osg::Texture2D* osg_normal_texture);
159 
164  inline float emissivityFactor() { return m_emissivity_factor; }
165 
167  inline float materialSpecularity() { return m_material_specularity; }
168 
170  inline float meterialMetallicness() { return m_material_metallicness; }
171 
173  inline float hdrGain() { return m_hdr_gain; }
174 
176  inline float translucency() { return m_translucency; }
177 
179  inline float softness() { return m_softness; }
180 
182  inline bool useLighting() { return m_use_lighting; }
183 
185  inline osg::Texture2D* diffuseTexture() {return myOsgDiffuseTexture.get();}
186 
187  inline osg::Texture2D* normalTexture() { return myOsgNormalTexture.get(); }
188 
190  inline const bdiString& fileSouce() { return myFileSouce; }
191 
193  inline const DtFxChildSystemArray& childSystems() { return m_child_system_descs; }
195 
197  static float smooth_interpolate_keys(FloatKeyFrameArray& array, char* prev_keyframe, float time);
199  static bdiVec4f smooth_interpolate_keys(ColorKeyFrameArray& array, char* prev_keyframe, float time);
200 
202  static float smooth_interpolate_keys(FloatKeyFrameArray& array, float speed);
204  static bdiVec4f smooth_interpolate_keys(ColorKeyFrameArray& array, float speed);
205 
206  public:
207  // matching base class behavior where these are public
210 
211  protected:
212  friend class DtFxParticleSystem;
214 
218  bdiVec3fPtrArray m_additional_offsets;
219 
221  float m_hdr_gain;
224 
227 
232 
235 
237  float m_softness;
238 
241 
243 
246 
249 
252 
255 
258 
261 
264 
267 
270 
272  bdiString myFileSouce;
273 
275  bool m_edited;
276 
279 
281 
282  DtFxCollisionObjectArray m_collision_objects;
283 
285  DtFxChildSystemArray m_child_system_descs;
286 
288  DtFxForceArray m_additional_forces;
289 
290  // debugging aid allows the editor to feed back to the renderer
293 
294 
296  bdiString mySizeScript;
297  bdiString myLifeTimeScript;
299  bdiString myStreakScript;
300  bdiString myColorScript;
302  };
303 
304 
308  {
315  };
316 
320  {
321  public:
323  DtFxParticle();
325  void clear_values();
326 
327  public:
328  bdiFarPosition m_cur_pos; // Current position of particle
329  bdiFarPosition m_prev_pos; // previous position of particle
330  bdiVec3f m_cur_vel; // Current velocity of particle
331  bdiVec4f m_cur_color;
332  bdiVec4f m_prev_color;
333  bdiVec4f m_color_var; // color variation
334 
335  float m_age; // age of the particle
336  float m_fSize; // size of the particle
337  float m_size_var; // random additional size
338  float m_fStreakSize; // current streak size
339  float m_life_time; // lifetime variation
342  char m_color_index; // current color keyframe index
343  char m_size_index; // current size keyframe index
344  char m_streak_index; // current streak keyframe index
345  char m_velocity_index; // current velocity keyframe index
346  char m_velocity_var_index; // current velocity variation index
347  char m_subtexture_index; // current frame index
348  bool m_stuck;
349 
350  };
351 
355  {
356  public:
357  bdiVec3f m_vertex;
358  unsigned char m_color[4];
360 // vrv_float16 m_age; // not currently used
362  vrv_float16 m_velocity[3];
363  unsigned char m_frame;
364 
366  DtFxParticleVertex() : m_frame(0)
367  {
368  m_vertex[0] = m_vertex[1] = m_vertex[2] = 0.0f;
369  m_color[0] = m_color[1] = m_color[2] = m_color[3] = 0;
370  }
371  };
372 
373  /* unused currently
374  struct bdiParticleSpawnEvent
375  {
376  DtParticleDesc* m_desc;
377  bdiFarPosition m_origin;
378  bdiVec3f m_direction;
379  bdiVec3f m_spawn_velocity_factor;
380  };
381  */
382 
383 
388  {
389  public:
391  {
392  Lights = 0x00000001,
393  Forces = 0x00000010,
394  Force3DVectors = 0x00000100,
395  Force2DVectors = 0x00001000,
396  BoundingBoxes = 0x00010000,
397  Objects = 0x00100000,
398  Velocities = 0x01000000,
399 
400  All = Lights | Forces | Force2DVectors | BoundingBoxes | Objects | Velocities,
401  };
402 
403  // class to help store sorted data
405  {
406  ParticleSortLocation() : index(0), distance(0) {}
407  ParticleSortLocation(unsigned short _index, float _distance) : index(_index), distance(_distance) { ; }
408  unsigned short index;
409  float distance;
410  };
411 
414 
416  virtual ~DtFxParticleSystem(void);
417 
419  virtual void set_position(double x, double y, double z);
421  virtual void get_position(double* x, double* y, double* z);
422 
424  virtual void set_position(int subemitter, double x, double y, double z);
425 
427  virtual void set_position(const bdiFarPosition& pos);
429  virtual const bdiFarPosition& get_position(void);
430 
432  virtual void reset_prev_position_next_update();
433 
435  virtual void set_rotation(float angle, float x, float y, float z);
436 
438  virtual void set_orientation_dir(const bdiVec3f& orient);
440  virtual void set_orientation(float* orientation);
441 
443  virtual void set_orientation(const bdiMat4f& orientationMat);
444 
446  virtual int update(float fElapsedTime);
447 
449  float get_age();
450 
452  virtual void prep_vbo_for_rendering();
454  virtual void render_debug_visuals(osg::RenderInfo& renderInfo, int flags);
455 
457  virtual void render_collision_objects(osg::RenderInfo& renderInfo);
458 
460  virtual void sort_system(const bdiFarPosition& eyePos);
461 
463  virtual void restart_particle_system(void);
464 
466  virtual void set_desc(bdiParticleDesc* desc);
468  virtual bdiParticleDesc* get_desc();
469 
471  virtual void stop_emitting();
473  virtual void start_emitting();
475  virtual void pause_emitting() { ; }
476 
478  virtual int get_emitting();
480  virtual int get_active_count();
482  virtual void stop_all_particles();
483 
485  const bdiOctTreeBoundingBox& get_bounding_box();
486 
487 
489  bool is_visible();
491  bool is_visible(const bdiCameraFrustum* frustum);
492 
494  virtual void set_scale(float scale);
496  virtual void set_scale(float scale_x, float scale_y, float scale_z);
498  virtual void set_scale(const bdiVec3f& scale);
500  virtual const bdiVec3f& get_scale();
501 
503  virtual void set_time_scale(float t);
506  virtual void setIntensity(float intensity);
508  virtual float intensity() const;
509 
512  virtual void setGroundDist(float groundDist);
514  virtual float groundDist() const;
515 
519  virtual void setIsRotorWash(bool scaleVortexLift);
522  virtual bool isRotorWash() const;
523 
526  virtual void setRotorDiameter(double diameter);
529  virtual double rotorDiameter() const;
530 
533  virtual void setRotorWindSpeed(double speed);
536  virtual double rotorWindSpeed() const;
537 
539  virtual void set_name(const char*name);
541  virtual const char* get_name();
543  virtual bdiLight* get_light_object();
544 
546  virtual void setRandomSeed(unsigned int value);
547 
549  virtual void setCameraDistance(float distance);
551  virtual float cameraDistance();
552 
554  virtual void addChildSystem(DtFxParticleSystem* child, float time_offset);
555 
557  virtual void set_vbo_start_index(int index);
559  virtual int get_vbo_start_index();
561  virtual bool get_sort_system();
562 
564  virtual const bdiVec3f& get_velocity();
565 
567  virtual void set_wind(const bdiVec3f& wind);
568 
570  virtual void addGlobalForces();
572  virtual void removeGlobalForces();
573 
575  virtual int artPartOverride();
576  virtual const bdiVec3f& artPartOffset();
577 
579  virtual void pauseUpdate();
581  virtual void resumeUpdate();
583  virtual bool paused();
584 
586  virtual void setAttachedModel(DtOsgArticulatedModel* model);
587 
589  virtual int getNumGlobalForces();
590 
592  virtual DtFxForceInterface* getGlobalForce(int index);
593 
594  inline void setIsPreviewSystem() { m_is_preview_system = true; }
595 
597  inline void setSortParticles(bool sort) { m_sort_particles = sort; }
598 
602 
603  inline bdiFarPosition* positionPtr() { return &m_position; }
604  inline float* systemScalePtr() { return &m_system_scale; }
605  inline float* systemIntensityPtr() { return &mySystemIntensity; }
606  inline const DtOsgArticulatedModel* attachedModel() const { return myAttachedModel; }
607  inline std::vector<DtFxParticleSystem*>& getChildSystems() { return m_child_systems; }
608  inline DtFxParticleDesc* desc() { return m_desc; }
609  inline DtFxParticleDrawDesc& currentDrawDesc() { return myCurrentDrawDesc; }
610  inline const bdiMat4f& geocentricMat() const { return myGeocentricMat; }
611  inline const bdiMat4f& geocentricMatInv() const { return myGeocentricMatInv; }
612 
615  virtual void recompileScripts();
616 
618  exprtk::symbol_table<float>& symbolTable() { return mySymbolTable; }
619 
620  protected:
622  virtual void emit_particles(float quantum);
624  virtual void update_appearance(int start_index);
626  virtual void update_physics(float quantum, int start_index);
627 
629  virtual void render_emitter(bdiVec3fArray& verts, bdiVec4fArray& colors, const bdiVec3f& emitter_pos);
630 
632  virtual void prepCurrentForcesAndObjects();
633 
635  void add_force_visual(const bdiFarPosition& camPos, bool has_geo, const bdiVec3f& upVec,
636  DtFxParticle &particle, bdiVec3fArray &verts, bdiVec4fArray &colors);
637 
638  protected:
639  std::string m_name;
643  std::vector<DtFxParticle> m_active_list;
645  std::vector<ParticleSortLocation> m_sorted_list;
655  bdiFarPosition m_position;
656  bdiFarPosition m_prev_position;
658  bdiVec3f m_velocity;
659  bdiMat4f myGeocentricMat;
667 
669  bdiVec3f m_scale;
671  bdiMat4f m_orientation;
675  bdiVec3f m_wind;
676 
677  // per frame scratch objects
678  float m_max_size;
679  bdiOctTreeBoundingBox m_bounding_box;
680  std::vector<const DtFxForce*> myCurrentForces;
681  std::vector<bdiFarPosition> myCurrentForcePositions;
682  std::vector<const DtFxCollisionObject*> myCurrentCollisionObjects;
683  std::vector<bdiVec3f> myCurrentPlaneNormals;
684  std::vector<bdiFarPosition> myEmitterPositions;
685 
686  bdiLight* m_light_object;
693 
694  std::vector<DtFxParticleSystem*> m_child_systems;
696 
697  // VRV custom data
698  bool myPaused;
703  DtFxForceArray m_global_forces;
704 
713  exprtk::symbol_table<float> mySymbolTable;
724  bdiVec4f myScriptRGBA;
725 
726 
727 };
728 
729 
730 }
731 
732 // declare array for importing from diguy code base!
733 #define LIBBDIOBJECT_NAMED_ARRAY_TYPE makVrv::DtFxParticleSystem
734 #define LIBBDIOBJECT_NAMED_ARRAY_CLASS_NAME DtFxParticleSystemArray
735 #undef LIBBDIOBJECT_NAMED_ARRAY_DECLSPEC_bdiutil
736 #define LIBBDIOBJECT_NAMED_ARRAY_INLINE
737 
738 #ifdef _WIN32
739 # ifdef vrvFx_EXPORTS
740 # define BDI_DECLSPEC_custom __declspec ( dllexport )
741 # else
742 # define BDI_DECLSPEC_custom __declspec ( dllimport )
743 # endif
744 #endif
745 
746 #include "libbdiobject_named_array_declaration_template.h"
747 #include "libbdiobject_named_array_definition_template.h"
748 
749 #undef LIBBDIOBJECT_NAMED_ARRAY_INLINE
750 #undef LIBBDIOBJECT_NAMED_ARRAY_TYPE
751 #undef LIBBDIOBJECT_NAMED_ARRAY_CLASS_NAME
752 #undef LIBBDIOBJECT_NAMED_ARRAY_DECLSPEC_bdiutil
753 
754 namespace makVrv
755 {
757  {
758  public:
761  const char* get_name() { return m_name.get_name(); }
762 
763  bdiString m_name;
765  };
766 }
767 
768 // declare array for importing from diguy code base!
769 #define LIBBDIOBJECT_NAMED_ARRAY_TYPE makVrv::DtFxParticleSystemHolder
770 #define LIBBDIOBJECT_NAMED_ARRAY_CLASS_NAME DtFxParticleSystemHolderArray
771 #undef LIBBDIOBJECT_NAMED_ARRAY_DECLSPEC_bdiutil
772 #define LIBBDIOBJECT_NAMED_ARRAY_INLINE
773 
774 #ifdef _WIN32
775 # ifdef vrvFx_EXPORTS
776 # define BDI_DECLSPEC_custom __declspec ( dllexport )
777 # else
778 # define BDI_DECLSPEC_custom __declspec ( dllimport )
779 # endif
780 #endif
781 
782 #include "libbdiobject_named_array_declaration_template.h"
783 #include "libbdiobject_named_array_definition_template.h"
784 
785 #undef LIBBDIOBJECT_NAMED_ARRAY_INLINE
786 #undef LIBBDIOBJECT_NAMED_ARRAY_TYPE
787 #undef LIBBDIOBJECT_NAMED_ARRAY_CLASS_NAME
788 #undef LIBBDIOBJECT_NAMED_ARRAY_DECLSPEC_bdiutil
float m_rotation_speed
Definition: DtFxParticleSystem.h:341
ExtendedNoiseType
/ingroup vrvFx
Definition: DtFxParticleSystem.h:92
bdiVec4f m_cur_color
Definition: DtFxParticleSystem.h:331
int m_num_to_release_var
variable release rate
Definition: DtFxParticleSystem.h:263
float meterialMetallicness()
how metallics is the system
Definition: DtFxParticleSystem.h:170
bdiMat4f m_current_orientation
Definition: DtFxParticleSystem.h:673
class that allows clients to add global forces (no export of virtual base class)
Definition: DtFxForceInterface.h:19
float emissivityFactor()
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:164
DtFxParticleVertex * m_data
pointer to vertex data to fill out
Definition: DtFxParticleSystem.h:314
float translucency()
modifies the amount of light that passes through the particles
Definition: DtFxParticleSystem.h:176
Core particle editing class.
Definition: bdiQWidgetParticleSystem.h:52
char m_velocity_var_index
Definition: DtFxParticleSystem.h:346
bool m_looked_up_normal_texture
Definition: DtFxParticleSystem.h:208
void setIsPreviewSystem()
Definition: DtFxParticleSystem.h:594
DtFxParticleSystemManager is the manager for all the particle systems and descriptions diguy sdk comm...
Definition: DtFxParticleSystemManager.h:74
bdiString m_name
Definition: DtFxParticleSystem.h:66
Implementation independent random number generator.
Definition: DtRandomNumberGenerator.h:23
DtOsgArticulatedModel * myAttachedModel
Definition: DtFxParticleSystem.h:701
int m_rotate_system
Definition: DtFxParticleSystem.h:670
char m_subtexture_index
Definition: DtFxParticleSystem.h:347
unsigned char m_frame
Definition: DtFxParticleSystem.h:363
float m_life_time
Definition: DtFxParticleSystem.h:339
std::vector< const DtFxForce * > myCurrentForces
Definition: DtFxParticleSystem.h:680
bdiString mySizeScript
scripts
Definition: DtFxParticleSystem.h:296
float * systemIntensityPtr()
Definition: DtFxParticleSystem.h:605
bdiVec4f m_color_var
Definition: DtFxParticleSystem.h:333
DtFxScriptData myLifetimeScript
Definition: DtFxParticleSystem.h:706
float myScriptSystemWindSpeed
Definition: DtFxParticleSystem.h:721
float myScriptNumParticles
shadow vars for the symbol table
Definition: DtFxParticleSystem.h:715
a cpu side particle representation
Definition: DtFxParticleSystem.h:319
bdiFarPosition * positionPtr()
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:603
Contains force class.
bool myPaused
Definition: DtFxParticleSystem.h:698
float m_size_var
Definition: DtFxParticleSystem.h:337
char m_streak_index
Definition: DtFxParticleSystem.h:344
DtFxParticleVertex()
inline constructor
Definition: DtFxParticleSystem.h:366
Definition: DtFxParticleSystem.h:98
DtFxScriptData myStreakScript
Definition: DtFxParticleSystem.h:708
ParticleSortLocation()
Definition: DtFxParticleSystem.h:406
bool m_color_by_age
Definition: DtFxParticleSystem.h:256
Contains collision object class.
bool m_normalize_light_time
should light time get normalized
Definition: DtFxParticleSystem.h:269
bdiVec4f m_prev_color
Definition: DtFxParticleSystem.h:332
bool m_reset_prev_position_next_update
Definition: DtFxParticleSystem.h:668
DtFxParticleDrawDesc myCurrentDrawDesc
Definition: DtFxParticleSystem.h:695
bdiVec3fPtrArray m_additional_offsets
Definition: DtFxParticleSystem.h:218
float materialSpecularity()
how much specularity will the material have
Definition: DtFxParticleSystem.h:167
float myGroundDist
Definition: DtFxParticleSystem.h:662
float m_softness
depth buffer softness smoothing
Definition: DtFxParticleSystem.h:237
float m_initial_velocity_scale
how the velocity of the emitter should get
Definition: DtFxParticleSystem.h:251
virtual void pause_emitting()
unsupported it&#39;s the same as stop
Definition: DtFxParticleSystem.h:475
bdiString m_normal_map_file_name
Definition: DtFxParticleSystem.h:209
Definition: DtFxParticleSystem.h:96
float m_time_since_update
Definition: DtFxParticleSystem.h:650
#define DT_DLL_VRVFX
Definition: vrvFx.h:20
float softness()
modifies the amount of light that passes through the particles
Definition: DtFxParticleSystem.h:179
float myScriptCurrentValue
Definition: DtFxParticleSystem.h:723
DtFxParticleSystem * m_system
Definition: DtFxParticleSystem.h:764
float m_max_size
Definition: DtFxParticleSystem.h:678
bool myActiveScripts
Definition: DtFxParticleSystem.h:711
int myArtPartOverride
Definition: DtFxParticleSystem.h:291
bool m_add_light
Definition: DtFxParticleSystem.h:688
bdiString myRotationSpeedScript
Definition: DtFxParticleSystem.h:301
Definition: DtFxParticleSystem.h:94
Contains script class.
bdiMat4f m_orientation
Definition: DtFxParticleSystem.h:671
float m_material_metallicness
how metallic is the system
Definition: DtFxParticleSystem.h:229
Contains DLL export macros.
std::vector< DtFxParticle > m_active_list
array of cpu particles
Definition: DtFxParticleSystem.h:643
bdiString myColorScript
Definition: DtFxParticleSystem.h:300
float m_fSize
Definition: DtFxParticleSystem.h:336
An articulated model manipulator for controlling an articulated model.
Definition: DtOsgArticulatedModel.h:56
bool m_has_valid_position
Definition: DtFxParticleSystem.h:690
float myScriptSystemSpeed
Definition: DtFxParticleSystem.h:719
float m_rotation_amount
Definition: DtFxParticleSystem.h:340
float m_translucency
modifies the amount of light that passes through the particles
Definition: DtFxParticleSystem.h:234
bool m_sort_particles
Definition: DtFxParticleSystem.h:689
DtFxParticleDrawDesc & currentDrawDesc()
Definition: DtFxParticleSystem.h:609
float m_color_speed_scale
Definition: DtFxParticleSystem.h:259
int m_active_count
Definition: DtFxParticleSystem.h:646
float distance
Definition: DtFxParticleSystem.h:409
DtFxScriptData myReleaseRateScript
Definition: DtFxParticleSystem.h:707
Definition: DtFxParticleSystem.h:99
a gpu vbo representation of the particle
Definition: DtFxParticleSystem.h:354
float m_air_resistance_factor
Definition: DtFxParticleSystem.h:242
Definition: vrv_float16.h:33
float m_material_specularity
how much specularity will the material have
Definition: DtFxParticleSystem.h:226
bdiString myFileSouce
which file is this from
Definition: DtFxParticleSystem.h:272
wrapper around a parsed expression.
Definition: DtFxScriptData.h:17
bool useLighting()
should lighting be enabled on this system
Definition: DtFxParticleSystem.h:182
float myScriptParticleSpeed
Definition: DtFxParticleSystem.h:716
osg::ref_ptr< osg::Texture2D > myOsgNormalTexture
Definition: DtFxParticleSystem.h:280
bdiVec3f m_position_offset
additional data added by vantage position offset of psystem
Definition: DtFxParticleSystem.h:217
int m_vbo_start_index
Definition: DtFxParticleSystem.h:692
float myRotorDiameter
Definition: DtFxParticleSystem.h:664
bdiFarPosition m_last_geocentric_postion
Definition: DtFxParticleSystem.h:657
float m_initial_rotation_variation
noise rotation at start
Definition: DtFxParticleSystem.h:248
bool m_use_lighting
skip lighting calculations
Definition: DtFxParticleSystem.h:231
float m_time_scale
Definition: DtFxParticleSystem.h:651
std::vector< bdiFarPosition > myCurrentForcePositions
Definition: DtFxParticleSystem.h:681
DtFxForceArray m_global_forces
a list of forces that this systems owns, cloned from templates in the description ...
Definition: DtFxParticleSystem.h:703
bool m_emitting
Definition: DtFxParticleSystem.h:647
const DtFxChildSystemArray & childSystems()
list of child systems to create
Definition: DtFxParticleSystem.h:193
Contains makVrv::DtRandomNumberGenerator class.
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
float * systemScalePtr()
Definition: DtFxParticleSystem.h:604
DtFxScriptData mySizeScript
Definition: DtFxParticleSystem.h:705
DtRandomNumberGenerator myRandomNumberGen
Definition: DtFxParticleSystem.h:700
DT_DLL_vrfutil double angle(double vec1[3], double vec2[3])
DtFxParticleDesc * m_desc
the description of the particle system
Definition: DtFxParticleSystem.h:641
bdiMat4f myGeocentricMat
Definition: DtFxParticleSystem.h:659
float m_next_release_freq
Definition: DtFxParticleSystem.h:654
bdiLight * m_light_object
Definition: DtFxParticleSystem.h:686
DtFxScriptData myRotationSpeedScript
Definition: DtFxParticleSystem.h:710
std::string m_name
Definition: DtFxParticleSystem.h:639
bdiVec3f m_offset
Definition: DtFxParticleSystem.h:67
float m_auto_start_time
Definition: DtFxParticleSystem.h:648
exprtk::symbol_table< float > mySymbolTable
Definition: DtFxParticleSystem.h:713
float m_camera_distance
Definition: DtFxParticleSystem.h:687
Definition: DtFxParticleSystem.h:95
bdiOctTreeBoundingBox m_bounding_box
Definition: DtFxParticleSystem.h:679
float hdrGain()
brightness multiplier on colors
Definition: DtFxParticleSystem.h:173
float m_time_since_stopping
Definition: DtFxParticleSystem.h:649
float m_hdr_gain
multiplier for hdr
Definition: DtFxParticleSystem.h:221
bdiMat4f myGeocentricMatInv
Definition: DtFxParticleSystem.h:660
bdiVec3f m_scale
Definition: DtFxParticleSystem.h:669
void setSortParticles(bool sort)
sets if particles should sort or not
Definition: DtFxParticleSystem.h:597
std::vector< DtFxParticleSystem * > & getChildSystems()
Definition: DtFxParticleSystem.h:607
DtParticleSystem is implementation of the particle system, vrvOsg communicates with it via DtParticle...
Definition: DtFxParticleSystem.h:387
float myRotorWindSpeed
Definition: DtFxParticleSystem.h:665
DtFxChildSystemArray m_child_system_descs
references to the other child systems
Definition: DtFxParticleSystem.h:285
const char * get_name()
Definition: DtFxParticleSystem.h:761
const bdiString & fileSouce()
which file the system was from
Definition: DtFxParticleSystem.h:190
osg::Texture2D * normalTexture()
Definition: DtFxParticleSystem.h:187
char m_velocity_index
Definition: DtFxParticleSystem.h:345
DtFxCollisionObjectArray m_collision_objects
Definition: DtFxParticleSystem.h:282
float m_release_frequency_var
variable release rate
Definition: DtFxParticleSystem.h:266
float m_age
Definition: DtFxParticleSystem.h:335
bool m_edited
has this description been edited
Definition: DtFxParticleSystem.h:275
std::vector< bdiVec3f > myCurrentPlaneNormals
Definition: DtFxParticleSystem.h:683
DtFxForceArray m_additional_forces
list of additional forces
Definition: DtFxParticleSystem.h:288
osg::ref_ptr< osg::Texture2D > myOsgDiffuseTexture
osg lookup of texture
Definition: DtFxParticleSystem.h:278
bool m_size_by_age
Definition: DtFxParticleSystem.h:257
ParticleSortLocation(unsigned short _index, float _distance)
Definition: DtFxParticleSystem.h:407
bool mySlavedPositions
Definition: DtFxParticleSystem.h:712
float myScriptParticleAge
Definition: DtFxParticleSystem.h:717
float myScriptSystemForceReceived
Definition: DtFxParticleSystem.h:720
bdiString myLifeTimeScript
Definition: DtFxParticleSystem.h:297
vrv_float16 m_size
Definition: DtFxParticleSystem.h:359
DtLight * myVrvLight
Definition: DtFxParticleSystem.h:699
DtFxParticleSystemHolder()
Definition: DtFxParticleSystem.h:759
float mySystemIntensity
Definition: DtFxParticleSystem.h:661
Definition: DtFxParticleSystem.h:97
bdiVec3f m_spawn_velocity_factor
Definition: DtFxParticleSystem.h:672
std::vector< const DtFxCollisionObject * > myCurrentCollisionObjects
Definition: DtFxParticleSystem.h:682
description of the particle system rendering that can be prepped in a background thread ...
Definition: DtFxParticleSystem.h:307
char m_color_index
Definition: DtFxParticleSystem.h:342
bdiString myReleaseRateScript
Definition: DtFxParticleSystem.h:298
float m_system_scale
Definition: DtFxParticleSystem.h:674
bdiString myStreakScript
Definition: DtFxParticleSystem.h:299
bdiString m_name
Definition: DtFxParticleSystem.h:763
float m_fStreakSize
Definition: DtFxParticleSystem.h:338
DtFxScriptData myColorScript
Definition: DtFxParticleSystem.h:709
float myScriptParticleNormalizedAge
Definition: DtFxParticleSystem.h:718
A child systems thats created when a parent system is created /ingroup vrvFx.
Definition: DtFxParticleSystem.h:63
DtFxChildSystem()
Definition: DtFxParticleSystem.h:69
Class for generic lights.
Definition: DtLight.h:48
unsigned short index
Definition: DtFxParticleSystem.h:408
bool m_normalized_animation_time
should the the particle animation play out over the lifetime.
Definition: DtFxParticleSystem.h:254
bool m_stuck
Definition: DtFxParticleSystem.h:348
bdiVec3f m_vertex
Definition: DtFxParticleSystem.h:357
DebugFlags
Definition: DtFxParticleSystem.h:390
bool myIsRotorWash
Definition: DtFxParticleSystem.h:663
std::vector< bdiFarPosition > myEmitterPositions
Definition: DtFxParticleSystem.h:684
float m_rotation_variation
noise rotation variation added to current rot speed
Definition: DtFxParticleSystem.h:245
float m_time_offset
Definition: DtFxParticleSystem.h:68
bdiFarPosition m_cur_pos
Definition: DtFxParticleSystem.h:328
exprtk::symbol_table< float > & symbolTable()
script support
Definition: DtFxParticleSystem.h:618
const bdiMat4f & geocentricMatInv() const
Definition: DtFxParticleSystem.h:611
Definition: DtFxParticleSystem.h:756
float myScriptInputValue
Definition: DtFxParticleSystem.h:722
bdiFarPosition m_prev_position
Definition: DtFxParticleSystem.h:656
float m_next_release_time
Definition: DtFxParticleSystem.h:652
const DtOsgArticulatedModel * attachedModel() const
Definition: DtFxParticleSystem.h:606
bdiVec3f m_velocity
Definition: DtFxParticleSystem.h:658
float m_last_release_time
Definition: DtFxParticleSystem.h:653
std::vector< ParticleSortLocation > m_sorted_list
Definition: DtFxParticleSystem.h:645
support class for float16
int m_restart_count
Definition: DtFxParticleSystem.h:666
bdiVec3f myArtPartOverrideOffset
Definition: DtFxParticleSystem.h:292
vrv_float16 m_rotation
Definition: DtFxParticleSystem.h:361
bdiFarPosition m_prev_pos
Definition: DtFxParticleSystem.h:329
bdiVec3f m_cur_vel
Definition: DtFxParticleSystem.h:330
bdiFarPosition m_position
Definition: DtFxParticleSystem.h:655
float m_emissivity_factor
multiplier for emissivity
Definition: DtFxParticleSystem.h:223
Definition: DtFxParticleSystem.h:404
bool m_is_preview_system
Definition: DtFxParticleSystem.h:691
bdiVec3f m_wind
Definition: DtFxParticleSystem.h:675
char m_size_index
Definition: DtFxParticleSystem.h:343
a subclass of bdiParticleDesc, currently reimplements all of configuration file reading and writing...
Definition: DtFxParticleSystem.h:112
float m_size_speed_scale
Definition: DtFxParticleSystem.h:260
osg::Texture2D * diffuseTexture()
particle system&#39;s diffuse texture
Definition: DtFxParticleSystem.h:185
const bdiMat4f & geocentricMat() const
Definition: DtFxParticleSystem.h:610
bdiVec4f myScriptRGBA
Definition: DtFxParticleSystem.h:724
std::vector< DtFxParticleSystem * > m_child_systems
Definition: DtFxParticleSystem.h:694
DtFxParticleDesc * desc()
Definition: DtFxParticleSystem.h:608
float m_particle_mass
impacts how wind impacts particle.
Definition: DtFxParticleSystem.h:240
DtFxParticleDesc * m_desc
pointer to description
Definition: DtFxParticleSystem.h:312
DtFxParticleSystemHolder(const DtFxParticleSystemHolder &rhs)
Definition: DtFxParticleSystem.h:760

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)