+ // Add custom properties
+ if( OptionalChild customPropertiesChild = IsChild(child, "custom-properties") )
+ {
+ const TreeNode& customPropertiesNode = *customPropertiesChild;
+ const TreeConstIter endIter = customPropertiesNode.CEnd();
+ for( TreeConstIter iter = customPropertiesNode.CBegin(); endIter != iter; ++iter )
+ {
+ const TreeNode::KeyNodePair& keyChild = *iter;
+ std::string key( keyChild.first );
+
+ Property::Index index = actor.GetPropertyIndex( key );
+ Property::Value value;
+ if( SetPropertyFromNode( keyChild.second, value, constant ))
+ {
+ if( Property::INVALID_INDEX == index )
+ {
+ index = actor.RegisterProperty( key, value );
+ }
+ else
+ {
+ actor.SetProperty( index, value );
+ }
+ }
+ }
+ }
+