JK2eA
 All Classes Functions Variables
CurveGraphLinear.h
00001 #pragma once
00002 
00003 #include "CurveGraph.h"
00004 #include "Interpolators.h"
00005 
00006 
00010 template<class T>
00011 class CCurveGraphLinear : public CCurveGraph<T> {
00012 public:
00016         CCurveGraphLinear()
00017         {       
00018         }
00024         virtual T Interpolate(float time)
00025         {
00026                 // hledani
00027                 int curr = -1, last = -1;
00028                 for(size_t i = 0; i < m_nodes.size(); i++) {
00029                         if(m_nodes[i].t >= time) {
00030                                 curr = i;
00031                                 break;
00032                         }
00033                         last = i;
00034                 }
00035 
00036                 m_currIndex = curr;
00037 
00038                 if(curr != -1 && last != -1) {
00039                         float local_time = (m_nodes[curr].t - m_nodes[last].t);
00040                         local_time =  (time -  m_nodes[last].t) / local_time;
00041 
00042                         return LinearInterpolation(local_time, m_nodes[last].value, m_nodes[curr].value);
00043                 
00044                 
00045                 } else if(curr == -1) {
00046                         return  m_nodes.back().value;
00047                 } else if(last == -1) {
00048                         return m_nodes.front().value;
00049                 }
00050                 return T(0.0f);
00051         }
00052 
00053 };
00054 
00055 
00056