#pragma once #include #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>; class CollisionBoxProgram : public Program< shaders::collision_box, gl::Line, CollisionBoxAttributes, gl::Uniforms< uniforms::u_matrix, uniforms::u_scale, uniforms::u_zoom, uniforms::u_maxzoom>, style::Properties<>> { public: using Program::Program; static LayoutVertex vertex(Point a, Point o, float maxzoom, float placementZoom) { return LayoutVertex { {{ 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::LayoutVertex; } // namespace mbgl