hit.distance = distance;
hit.depth = actor.GetHierarchyDepth() * Dali::Layer::TREE_DEPTH_MULTIPLIER;
- // Is this actor an Image Actor or contains a renderer?
- if ( ImageActor* imageActor = dynamic_cast< ImageActor* >( &actor ) )
+ if ( actor.GetRendererCount() > 0 )
{
- hit.depth += imageActor->GetDepthIndex();
- }
- else if ( actor.GetRendererCount() )
- {
- hit.depth += actor.GetRendererAt( 0 ).GetDepthIndex();
+ //Get renderer with maximum depth
+ int rendererMaxDepth(actor.GetRendererAt( 0 ).Get()->GetDepthIndex());
+ for( unsigned int i(1); i<actor.GetRendererCount(); ++i)
+ {
+ int depth = actor.GetRendererAt( i ).Get()->GetDepthIndex();
+ if( depth > rendererMaxDepth )
+ {
+ rendererMaxDepth = depth;
+ }
+ }
+ hit.depth += rendererMaxDepth;
}
}
}