+ /**
+ * @brief Enumeration for the instance of properties belonging to the Layer class.
+ *
+ * Properties additional to Actor.
+ * @SINCE_1_0.0
+ */
+ struct Property
+ {
+ /**
+ * @brief Enumeration for the instance of properties belonging to the Layer class.
+ *
+ * Properties additional to Actor.
+ * @SINCE_1_0.0
+ */
+ enum
+ {
+ CLIPPING_ENABLE = DEFAULT_DERIVED_ACTOR_PROPERTY_START_INDEX, ///< name "clippingEnable", type bool @SINCE_1_0.0
+ CLIPPING_BOX, ///< name "clippingBox", type Rect<int32_t> @SINCE_1_0.0
+ BEHAVIOR, ///< name "behavior", type String @SINCE_1_0.0
+ };
+ };
+
+ /**
+ * @brief Enumeration for the behavior of the layer.
+ *
+ * Check each value to see how it affects the layer.
+ * @SINCE_1_0.0
+ */
+ enum Behavior
+ {
+ /**
+ * @DEPRECATED_1_1.45, use LAYER_UI instead
+ * @brief UI control rendering mode.
+ * @SINCE_1_0.0
+ * @see LAYER_UI
+ */
+ LAYER_2D,
+
+ /**
+ * @brief UI control rendering mode (default mode).
+ *
+ * This mode is designed for UI controls that can overlap. In this
+ * mode renderer order will be respective to the tree hierarchy of
+ * Actors.
+ *
+ * The rendering order is depth first, so for the following actor tree,
+ * A will be drawn first, then B, D, E, then C, F. This ensures that
+ * overlapping actors are drawn as expected (whereas, with breadth first
+ * traversal, the actors would interleave).
+ *
+ * @code
+ *
+ * Layer1 (parent)
+ * |
+ * A
+ * / \
+ * B C
+ * / \ \
+ * D E F
+ *
+ * @endcode
+ *
+ * To change the order of sibling actors, use the Actor::Raise and
+ * Actor::Lower APIs. Within an actor, the Renderer depth index dictates
+ * the order the renderers are drawn.
+ *
+ * @SINCE_1_1.45
+ */
+ LAYER_UI = LAYER_2D,
+
+ /**
+ * @brief Layer will use depth test.
+ *
+ * This mode is designed for a 3 dimensional scene where actors in front
+ * of other actors will obscure them, i.e. the actors are sorted by the
+ * distance from the camera.
+ *
+ * When using this mode, a depth test will be used. A depth clear will
+ * happen for each layer, which means actors in a layer "above" other
+ * layers will be rendered in front of actors in those layers regardless
+ * of their Z positions (see Layer::Raise() and Layer::Lower()).
+ *
+ * Opaque renderers are drawn first and write to the depth buffer. Then
+ * transparent renderers are drawn with depth test enabled but depth
+ * write switched off. Transparent renderers are drawn based on their
+ * distance from the camera. A renderer's DEPTH_INDEX property is used to
+ * offset the distance to the camera when ordering transparent renderers.
+ *
+ * This is useful if you want to define the draw order of two or more
+ * transparent renderers that are equal distance from the camera. Unlike
+ * LAYER_UI, parent-child relationship does not affect rendering order at
+ * all.
+ *
+ * @SINCE_1_0.0
+ */
+ LAYER_3D
+
+ };