- Vector tangent = (*bline_tangent_1)(time, amount).get(Vector());
- DuckList::iterator iter;
- for (iter=duck_list.begin(); iter!=duck_list.end(); iter++)
- if ((*iter)->get_value_desc().get_value_node() == t1_value_node)
- (*iter)->set_point(tangent);
- }
-
- if (bline_tangent_2 &&
- bline_tangent_2->get_link(bline_tangent_2->get_link_index_from_name("amount")) == amount_value_node)
- {
- Vector tangent = (*bline_tangent_2)(time, amount).get(Vector());
- DuckList::iterator iter;
- for (iter=duck_list.begin(); iter!=duck_list.end(); iter++)
- if ((*iter)->get_value_desc().get_value_node() == t2_value_node)
- (*iter)->set_point(tangent);
- }
-
- if (bline_width &&
- bline_width->get_link(bline_width->get_link_index_from_name("amount")) == amount_value_node)
- {
- Real width = (*bline_width)(time, amount).get(Real());
- DuckList::iterator iter;
- for (iter=duck_list.begin(); iter!=duck_list.end(); iter++)
- if ((*iter)->get_value_desc().get_value_node() == width_value_node)
- (*iter)->set_point(Point(width, 0));
+ switch (bline_tangent->get_type())
+ {
+ case ValueBase::TYPE_ANGLE:
+ {
+ Angle angle((*bline_tangent)(time, amount).get(Angle()));
+ (*iter)->set_point(Point(Angle::cos(angle).get(), Angle::sin(angle).get()));
+ break;
+ }
+ case ValueBase::TYPE_REAL:
+ (*iter)->set_point(Point((*bline_tangent)(time, amount).get(Real()), 0));
+ break;
+ case ValueBase::TYPE_VECTOR:
+ (*iter)->set_point((*bline_tangent)(time, amount).get(Vector()));
+ break;
+ default:
+ break;
+ }