21 std::unique_ptr<ApproachDescriptor> ades,
LayerType laytyp)
23 m_surfaceArray(surfaceArray.
release()),
24 m_layerThickness(thickness),
25 m_approachDescriptor(nullptr),
26 m_representingVolume(nullptr),
28 m_ssRepresentingSurface(1) {
30 ades->registerLayer(*
this);
41 return m_approachDescriptor.get();
51 assignGeometryId(layerID);
53 Surface* rSurface =
const_cast<Surface*
>(&surfaceRepresentation());
54 if (materialDecorator !=
nullptr) {
55 materialDecorator->
decorate(*rSurface);
59 if (surfaceRepresentation().surfaceMaterial() !=
nullptr) {
60 m_ssRepresentingSurface = 2;
63 if (m_approachDescriptor) {
65 m_ssApproachSurfaces = 1;
68 for (
auto& aSurface : m_approachDescriptor->containedSurfaces()) {
70 auto mutableASurface =
const_cast<Surface*
>(aSurface);
72 if (materialDecorator !=
nullptr) {
73 materialDecorator->
decorate(*mutableASurface);
76 if (aSurface->surfaceMaterial() !=
nullptr) {
77 m_ssApproachSurfaces = 2;
84 m_ssSensitiveSurfaces = 1;
87 for (
auto& sSurface : m_surfaceArray->surfaces()) {
89 auto mutableSSurface =
const_cast<Surface*
>(sSurface);
91 if (materialDecorator !=
nullptr) {
92 materialDecorator->
decorate(*mutableSSurface);
95 if (sSurface->surfaceMaterial() !=
nullptr) {
96 m_ssSensitiveSurfaces = 2;