Grab.h 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. /******************************************************************************
  2. Use 'Grab' to grab and smoothly drag 'Actor' to any custom position.
  3. /******************************************************************************/
  4. struct Grab // Actor Grabber
  5. {
  6. // manage
  7. Grab& del ( ); // delete
  8. Grab& create(Actor &actor, C Vec &local_pos, Flt power=5); // create, start grabbing 'actor' at its 'local_pos' local position with 'power' power
  9. // get / set
  10. Bool is ( )C {return _actor!=null;} // if grabbing something
  11. Actor* grabbedActor( )C {return _actor ;} // get grabbed actor
  12. Vec pos ( )C {return _grab.pos() ;} // get world position of grabber
  13. Grab& pos (C Vec &pos); // move to 'pos' world position
  14. #if EE_PRIVATE
  15. void zero();
  16. #endif
  17. ~Grab() {del();}
  18. Grab();
  19. private:
  20. Bool _immediate;
  21. Flt _power;
  22. Vec _local_pos;
  23. Actor _grab, *_actor;
  24. Joint _joint;
  25. NO_COPY_CONSTRUCTOR(Grab);
  26. };
  27. /******************************************************************************/