#ifndef __BOUNCEINFO_H__
#define __BOUNCEINFO_H__
#include "BounceOscillatorSettings.h"
namespace CasualCore
{
class Object;
};
class BounceOscillator
{
public:
BounceOscillator();
BounceOscillator(CasualCore::Object* a_Object, const BounceOscillatorSettings& a_Settings);
void Update(float a_DeltaTime);
void Impulse();
bool GetIsFinished() const { return m_IsFinished; }
bool IsSameObject(const CasualCore::Object* a_Object) const { return a_Object == m_Object; }
private:
float Oscillate();
float Damp(float a_DeltaTime);
float Cap(float a_Value);
float GetDampingDelay();
float BackEaseInOutFunction(float a_t, float a_d, float a_b, float a_c);
private:
CasualCore::Object* m_Object;
BounceOscillatorSettings m_Settings;
float m_OriginalScale;
float m_BaseScale;
float m_InitialDampScale;
float m_DampingDelay;
float m_ElapsedTime;
bool m_IsFinished;
};
#endif // __BOUNCEINFO_H__