void KeyFrameController::AddKeyframe(float time, Quaternion quaternion){ setRotation_Type(RT_QUATERNION); if (RotationTimes.size() == 0 || time >= RotationTimes[RotationTimes.size() - 1]) //no previous data { RotationTimes.push_back(time); qRotationData.push_back(quaternion); } else //insert { std::vector<float>::iterator it1 = RotationTimes.begin(); std::vector<Quaternion>::iterator it2 = qRotationData.begin(); while (time>*it1 && it1 != RotationTimes.end()) { it1++; it2++; } RotationTimes.insert(it1 - 1, time); qRotationData.insert(it2 - 1, quaternion); } //set active range when apply if (RotationTimes.size() >= 4){ //set active range setActiveLength(RotationTimes[1], RotationTimes[RotationTimes.size() - 2]); } }
void KeyFrameController::AddKeyframe(float time, Fixed_Angle fixed_angles){ setRotation_Type(RT_FIXED); if (RotationTimes.size() == 0) //no previous data { RotationTimes.push_back(time); RotationData.push_back(fixed_angles); } else if (time >= translationTimes[translationTimes.size() - 1]){ RotationTimes.push_back(time); RotationData.push_back(fixed_angles); } else //insert { std::vector<float>::iterator it1 = RotationTimes.begin(); std::vector<Fixed_Angle>::iterator it2 = RotationData.begin(); while (time>*it1 && it1 != RotationTimes.end()) { it1++; it2++; } RotationTimes.insert(it1 - 1, time); RotationData.insert(it2 - 1, fixed_angles); } //set active range when apply if (RotationTimes.size() >= 4){ //set active range setActiveLength(RotationTimes[1], RotationTimes[RotationTimes.size() - 2]); } }
void RDPanelButton::reset() { if(button_length[button_hook_mode]>0) { setActiveLength(button_length[button_hook_mode]); } else { setActiveLength(button_length[0]); } button_start_time=QTime(); button_end_time=QTime(); setColor(button_default_color); if(button_cart!=0) { WriteKeycap(-1); } setDeck(-1); button_play_deck=NULL; }
void KeyFrameController::AddKeyframe(float time, Vec3f position, Fixed_Angle fixed_angles){ setRotation_Type(RT_FIXED); ////handling translation //if (translationTimes.size() == 0){ //no previous data // translationTimes.push_back(time); // TransitionData.push_back(position); //} //else if (time>=translationTimes[translationTimes.size() - 1]) // extend active frame //{ // translationTimes.push_back(time); // TransitionData.push_back(position); //} //else{// insert frame in the middle // std::vector<float>::iterator it1 = translationTimes.begin(); // std::vector<Vec3f>::iterator it2=TransitionData.begin(); // while (time>*it1) // { // it1++; // it2++; // } // translationTimes.insert(it1 - 1, time); // TransitionData.insert(it2-1,position); //} //handling rotation if (RotationTimes.size() == 0) //no previous data { RotationTimes.push_back(time); RotationData.push_back(fixed_angles); } else if (time>=translationTimes[translationTimes.size() - 1]){ RotationTimes.push_back(time); RotationData.push_back(fixed_angles); } else //insert { std::vector<float>::iterator it1 = RotationTimes.begin(); std::vector<Fixed_Angle>::iterator it2 = RotationData.begin(); while (time>*it1 && it1 != RotationTimes.end()) { it1++; it2++; } RotationTimes.insert(it1 - 1, time); RotationData.insert(it2 - 1, fixed_angles); } //set active range when apply if (translationTimes.size() >= 4){ //set active range setActiveLength(translationTimes[1], translationTimes[translationTimes.size() - 2]); } }
void KeyFrameController::AddKeyframe(float time, Vec3f position, Quaternion quaternion){ setRotation_Type(RT_QUATERNION); quaternion.normalize(); //handling translation if (translationTimes.size() == 0){ //no previous data translationTimes.push_back(time); TransitionData.push_back(position); } else if (time>=translationTimes[translationTimes.size()-1]) // extend active frame { translationTimes.push_back(time); TransitionData.push_back(position); } else{// insert frame in the middle std::vector<float>::iterator it1=translationTimes.begin(); std::vector<Vec3f>::iterator it2=TransitionData.begin(); while (time>*it1&&it1!=translationTimes.end()) { it1++; it2++; } translationTimes.insert(it1 - 1, time); TransitionData.insert(it2-1,position); } //handling rotation if (RotationTimes.size() == 0 || time>=translationTimes[translationTimes.size() - 1]) //no previous data { RotationTimes.push_back(time); qRotationData.push_back(quaternion); } else //insert { std::vector<float>::iterator it1 = RotationTimes.begin(); std::vector<Quaternion>::iterator it2=qRotationData.begin(); while (time>*it1 && it1!=RotationTimes.end()) { it1++; it2++; } RotationTimes.insert(it1 - 1, time); qRotationData.insert(it2 - 1, quaternion); } //set active range when apply if (translationTimes.size()>=4){ //set active range setActiveLength(translationTimes[1], translationTimes[translationTimes.size() - 2]); } }