Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware 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

    timer(msg) and Expression Plugin Tags

    SDK Help
    0
    4
    402
    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 06/01/2007 at 12:21, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   9.6 
      Platform:   Windows  ;   
      Language(s) :   C.O.F.F.E.E  ;

      ---------
      Does anyone know whether it's possible to make a COFFEE expression plugin tag spontaneously access time() at regular intervals? According to the SDK, this function returns the number of milliseconds since CINEMA 4D was started.

      It seems that something like timer(msg) might work but this is only available in the GeUserArea and GeDialog classes.

      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 06/01/2007 at 13:37, xxxxxxxx wrote:

        I can only think of two possible directions here:

        1. Have your COFFEE code open a 'dummy' dialog (as minimal as possible) and use the timer there.

        2. Do your own timer somehow.
           a. This actually might require a separate plugin (COFFEE doesn't have threading support) - possibly a Message plugin.
           b. Or create a clever busy looping poll which only acts when a set time has passed (using time() delta for instance) with some form of 'messaging'.

        For (2b), the biggest concern is that the loop becomes your entire plugin - everything must happen from there once the loop is entered in the same way that a GUI loop polls the interface for any user activity. The only way to avoid this is if you only need the timer under certain circumstances - but the termination conditions must be rigorous.

        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 06/01/2007 at 20:25, xxxxxxxx wrote:

          Thanks for the prompt response, Robert.

          I need the timer to run for as long as the tag is loaded. Time values stored in a global variable would tell the tag whether it has been freshly loaded each time the expression runs so that persistent global variables could be refreshed. So with time stored at one second intervals, I could have something like:
          if(abs(time() - storedTime) > 1) globalVariable = refreshed;
          storedTime = time();

          Two other ways of detecting whether the tag has been freshly loaded are storing a unique ID in each host object's base container, and checking the object's position in the hierarchy. However, this does not work for a copy of the host object in the same hierarchy position as the original, or reloading the tag onto the same object. Polling the time value would work in all circumstances.

          Anyway, you've given me some good leads to work with. Thanks again.

          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 09/01/2007 at 03:56, xxxxxxxx wrote:

            Hi David, is this for your Symmetry plugin? If so maybe a object oriented approach would be better than storing some global variables? I in your case would to explore the possibilities of using a class member variable and the Message function.

            cheers,
            Matthias

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