#pragma once #include #include #include #include #include #include namespace mbgl { namespace uniforms { MBGL_DEFINE_UNIFORM_SCALAR(float, u_scale); MBGL_DEFINE_UNIFORM_SCALAR(float, u_maxzoom); } // namespace uniforms using CollisionBoxAttributes = gl::Attributes< attributes::a_pos, attributes::a_extrude, attributes::a_data<2>>; class CollisionBoxProgram : public Program< shaders::collision_box, gl::Line, CollisionBoxAttributes, gl::Uniforms< uniforms::u_matrix, uniforms::u_scale, uniforms::u_zoom, uniforms::u_maxzoom>> { public: using Program::Program; static Vertex vertex(Point a, Point o, float maxzoom, float placementZoom) { return Vertex { { static_cast(a.x), static_cast(a.y) }, { static_cast(::round(o.x)), static_cast(::round(o.y)) }, { static_cast(maxzoom * 10), static_cast(placementZoom * 10) } }; } }; using CollisionBoxVertex = CollisionBoxProgram::Vertex; } // namespace mbgl