cb/assets/Script/lq_collide_system/lq_collide_base.ts
2025-07-01 19:39:23 +08:00

92 lines
2.3 KiB
TypeScript

import ccclass = cc._decorator.ccclass;
import executeInEditMode = cc._decorator.executeInEditMode;
import PolygonCollider = cc.PolygonCollider;
import property = cc._decorator.property;
import {LQCollide} from "./lq_collide";
import {LQCollideShape} from "../lq_base/data/lq_const";
@ccclass
@executeInEditMode
export class LQCollideBase extends cc.Component {
@property({tooltip: '多边形自动同步cocos PolygonCollider 组件中的碰撞点'})
protected auto_update_point: boolean = true;
private find_collide() {
const collide = this.node.getComponent(LQCollide);
if (!collide) {
console.error(this.node.name + ':没有找到LQCollide组件');
return undefined;
}
return collide;
}
protected onLoad() {
const collide = this.find_collide();
if (!collide) {
return;
}
collide.init_lq_collide();
}
protected onEnable() {
const collide = this.find_collide();
if (!collide) {
return;
}
collide.enable_lq_collide();
}
protected onDisable() {
const collide = this.find_collide();
if (!collide) {
return;
}
collide.disable_lq_collide();
}
protected onDestroy() {
const collide = this.find_collide();
if (!collide) {
return;
}
}
protected onFocusInEditor() {
const collide = this.find_collide();
if (!collide) {
return;
}
}
protected onLostFocusInEditor() {
const collide = this.find_collide();
if (!collide) {
return;
}
}
protected resetInEditor() {
const collide = this.find_collide();
if (!collide) {
return;
}
}
protected update(dt: number) {
if (!CC_EDITOR || !this.auto_update_point) {
return;
}
const collide = this.find_collide();
if (!collide) {
return;
}
if (collide.collide_shape !== LQCollideShape.Polygon) {
return;
}
const polygonCollider = this.node.getComponent(PolygonCollider);
if (!polygonCollider) {
return;
}
collide.polygon_points = polygonCollider.points;
}
}