#pragma once #include "EmberDefines.h" namespace EmberNs { /// /// FlameMotion elements allow for motion of the flame parameters such as zoom, yaw, pitch and friends /// The values in these elements can be used to modify flame parameters during rotation in much the same /// way as motion elements on xforms do. /// Template argument expected to be float or double. /// template class EMBER_API FlameMotion { public: FlameMotion() { m_MotionFreq = 0; m_MotionFunc = MOTION_SIN; } FlameMotion(const FlameMotion &other) { operator=(other); } template FlameMotion(const FlameMotion &other) { operator=(other); } FlameMotion& operator = (const FlameMotion& other) { if (this != &other) FlameMotion::operator=(other); return *this; } template FlameMotion &operator = (const FlameMotion &other) { m_MotionParams.clear(); for (int i = 0; i < other.m_MotionParams.size(); ++i) m_MotionParams.push_back(pair(other.m_MotionParams[i].first, T(other.m_MotionParams[i].second))); m_MotionFunc = other.m_MotionFunc; m_MotionFreq = T(other.m_MotionFreq); return *this; } T m_MotionFreq; eMotion m_MotionFunc; vector> m_MotionParams; }; }