Update Generator when children changed?



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

    On 01/01/2011 at 23:10, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   R10-R12 
    Platform:   Windows  ;   Mac OSX  ; 
    Language(s) :     C++  ;

    ---------
    I've noticed that when, say, a procedural Sphere's Segment is changed when under my generator object plugin, no update occurs in the generator.  Is there a way to notice such changes (a message, perhaps).



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

    On 02/01/2011 at 03:56, xxxxxxxx wrote:

    works fine here. DIRTY_DATA is triggered for the child then.



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

    On 02/01/2011 at 15:04, xxxxxxxx wrote:

    Here is what I have up to where actual generation begins in the GetVirtualObjects() method.  Let me know if you see any changes that can be made.  Thanks! :)

    // ObjectData.GetVirtualObjects  
    //*---------------------------------------------------------------------------*  
    BaseObject* GreeblerObj::GetVirtualObjects(PluginObject* op, HierarchyHelp* hh)  
    //*---------------------------------------------------------------------------*  
    {  
      // Get first input object  
      BaseObject*        child =    op->GetDown();  
      if (!child)                return NULL;  
      
      // Generate polygonalized clones of input objects  
      // NOTE: 'mainop' is the polygonized original returned with greebler-generated objects  
    #ifndef    C4D_R12  
      hh->AddVFlags(VFLAG_POLYGONAL);  
    #endif  
      Bool            dirty = op->CheckCache(hh) || op->IsDirty(DIRTYFLAGS_DATA);  
      if (!dirty)                return op->GetCache(hh);  
      mainop =                op->GetAndCheckHierarchyClone(hh, child, HIERARCHYCLONEFLAGS_ASPOLY, &dirty, NULL, TRUE);  
      // - if !dirty object is already cached and doesn't need to be rebuilt  
      if (!dirty)                return mainop;  
      if (!mainop)            return NULL;  
      
      // GreeblerObj BaseContainer  
      BaseContainer*    obc =    op->GetDataInstance();  
      if (!obc)                return mainop;  
      
      // Progress Bar - Begin  
      StatusSetText("Greebler Updating...");  
      StatusSetSpin();  
      
    ...  
    }  
    

Log in to reply