Files
esengine/source/src/ECS/Component.ts

123 lines
3.4 KiB
TypeScript
Raw Normal View History

2020-07-22 20:07:14 +08:00
module es {
/**
*
* - onAddedToEntity
* - OnEnabled
*
*
* - onRemovedFromEntity
*/
export abstract class Component {
2021-04-20 15:46:18 +08:00
public static _idGenerator: number = 0;
/**
*
*/
public readonly id: number;
2020-07-22 20:07:14 +08:00
/**
*
*/
public entity: Entity;
2021-04-20 15:46:18 +08:00
constructor() {
this.id = Component._idGenerator++;
}
2020-07-22 20:07:14 +08:00
/**
* 访 this.entity.transform
*/
public get transform(): Transform {
return this.entity.transform;
}
2020-07-09 14:16:10 +08:00
2020-07-28 16:25:20 +08:00
private _enabled: boolean = true;
2020-07-22 20:07:14 +08:00
/**
* onEnabled/onDisable
*/
public get enabled() {
return this.entity ? this.entity.enabled && this._enabled : this._enabled;
}
2020-07-22 20:07:14 +08:00
/**
* onEnabled/onDisable
* @param value
*/
public set enabled(value: boolean) {
this.setEnabled(value);
2020-06-08 18:26:05 +08:00
}
2020-07-28 16:25:20 +08:00
private _updateOrder = 0;
2020-07-22 20:07:14 +08:00
/** 更新此实体上组件的顺序 */
public get updateOrder() {
return this._updateOrder;
}
2020-06-08 16:23:48 +08:00
2020-07-22 20:07:14 +08:00
/** 更新此实体上组件的顺序 */
public set updateOrder(value: number) {
this.setUpdateOrder(value);
}
2020-07-22 20:07:14 +08:00
/**
* 西访
*/
public initialize() {
}
2020-06-08 23:04:57 +08:00
2020-07-22 20:07:14 +08:00
/**
*
*/
public onAddedToEntity() {
}
/**
*
*/
public onRemovedFromEntity() {
}
2020-06-08 23:04:57 +08:00
2020-07-22 20:07:14 +08:00
/**
*
* @param comp
*/
public onEntityTransformChanged(comp: ComponentTransform) {
2020-07-22 20:07:14 +08:00
}
2020-06-08 23:04:57 +08:00
2021-05-27 18:32:38 +08:00
public debugRender(batcher: IBatcher) {}
2020-07-22 20:07:14 +08:00
/**
*
*/
public onEnabled() {
}
2020-06-08 23:04:57 +08:00
2020-07-22 20:07:14 +08:00
/**
*
*/
public onDisabled() {
}
2020-07-22 20:07:14 +08:00
public setEnabled(isEnabled: boolean) {
if (this._enabled != isEnabled) {
this._enabled = isEnabled;
2020-06-08 23:04:57 +08:00
2020-07-22 20:07:14 +08:00
if (this._enabled) {
this.onEnabled();
} else {
this.onDisabled();
}
}
2020-07-22 20:07:14 +08:00
return this;
}
2020-07-22 20:07:14 +08:00
public setUpdateOrder(updateOrder: number) {
if (this._updateOrder != updateOrder) {
this._updateOrder = updateOrder;
}
2020-07-08 18:12:17 +08:00
2020-07-22 20:07:14 +08:00
return this;
}
2020-06-08 20:11:58 +08:00
}
2020-07-22 20:07:14 +08:00
}