VR-Engage  2.2
Loading...
Searching...
No Matches
cigiFxEntityPublisher.h
Go to the documentation of this file.
1/*******************************************************************************
2** Copyright (c) 2024 MAK Technologies, Inc.
3** All rights reserved.
4*******************************************************************************/
5#pragma once
6
7//! @file cigiFxEntityPublisher.h
8//!
9//! @brief Publisher for transient special effects, i.e. particle effects, for
10//! fire and detonation events.
11//!
12//! FxEntityPublishers are intended to be created through ues of the static
13//! publishFireEffect and publishDetonationEffect functions. Internally these
14//! functions maintain a pool of FxEntityPublisher isntances which are reused
15//! to avoid the performance cost of continuous creation and deletion of
16//! FxEntity instnces.
17
18#include "vreCigiHost/export.h"
20
21#include <vrfMsgTransport/detonationEvent.h>
22
23#include <CigiBaseEntityPositionCtrl.h>
24#include <CigiBaseRateCtrl.h>
25
26namespace makVre
27{
28
30 : public DtCigiPublisherTemplate<CigiBaseEntityPositionCtrl, DtCigiFxPositionPublisher>
31{
32public:
34 virtual ~DtCigiFxPositionPublisher() override {}
35};
36
38 : public DtCigiPublisherTemplate<CigiBaseRateCtrl, DtCigiFxVelocityPublisher>
39{
40public:
42 virtual ~DtCigiFxVelocityPublisher() override {}
43};
44
46 : public DtCigiPublisherTemplate<CigiBaseEntityCtrl, DtCigiFxPublisher, DtCigiEntityPublisherBase>
47{
48public:
49 static void publishFireEffect(DtCigiPublisherBase::Sptr parent, const makVrfEvents::DtFireEvent& event);
50 static void publishDetonationEffect(DtCigiPublisherBase::Sptr parent, const makVrfEvents::DtDetonationEvent& event);
51
52public:
54 virtual ~DtCigiFxPublisher() override {}
55
56 virtual Sptr setLifetime(double lifetime);
57 virtual double lifetime() const;
58
59 virtual Sptr show(const DtVector& location, const DtVector& velocity);
60
61 virtual bool active() const;
62
63 virtual void tick(double dt) override;
64
65 virtual void receiptConfirmed() override;
66
67protected:
68 virtual void initCigi() override;
69
70 virtual void setActive(bool live);
71
72 static Sptr getAvailablePublisher(DtCigiPublisherBase::Sptr parent, Cigi_uint16& type, bool& created);
73
74 virtual void createChildren() override;
75 virtual void tickChildren(double dt) override;
76 virtual void publishChildren(CigiOutgoingMsg& out) override;
77
78 virtual void unpublish() override;
79
80protected:
81 std::shared_ptr<DtCigiFxPositionPublisher> myPositionPublisher;
82 std::shared_ptr<DtCigiFxVelocityPublisher> myVelocityPublisher;
83
84 double myLifetime;
85 double myTimeLeft;
86};
87
88} // namespace makVre
Base class for Publishers creating CIGI entities.
virtual ~DtCigiFxPositionPublisher() override
Definition cigiFxEntityPublisher.h:34
DtCigiFxPositionPublisher()
Definition cigiFxEntityPublisher.h:33
virtual void receiptConfirmed() override
Called when the IG reports receiving the last frame in which this Pulisher wrote data during publish(...
virtual bool active() const
std::shared_ptr< DtCigiFxVelocityPublisher > myVelocityPublisher
Definition cigiFxEntityPublisher.h:82
static Sptr getAvailablePublisher(DtCigiPublisherBase::Sptr parent, Cigi_uint16 &type, bool &created)
virtual void tickChildren(double dt) override
std::shared_ptr< DtCigiFxPositionPublisher > myPositionPublisher
Definition cigiFxEntityPublisher.h:81
static void publishDetonationEffect(DtCigiPublisherBase::Sptr parent, const makVrfEvents::DtDetonationEvent &event)
double myLifetime
Definition cigiFxEntityPublisher.h:84
virtual Sptr show(const DtVector &location, const DtVector &velocity)
virtual void unpublish() override
Invoked from destructor. Should create DtCigiEntityUnpublisher to handle publishing of entity removal...
virtual void initCigi() override
Derived Publisher classes should override initCigi() to set initial values in the CIGI data.
virtual void tick(double dt) override
virtual Sptr setLifetime(double lifetime)
virtual ~DtCigiFxPublisher() override
Definition cigiFxEntityPublisher.h:54
virtual void publishChildren(CigiOutgoingMsg &out) override
static void publishFireEffect(DtCigiPublisherBase::Sptr parent, const makVrfEvents::DtFireEvent &event)
virtual double lifetime() const
double myTimeLeft
Definition cigiFxEntityPublisher.h:85
virtual void createChildren() override
Derived Publisher classes should override createChildre() to create child Publishers,...
virtual void setActive(bool live)
virtual ~DtCigiFxVelocityPublisher() override
Definition cigiFxEntityPublisher.h:42
DtCigiFxVelocityPublisher()
Definition cigiFxEntityPublisher.h:41
std::shared_ptr< DtSpObject > Sptr
Shared pointer type alias.
Definition baseClass.h:99
std::string type() const override
Definition baseClass.h:208
std::shared_ptr< DtCigiFxPublisher > Sptr
Definition baseClass.h:184
virtual Sptr parent()
Definition treeClass.h:371
Contains the DLL export macro.
#define CIGIHOST_DLL
Definition export.h:20
Include export definitions for this library.
Definition glsVreMessageUtil.h:49