void init_laser(Laser* laser, Laser_Color color, Entity* shooter, f32 angle) { set_sprite(laser->entity, get_laser_sprite(color), 0.75f, 0, make_vector2(0.0f, -0.3f)); laser->shooter_id = shooter->id; laser->entity->position = shooter->position + (get_direction(angle) * 0.75f); laser->entity->orientation = angle; }
void test(option op) { std::vector<std::vector<big_data_type> > table; std::vector<big_data_type> tmp; for(int i=0; i!=10; ++i) { switch(op) { case a: table.emplace_back(make_vector(i, tmp)); break; case b: tmp = make_vector2(i); table.emplace_back(tmp); break; case c: tmp = make_vector2(i); table.emplace_back(std::move(tmp)); break; case d: table.emplace_back(make_vector2(i)); break; case e: std::vector<big_data_type> result; make_vector(i, tmp); result.reserve( tmp.size() ); result.insert( result.end(), std::make_move_iterator( tmp.begin() ),std::make_move_iterator( tmp.end() ) ); table.emplace_back(std::move(result)); break; } } std::cout << "Big data copied or created:" << big_data_type::counter << "\n"; big_data_type::counter = 0; std::cout << "Big data created:" << big_data_type::create_counter << "\n"; big_data_type::create_counter = 0; std::cout << "Big data moved:" << big_data_type::move_counter << "\n"; big_data_type::move_counter = 0; std::size_t cap = 0; for (auto&& v:table) cap += v.capacity(); std::cout << "Total capacity at end:" << cap << "\n"; }
auto bottom_left(const Rect<T>& rect) { return make_vector2(rect.left, rect.bottom()); }
auto top_right(const Rect<T>& rect) { return make_vector2(rect.right(), rect.top); }
auto position(const Rect<T>& rect) { return make_vector2(rect.left, rect.top); }
auto size(const Rect<T>& rect) { return make_vector2(rect.width, rect.height); }