THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 24/03/2010 at 12:12, xxxxxxxx wrote:
Cinema 4D Version: 11
Platform: Mac OSX ;
Language(s) : C++ ;
I have a tag plugin with a MessageData class in it. I use that MessageData to send a message to my tag which triggers the reading of data off of a queue (queue not related to the c4d api, so I know I can't get support for that part of the code).
In the MessageData I have a while loop that searches the OM for all instances of my tag. When each tag is found, the message is sent, then the process is repeated, through the entire OM. However, this isn't ideal, since when the tags are "messaged" one at a time, the first found tag empties the queue, leaving no data for subsequent tags.
Is there a way to send a message to all instances of my tag plugin in such a way that they all get a chance to receive the data in the queue before it gets emptied?
Here's the function I'm using to iterate the OM and send the message (Gets called in the CoreMessage member of the MessageData class, activating code in the tag's Message member).
Bool FindMyTags(BaseObject *fo) //recursive function, iterates through the complete object hierarchy
BaseTag *mytag = fo->GetTag(ID_MYPLUGINID, 0);
fo = fo->GetNext();
then it gets called in CoreMessages like so:
thanks in advance for any insight:)
On 29/03/2010 at 06:50, xxxxxxxx wrote:
Maybe it would work if you don't let the tag empty the que, but instead let the FindMyTags() function empty the que after the while loop has finished?
On 31/03/2010 at 01:54, xxxxxxxx wrote:
I might end up doing that as well, but I've found a way to store away all the data globally so the other tags can find it.