lq_collide_base.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import ccclass = cc._decorator.ccclass;
  2. import executeInEditMode = cc._decorator.executeInEditMode;
  3. import PolygonCollider = cc.PolygonCollider;
  4. import property = cc._decorator.property;
  5. import {LQCollide} from "./lq_collide";
  6. import {LQCollideShape} from "../lq_base/data/lq_const";
  7. @ccclass
  8. @executeInEditMode
  9. export class LQCollideBase extends cc.Component {
  10. @property({tooltip: '多边形自动同步cocos PolygonCollider 组件中的碰撞点'})
  11. protected auto_update_point: boolean = true;
  12. private find_collide() {
  13. const collide = this.node.getComponent(LQCollide);
  14. if (!collide) {
  15. console.error(this.node.name + ':没有找到LQCollide组件');
  16. return undefined;
  17. }
  18. return collide;
  19. }
  20. protected onLoad() {
  21. const collide = this.find_collide();
  22. if (!collide) {
  23. return;
  24. }
  25. collide.init_lq_collide();
  26. }
  27. protected onEnable() {
  28. const collide = this.find_collide();
  29. if (!collide) {
  30. return;
  31. }
  32. collide.enable_lq_collide();
  33. }
  34. protected onDisable() {
  35. const collide = this.find_collide();
  36. if (!collide) {
  37. return;
  38. }
  39. collide.disable_lq_collide();
  40. }
  41. protected onDestroy() {
  42. const collide = this.find_collide();
  43. if (!collide) {
  44. return;
  45. }
  46. }
  47. protected onFocusInEditor() {
  48. const collide = this.find_collide();
  49. if (!collide) {
  50. return;
  51. }
  52. }
  53. protected onLostFocusInEditor() {
  54. const collide = this.find_collide();
  55. if (!collide) {
  56. return;
  57. }
  58. }
  59. protected resetInEditor() {
  60. const collide = this.find_collide();
  61. if (!collide) {
  62. return;
  63. }
  64. }
  65. protected update(dt: number) {
  66. if (!CC_EDITOR || !this.auto_update_point) {
  67. return;
  68. }
  69. const collide = this.find_collide();
  70. if (!collide) {
  71. return;
  72. }
  73. if (collide.collide_shape !== LQCollideShape.Polygon) {
  74. return;
  75. }
  76. const polygonCollider = this.node.getComponent(PolygonCollider);
  77. if (!polygonCollider) {
  78. return;
  79. }
  80. collide.polygon_points = polygonCollider.points;
  81. }
  82. }