86 std::vector<tgObserver<T> * > m_observers;
89 template <
typename Subject>
92 if (pObserver) { m_observers.push_back(pObserver);
93 pObserver->
onAttach(static_cast<Subject&>(*
this));}
96 template <
typename Subject>
101 const std::size_t n = m_observers.size();
102 for (std::size_t i = 0; i < n; ++i)
105 if (pObserver) { pObserver->
onStep(static_cast<Subject&>(*
this), dt); }
110 template <
typename Subject>
113 const std::size_t n = m_observers.size();
114 for (std::size_t i = 0; i < n; ++i)
117 if (pObserver) { pObserver->
onSetup(static_cast<Subject&>(*
this)); }
121 template <
typename Subject>
124 const std::size_t n = m_observers.size();
125 for (std::size_t i = 0; i < n; ++i)
128 if (pObserver) { pObserver->
onTeardown(static_cast<Subject&>(*
this)); }
131 #endif // TG_SUBJECT_H
Definition of tgObserver class.
virtual void onStep(Subject &subject, double dt)=0
virtual void onTeardown(Subject &subject)
virtual void onSetup(Subject &subject)
virtual void onAttach(Subject &subject)
void attach(tgObserver< T > *pObserver)
void notifyStep(double dt)