I am finding that when I first designed an interface with hardcoded, yet well structured paths, the amount of work it takes to do the exact same procedure to "indirect-ify" all of these components is quite frustrating, especially as they are all exactly the same procedure to fix. Is there a form of a tool that would allow me to do something along the lines of modify all Tag Bindings into Indirect Tag Bindings -- the equivalent of the intent from this search and replace? I am currently selecting the bindings one at a time, copying the path, replacing "tb1" with {1} and filling {1} with "Root Container.project". The search and replace is very close but how do I indicate a change from Tag Binding to Indirect Tag Binding?
If Tag Bindings would just accept {Root Container.myProperty} and auto-cast as indirect tags, that would work perfectly fine as well.
This is in Vision, not Perspective?
EDIT: I might be able to come up with a script that does this, I'll take a look. Warning that it will involve direct manipulation of project XML so use at own risk
Without modifying the window’s file on disk, this is not possible. That is not exactly a trivial problem to solve.
I'm trying to solve this one without dipping into raw XML but thank you
You can right click in the property editor to copy/paste bindings (and then find/replace afterwards, if needed), but there's no programmatic or bulk swap binding type operation, unfortunately.
This sort of blows my mind because from a frontend handling side I can't really believe it is impossible to parse the tag paths with the basic "if { or } in path do_indirect else do_direct". The format of [TAGS]{1}/{2}/{3}.myproperty
with {1} = Root Container.prop1, {2} = Root Container.prop2, {3} = Root Container.prop3 should be trivially different from [TAGS]{Root Container.prop1}/{Root Container.prop2}/{Root Container.prop3}.myproperty
, and if these strings were handled through a uniform parser you should then naturally be able to do a text replace to add the indirect bindings inside the current Find/Replace interface
Sure, but you're not just "parsing tag paths". You need to modify a binding type, which fundamentally means you need to deconstruct the tag path from a standard tag binding and the reconstruct it with the users intended purpose as an indirect tag binding.
I'm not saying it isn't possible to write a program that will do that, I'm saying it doesn't exist in the current environment, and that it isn't a trivial problem to solve.
Sorry, I meant in the first place not as a modifier for what is already the engine functionality
In Vision's defense, a lot of the fundamental technical decisions were made 15+ years ago.
In Perspective, for example, "under the hood" there's only really one tag binding type, and the other bindings just create instances of that underlying type ad-hoc.
I understand that, but without knowing in explicit detail how the parser for the tag binding menu works I think it is very likely that relatively small adjustments could be made to have the "Tag Binding" menu auto-fill the Indirect Tag Binding menu with parsed strings like my example above. It seems to already auto-fill if you highlight the tag paths and switch from Tag Binding to Indirect Tag Binding. It's sooooo close
this explains a number of (nice) things about perspective's jsons