14 #include <osg/MatrixTransform>
21 #include <diguyParticleSystem.h>
22 #include <diguyParticleManager.h>
23 #include <tbb/parallel_for.h>
35 class DtFxDebugDrawCallbackInterface;
45 void operator()(
const tbb::blocked_range<size_t>& r)
const;
62 void operator()(
const tbb::blocked_range<size_t>& r)
const;
83 virtual bool get_scenario_owns_particle_manager();
86 virtual void initialize_renderer();
95 virtual void draw(osg::RenderInfo& renderInfo);
98 virtual void drawDebugVisuals(osg::RenderInfo& renderInfo);
101 virtual void addImguiOverlay();
104 virtual void addImguiStats();
110 virtual void reinitialize(
bool recreate_default_effect =
true);
113 virtual void update(
float quantum);
116 virtual void vrvUpdate(
float quantum);
119 virtual int load_entries(
const char* fileName);
135 virtual bdiParticleDescArray* get_descriptions();
144 diguyParticleSystem* create_transient_system(
const char* desc_name,
float life_time_override = -1.0f);
155 virtual int get_number_of_systems();
157 virtual int get_number_of_transient_systems();
162 virtual bdiString get_unique_description_name(
const char* prefix);
167 virtual void destroy_preview_system();
170 virtual void reset();
173 virtual void process_data_queue();
176 virtual void set_draw_debug_visuals(
int val);
178 virtual int get_draw_debug_visuals()
const;
181 virtual void set_global_wind(
const bdiVec3f& wind);
183 virtual const bdiVec3f& get_global_wind()
const;
194 virtual void set_enabled(
int val);
196 virtual void start_emitting_for(diguyCharacter*,
const bdiFarPosition& start_pos,
const bdiVec3f& orient);
198 virtual void stop_emitting_for(diguyCharacter*);
200 virtual void stop_all_particles_for(diguyCharacter*);
213 virtual int load_descs_library(bdiObjectLibrary* object_library);
215 virtual void unload_descs_library(bdiObjectLibrary* object_library);
219 virtual void clear_derived_update_flag_on_next_update();
222 virtual int get_num_systems_drawn()
const;
224 virtual void increment_systems_drawn();
228 virtual bool isGeocentric();
231 virtual void calcGeocentric(
const bdiFarPosition & pos, bdiMat4f& mat, bdiMat4f* inversemat);
238 virtual void setWindSpeed(
float metersPerSecond);
240 virtual void setWindDirection(
float radians);
242 virtual void updateWind();
245 virtual void setNumPreviewSystems(
int value);
247 virtual void restartPreview();
249 virtual void setPreviewSystemsPosition(
const bdiFarPosition& pos);
257 virtual void set_water_height(
const float& water_height);
258 virtual float get_water_height()
const;
266 virtual osg::Node* getOrCreateSensorNode(
int diguyMat);
287 virtual std::string saveFiles();
290 virtual void createDescBackups();
299 virtual void initSystem();
302 virtual void createParticleDrawable();
305 virtual bool hasDescription(
const std::string& name);
307 virtual void slot_reloadShaders();
310 virtual void setWireFrameMode(
bool wireframeMode);
313 virtual void setTextureMode(
bool textureMode);
321 virtual void updateParticles(
double simTime);
324 bool getTerrainOrPropIntersection(
const osg::Vec3d& startPos,
const osg::Vec3d& endPos,
325 osg::Vec3d& result)
const;
328 virtual void addGlobalForce(
DtFxForce* force);
331 virtual void removeGlobalForce(
DtFxForce* force);
334 const DtFxForceArray& globalForces()
const;
337 DtFxForceArray& globalForces();
340 const DtFxCollisionObjectArray& collisionObjects()
const;
343 DtFxCollisionObjectArray* collisionObjectsPtr();
348 tbb::mutex& systemDataMutex();
351 tbb::mutex& lightMutex();
354 const std::set<std::string>& fileNamesList();
357 DtFxParticleSystemArray& previewArray();
360 DtFxParticleSystemArray& systemArray();
363 DtFxParticleSystemHolderArray& testHolderArray();
366 virtual bool* previewAutoMovePtr();
368 virtual float* previewAutoMoveSpeedPtr();
369 virtual bdiVec3f* previewAutoMoveRadiusPtr();
372 virtual void recompileScripts();
383 virtual void update_preview(
const float quantum);
384 virtual void cull(DtFxParticleSystemArray& input, osg::Polytope& polytope,
bool shadow_pass, std::vector< DtFxParticleSystem*>& results);
double myLastUpdateTime
Definition: DtFxParticleSystemManager.h:449
int myTotalVertCount
Definition: DtFxParticleSystemManager.h:444
class that executes low level OpenGL draw calls from the particle system data.
Definition: DtFxOglParticleSystemRenderer.h:30
bdiFarPosition myEyePosition
Definition: DtFxParticleSystemManager.h:66
class that allows clients to add global forces (no export of virtual base class)
Definition: DtFxForceInterface.h:19
int myTotalPrimCount
Definition: DtFxParticleSystemManager.h:445
bdiFarPosition myPreviewCenter
Definition: DtFxParticleSystemManager.h:427
tbb::mutex m_mutex_critical_data
Definition: DtFxParticleSystemManager.h:391
float m_dt
Definition: DtFxParticleSystemManager.h:49
DtFxParticleSystemManager is the manager for all the particle systems and descriptions diguy sdk comm...
Definition: DtFxParticleSystemManager.h:74
float myStatsUpdateTime
Definition: DtFxParticleSystemManager.h:441
DtFxParticleSystem **const m_particle_array
Definition: DtFxParticleSystemManager.h:48
float myWindDirection
Definition: DtFxParticleSystemManager.h:424
class that allows clients to add collision objects (no export of virtual base class) ...
Definition: DtFxCollisionVolumeInterface.h:18
bdiFarPosition myEyePosition
Definition: DtFxParticleSystemManager.h:436
float myStatsDrawLastTime
Definition: DtFxParticleSystemManager.h:443
void operator()(const tbb::blocked_range< size_t > &r) const
what gets run on each system
DT_DLL_tdbutil void ps(int indent_level)
bdiParticleDescArray m_descs
Definition: DtFxParticleSystemManager.h:398
Definition: featureContext.h:37
int m_draw_debug_visuals
Definition: DtFxParticleSystemManager.h:416
tbb::mutex m_mutex_texture_data
Definition: DtFxParticleSystemManager.h:393
DtFxParticleSystemArray m_preview_array
Definition: DtFxParticleSystemManager.h:407
virtual void set_draw_placeholder_master_switch(int draw)
compatibility with diguy effects
Definition: DtFxParticleSystemManager.h:207
#define DT_DLL_VRVFX
Definition: vrvFx.h:20
Contains DLL export macros.
osg::ref_ptr< DtFxOsgParticleDrawable > myOsgDrawable
Definition: DtFxParticleSystemManager.h:434
bdiParticleDescArray m_init_texture_queue
Definition: DtFxParticleSystemManager.h:401
virtual int get_draw_placeholder_master_switch() const
compatibility with diguy effects
Definition: DtFxParticleSystemManager.h:209
std::vector< DtFxDebugDrawCallbackInterface * > myExtraDebugDrawObjects
Definition: DtFxParticleSystemManager.h:457
float m_water_height
Definition: DtFxParticleSystemManager.h:417
DtFxParticleSystemArray m_trans_systems
Definition: DtFxParticleSystemManager.h:405
Contains particle system class.
DtFxParticleVertex * m_vertbuffer
Definition: DtFxParticleSystemManager.h:421
virtual void draw()
base class no-ops
Definition: DtFxParticleSystemManager.h:92
a gpu vbo representation of the particle
Definition: DtFxParticleSystem.h:354
ApplyMTParticleUpdateFunction updates particles in parallel.
Definition: DtFxParticleSystemManager.h:39
virtual int get_enabled() const
Definition: DtFxParticleSystemManager.h:192
DtDe & myDe
Definition: DtFxParticleSystemManager.h:433
DtFxCollisionObjectArray myCollisionObjects
Definition: DtFxParticleSystemManager.h:438
std::set< std::string > myFileNamesList
Definition: DtFxParticleSystemManager.h:428
DtSignalConnectionManager myConnections
Definition: DtFxParticleSystemManager.h:431
DtFxApplyMTParticleVboPrepFunction(std::vector< DtFxParticleSystem * > &particle_array, const bdiFarPosition &eyePosition)
CTOR.
bdiVec3f myPreviewAutoMoveRadius
Definition: DtFxParticleSystemManager.h:455
ApplyMTParticleUpdateFunction preps vbo in parallel.
Definition: DtFxParticleSystemManager.h:55
virtual void set_draw_placeholder(int draw)
compatibility with diguy effects
Definition: DtFxParticleSystemManager.h:203
void operator()(const tbb::blocked_range< size_t > &r) const
what gets run on each system
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
DtParticleSystem is implementation of the particle system, vrvOsg communicates with it via DtParticle...
Definition: DtFxParticleSystem.h:387
DtFxApplyMTParticleUpdateFunction(DtFxParticleSystem **particle_array, float dt)
CTOR.
int myNumPreviewSystems
Definition: DtFxParticleSystemManager.h:426
virtual int get_draw_placeholder() const
compatibility with diguy effects
Definition: DtFxParticleSystemManager.h:205
tbb::mutex m_mutex_light_objects
Definition: DtFxParticleSystemManager.h:396
DtFxParticleDesc * m_preview_desc
Definition: DtFxParticleSystemManager.h:414
bool myPreviewAutoMove
public to allow the UI to edit
Definition: DtFxParticleSystemManager.h:452
std::map< int, osg::ref_ptr< osg::Node > > mySensorMap
Definition: DtFxParticleSystemManager.h:435
forces to include that influence the particles movement /ingroup vrvFx
Definition: DtFxForce.h:35
virtual void set_particle_module_disabled(int dis)
Definition: DtFxParticleSystemManager.h:256
Base class to provide boost signal/slot management.
bdiParticleDescArray m_backup_descs
Definition: DtFxParticleSystemManager.h:399
class that wraps the particle manager in vrvFx in a vrv friendly layer
Definition: DtParticleSystemManagerInterface.h:35
float myStatsDrawTime
Definition: DtFxParticleSystemManager.h:442
A simple interface for allowing the qt particle editor to draw lines at the right time...
Definition: DtFxDebugDrawCallbackInterface.h:23
virtual int get_license_status() const
always true
Definition: DtFxParticleSystemManager.h:211
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
std::vector< DtFxParticleSystem * > & m_particle_array
Definition: DtFxParticleSystemManager.h:65
float myPreviewAutoMoveSpeed
public to allow the UI to edit
Definition: DtFxParticleSystemManager.h:454
osg::ref_ptr< osg::MatrixTransform > myParticleRendererGroup
Definition: DtFxParticleSystemManager.h:448
std::vector< DtFxParticleSystem * > myAllSystems
Definition: DtFxParticleSystemManager.h:429
DtFxParticleSystemHolderArray m_test_holder_array
array for additional test systems
Definition: DtFxParticleSystemManager.h:410
DtFxParticleSystemArray m_psystems
Definition: DtFxParticleSystemManager.h:403
int m_clear_derived_update_flag_on_next_update
Definition: DtFxParticleSystemManager.h:418
int myNumSystemsDrawn
Definition: DtFxParticleSystemManager.h:446
DtFxForceArray m_global_forces
Definition: DtFxParticleSystemManager.h:412
a subclass of bdiParticleDesc, currently reimplements all of configuration file reading and writing...
Definition: DtFxParticleSystem.h:112
float myWindSpeed
Definition: DtFxParticleSystemManager.h:423