32 class ISurfaceMaterial;
37 class ApproachDescriptor;
44 using LayerPtr = std::shared_ptr<const Layer>;
46 using NextLayers = std::pair<const Layer*, const Layer*>;
96 virtual ~Layer() =
default;
144 template <
typename options_t>
145 bool resolve(
const options_t& options)
const {
146 return resolve(options.resolveSensitive, options.resolveMaterial,
147 options.resolvePassive);
157 virtual bool resolve(
bool resolveSensitive,
bool resolveMaterial,
158 bool resolvePassive)
const;
170 template <
typename options_t>
173 const Vector3D& direction,
const options_t& options)
const;
188 template <
typename options_t>
192 const options_t& options)
const;
225 std::unique_ptr<ApproachDescriptor> ades =
nullptr,