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

    Update problems

    SDK Help
    0
    5
    338
    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 14/04/2008 at 05:32, xxxxxxxx wrote:

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

      ---------
      Hi, I have a few problems with Cinema updating some events.

      - Button update: I've got a button which adds an additional entry in my tag's GUI. The first time it is pushed a new entry appears, but when further pushing it nothing happens, unless I click the tag icon again. Apparently the GetDDescription method does not get called. How do I solve this? Am I allowed to call GetDDescription by myself? And what do I have to place in for LONG &flags;?

      - Time update: I have a for-call and in each transition the current time is set one frame forward which works correctly. But my objects' positions do not get updated for each frame:

      for (long i = 0; i<frames; i++){
           GePrint ("for");
           time = BaseTime (i, docFps);
           PosOrigin = origin->GetPos();
           PosTarget = target->GetPos();
      ...
      }

      Moreover they always have the coordinates of the last frame, even if I don't include the last frame in the for-call.

      Any ideas?

      Thanks

      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 14/04/2008 at 08:23, xxxxxxxx wrote:

        Ok, second problem solved. Thx to

        time = BaseTime (i, docFps);
             doc->SetTime (time);
             doc->AnimateDocument (NULL, FALSE, TRUE);
             EventAdd();

        But I still need a solution for the first problem... So what do I have to insert as the third parameter "LONG &flags;" in GetDDescription?

        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/04/2008 at 02:40, xxxxxxxx wrote:

          I am not sure why it is not working for you without having a look at your source. Here a working example, it's a tag where you can add BOOL description elements with a button.

          > \> ///////////////////////////////////////////////////////////// \> // CINEMA 4D SDK                                           // \> ///////////////////////////////////////////////////////////// \> // (c) 1989-2004 MAXON Computer GmbH, all rights reserved // \> ///////////////////////////////////////////////////////////// \> \> // "look at editor camera" expression example \> \> #include "c4d.h" \> #include "c4d_symbols.h" \> #include "tlookatcameraexp.h" \> \> \> // be sure to use a unique ID obtained from www.plugincafe.com \> #define ID_LOOKATCAMERATAG     1001165     //plugin ID \> #define ID_SUBCONTAINER 1022484     //sub-container ID \> \> enum //sub-container element IDs \> { \>      LOOKATCAMERAEXP_DESCCOUNT = 2000,     //ID for number of added description elements \>      LOOKATCAMERAEXP_DESCOFFSET \> }; \> \> class LookAtCamera : public TagData \> { \>      public: \>           virtual Bool Init(GeListNode \*node); \> \>           virtual LONG Execute(PluginTag \*tag, BaseDocument \*doc, BaseObject \*op, BaseThread \*bt, LONG priority, LONG flags); \>           virtual Bool GetDDescription(GeListNode \*node, Description \*description,LONG &flags;); \>           virtual Bool Message(GeListNode \*node, LONG type, void \*data); \> \>           static NodeData \*Alloc(void) { return gNew LookAtCamera; } \> }; \> \> Bool LookAtCamera::Init(GeListNode \*node) \> { \>      BaseTag     \*tag = (BaseTag\* )node; \>      BaseContainer \*data = tag->GetDataInstance(); \> \>      BaseContainer subbc; \>      subbc.SetLong(LOOKATCAMERAEXP_DESCCOUNT, 0); \>       \>      data->SetContainer(ID_SUBCONTAINER, subbc); \> \>      return TRUE; \> } \> \> \> Bool LookAtCamera::GetDDescription(GeListNode \*node, Description \*description,LONG &flags;) \> { \>      if (!description->LoadDescription(ID_LOOKATCAMERATAG)) return FALSE; \> \>      BaseTag     \*tag = (BaseTag\* )node; \>      BaseContainer \*data = tag->GetDataInstance(); \> \>      BaseContainer subbc = data->GetContainer(ID_SUBCONTAINER); \>       \>      LONG desccnt = subbc.GetLong(LOOKATCAMERAEXP_DESCCOUNT); \>      LONG i = 0; \> \>      for(i=0; i<desccnt; i++) \>      { \>           BaseContainer bc = GetCustomDataTypeDefault(DTYPE_BOOL); \> \>           bc.SetString(DESC_NAME,"Switch"); \>           bc.SetString(DESC_SHORT_NAME,"Switch"); \> \>           bc.SetLong(DESC_ANIMATE,DESC_ANIMATE_ON); \>           bc.SetBool(DESC_REMOVEABLE,FALSE); \>           if (!description->SetParameter(DescLevel(LOOKATCAMERAEXP_DESCOFFSET+i,DTYPE_BOOL,0),bc,DescLevel(ID_TAGPROPERTIES))) return FALSE; \>      } \> \>      flags |= DESCFLAGS_DESC_LOADED; \> \>      return TRUE; \> } \> \> Bool LookAtCamera::Message(GeListNode \*node, LONG type, void \*data) \> { \>      switch (type) \>      { \>           case MSG_DESCRIPTION_COMMAND: \>           { \>                DescriptionCommand \*dc = (DescriptionCommand\* ) data; \>                if (dc->id[0].id==ADD_BOOL) \>                { \>                     BaseTag \*tag = (BaseTag\* )node; \>                     BaseContainer \*data = tag->GetDataInstance(); \> \>                     BaseContainer subbc = data->GetContainer(ID_SUBCONTAINER); \>                     LONG desccnt = subbc.GetLong(LOOKATCAMERAEXP_DESCCOUNT)+1; \>                     subbc.SetLong(LOOKATCAMERAEXP_DESCCOUNT, desccnt); \>                     data->SetContainer(ID_SUBCONTAINER, subbc); \>                } \>           } \>      } \> \>      return TRUE; \> } \> \> LONG LookAtCamera::Execute(PluginTag \*tag, BaseDocument \*doc, BaseObject \*op, BaseThread \*bt, LONG priority, LONG flags) \> { \>      return EXECUTION_RESULT_OK; \> } \> \> Bool RegisterLookAtCamera(void) \> { \>      // decide by name if the plugin shall be registered - just for user convenience \>      String name=GeLoadString(IDS_LOOKATCAMERA); if (!name.Content()) return TRUE; \>      return RegisterTagPlugin(ID_LOOKATCAMERATAG,name,TAG_VISIBLE,LookAtCamera::Alloc,"Tlookatcameraexp","lookatcamera.tif",0); \> } \>

          > \> CONTAINER Tlookatcameraexp \> { \>      NAME Tlookatcameraexp; \>      INCLUDE Texpression; \> \>      GROUP ID_TAGPROPERTIES \>      { \>           BUTTON ADD_BOOL { } \>      } \> } \>

          > \> #ifndef \_Tlookatcameraexp_H\_ \> #define \_Tlookatcameraexp_H\_ \> \> enum \> { \>      ADD_BOOL                         = 1000, \> }; \> \> #endif \>

          > \> STRINGTABLE Tlookatcameraexp \> { \>      Tlookatcameraexp               "Look At Camera Expression"; \>       \>      ADD_BOOL                         "Add Switch"; \> } \>

          cheers,
          Matthias

          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/04/2008 at 04:57, xxxxxxxx wrote:

            Thx very much. I didn't realise you have to change a description element to call GetDDescription. So I used a class variable as a counter so it didn't work.

            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/04/2008 at 06:05, xxxxxxxx wrote:

              The counter is not a description element. I just stored it in the object's container's sub-container to have it automatically saved with the scene. otherwise I would have to use Write/Read() functions.

              cheers,
              Matthias

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