92 lines
2.3 KiB
TypeScript
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;
|
|
}
|
|
} |