+void Object::AddUniformMapping( Property::Index propertyIndex, const std::string& uniformName ) const
+{
+ // Get the address of the property if it's a scene property
+ const PropertyInputImpl* propertyPtr = GetSceneObjectInputProperty( propertyIndex );
+
+ // Check instead for newly registered properties
+ if( propertyPtr == NULL )
+ {
+ PropertyMetadata* animatable = FindAnimatableProperty( propertyIndex );
+ if( animatable != NULL )
+ {
+ propertyPtr = animatable->GetSceneGraphProperty();
+ }
+ }
+
+ if( propertyPtr == NULL )
+ {
+ PropertyMetadata* custom = FindCustomProperty( propertyIndex );
+ if( custom != NULL )
+ {
+ propertyPtr = custom->GetSceneGraphProperty();
+ }
+ }
+
+ if( propertyPtr != NULL )
+ {
+ const SceneGraph::PropertyOwner* sceneObject = GetPropertyOwner();
+
+ if( sceneObject != NULL )
+ {
+ SceneGraph::UniformPropertyMapping* map = new SceneGraph::UniformPropertyMapping( uniformName, propertyPtr );
+ // Message takes ownership of Uniform map (and will delete it after copy)
+ AddUniformMapMessage( const_cast<EventThreadServices&>(GetEventThreadServices()), *sceneObject, map);
+ }
+ else
+ {
+ DALI_ASSERT_ALWAYS(0 && "MESH_REWORK - Need to store property whilst off-stage" );
+ }
+ }
+}
+
+void Object::RemoveUniformMapping( const std::string& uniformName )
+{
+ const SceneGraph::PropertyOwner* sceneObject = GetSceneObject();
+ RemoveUniformMapMessage( GetEventThreadServices(), *sceneObject, uniformName);
+}
+
+Property::Value Object::GetCurrentPropertyValue( const PropertyMetadata* entry ) const