void ofxTLKeyframes::simplifySelectedKeyframes( float tolerance ){

    if ( selectedKeyframes.size() > 2 )
    {
         vector<ofPoint> pts;
        float startTime = (float)selectedKeyframes[0]->time;
        float timeNormalizationFactor = 1.0 / (float)selectedKeyframes.size();
        for(int k = 0; k < selectedKeyframes.size(); k++){
            pts.push_back(ofPoint(((float)selectedKeyframes[k]->time - startTime)*timeNormalizationFactor,selectedKeyframes[k]->value));
        }
        deleteSelectedKeyframes();

        ofPolyline line(pts);
        line.simplify(tolerance);
        int i = 0;
        while ( i < line.size())
        {
           addKeyframeAtMillis(ofMap(line[i].y, 0.0, 1.0, valueRange.min, valueRange.max, false),(unsigned long long)(line[i].x / timeNormalizationFactor+startTime));
           i++;
        }
    }
}
void ofxTLKeyframes::addKeyframeAtMillis(unsigned long long millis){
	addKeyframeAtMillis(defaultValue, millis);
}
void ofxTLKeyframes::addKeyframe(float value){
	//play solo change
	addKeyframeAtMillis(value, currentTrackTime());
}
Beispiel #4
0
void ofxTLKeyframes::addKeyframe(float value){
	addKeyframeAtMillis(value, timeline->getCurrentTimeMillis());
}