# Candera Engine 2D

#### Custom Effect Set

It is now possible to configure the list of Effects needed from an external source. For information on how to integrate this feature please refer to <span style="color: rgb(230, 126, 35);">[Custom Effect Set](https://doc316en.candera.eu/books/2d-effects/page/custom-effect-set)</span>.

<div class="contents" id="bkmrk-"><div class="contents"><div class="textblock">---

</div></div></div>#### New 2D Animation Property Setters

New animation property setters have been implemented for the Viewport ([Camera2D::GetViewport](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_camera2_d.html#aa0bd3e4c93fcd47d343937c97da6daeb)) and ScissorRectangle ([Camera2D::GetScissorRectangle](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_camera2_d.html#a98fdf99bed92ed41271a655e7efafca5)) properties of a [Camera2D](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_camera2_d.html "A camera defines the view to the scene. At least one Camera2D has to be added to a 2D scene graph and...") object. The corresponding classes for these are [Animation::Camera2DViewportPropertySetter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_animation_1_1_camera2_d_viewport_property_setter.html "A PropertySetter that sets the "Viewport" property of a Camera2D.") and [Animation::Camera2DScissorRectanglePropertySetter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_animation_1_1_camera2_d_scissor_rectangle_property_setter.html "A PropertySetter that sets the "ScissorRectangle" property of a Camera2D.").

New animation property setters have been implemented also for BoundingRectangle and ClippingRectangle properties of a [Node2D](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_node2_d.html "The class Node2D is an abstract base class for all 2D scene graph nodes.") object. The corresponding classes for these are [Animation::Node2DBoundingRectanglePropertySetter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_animation_1_1_node2_d_bounding_rectangle_property_setter.html "A PropertySetter that sets the "BoundingRectangle" property of a Node2D.") and [Animation::Node2DClippingRectanglePropertySetter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_animation_1_1_node2_d_clipping_rectangle_property_setter.html "A PropertySetter that sets the "ClippingRectangle" property of a Node2D.").

A new animation property setter has been implemented also for the Layout [Margin](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_margin.html "A non-zero margin applies space outside the element layout's width and height. The values can be set ...") property of 2D nodes. The corresponding class for this is [Animation::LayoutMarginsPropertySetter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_animation_1_1_layout_margins_property_setter.html "A PropertySetter that sets the "Margin" property used for layouting the associated Node2D...").

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">---

</div></div></div>#### New Math2D Functions

[Math2D::TransformScreenToWorld](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_math2_d.html#a1c4bc540c491d53c328cd0d692b833a0) accepts a camera object and a position in screen space. It returns the corresponding position in the world space.   
[Math2D::TransformScreenToObject](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_math2_d.html#a39fd5ce8beeb3575d5c21773d7d3cb68) accepts a camera object, a position in screen space and an object. It returns the corresponding position in the provided object's space.

<div class="contents" id="bkmrk--1"><div class="contents"><div class="textblock">---

</div></div></div>#### Option to inherit the Layout Direction or to use the Culture

Previously the AutomaticDirection resulted in an inherited layout direction.   
As a consequence the layout stayed fix at either left-to-right or right-to-left once a specific layout direction has been choosen on a node for the complete sub tree.

Hence, two additional options for the layout direction have been introduced:

<div class="contents" id="bkmrk-inheritdirection%3A-ta"><div class="contents"><div class="textblock">- InheritDirection: take the parent layout direction.
- CultureDirection: take the culture specific layout direction.

</div></div></div>Now it is possible to change the setting again to the culture specific layout direction. For backward compatibility the AutomaticDirection will be by default interpreted as InheritDirection.

<div class="contents" id="bkmrk-see-also%3A-2d-layout."><div class="contents"><div class="textblock"><dl class="see"><dt>**See also:**</dt><dd>[2D Layout](http://dev.doc.cgistudio.at/APILINK/group___layout2_d.html "2D specific layout features.").</dd></dl>---

</div></div></div>#### GridLayouter effective Row/Column Data

Effective grid row/column data access interface has been added to [GridLayouter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_grid_layouter.html "GridLayouter arranges its elements in a grid. The amount of rows and columns for the grid must be spe...").

<div class="contents" id="bkmrk-see-also%3A-gridlayout"><div class="textblock"><dl class="see"><dt>**See also:**</dt><dd>[GridLayouter::GetEffectiveRowData](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_grid_layouter.html#aee829cf1a8722965e7fb02e4b3a3cb25) and [GridLayouter::GetEffectiveColumnData](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_grid_layouter.html#a7e8e84925f485520c2ea123b28c01349).</dd></dl></div></div>---