return handle;
}
-const Actor ModelView::GetModelRoot()
+const Actor ModelView::GetModelRoot() const
{
return mModelRoot;
}
{
if(diffuse && specular)
{
- mDiffuseTexture = diffuse;
- mSpecularTexture = specular;
- mIblScaleFactor = scaleFactor;
+ if(mDiffuseTexture != diffuse || mSpecularTexture != specular)
+ {
+ mDiffuseTexture = diffuse;
+ mSpecularTexture = specular;
+ UpdateImageBasedLightTexture();
+ }
+ if(mIblScaleFactor != scaleFactor)
+ {
+ mIblScaleFactor = scaleFactor;
+ UpdateImageBasedLightScaleFactor();
+ }
- UpdateImageBasedLight();
}
}
-uint32_t ModelView::GetAnimationCount()
+void ModelView::SetImageBasedLightScaleFactor(float scaleFactor)
+{
+ mIblScaleFactor = scaleFactor;
+ if(mDiffuseTexture && mSpecularTexture)
+ {
+ UpdateImageBasedLightScaleFactor();
+ }
+}
+
+float ModelView::GetImageBasedLightScaleFactor() const
+{
+ return mIblScaleFactor;
+}
+
+uint32_t ModelView::GetAnimationCount() const
{
return mAnimations.size();
}
-Dali::Animation ModelView::GetAnimation(uint32_t index)
+Dali::Animation ModelView::GetAnimation(uint32_t index) const
{
Dali::Animation animation;
if(mAnimations.size() > index)
return animation;
}
-Dali::Animation ModelView::GetAnimation(const std::string& name)
+Dali::Animation ModelView::GetAnimation(const std::string& name) const
{
Dali::Animation animation;
if(!name.empty())
mRenderableActors.clear();
CollectRenderableActor(mModelRoot);
- UpdateImageBasedLight();
+ UpdateImageBasedLightTexture();
+ UpdateImageBasedLightScaleFactor();
mNaturalSize = AABB.CalculateSize();
mModelPivot = AABB.CalculatePivot();
}
}
-void ModelView::UpdateImageBasedLight()
+void ModelView::UpdateImageBasedLightTexture()
{
if(!mDiffuseTexture || !mSpecularTexture)
{
Actor renderableActor = actor.GetHandle();
if(renderableActor)
{
- renderableActor.RegisterProperty(Dali::Scene3D::Loader::NodeDefinition::GetIblScaleFactorUniformName().data(), mIblScaleFactor);
-
uint32_t rendererCount = renderableActor.GetRendererCount();
for(uint32_t i = 0; i < rendererCount; ++i)
{
}
}
+void ModelView::UpdateImageBasedLightScaleFactor()
+{
+ if(!mDiffuseTexture || !mSpecularTexture)
+ {
+ return;
+ }
+ for(auto&& actor : mRenderableActors)
+ {
+ Actor renderableActor = actor.GetHandle();
+ if(renderableActor)
+ {
+ renderableActor.RegisterProperty(Dali::Scene3D::Loader::NodeDefinition::GetIblScaleFactorUniformName().data(), mIblScaleFactor);
+ }
+ }
+}
+
} // namespace Internal
} // namespace Scene3D
} // namespace Dali