**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2008 Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
ValueNode_DynamicList* value_node(new ValueNode_DynamicList(value_list.front().get_type()));
+ // when creating a list of vectors, start it off being looped.
+ // I think the only time this is used if for creating polygons,
+ // and we want them to be looped by default
+ if (value_node->get_contained_type() == ValueBase::TYPE_VECTOR)
+ value_node->set_loop(true);
+
for(iter=value_list.begin();iter!=value_list.end();++iter)
{
ValueNode::Handle item(ValueNode_Const::create(*iter));
{
{ ValueNode* x(find_value_node(get_guid()^deriv_guid).get()); if(x)return x; }
- ValueNode_DynamicList* ret=new ValueNode_DynamicList(container_type);
+ ValueNode_DynamicList* ret=dynamic_cast<ValueNode_DynamicList*>(create_new());
ret->set_guid(get_guid()^deriv_guid);
std::vector<ListEntry>::const_iterator iter;
ListEntry list_entry(*iter);
//list_entry.value_node=find_value_node(iter->value_node->get_guid()^deriv_guid).get();
//if(!list_entry.value_node)
- list_entry.value_node=iter->value_node->clone(deriv_guid);
+ list_entry.value_node=iter->value_node->clone(deriv_guid);
ret->add(list_entry);
//ret->list.back().value_node=iter->value_node.clone();
}
return type==ValueBase::TYPE_LIST;
}
+void
+ValueNode_DynamicList::set_member_canvas(etl::loose_handle<Canvas> canvas)
+{
+ for (vector<ListEntry>::iterator iter = list.begin(); iter != list.end(); iter++)
+ iter->value_node->set_parent_canvas(canvas);
+}
+
ValueBase::Type
ValueNode_DynamicList::get_contained_type()const
{
LinkableValueNode*
ValueNode_DynamicList::create_new()const
{
- assert(0);
-
- return 0;
+ return new ValueNode_DynamicList(container_type);
}
int