/* $Id$
This file is part of R²C²
-Copyright © 2006-2010 Mikkosoft Productions, Mikko Rasa
+Copyright © 2006-2011 Mikkosoft Productions, Mikko Rasa
Distributed under the GPL
*/
TrackType::TrackType(const ArticleNumber &an):
art_nr(an),
- double_address(false),
+ state_bits(0),
autofit_preference(1)
{ }
}
}
+bool TrackType::collide_ray(const Vector &start, const Vector &dir, float width) const
+{
+ for(vector<TrackPart>::const_iterator i=parts.begin(); i!=parts.end(); ++i)
+ if(i->collide_ray(start, dir, width))
+ return true;
+
+ return false;
+}
+
void TrackType::collect_endpoints()
{
endpoints.clear();
TrackType::Loader::Loader(TrackType &t):
- Msp::DataFile::BasicLoader<TrackType>(t)
+ Msp::DataFile::BasicLoader<TrackType>(t),
+ state_bits_set(false)
{
add("autofit_preference", &TrackType::autofit_preference);
add("description", &TrackType::description);
- add("double_address", &TrackType::double_address);
+ add("object", &TrackType::object);
+ add("state_bits", &Loader::state_bits);
add("part", &Loader::part);
}
TrackPart p;
load_sub(p);
obj.parts.push_back(p);
+ if(!state_bits_set && p.get_path())
+ while(p.get_path()>=(1U<<obj.state_bits))
+ ++obj.state_bits;
+}
+
+void TrackType::Loader::state_bits(unsigned b)
+{
+ obj.state_bits = b;
+ state_bits_set = true;
}
} // namespace R2C2