X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fvaluenode_bline.cpp;h=7b95a208ac87b19d9a623c224c049e7baf377a53;hb=990720c031be929d9f635100fb80fb92f1abf6a0;hp=2d18e20b4511f62ba22191f17e6ab51d3c5d198d;hpb=b75fa84fd7f627c1c1a8b94e72169e88a3ad59af;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/valuenode_bline.cpp b/synfig-core/trunk/src/synfig/valuenode_bline.cpp index 2d18e20..7b95a20 100644 --- a/synfig-core/trunk/src/synfig/valuenode_bline.cpp +++ b/synfig-core/trunk/src/synfig/valuenode_bline.cpp @@ -375,12 +375,10 @@ ValueNode_BLine::operator()(Time t)const BLinePoint curr; BLinePoint begin; // begin of dynamic group BLinePoint end; // end of dynamic group - Time blend_time; int dist_from_begin(0), dist_from_end(0); BLinePoint ret; - Time off_time; - Time on_time; + Time off_time, on_time; if(!rising) { @@ -396,9 +394,8 @@ ValueNode_BLine::operator()(Time t)const try{ on_time=iter->find_next(t)->get_time(); } catch(...) { on_time=Time::end(); } } - blend_time=off_time; - curr=(*iter->value_node)(on_time).get(curr); + curr=(*iter->value_node)(on_time).get(curr); // curr=(*iter->value_node)(t).get(curr); // Find "end" of dynamic group @@ -407,7 +404,7 @@ ValueNode_BLine::operator()(Time t)const for(++end_iter;end_iter!=list.end();++end_iter) if(end_iter->amount_at_time(t)>amount) { - end=(*end_iter->value_node)(blend_time).get(prev); + end=(*end_iter->value_node)(off_time).get(prev); break; } @@ -417,14 +414,14 @@ ValueNode_BLine::operator()(Time t)const if(get_loop()) { end_iter=first_iter; - end=(*end_iter->value_node)(blend_time).get(prev); + end=(*end_iter->value_node)(off_time).get(prev); // end=first; } else { // Writeme! end_iter=first_iter; - end=(*end_iter->value_node)(blend_time).get(prev); + end=(*end_iter->value_node)(off_time).get(prev); // end=first; } } @@ -450,7 +447,7 @@ ValueNode_BLine::operator()(Time t)const if(begin_iter->amount_at_time(t)>amount) { - begin=(*begin_iter->value_node)(blend_time).get(prev); + begin=(*begin_iter->value_node)(off_time).get(prev); break; } }while(begin_iter!=iter); @@ -461,14 +458,14 @@ ValueNode_BLine::operator()(Time t)const if(get_loop()) { begin_iter=first_iter; - begin=(*begin_iter->value_node)(blend_time).get(prev); + begin=(*begin_iter->value_node)(off_time).get(prev); // begin=first; } else { // Writeme! begin_iter=first_iter; - begin=(*begin_iter->value_node)(blend_time).get(prev); + begin=(*begin_iter->value_node)(off_time).get(prev); // begin=first; } } @@ -524,39 +521,39 @@ ValueNode_BLine::operator()(Time t)const next_scale=next_tangent_scalar; //ret.set_vertex((curr.get_vertex()-ret.get_vertex())*amount+ret.get_vertex()); - if(false) - { - // My first try - Point ref_point_begin( - ( - (*begin_iter->value_node)(off_time).get(prev).get_vertex() + - (*end_iter->value_node)(off_time).get(prev).get_vertex() - ) * 0.5 - ); - Point ref_point_end( - ( - (*begin_iter->value_node)(on_time).get(prev).get_vertex() + - (*end_iter->value_node)(on_time).get(prev).get_vertex() - ) * 0.5 - ); - Point ref_point_now( - ( - (*begin_iter->value_node)(t).get(prev).get_vertex() + - (*end_iter->value_node)(t).get(prev).get_vertex() - ) * 0.5 - ); - Point ref_point_linear((ref_point_end-ref_point_begin)*amount+ref_point_begin); - - ret.set_vertex( - (curr.get_vertex()-ret.get_vertex())*amount+ret.get_vertex() + - (ref_point_now-ref_point_linear) - ); - ret.set_tangent1((curr.get_tangent1()-ret.get_tangent1())*amount+ret.get_tangent1()); - ret.set_split_tangent_flag(curr.get_split_tangent_flag()); - if(ret.get_split_tangent_flag()) - ret.set_tangent2((curr.get_tangent2()-ret.get_tangent2())*amount+ret.get_tangent2()); - } - else +// if(false) +// { +// // My first try +// Point ref_point_begin( +// ( +// (*begin_iter->value_node)(off_time).get(prev).get_vertex() + +// (*end_iter->value_node)(off_time).get(prev).get_vertex() +// ) * 0.5 +// ); +// Point ref_point_end( +// ( +// (*begin_iter->value_node)(on_time).get(prev).get_vertex() + +// (*end_iter->value_node)(on_time).get(prev).get_vertex() +// ) * 0.5 +// ); +// Point ref_point_now( +// ( +// (*begin_iter->value_node)(t).get(prev).get_vertex() + +// (*end_iter->value_node)(t).get(prev).get_vertex() +// ) * 0.5 +// ); +// Point ref_point_linear((ref_point_end-ref_point_begin)*amount+ref_point_begin); +// +// ret.set_vertex( +// (curr.get_vertex()-ret.get_vertex())*amount+ret.get_vertex() + +// (ref_point_now-ref_point_linear) +// ); +// ret.set_tangent1((curr.get_tangent1()-ret.get_tangent1())*amount+ret.get_tangent1()); +// ret.set_split_tangent_flag(curr.get_split_tangent_flag()); +// if(ret.get_split_tangent_flag()) +// ret.set_tangent2((curr.get_tangent2()-ret.get_tangent2())*amount+ret.get_tangent2()); +// } +// else { // My second try @@ -587,21 +584,9 @@ ValueNode_BLine::operator()(Time t)const curr_coord_sys[1]=curr_coord_sys[0].perp(); } - /* - on_coord_origin=(*end_iter->value_node)(on_time).get(prev).get_vertex(); - on_coord_sys[0]=( - (*begin_iter->value_node)(on_time).get(prev).get_vertex() - - on_coord_origin - ).norm(); - on_coord_sys[1]=on_coord_sys[0].perp(); - - curr_coord_origin=(*end_iter->value_node)(t).get(prev).get_vertex(); - curr_coord_sys[0]=( - (*begin_iter->value_node)(t).get(prev).get_vertex() - - curr_coord_origin - ).norm(); - curr_coord_sys[1]=curr_coord_sys[0].perp(); - */ + /* The code that was here before used just end_iter as the origin, rather than the mid-point */ + + // For each of the 3 coordinate systems we've just defined, we convert a point and tangent(s) into that system // Convert point where vertex is fully 'off' Point trans_off_point;