#include #include #include #include #include #include namespace mbgl { RenderFillExtrusionLayer::RenderFillExtrusionLayer(Immutable _impl) : RenderLayer(style::LayerType::FillExtrusion, _impl) { } const style::FillExtrusionLayer::Impl& RenderFillExtrusionLayer::impl() const { return static_cast(*baseImpl); } std::unique_ptr RenderFillExtrusionLayer::createBucket(const BucketParameters& parameters, const std::vector& layers) const { return std::make_unique(parameters, layers); } void RenderFillExtrusionLayer::cascade(const CascadeParameters& parameters) { unevaluated = impl().cascading.cascade(parameters, std::move(unevaluated)); } void RenderFillExtrusionLayer::evaluate(const PropertyEvaluationParameters& parameters) { evaluated = unevaluated.evaluate(parameters); passes = (evaluated.get() > 0) ? RenderPass::Translucent : RenderPass::None; } bool RenderFillExtrusionLayer::hasTransition() const { return unevaluated.hasTransition(); } bool RenderFillExtrusionLayer::queryIntersectsFeature( const GeometryCoordinates& queryGeometry, const GeometryTileFeature& feature, const float, const float bearing, const float pixelsToTileUnits) const { auto translatedQueryGeometry = FeatureIndex::translateQueryGeometry( queryGeometry, evaluated.get(), evaluated.get(), bearing, pixelsToTileUnits); return util::polygonIntersectsMultiPolygon(translatedQueryGeometry.value_or(queryGeometry), feature.getGeometries()); } } // namespace mbgl