#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;
};
}