No refresh for deformer.



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

    On 03/12/2004 at 11:53, xxxxxxxx wrote:

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

    ---------
    Hi list :)

    I have a problem with a plug that get like a argument a external spline.
    The plugin is a standard deformer that use the spline as link to deform object.
    When i modify spline points or global matrix , the plugin don't refresh.

    Any help?

    Thanks
    Renato T.

    ps. sorry for english, i hope that someone understand what i mean.



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

    On 05/12/2004 at 03:54, xxxxxxxx wrote:

    you have to overload the CheckDirty function. More info in the SDK docs.



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

    On 05/12/2004 at 04:00, xxxxxxxx wrote:

    Katachi,

    in SDK i see:
    You can overload this function to check for a change in a deformer object manually. This example will make your deformer update every frame.

    Can i overload this function to see if a spline is change?

    Thanks :)
    Renato T



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

    On 05/12/2004 at 04:09, xxxxxxxx wrote:

    yes, you could use GetDirty() to check if the checksum changed.



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

    On 05/12/2004 at 04:35, xxxxxxxx wrote:

    THANSK! IT WORK!

    Cheers
    Renato T.



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

    On 05/12/2004 at 05:26, xxxxxxxx wrote:

    :) good luck with your plugin.



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

    On 05/12/2004 at 05:40, xxxxxxxx wrote:

    Thanks, but there are some little things that i must verify.
    With old scene this seem not work, with a fresh scene it's working.

    Maybe that i wrong.

    void PathDeformer::CheckDirty(PluginObject* op, BaseDocument* doc)
    {
         BaseContainer *data = op->GetDataInstance();
         BaseObject *spline=data->GetObjectLink(PATHDEFORMER_SPLINE,doc);
         if (spline)
         {
              if (spline->IsDirty(DIRTY_DATA) )
              {
                   //GePrint("Points Changed");
                   op->SetDirty(DIRTY_DATA);
              }

    if (spline->IsDirty(DIRTY_MATRIX))
              {
                   //GePrint("Matrix Changed");
                   op->SetDirty(DIRTY_MATRIX);
              }
              else GePrint ("damn!");
         }
    }

    what do you think?

    thanks
    Renato T.



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

    On 05/12/2004 at 06:01, xxxxxxxx wrote:

    I wouldn´t do it with isDirty but with GetDirty()!

    Create a private member in your object class, sth like:

    private:
    ULONG s_dirty;

    then use something like (pseudo-code) :

    ULONG dirty_bit = spline->GetDirty(DIRTY_DATA|DIRTY_MATRIX);  
    if(dirty_bit!=s_dirty)  
    {  
        s_dirty = dirty_bit;  
        op->SetDirty(DIRTY_MATRIX);   
        /*Or DIRTY_DATA depending on when your deformer updates*/  
    }
    

    Katachi



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

    On 05/12/2004 at 06:23, xxxxxxxx wrote:

    Ok, now it work... it will work, must test :)

    Thanks
    Renato T.


Log in to reply