typedef Layer::Behavior Behavior;
DALI_ENUM_TO_STRING_TABLE_BEGIN( BEHAVIOR )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Layer, LAYER_2D )
+DALI_ENUM_TO_STRING_WITH_SCOPE( Layer, LAYER_UI )
DALI_ENUM_TO_STRING_WITH_SCOPE( Layer, LAYER_3D )
DALI_ENUM_TO_STRING_TABLE_END( BEHAVIOR )
LayerPtr Layer::New()
{
- LayerPtr layer( new Layer( Actor::LAYER ) );
+ // create node, nodes are owned by UpdateManager
+ SceneGraph::Layer* layerNode = SceneGraph::Layer::New();
+ OwnerPointer< SceneGraph::Node > transferOwnership( layerNode );
+ AddNodeMessage( Stage::GetCurrent()->GetUpdateManager(), transferOwnership );
+ LayerPtr layer( new Layer( Actor::LAYER, *layerNode ) );
// Second-phase construction
layer->Initialize();
LayerPtr Layer::NewRoot( LayerList& layerList, UpdateManager& manager )
{
- LayerPtr root( new Layer( Actor::ROOT_LAYER ) );
-
- // Second-phase construction, keep a raw pointer to the layer node.
- SceneGraph::Layer* rootLayer = static_cast<SceneGraph::Layer*>( root->CreateNode() );
- root->mNode = rootLayer;
+ // create node, nodes are owned by UpdateManager
+ SceneGraph::Layer* rootLayer = SceneGraph::Layer::New();
OwnerPointer< SceneGraph::Layer > transferOwnership( rootLayer );
InstallRootMessage( manager, transferOwnership );
+ LayerPtr root( new Layer( Actor::ROOT_LAYER, *rootLayer ) );
+
// root actor is immediately considered to be on-stage
root->mIsOnStage = true;
return root;
}
-Layer::Layer( Actor::DerivedType type )
-: Actor( type ),
+Layer::Layer( Actor::DerivedType type, const SceneGraph::Layer& layer )
+: Actor( type, layer ),
mLayerList( NULL ),
mClippingBox( 0, 0, 0, 0 ),
mSortFunction( Layer::ZValue ),
- mBehavior( Dali::Layer::LAYER_2D ),
+ mBehavior( Dali::Layer::LAYER_UI ),
mIsClipping( false ),
mDepthTestDisabled( true ),
mTouchConsumed( false ),
// Notify update side object.
SetBehaviorMessage( GetEventThreadServices(), GetSceneLayerOnStage(), behavior );
- // By default, disable depth test for LAYER_2D, and enable for LAYER_3D.
- SetDepthTestDisabled( mBehavior == Dali::Layer::LAYER_2D );
+ // By default, disable depth test for LAYER_UI, and enable for LAYER_3D.
+ SetDepthTestDisabled( mBehavior == Dali::Layer::LAYER_UI );
}
void Layer::SetClipping(bool enabled)
return mHoverConsumed;
}
-SceneGraph::Node* Layer::CreateNode() const
-{
- return SceneGraph::Layer::New( mId );
-}
-
void Layer::OnStageConnectionInternal()
{
if ( !mIsRoot )
const SceneGraph::Layer& Layer::GetSceneLayerOnStage() const
{
- DALI_ASSERT_DEBUG( mNode != NULL );
- return dynamic_cast< const SceneGraph::Layer& >( *mNode );
+ return static_cast< const SceneGraph::Layer& >( GetNode() ); // we know our node is a layer node
}
void Layer::SetDefaultProperty( Property::Index index, const Property::Value& propertyValue )
}
case Dali::Layer::Property::BEHAVIOR:
{
- Behavior behavior(Dali::Layer::LAYER_2D);
+ Behavior behavior(Dali::Layer::LAYER_UI);
if( Scripting::GetEnumeration< Behavior >( propertyValue.Get< std::string >().c_str(), BEHAVIOR_TABLE, BEHAVIOR_TABLE_COUNT, behavior ) )
{
SetBehavior( behavior );