char *edit_path);
   bool undo(C ObjData &src, cchar *edit_path);

   Obj& setChangedEmbed(C VecI2 *area_xy=null); // must be called after 'changedObj' and before 'setChangedPaths'
   Obj& setChangedPaths(); // must be called after 'setChangedEmbed'
   Obj& setChanged(bool matrix=false); // this needs to be called after making all changes
   void setUndo(cptr type=WorldUndo::ObjType, bool as_new=false);
   void moveTo(C Vec &pos, cptr undo_type=WorldUndo::ObjType);
   void moveTo(C Matrix3 &orn, cptr undo_type=WorldUndo::ObjType);
   void moveTo(C Matrix &matrix, cptr undo_type=WorldUndo::ObjType);

   void scaleBy (flt f);
   void scaleXBy(flt f);
   void scaleYBy(flt f);
   void scaleZBy(flt f);

   void randomRot();
   void  resetRot();

   void alignGrid();
   void alignTerrain(bool force, cptr undo_type=WorldUndo::ObjType);
   void alignNormal(int axis=-1, flt blend=1);

   // update
   void update();

   // draw
   bool skipDraw();
   void draw();
   void drawShadow();
   void drawParticle();
   void drawSelected();
   void drawHelper(bool box, bool phys);

   // io
   void setDraw();
   void setMeshVariation();
   void setMeshPhys();
   bool save(File &f);
   bool load(File &f); // 'setMeshPhys' doesn't need to be called because it will be called in 'attach->removeChanged'

public:
   Obj();
};
/******************************************************************************/
/******************************************************************************/
/******************************************************************************/


define( [
	"./arr"
], function( arr ) {
	"use strict";

	return arr.slice;
} );


<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example - example-example56-debug</title>
  

  <script src="../../../angular.js"></script>
  

  
</head>
<body ng-app="bindExample">
    <script>
    angular.module('bindExample', [])
      .controller('ExampleController', ['$scope', function($scope) {
        $scope.name = 'Whirled';
      }]);
  </script>
  <div ng-con