Creating Undo for points



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

    On 20/12/2006 at 17:23, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   9.x 
    Platform:      Mac OSX  ; 
    Language(s) :   C.O.F.F.E.E  ;

    ---------
    I want to store the current state of an object for Undo purposes. But I would only like to store its current points location (its a polygon object). Using doc->AddUndo(UNDO_OBJECT_BASEDATA,op) or doc->AddUndo(UNDO_OBJECT,op) doesn't seem to work :(
    Anyone knows how to do this?

    Rui Batista



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

    On 29/12/2006 at 02:17, xxxxxxxx wrote:

    Here a little working example for adding Undo when modifying points.

      
    MyMenuPlugin::Execute(doc)  
    {  
           // Called when the menu item is chosen  
      
           // TODO: Do whatever you want  
           var op = doc->GetActiveObject();  
           if(!op || !instanceof(op,PolygonObject)) return TRUE;  
             
           var pcnt = op->GetPointCount();  
           if(pcnt == 0) return TRUE;  
             
           var points = op->GetPoints();  
           if(!points) return FALSE;  
             
           var index;  
         for (index=0; index<pcnt; index++)  
         {  
              points[index].y = points[index].y + 100;  
         }  
      
         doc->StartUndo();  
         doc->AddUndo(UNDO_OBJECT_BASEDATA,op);  
      
         op->SetPoints(points);  
         op->Message(MSG_UPDATE);  
           
         doc->EndUndo();  
           
         EventAdd();  
           
         return TRUE;       
    }  
    

    hope this helps

    cheers,
    Matthias


Log in to reply