VR-Forces 5.0.3 Developer's Guide
 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) 2022 MAK Technologies, Inc.
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,
101  };
102 
103  class DtFxOsgParticleDrawable;
104  struct DtFxParticleVertex;
105  class DtDe;
106  class DtLight;
107  class DtFxParticleSystemManager;
108  class DtOsgArticulatedModel;
109 
110 
114  {
115  public:
118 
120  virtual ~DtFxParticleDesc();
121 
124 
126  DtFxParticleDesc& operator=(const DtFxParticleDesc& orig);
127 
129  virtual void reset();
130 
132  virtual int read_cfg_entries(bdiCfgEntry* cfg_entry);
133 
135  virtual int write_cfg_entries(bdiCfgReader* cfg_reader);
136 
138  virtual bdiCfgEntry* create_cfg_entry();
139 
141  virtual void set_texture_name(const char* chTexFile);
142 
144  virtual void set_normal_texture_name(const char* chTexFile);
145 
147  virtual void setFileSouce(const char* file_source);
148 
150  virtual void setEdited(bool edited);
151 
153  virtual bool edited();
154 
156  virtual void setDiffuseTexture(osg::Texture2D* osg_diffuse_texture);
157 
159  virtual void setNormalTexture(osg::Texture2D* osg_normal_texture);
160 
165  inline float emissivityFactor() { return m_emissivity_factor; }
166 
168  inline float materialSpecularity() { return m_material_specularity; }
169 
171  inline float meterialMetallicness() { return m_material_metallicness; }
172 
174  inline float hdrGain() { return m_hdr_gain; }
175 
177  inline float translucency() { return m_translucency; }
178 
180  inline float softness() { return m_softness; }
181 
183  inline bool useLighting() { return m_use_lighting; }
184 
186  inline osg::Texture2D* diffuseTexture() {return myOsgDiffuseTexture.get();}
187 
188  inline osg::Texture2D* normalTexture() { return myOsgNormalTexture.get(); }
189 
191  inline const bdiString& fileSouce() { return myFileSouce; }
192 
194  inline const DtFxChildSystemArray& childSystems() { return m_child_system_descs; }
196 
198  static float smooth_interpolate_keys(FloatKeyFrameArray& array, char* prev_keyframe, float time);
200  static bdiVec4f smooth_interpolate_keys(ColorKeyFrameArray& array, char* prev_keyframe, float time);
201 
203  static float smooth_interpolate_keys(FloatKeyFrameArray& array, float speed);
205  static bdiVec4f smooth_interpolate_keys(ColorKeyFrameArray& array, float speed);
206 
207  public:
208  // matching base class behavior where these are public
211 
212  protected:
213  friend class DtFxParticleSystem;
215 
219  bdiVec3fPtrArray m_additional_offsets;
220 
222  float m_hdr_gain;
225 
228 
233 
236 
238  float m_softness;
239 
242 
244 
247 
250 
253 
256 
259 
262 
265 
268 
271 
273 
276 
279 
281  bdiString myFileSouce;
282 
284  bool m_edited;
285 
288 
290 
291  DtFxCollisionObjectArray m_collision_objects;
292 
294  DtFxChildSystemArray m_child_system_descs;
295 
297  DtFxForceArray m_additional_forces;
298 
299  // debugging aid allows the editor to feed back to the renderer
302 
303 
305  bdiString mySizeScript;
306  bdiString myLifeTimeScript;
308  bdiString myStreakScript;
309  bdiString myColorScript;
311  bdiString myVelocityScript;
312  };
313 
314 
318  {
325  };
326 
330  {
331  public:
333  DtFxParticle();
335  void clear_values();
336 
337  public:
338  bdiFarPosition m_cur_pos; // Current position of particle
339  bdiFarPosition m_prev_pos; // previous position of particle
340  bdiVec3f m_cur_vel; // Current velocity of particle
341  bdiVec4f m_cur_color;
342  bdiVec4f m_prev_color;
343  bdiVec4f m_color_var; // color variation
344 
345  float m_age; // age of the particle
346  float m_fSize; // size of the particle
347  float m_size_var; // random additional size
348  float m_fStreakSize; // current streak size
349  float m_life_time; // lifetime variation
352  char m_color_index; // current color keyframe index
353  char m_size_index; // current size keyframe index
354  char m_streak_index; // current streak keyframe index
355  char m_velocity_index; // current velocity keyframe index
356  char m_velocity_var_index; // current velocity variation index
357  char m_subtexture_index; // current frame index
358  bool m_stuck;
359 
360  };
361 
365  {
366  public:
367  bdiVec3f m_vertex;
368  unsigned char m_color[4];
370 // vrv_float16 m_age; // not currently used
372  vrv_float16 m_velocity[3];
373  unsigned char m_frame;
374 
376  DtFxParticleVertex() : m_frame(0)
377  {
378  m_vertex[0] = m_vertex[1] = m_vertex[2] = 0.0f;
379  m_color[0] = m_color[1] = m_color[2] = m_color[3] = 0;
380  }
381  };
382 
383  /* unused currently
384  struct bdiParticleSpawnEvent
385  {
386  DtParticleDesc* m_desc;
387  bdiFarPosition m_origin;
388  bdiVec3f m_direction;
389  bdiVec3f m_spawn_velocity_factor;
390  };
391  */
392 
393 
398  {
399  public:
401  {
402  Lights = 0x00000001,
403  Forces = 0x00000010,
404  Force3DVectors = 0x00000100,
405  Force2DVectors = 0x00001000,
406  BoundingBoxes = 0x00010000,
407  Objects = 0x00100000,
408  Velocities = 0x01000000,
409 
410  All = Lights | Forces | Force2DVectors | BoundingBoxes | Objects | Velocities,
411  };
412 
413  // class to help store sorted data
415  {
416  ParticleSortLocation() : index(0), distance(0) {}
417  ParticleSortLocation(unsigned short _index, float _distance) : index(_index), distance(_distance) { ; }
418  unsigned short index;
419  float distance;
420  };
421 
424 
426  virtual ~DtFxParticleSystem(void);
427 
429  virtual void set_position(double x, double y, double z);
431  virtual void get_position(double* x, double* y, double* z);
432 
434  virtual void set_position(int subemitter, double x, double y, double z);
435 
437  virtual void set_position(const bdiFarPosition& pos);
439  virtual const bdiFarPosition& get_position(void);
440 
442  virtual void reset_prev_position_next_update();
443 
445  virtual void set_rotation(float angle, float x, float y, float z);
446 
448  virtual void set_orientation_dir(const bdiVec3f& orient);
450  virtual void set_orientation(float* orientation);
451 
453  virtual void set_orientation(const bdiMat4f& orientationMat);
454 
456  virtual int update(float fElapsedTime);
457 
459  float get_age();
460 
462  virtual void prep_vbo_for_rendering();
464  virtual void render_debug_visuals(osg::RenderInfo& renderInfo, int flags);
465 
467  virtual void render_collision_objects(osg::RenderInfo& renderInfo);
468 
470  virtual void sort_system(const bdiFarPosition& eyePos);
471 
473  virtual void restart_particle_system(void);
474 
476  virtual void set_desc(bdiParticleDesc* desc);
478  virtual bdiParticleDesc* get_desc();
479 
481  virtual void stop_emitting();
483  virtual void start_emitting();
485  virtual void pause_emitting() { ; }
486 
488  virtual int get_emitting();
490  virtual int get_active_count();
492  virtual void stop_all_particles();
494  virtual bool isEmitTimeInfinite() const;
495 
497  const bdiOctTreeBoundingBox& get_bounding_box();
498 
499 
501  bool is_visible();
503  bool is_visible(const bdiCameraFrustum* frustum);
504 
506  virtual void set_scale(float scale);
508  virtual void set_scale(float scale_x, float scale_y, float scale_z);
510  virtual void set_scale(const bdiVec3f& scale);
512  virtual const bdiVec3f& get_scale();
513 
515  virtual void set_time_scale(float t);
518  virtual void setIntensity(float intensity);
520  virtual float intensity() const;
521 
525  virtual void setIsRotorWash(bool scaleVortexLift);
528  virtual bool isRotorWash() const;
529 
532  virtual void setRotorDiameter(double diameter);
535  virtual double rotorDiameter() const;
536 
539  virtual void setRotorWindSpeed(double speed);
542  virtual double rotorWindSpeed() const;
543 
545  virtual void set_name(const char*name);
547  virtual const char* get_name();
549  virtual bdiLight* get_light_object();
550 
552  virtual void setRandomSeed(unsigned int value);
553 
555  virtual void setCameraDistance(float distance);
557  virtual float cameraDistance();
558 
560  virtual void addChildSystem(DtFxParticleSystem* child, float time_offset);
562  virtual void removeChildSystem(DtFxParticleSystem* child);
564  virtual void clearParent();
565 
567  virtual void set_vbo_start_index(int index);
569  virtual int get_vbo_start_index();
571  virtual bool get_sort_system();
572 
574  virtual const bdiVec3f& get_velocity();
575 
577  virtual void set_wind(const bdiVec3f& wind);
578 
580  virtual void addGlobalForces();
582  virtual void removeGlobalForces();
583 
585  virtual int artPartOverride();
586  virtual const bdiVec3f& artPartOffset();
587 
589  virtual void pauseUpdate();
591  virtual void resumeUpdate();
593  virtual bool paused();
594 
596  virtual void restart_merged_system();
597 
599  virtual void setAttachedModel(DtOsgArticulatedModel* model);
600 
602  virtual int getNumGlobalForces();
603 
605  virtual DtFxForceInterface* getGlobalForce(int index);
606 
607  inline void setIsPreviewSystem() { m_is_preview_system = true; }
608 
610  inline void setSortParticles(bool sort) { m_sort_particles = sort; }
611 
615 
616  inline bdiFarPosition* positionPtr() { return &m_position; }
617  inline float* systemScalePtr() { return &m_system_scale; }
618  inline float* systemIntensityPtr() { return &mySystemIntensity; }
619  inline const DtOsgArticulatedModel* attachedModel() const { return myAttachedModel; }
620  inline std::vector<DtFxParticleSystem*>& getChildSystems() { return m_child_systems; }
621  inline DtFxParticleDesc* desc() { return m_desc; }
622  inline DtFxParticleDrawDesc& currentDrawDesc() { return myCurrentDrawDesc; }
623  inline const bdiMat4f& geocentricMat() const { return myGeocentricMat; }
624  inline const bdiMat4f& geocentricMatInv() const { return myGeocentricMatInv; }
625 
628  virtual void recompileScripts();
629 
631  exprtk::symbol_table<float>& symbolTable() { return mySymbolTable; }
632 
633  protected:
635  virtual void emit_particles(float quantum);
636 
638  virtual void update_appearance(int start_index);
640  virtual void update_physics(float quantum, int start_index);
641 
643  virtual void render_emitter(bdiVec3fArray& verts, bdiVec4fArray& colors, const bdiVec3f& emitter_pos);
644 
646  virtual void prepCurrentForcesAndObjects();
647 
649  void add_force_visual(const bdiFarPosition& camPos, bool has_geo, const bdiVec3f& upVec,
650  DtFxParticle &particle, bdiVec3fArray &verts, bdiVec4fArray &colors);
651 
652  protected:
653  std::string m_name;
657  std::vector<DtFxParticle> m_active_list;
659  std::vector<ParticleSortLocation> m_sorted_list;
670  bdiFarPosition m_position;
671  bdiFarPosition m_prev_position;
673  bdiVec3f m_velocity;
674  bdiMat4f myGeocentricMat;
683 
685  bdiVec3f m_scale;
687  bdiMat4f m_orientation;
691  bdiVec3f m_wind;
692 
693  // per frame scratch objects
694  float m_max_size;
695  bdiOctTreeBoundingBox m_bounding_box;
696  std::vector<const DtFxForce*> myCurrentForces;
697  std::vector<bdiFarPosition> myCurrentForcePositions;
698  std::vector<const DtFxCollisionObject*> myCurrentCollisionObjects;
699  std::vector<bdiVec3f> myCurrentPlaneNormals;
700  std::vector<bdiFarPosition> myEmitterPositions;
701 
702  bdiLight* m_light_object;
709 
711  std::vector<DtFxParticleSystem*> m_child_systems;
713 
714  // VRV custom data
715  bool myPaused;
720  DtFxForceArray m_global_forces;
721 
729 
732  exprtk::symbol_table<float> mySymbolTable;
744  bdiVec4f myScriptRGBA;
745  bdiVec3f myScriptXYZ;
746 
747  };
748 
749 }
750 
751 // declare array for importing from diguy code base!
752 #define LIBBDIOBJECT_NAMED_ARRAY_TYPE makVrv::DtFxParticleSystem
753 #define LIBBDIOBJECT_NAMED_ARRAY_CLASS_NAME DtFxParticleSystemArray
754 #undef LIBBDIOBJECT_NAMED_ARRAY_DECLSPEC_bdiutil
755 #define LIBBDIOBJECT_NAMED_ARRAY_INLINE
756 
757 #ifdef _WIN32
758 # ifdef vrvFx_EXPORTS
759 # define BDI_DECLSPEC_custom __declspec ( dllexport )
760 # else
761 # define BDI_DECLSPEC_custom __declspec ( dllimport )
762 # endif
763 #endif
764 
765 #include "libbdiobject_named_array_declaration_template.h"
766 #include "libbdiobject_named_array_definition_template.h"
767 
768 #undef LIBBDIOBJECT_NAMED_ARRAY_INLINE
769 #undef LIBBDIOBJECT_NAMED_ARRAY_TYPE
770 #undef LIBBDIOBJECT_NAMED_ARRAY_CLASS_NAME
771 #undef LIBBDIOBJECT_NAMED_ARRAY_DECLSPEC_bdiutil
772 
773 namespace makVrv
774 {
776  {
777  public:
780  const char* get_name() { return m_name.get_name(); }
781 
782  private:
785 
786  public:
787 
788  bdiString m_name;
790  };
791 }
792 
793 // declare array for importing from diguy code base!
794 #define LIBBDIOBJECT_NAMED_ARRAY_TYPE makVrv::DtFxParticleSystemHolder
795 #define LIBBDIOBJECT_NAMED_ARRAY_CLASS_NAME DtFxParticleSystemHolderArray
796 #undef LIBBDIOBJECT_NAMED_ARRAY_DECLSPEC_bdiutil
797 #define LIBBDIOBJECT_NAMED_ARRAY_INLINE
798 
799 #ifdef _WIN32
800 # ifdef vrvFx_EXPORTS
801 # define BDI_DECLSPEC_custom __declspec ( dllexport )
802 # else
803 # define BDI_DECLSPEC_custom __declspec ( dllimport )
804 # endif
805 #endif
806 
807 #include "libbdiobject_named_array_declaration_template.h"
808 #include "libbdiobject_named_array_definition_template.h"
809 
810 #undef LIBBDIOBJECT_NAMED_ARRAY_INLINE
811 #undef LIBBDIOBJECT_NAMED_ARRAY_TYPE
812 #undef LIBBDIOBJECT_NAMED_ARRAY_CLASS_NAME
813 #undef LIBBDIOBJECT_NAMED_ARRAY_DECLSPEC_bdiutil
float m_rotation_speed
Definition: DtFxParticleSystem.h:351
ExtendedNoiseType
/ingroup vrvFx
Definition: DtFxParticleSystem.h:92
bdiVec4f m_cur_color
Definition: DtFxParticleSystem.h:341
int m_num_to_release_var
variable release rate
Definition: DtFxParticleSystem.h:264
float meterialMetallicness()
how metallics is the system
Definition: DtFxParticleSystem.h:171
bdiMat4f m_current_orientation
Definition: DtFxParticleSystem.h:689
class that allows clients to add global forces (no export of virtual base class)
Definition: DtFxForceInterface.h:19
DtFxParticleSystemHolder & operator=(const DtFxParticleSystemHolder &)
Assignment Operator not implemented – Copy not allowed.
float emissivityFactor()
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:165
DtFxParticleVertex * m_data
pointer to vertex data to fill out
Definition: DtFxParticleSystem.h:324
float translucency()
modifies the amount of light that passes through the particles
Definition: DtFxParticleSystem.h:177
Core particle editing class.
Definition: bdiQWidgetParticleSystem.h:54
float m_light_in_fade_time
Definition: DtFxParticleSystem.h:272
char m_velocity_var_index
Definition: DtFxParticleSystem.h:356
bool m_looked_up_normal_texture
Definition: DtFxParticleSystem.h:209
void setIsPreviewSystem()
Definition: DtFxParticleSystem.h:607
DtFxParticleSystemManager is the manager for all the particle systems and descriptions diguy sdk comm...
Definition: DtFxParticleSystemManager.h:47
bdiString m_name
Definition: DtFxParticleSystem.h:66
Implementation independent random number generator.
Definition: DtRandomNumberGenerator.h:20
DtOsgArticulatedModel * myAttachedModel
Definition: DtFxParticleSystem.h:718
int m_rotate_system
Definition: DtFxParticleSystem.h:686
char m_subtexture_index
Definition: DtFxParticleSystem.h:357
unsigned char m_frame
Definition: DtFxParticleSystem.h:373
float m_life_time
Definition: DtFxParticleSystem.h:349
std::vector< const DtFxForce * > myCurrentForces
Definition: DtFxParticleSystem.h:696
bdiString mySizeScript
scripts
Definition: DtFxParticleSystem.h:305
float * systemIntensityPtr()
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:618
bool m_emit_from_random_particle_index
should this emit from a random particle or in order
Definition: DtFxParticleSystem.h:278
bdiVec4f m_color_var
Definition: DtFxParticleSystem.h:343
DtFxScriptData myLifetimeScript
Definition: DtFxParticleSystem.h:723
float myScriptSystemWindSpeed
Definition: DtFxParticleSystem.h:741
float myScriptNumParticles
shadow vars for the symbol table
Definition: DtFxParticleSystem.h:734
a cpu side particle representation
Definition: DtFxParticleSystem.h:329
bdiFarPosition * positionPtr()
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:616
Contains force class.
bool myPaused
Definition: DtFxParticleSystem.h:715
float m_size_var
Definition: DtFxParticleSystem.h:347
char m_streak_index
Definition: DtFxParticleSystem.h:354
DtFxParticleVertex()
inline constructor
Definition: DtFxParticleSystem.h:376
DtFxScriptData myStreakScript
Definition: DtFxParticleSystem.h:725
ParticleSortLocation()
Definition: DtFxParticleSystem.h:416
bool m_color_by_age
Definition: DtFxParticleSystem.h:257
Contains collision object class.
bool m_normalize_light_time
should light time get normalized
Definition: DtFxParticleSystem.h:270
bdiVec4f m_prev_color
Definition: DtFxParticleSystem.h:342
bool m_reset_prev_position_next_update
Definition: DtFxParticleSystem.h:684
DtFxParticleDrawDesc myCurrentDrawDesc
Definition: DtFxParticleSystem.h:712
bdiVec3fPtrArray m_additional_offsets
Definition: DtFxParticleSystem.h:219
float materialSpecularity()
how much specularity will the material have
Definition: DtFxParticleSystem.h:168
float m_softness
depth buffer softness smoothing
Definition: DtFxParticleSystem.h:238
float m_initial_velocity_scale
how the velocity of the emitter should get
Definition: DtFxParticleSystem.h:252
bdiString myVelocityScript
Definition: DtFxParticleSystem.h:311
virtual void pause_emitting()
unsupported it&#39;s the same as stop
Definition: DtFxParticleSystem.h:485
bdiString m_normal_map_file_name
Definition: DtFxParticleSystem.h:210
Definition: DtFxParticleSystem.h:96
float m_time_since_update
Definition: DtFxParticleSystem.h:665
#define DT_DLL_VRVFX
Definition: vrvFx.h:20
float softness()
modifies the amount of light that passes through the particles
Definition: DtFxParticleSystem.h:180
float myScriptCurrentValue
Definition: DtFxParticleSystem.h:743
DtFxParticleSystem * m_system
Definition: DtFxParticleSystem.h:789
float m_max_size
Definition: DtFxParticleSystem.h:694
bool myActiveScripts
Definition: DtFxParticleSystem.h:730
int myArtPartOverride
Definition: DtFxParticleSystem.h:300
bool m_add_light
Definition: DtFxParticleSystem.h:704
bdiString myRotationSpeedScript
Definition: DtFxParticleSystem.h:310
Definition: DtFxParticleSystem.h:94
Contains script class.
bdiMat4f m_orientation
Definition: DtFxParticleSystem.h:687
float m_material_metallicness
how metallic is the system
Definition: DtFxParticleSystem.h:230
Contains DLL export macros.
std::vector< DtFxParticle > m_active_list
array of cpu particles
Definition: DtFxParticleSystem.h:657
bdiString myColorScript
Definition: DtFxParticleSystem.h:309
float m_fSize
Definition: DtFxParticleSystem.h:346
float myScriptParticleIndex
Definition: DtFxParticleSystem.h:736
An articulated model manipulator for controlling an articulated model. Supports indirect rendering of...
Definition: DtOsgArticulatedModel.h:69
bool m_has_valid_position
Definition: DtFxParticleSystem.h:706
float myScriptSystemSpeed
Definition: DtFxParticleSystem.h:739
float m_rotation_amount
Definition: DtFxParticleSystem.h:350
float m_translucency
modifies the amount of light that passes through the particles
Definition: DtFxParticleSystem.h:235
bool m_sort_particles
Definition: DtFxParticleSystem.h:705
DtFxParticleDrawDesc & currentDrawDesc()
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:622
float m_color_speed_scale
Definition: DtFxParticleSystem.h:260
int m_active_count
Definition: DtFxParticleSystem.h:660
float distance
Definition: DtFxParticleSystem.h:419
DtFxScriptData myReleaseRateScript
Definition: DtFxParticleSystem.h:724
Definition: DtFxParticleSystem.h:100
a gpu vbo representation of the particle
Definition: DtFxParticleSystem.h:364
float m_air_resistance_factor
Definition: DtFxParticleSystem.h:243
Definition: vrv_float16.h:33
float m_material_specularity
how much specularity will the material have
Definition: DtFxParticleSystem.h:227
bdiString myFileSouce
which file is this from
Definition: DtFxParticleSystem.h:281
wrapper around a parsed expression.
Definition: DtFxScriptData.h:17
bool useLighting()
should lighting be enabled on this system
Definition: DtFxParticleSystem.h:183
float myScriptParticleSpeed
Definition: DtFxParticleSystem.h:735
osg::ref_ptr< osg::Texture2D > myOsgNormalTexture
Definition: DtFxParticleSystem.h:289
bdiVec3f m_position_offset
additional data added by vantage position offset of psystem
Definition: DtFxParticleSystem.h:218
int m_vbo_start_index
Definition: DtFxParticleSystem.h:708
float myRotorDiameter
Definition: DtFxParticleSystem.h:678
bdiFarPosition m_last_geocentric_postion
Definition: DtFxParticleSystem.h:672
float m_initial_rotation_variation
noise rotation at start
Definition: DtFxParticleSystem.h:249
bool m_use_lighting
skip lighting calculations
Definition: DtFxParticleSystem.h:232
Definition: DtFxParticleSystem.h:98
float m_time_scale
Definition: DtFxParticleSystem.h:666
std::vector< bdiFarPosition > myCurrentForcePositions
Definition: DtFxParticleSystem.h:697
DtFxForceArray m_global_forces
a list of forces that this systems owns, cloned from templates in the description ...
Definition: DtFxParticleSystem.h:720
bool m_emitting
Definition: DtFxParticleSystem.h:662
const DtFxChildSystemArray & childSystems()
list of child systems to create
Definition: DtFxParticleSystem.h:194
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. Coordinates are in local database coordinates The coordinat...
float * systemScalePtr()
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:617
DtFxScriptData mySizeScript
Definition: DtFxParticleSystem.h:722
DtRandomNumberGenerator myRandomNumberGen
Definition: DtFxParticleSystem.h:717
DT_DLL_vrfutil double angle(double vec1[3], double vec2[3])
DtFxParticleDesc * m_desc
the description of the particle system
Definition: DtFxParticleSystem.h:655
bdiMat4f myGeocentricMat
Definition: DtFxParticleSystem.h:674
float m_next_release_freq
Definition: DtFxParticleSystem.h:669
bdiLight * m_light_object
Definition: DtFxParticleSystem.h:702
DtFxScriptData myRotationSpeedScript
Definition: DtFxParticleSystem.h:727
std::string m_name
Definition: DtFxParticleSystem.h:653
bdiVec3f m_offset
Definition: DtFxParticleSystem.h:67
bool m_restarted_system
Definition: DtFxParticleSystem.h:681
float m_auto_start_time
Definition: DtFxParticleSystem.h:663
exprtk::symbol_table< float > mySymbolTable
Definition: DtFxParticleSystem.h:732
float m_camera_distance
Definition: DtFxParticleSystem.h:703
Definition: DtFxParticleSystem.h:95
bdiOctTreeBoundingBox m_bounding_box
Definition: DtFxParticleSystem.h:695
float hdrGain()
brightness multiplier on colors
Definition: DtFxParticleSystem.h:174
float m_time_since_stopping
Definition: DtFxParticleSystem.h:664
float m_hdr_gain
multiplier for hdr
Definition: DtFxParticleSystem.h:222
bdiMat4f myGeocentricMatInv
Definition: DtFxParticleSystem.h:675
bdiVec3f m_scale
Definition: DtFxParticleSystem.h:685
void setSortParticles(bool sort)
sets if particles should sort or not
Definition: DtFxParticleSystem.h:610
std::vector< DtFxParticleSystem * > & getChildSystems()
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:620
DtParticleSystem is implementation of the particle system, vrvOsg communicates with it via DtParticle...
Definition: DtFxParticleSystem.h:397
float myRotorWindSpeed
Definition: DtFxParticleSystem.h:679
DtFxChildSystemArray m_child_system_descs
references to the other child systems
Definition: DtFxParticleSystem.h:294
const char * get_name()
Definition: DtFxParticleSystem.h:780
const bdiString & fileSouce()
which file the system was from
Definition: DtFxParticleSystem.h:191
osg::Texture2D * normalTexture()
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:188
char m_velocity_index
Definition: DtFxParticleSystem.h:355
DtFxCollisionObjectArray m_collision_objects
Definition: DtFxParticleSystem.h:291
float m_release_frequency_var
variable release rate
Definition: DtFxParticleSystem.h:267
float m_age
Definition: DtFxParticleSystem.h:345
bool m_edited
has this description been edited
Definition: DtFxParticleSystem.h:284
bdiVec3f myScriptXYZ
Definition: DtFxParticleSystem.h:745
std::vector< bdiVec3f > myCurrentPlaneNormals
Definition: DtFxParticleSystem.h:699
DtFxForceArray m_additional_forces
list of additional forces
Definition: DtFxParticleSystem.h:297
osg::ref_ptr< osg::Texture2D > myOsgDiffuseTexture
osg lookup of texture
Definition: DtFxParticleSystem.h:287
bool m_size_by_age
Definition: DtFxParticleSystem.h:258
ParticleSortLocation(unsigned short _index, float _distance)
Definition: DtFxParticleSystem.h:417
bool mySlavedPositions
Definition: DtFxParticleSystem.h:731
float myScriptParticleAge
Definition: DtFxParticleSystem.h:737
float myScriptSystemForceReceived
Definition: DtFxParticleSystem.h:740
bdiString myLifeTimeScript
Definition: DtFxParticleSystem.h:306
vrv_float16 m_size
Definition: DtFxParticleSystem.h:369
DtLight * myVrvLight
Definition: DtFxParticleSystem.h:716
DtFxParticleSystemHolder()
Definition: DtFxParticleSystem.h:778
float mySystemIntensity
Definition: DtFxParticleSystem.h:676
Definition: DtFxParticleSystem.h:97
bdiVec3f m_spawn_velocity_factor
Definition: DtFxParticleSystem.h:688
std::vector< const DtFxCollisionObject * > myCurrentCollisionObjects
Definition: DtFxParticleSystem.h:698
description of the particle system rendering that can be prepped in a background thread ...
Definition: DtFxParticleSystem.h:317
char m_color_index
Definition: DtFxParticleSystem.h:352
bdiString myReleaseRateScript
Definition: DtFxParticleSystem.h:307
float m_system_scale
Definition: DtFxParticleSystem.h:690
bdiString myStreakScript
Definition: DtFxParticleSystem.h:308
bdiString m_name
Definition: DtFxParticleSystem.h:788
float m_fStreakSize
Definition: DtFxParticleSystem.h:348
DtFxScriptData myVelocityScript
Definition: DtFxParticleSystem.h:728
DtFxScriptData myColorScript
Definition: DtFxParticleSystem.h:726
float myScriptParticleNormalizedAge
Definition: DtFxParticleSystem.h:738
A child systems thats created when a parent system is created /ingroup vrvFx.
Definition: DtFxParticleSystem.h:63
DtFxChildSystem()
Definition: DtFxParticleSystem.h:69
bool m_emit_from_parent_particles
should this use parent system as emitter locations
Definition: DtFxParticleSystem.h:275
Class for generic lights This holds per-light data such as range, attenuation factors, colors, etc.
Definition: DtLight.h:48
unsigned short index
Definition: DtFxParticleSystem.h:418
int m_active_count_at_stop
Definition: DtFxParticleSystem.h:661
bool m_normalized_animation_time
should the the particle animation play out over the lifetime.
Definition: DtFxParticleSystem.h:255
bool m_stuck
Definition: DtFxParticleSystem.h:358
bdiVec3f m_vertex
Definition: DtFxParticleSystem.h:367
DebugFlags
Definition: DtFxParticleSystem.h:400
bool myIsRotorWash
Definition: DtFxParticleSystem.h:677
std::vector< bdiFarPosition > myEmitterPositions
Definition: DtFxParticleSystem.h:700
float m_rotation_variation
noise rotation variation added to current rot speed
Definition: DtFxParticleSystem.h:246
int m_last_particle_index_used_for_emission
Definition: DtFxParticleSystem.h:682
float m_time_offset
Definition: DtFxParticleSystem.h:68
bdiFarPosition m_cur_pos
Definition: DtFxParticleSystem.h:338
exprtk::symbol_table< float > & symbolTable()
script support
Definition: DtFxParticleSystem.h:631
const bdiMat4f & geocentricMatInv() const
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:624
Definition: DtFxParticleSystem.h:775
float myScriptInputValue
Definition: DtFxParticleSystem.h:742
bdiFarPosition m_prev_position
Definition: DtFxParticleSystem.h:671
float m_next_release_time
Definition: DtFxParticleSystem.h:667
const DtOsgArticulatedModel * attachedModel() const
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:619
DtFxParticleSystem * m_parent_system
Definition: DtFxParticleSystem.h:710
bdiVec3f m_velocity
Definition: DtFxParticleSystem.h:673
float m_last_release_time
Definition: DtFxParticleSystem.h:668
std::vector< ParticleSortLocation > m_sorted_list
Definition: DtFxParticleSystem.h:659
support class for float16
int m_restart_count
Definition: DtFxParticleSystem.h:680
bdiVec3f myArtPartOverrideOffset
Definition: DtFxParticleSystem.h:301
vrv_float16 m_rotation
Definition: DtFxParticleSystem.h:371
bdiFarPosition m_prev_pos
Definition: DtFxParticleSystem.h:339
bdiVec3f m_cur_vel
Definition: DtFxParticleSystem.h:340
bdiFarPosition m_position
Definition: DtFxParticleSystem.h:670
float m_emissivity_factor
multiplier for emissivity
Definition: DtFxParticleSystem.h:224
Definition: DtFxParticleSystem.h:414
bool m_is_preview_system
Definition: DtFxParticleSystem.h:707
bdiVec3f m_wind
Definition: DtFxParticleSystem.h:691
char m_size_index
Definition: DtFxParticleSystem.h:353
a subclass of bdiParticleDesc, currently reimplements all of configuration file reading and writing...
Definition: DtFxParticleSystem.h:113
float m_size_speed_scale
Definition: DtFxParticleSystem.h:261
osg::Texture2D * diffuseTexture()
particle system&#39;s diffuse texture
Definition: DtFxParticleSystem.h:186
const bdiMat4f & geocentricMat() const
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:623
bdiVec4f myScriptRGBA
Definition: DtFxParticleSystem.h:744
std::vector< DtFxParticleSystem * > m_child_systems
Definition: DtFxParticleSystem.h:711
DtFxParticleDesc * desc()
these are lightweight accessor called multiple times a frame, meant to avoid friends but also avoidin...
Definition: DtFxParticleSystem.h:621
float m_particle_mass
impacts how wind impacts particle.
Definition: DtFxParticleSystem.h:241
DtFxParticleDesc * m_desc
pointer to description
Definition: DtFxParticleSystem.h:322
DtFxParticleSystemHolder(const DtFxParticleSystemHolder &rhs)
Definition: DtFxParticleSystem.h:779
Definition: DtFxParticleSystem.h:99

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)