Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    Detect tag attach in object

    SDK Help
    0
    6
    536
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 11/02/2004 at 00:29, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   8.207 
      Platform:   Windows  ;   
      Language(s) :     C++  ;

      ---------
      I wrote my own object, use a own shader, and the texture tag to connect them. My problem is, that I need to change some specific things in the object according to the attached shader, for example I need to change the objects size to adjust it to the size of a texture which is loaded within my shader. If I drop my shader onto my object, my objects receives a MSG_CHANGE. When I get this message, I look for attached tags with GetTag, but this only returns a null pointer, the tag is not completely attached to the object at this moment but only a bit later. Later I can look for the tag, get the shader, get the size and adjust my object, but I have to start this manually. Would be nice if my object could do this automatically when the tag is attached to the object, but only the MSG_CHANGE and no more messages are sent. MSG_CHANGE indicates that any object data has been changed....which object data has changed??? You see any solution for my problem?

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 11/02/2004 at 04:45, xxxxxxxx wrote:

        Ok...found a workaround now, within the draw function of the shader I sent a update message to the object, after attaching a draw is called, and then the tag is initialized.

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 11/02/2004 at 07:40, xxxxxxxx wrote:

          New problems....first of all, the solution is not nice...works, but not nice. But now I also want the object to do something when a tag is deleted. I really dont understand that MSG_CHANGE. I always get that message BEFORE a change will haben...before a tag is attached, and also before a tag is to be deleted. But how should I destinguish, WHAT the soon comming change will be???? I only know, that _soon_ _something_ will change...but to react to it, I  need to know what will change? SDK says, that MSG_ChANGE has to be sent, if any object data HAS BEEN changed....but when I get the message, the change has not beed processed, it WILL process soon....doesnt make any sense that way, does it? And is there a way to find out what will change, in my case, if the MSG_CHANGE indicates that a tag will be attached, or a tag will be deleted?

          1 Reply Last reply Reply Quote 0
          • H
            Helper
            last edited by

            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

            On 15/02/2004 at 16:46, xxxxxxxx wrote:

            Yeah, I've confirmed that the messages are sent before the event they are announcing. I don't know why this is so, but I've asked the programmers and will report back what they have to say.

            1 Reply Last reply Reply Quote 0
            • H
              Helper
              last edited by

              THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

              On 16/02/2004 at 19:15, xxxxxxxx wrote:

              Unfortunately this is just the way it is. The MSG_CHANGE message is sent to increment the dirty count so the order isn't exactly specified.
              Since messages generally aren't reliable in C4D for detecting changes (or rather, shouldn't be relied on), you'll have to perform your routines at the first time you actually discover that a tag has been added or removed.

              1 Reply Last reply Reply Quote 0
              • H
                Helper
                last edited by

                THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                On 17/02/2004 at 08:27, xxxxxxxx wrote:

                Maybe I found a more reliable solution now, I added a MessageData plugin to my bunch of objects. This one can listen to all core messages, which seem to be relieable. EVMSG_CHANGE and EVMSG_DOCUMENTRECALCULATED seem to be very nice, at least I tried them with one of my jobs to do, that story from above, detect when a tag is attached, and even when it is released and modify the according object, this seems to work nice.
                In general I think that the object messages are not very relieable. For example if I change the objects position by editing the position values in the attribute manager, a MSG_CHANGE is sent. If I do the same by just moving the object with the mouse in the editor, which of course also modifies the objects container, then no message is sent. That seems to be a bit inconsequent to the own rules...or I didn't understand these rules 😉

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post