THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 10/03/2005 at 13:49, xxxxxxxx wrote:
More details will help, I guess. Realize that I'm working on an alternative approach, but it is still a long, twisted, maniacal experiment at this stage.
There is my PluginShader which gets plugged into Materials' Channels. Simple enough. Each instance contains its own set of shadertree nodes (my own class). These 'nodes' are edited in a dialog (try doing a GeUserArea in the AM - yeah, right) - nodes are created, deleted, connected, properties set. There is also the ability to cut/paste and copy/paste either nodes or data from one node to another. Again, this is all easy from within the same PluginShader. And, yes, this is done by the user.
But I want cross-Document cut/paste and copy/paste. Thus, the user can copy node-data or a group of nodes and paste them into another PluginShader's node set. The only way to do that is with another plugin that works across Documents. So far, the only viable choice is a Command plugin. Command plugins have the nasty attribute of having nothing. There is an Execute() and done. No way to get to the CommandData (this was verified by Mikael some time ago), no communications (show me the Message/Command/CoreMessage methods in a CommandData).
There are other approaches wherein the nodes themselves would need to become Cinema4D somethings (e.g.: CustomDataType or PluginNode). I just don't have the man-power (me) or the time (looking at 1-2 months, not 1-2 years) to construct an elaborate system to do this.
The experiment mentioned above involves a Command plugin, but it requires that it be launched before editing can occur. The editor dialog is opened on Execute (et Voila! I have something with which to send/receive messages). The dialog then announces itself to all of the existing PluginShaders. Well, that's the simplistic idea anyway.
Maybe there's an area or fifty of the SDK that I don't comprehend completely, but this seems like the only way to accomplish this task (again, without building my own GV system - not worth the time and effort).