# Courier V3.0.2

#### 3.0.0-1 Message Processing

1\. New [Courier::Component::PostProcess](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_component.html#a70cb48090796e1584c43dadc228b41ab) method has been added. This method is called after a component has been processed. A custom component is able to react on each process of a component.

2\. New [Courier::MessageReceiver::Deactivate](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_message_receiver.html#a28698cf0881a3f6c363922ef435fceae) method has been added. This method deactivates the message receiver in the system. After calling this method the message router stops serving this receiver with appropriate messages (means the method Receive() is called). If a custom message receiver is used this method should be called before destroying the custom message receiver instance.

#### 3.0.0-2 Input Handling

New methods where added for setting custom names for GenericConsoleListener and PosixTerminalListener. These are:

<div class="contents" id="bkmrk-courier%3A%3Aplatform%3A%3Ae"><div class="contents"><div class="textblock">- Courier::Platform::ExtComm::Generic::GenericConsoleInputHandler::SetConsoleListenerName
- Courier::Platform::ExtComm::Posix::SetTerminalListenerName

</div></div></div>Corresponding getter methods were also provided.

#### 3.0.0-3 Camera Groups

Activation and enable /disable rendering for views have been reworked to fix different aspects related to handling views together with camera groups.

For this the following modifications have been made:

<div class="contents" id="bkmrk-new-courier%3A%3Acamerag"><div class="contents"><div class="textblock">- New Courier::CameraGroupHandler::OnViewInitContent method added for correctly initializing the cameras of a camera group, when their associated views are recreated.This method retrieves a camera if it has been lost, adds it to the camera group and makes all necessary settings for it to correctly be handled;
- New [Courier::ViewScene::ActivateForCamera](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene.html#a48b3645ccbb9c0b6b153174416f7df1d) method has been added. This method activates / deactivates the view for message receiving, regardless of its rendering state and manages a reference count for activation requests for a specific camera of the view;
- New [Courier::ViewScene::EnableRenderingForCamera](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene.html#a5fe0776a674be8ef7e57d614190f470d) method has been added. This method enables / disables rendering for the current ViewScene and a specific camera and manages a reference count for rendering requests for a specific camera of the view;
- [Courier::ViewScene::IsRenderingEnabled](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene.html#aa142f5e02fb0b888cc8fd6df0a566459 "Returns true if the view is enabled for rendering.") method has been moved from [Courier::ViewScene2D](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene2_d.html) and [Courier::ViewScene3D](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene3_d.html) to [Courier::ViewScene](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene.html). This method returns true if the view is enabled for rendering;
- New [Courier::ViewScene::OnActivate](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene.html#ac56020793e9554863bfb9317e0c46521 "Delegates ParentViewActivateEvent event to controller and widgets.") protected method has been added. This method delegates [Courier::ParentViewActivateEvent](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_parent_view_activate_event.html) event to controller and widgets;
- New protected methods [Courier::ViewScene2D::ActivateImpl](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene2_d.html#a122f6a3cc74b576aba5e8ef4ddfe2fe3 "Actual implementation for Activate method.") and [Courier::ViewScene3D::ActivateImpl](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene3_d.html#aa5e3eda50137b704603f8aaed429137c "Actual implementation for Activate method.") were added. These are actual implementations for [Courier::ViewScene2D::Activate](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene2_d.html#aeb5e48b53bb270b9e8dd07bf340053bd) and [Courier::ViewScene3D::Activate](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene3_d.html#ae624f0d5f3c71a88d84796fee0be58af) methods;
- New protected methods [Courier::ViewScene2D::EnableRenderingImpl](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene2_d.html#a76bb00cf2b91da4b825a2588306c610d "Actual implementation for EnableRendering method.") and [Courier::ViewScene3D::EnableRenderingImpl](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene3_d.html#a95a666f578939a61a20d5d0aaad79912 "Actual implementation for EnableRendering method.") were added. These are actual implementations for [Courier::ViewScene2D::EnableRendering](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene2_d.html#a0603cccb06512496d893a6bead11f3ee) and [Courier::ViewScene3D::EnableRendering](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene3_d.html#a097edf636d2b0bca71b7b1faeb871292) methods;
- [Courier::ViewScene2D::EnableRenderingScene](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene2_d.html#af01949d476f82b96562a2831bac2283d "Sets the rendering state for the actual scene from Candera.") and [Courier::ViewScene3D::EnableRenderingScene](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene3_d.html#a6e10f35132dad4621ac5b369efc06201 "Sets the rendering state for the actual scene from Candera.") have been made protected;
- New protected and virtual method Courier::ViewScene::UpdateCameraRenderingState has been added. This is overridden by [Courier::ViewScene2D::UpdateCameraRenderingState](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene2_d.html#ae8129c9b4d6c49401a04ad2d0a3e96e9 "Sets the rendering state for the actual camera from Candera.") and [Courier::ViewScene3D::UpdateCameraRenderingState](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene3_d.html#a509a23b0e41811d9799e77da275ec605 "Sets the rendering state for the actual camera from Candera.") methods. These methods set the rendering state for the actual camera from [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]").

</div></div></div>#### 3.0.0-4 Render Configuration

A new option [Courier::RenderConfiguration::ClearRenderTargetOnUpload](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_render_configuration.html#a49104c37f8ef234bfca94746cf5b6682) was added for configurating the rendering.

This option enables / disables the automatic clearing of the render targets on the next upload. By default, to keep backwards compatibility, this option is set to false.

The interface of [Courier::Gdu](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_gdu.html) class has also been modified to support the above change. Therefore [Courier::Gdu::Upload](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_gdu.html#a2419f979ca7664419440ac22eca2ae9a) and [Courier::Gdu::Unload](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_gdu.html#a30d257c41178651051c286ed9a91a7bd) now have a *renderer* parameter which is a pointer to [Courier::Renderer](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_renderer.html).

Also [Courier::Renderer::DeleteRenderJobs](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_renderer.html#a40825a3c3844b5ecaf5e438bdf593b59 "Delete Render Jobs.") method has been made public, so it can be used by [Courier::Gdu](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_gdu.html) class.

#### 3.0.0-5 Visualization

1\. A new Courier::ViewAction::ClearCameraViewports is added to the [Courier::ViewReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_req_msg.html). This new Courier::ViewAction::ClearCameraViewports will only clear the areas that are rendered by the cameras of the view.

For this, the following changes have been made:

<div class="contents" id="bkmrk-a-new-enumeration-va"><div class="contents"><div class="textblock">- a new enumeration value has been added to Courier::ViewAction;
- a new *onlyCameraViewPorts* parameter has been added to [Courier::View::Clear](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view.html#a8d7347965d20aa57371fa685f95adee0 "Implements the clear method."), [Courier::ViewContainer::Clear](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_container.html#a22f8a41477ac34720ace08026dd85939), [Courier::ViewScene2D::Clear](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene2_d.html#afee7fa73cc3043a68ed866d46dc6e654) and [Courier::ViewScene3D::Clear](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene3_d.html#ac66ed19dfb71c85fe63c714d0c5e9dd8) methods.

</div></div></div>2\. New [Courier::Renderer::SetIs2DRequest](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_renderer.html#adfd52f5dac364b299454bf651998b384 "Sets flag for determining if load/unload on a certain layer is requested by 2D View.") method has been added to [Courier::Renderer](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_renderer.html), which sets a flag for determining if load/unload on a certain layer is requested by a 2D View. Corresponding getter method was also provided.

---