Phys Material.cpp 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /******************************************************************************/
  2. #include "stdafx.h"
  3. /******************************************************************************/
  4. /******************************************************************************/
  5. bool EditPhysMtrl::newer(C EditPhysMtrl &src)C
  6. {
  7. return friction_static_time>src.friction_static_time || friction_dynamic_time>src.friction_dynamic_time || bounciness_time>src.bounciness_time || density_time>src.density_time
  8. || damping_time>src.density_time || adamping_time>src.adamping_time || friction_mode_time>src.friction_mode_time || bounciness_mode_time>src.bounciness_mode_time;
  9. }
  10. bool EditPhysMtrl::equal(C EditPhysMtrl &src)C
  11. {
  12. return friction_static_time==src.friction_static_time && friction_dynamic_time==src.friction_dynamic_time && bounciness_time==src.bounciness_time && density_time==src.density_time
  13. && damping_time==src.density_time && adamping_time==src.adamping_time && friction_mode_time==src.friction_mode_time && bounciness_mode_time==src.bounciness_mode_time;
  14. }
  15. void EditPhysMtrl::reset() {T=EditPhysMtrl();}
  16. void EditPhysMtrl::newData()
  17. {
  18. friction_static_time++; friction_dynamic_time++; bounciness_time++; density_time++; damping_time++; adamping_time++; friction_mode_time++; bounciness_mode_time++;
  19. }
  20. bool EditPhysMtrl::sync(C EditPhysMtrl &src)
  21. {
  22. bool changed=false;
  23. changed|=Sync( friction_static_time, src. friction_static_time, friction_static , src.friction_static );
  24. changed|=Sync(friction_dynamic_time, src.friction_dynamic_time, friction_dynamic, src.friction_dynamic);
  25. changed|=Sync( bounciness_time, src. bounciness_time, bounciness, src. bounciness);
  26. changed|=Sync( density_time, src. density_time, density, src. density);
  27. changed|=Sync( damping_time, src. damping_time, damping, src. damping);
  28. changed|=Sync( adamping_time, src. adamping_time, adamping, src. adamping);
  29. changed|=Sync( friction_mode_time, src. friction_mode_time, friction_mode, src. friction_mode);
  30. changed|=Sync( bounciness_mode_time, src. bounciness_mode_time, bounciness_mode, src. bounciness_mode);
  31. return changed;
  32. }
  33. bool EditPhysMtrl::undo(C EditPhysMtrl &src)
  34. {
  35. bool changed=false;
  36. changed|=Undo( friction_static_time, src. friction_static_time, friction_static , src.friction_static );
  37. changed|=Undo(friction_dynamic_time, src.friction_dynamic_time, friction_dynamic, src.friction_dynamic);
  38. changed|=Undo( bounciness_time, src. bounciness_time, bounciness, src. bounciness);
  39. changed|=Undo( density_time, src. density_time, density, src. density);
  40. changed|=Undo( damping_time, src. damping_time, damping, src. damping);
  41. changed|=Undo( adamping_time, src. adamping_time, adamping, src. adamping);
  42. changed|=Undo( friction_mode_time, src. friction_mode_time, friction_mode, src. friction_mode);
  43. changed|=Undo( bounciness_mode_time, src. bounciness_mode_time, bounciness_mode, src. bounciness_mode);
  44. return changed;
  45. }
  46. void EditPhysMtrl::copyTo(PhysMtrl &dest)C
  47. {
  48. dest.create()
  49. .frictionStatic(friction_static).frictionDynamic(friction_dynamic).bounciness(bounciness).density(density)
  50. .damping(damping).adamping(adamping).frictionMode(friction_mode).bouncinessMode(bounciness_mode);
  51. }
  52. bool EditPhysMtrl::save(File &f)C
  53. {
  54. f.cmpUIntV(0);
  55. f<<friction_static<<friction_dynamic<<bounciness<<density<<damping<<adamping
  56. <<friction_mode<<bounciness_mode
  57. <<friction_static_time<<friction_dynamic_time<<bounciness_time<<density_time<<damping_time<<adamping_time<<friction_mode_time<<bounciness_mode_time;
  58. return f.ok();
  59. }
  60. bool EditPhysMtrl::load(File &f)
  61. {
  62. switch(f.decUIntV())
  63. {
  64. case 0:
  65. {
  66. f>>friction_static>>friction_dynamic>>bounciness>>density>>damping>>adamping
  67. >>friction_mode>>bounciness_mode
  68. >>friction_static_time>>friction_dynamic_time>>bounciness_time>>density_time>>damping_time>>adamping_time>>friction_mode_time>>bounciness_mode_time;
  69. if(f.ok())return true;
  70. }break;
  71. }
  72. return false;
  73. }
  74. bool EditPhysMtrl::load(C Str &name)
  75. {
  76. File f; if(f.readTry(name))return load(f);
  77. reset(); return false;
  78. }
  79. EditPhysMtrl::EditPhysMtrl() : friction_static(1), friction_dynamic(1), bounciness(0.2f), density(1), damping(0.05f), adamping(0.05f), friction_mode(PhysMtrl::MODE_AVG), bounciness_mode(PhysMtrl::MODE_AVG) {}
  80. /******************************************************************************/