|
@@ -69,10 +69,19 @@ public:
|
|
|
models_type get_current_models(typename Time::type time) const
|
|
|
{
|
|
|
models_type models;
|
|
|
+ typename models_type::iterator it;
|
|
|
|
|
|
for (typename type::ordered_iterator it = type::ordered_begin();
|
|
|
it != type::ordered_end() and it->get_time() == time; ++it) {
|
|
|
- models.push_back(it->get_model());
|
|
|
+ std::string str = it->get_model()->get_name();
|
|
|
+ auto it2 = find_if(models.begin(), models.end(),
|
|
|
+ [&str](const model_type* obj) {
|
|
|
+ return obj->get_name() == str;
|
|
|
+ });
|
|
|
+
|
|
|
+ if (it2 == models.end()) {
|
|
|
+ models.push_back(it->get_model());
|
|
|
+ }
|
|
|
}
|
|
|
return models;
|
|
|
}
|
|
@@ -92,11 +101,13 @@ public:
|
|
|
typename Time::type previous_time =
|
|
|
(*model->handle()._handle).get_time();
|
|
|
|
|
|
- (*model->handle()._handle).set_time(time);
|
|
|
- if (previous_time < time) {
|
|
|
- type::decrease(model->handle()._handle);
|
|
|
- } else if (previous_time > time) {
|
|
|
- type::increase(model->handle()._handle);
|
|
|
+ if (previous_time != time) {
|
|
|
+ (*model->handle()._handle).set_time(time);
|
|
|
+ if (previous_time < time) {
|
|
|
+ type::decrease(model->handle()._handle);
|
|
|
+ } else if (previous_time > time) {
|
|
|
+ type::increase(model->handle()._handle);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -110,7 +121,7 @@ public:
|
|
|
ss << "(" << it->get_time() << " -> " << it->get_model()->get_name()
|
|
|
<< ") ";
|
|
|
}
|
|
|
- ss << "}";
|
|
|
+ ss << "} [" << type::size() << "]";
|
|
|
return ss.str();
|
|
|
}
|
|
|
};
|