+ Handle propertyObject( handle );
+
+ Property::Index index = propertyObject.GetPropertyIndex( key );
+
+ if( Property::INVALID_INDEX == index )
+ {
+ Actor actor = Actor::DownCast(propertyObject);
+ if( actor )
+ {
+ if( ShaderEffect effect = actor.GetShaderEffect() )
+ {
+ index = effect.GetPropertyIndex( key );
+ if(index != Property::INVALID_INDEX)
+ {
+ propertyObject = effect;
+ }
+ }
+ }
+ }