+ continue;
+ }
+
+ Handle propertyObject( handle );
+
+ Dali::Property::Index index = propertyObject.GetPropertyIndex( key );
+
+ if( Property::INVALID_INDEX != index )
+ {
+ Property::Type type = propertyObject.GetPropertyType(index);
+ Property::Value value;
+ bool mapped = false;
+
+ // if node.value is a mapping, get the property value from the "mappings" table
+ if( keyChild.second.GetType() == TreeNode::STRING )
+ {
+ std::string mappingKey;
+ if( GetMappingKey(keyChild.second.GetString(), mappingKey) )
+ {
+ OptionalChild mappingRoot = IsChild( mParser.GetRoot(), KEYNAME_MAPPINGS );
+ mapped = GetPropertyMap( *mappingRoot, mappingKey.c_str(), type, value );
+ }
+ }
+ if( ! mapped )
+ {
+ mapped = DeterminePropertyFromNode( keyChild.second, type, value, constant );
+ if( ! mapped )
+ {
+ // Just determine the property from the node and if it's valid, let the property object handle it
+ DeterminePropertyFromNode( keyChild.second, value, constant );
+ mapped = ( value.GetType() != Property::NONE );
+ }
+ }
+ if( mapped )
+ {
+ DALI_SCRIPT_VERBOSE("SetProperty '%s' Index=:%d Value Type=%d Value '%s'\n", key.c_str(), index, value.GetType(), PropertyValueToString(value).c_str() );
+
+ propertyObject.SetProperty( index, value );
+ }