by bvz » Fri Sep 27, 2019 7:09 pm
Thanks.
As an example:
I have a streamed map file. On the file path field of this streamed map file, I have the following expression:
get_string(get_context(get_context()) + "/settings.diffuse_map")
Then two contexts above this streamed map file, I have a node named "settings". This node has a file_open field named "diffuse_map".
Occasionally, if I change the path in this settings node, the streamed map file will not update itself. It will remain "locked" to the result of the expression before I changed the value in the settings node. So, for example, if I had set the settings node to point to:
/path/to/file/A
then I change the settings node to:
/some/different/path
the underlying streamed map file still points to /path/to/file/A.
Restarting Clarisse will not force an update. The only way to get it to re-evaluate this expression is to, as you described, remove the expression and then re-attach it. This does not happen all the time, but it has happened a number of times now and is very hard to diagnose.
One scenario where it happens more often than others is when we have a referenced project. In this project we have the structure I described above:
A streamed map file with an expression.
A settings node that is a few contexts above the streamed map file.
When we reference this project, we set the values on the settings node via overrides. Sometimes the underlying streamed map file will not update itself to this new value. Again, restarts will not fix it. The only way to fix it that we have found so far is to delete the expression on the streamed map file (which is an override itself), and then re-paste it (again, this results in the "original" expression being pasted in as an override).
I will try to catch a project where this happens and see if I can send it in. But usually these projects are referencing a lot of other projects and files so I don't know if I can actually send it in successfully.
I noticed that when I have an expression, the evaluated value of the expression is also stored in the saved Clarisse project. I assume this evaluated value is what is being read and is somehow forcing itself to be the displayed value instead of a freshly evaluated value from the expression. It would be helpful if we could just tell Clarisse to dump its currently evaluated value and re-calculate the expression. That would be better than having to use a script to delete and re-attach the expression, especially when dealing with referenced projects.