2020-08-11 11:07:20 +08:00
|
|
|
|
module es {
|
2020-11-30 12:57:53 +08:00
|
|
|
|
export class SceneComponent implements IComparer<SceneComponent> {
|
2020-08-11 11:07:20 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 这个场景组件被附加到的场景
|
|
|
|
|
|
*/
|
|
|
|
|
|
public scene: Scene;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 如果启用了SceneComponent,则为true。状态的改变会导致调用onEnabled/onDisable。
|
|
|
|
|
|
*/
|
2020-12-30 16:28:07 +08:00
|
|
|
|
public get enabled() {
|
2020-08-11 11:07:20 +08:00
|
|
|
|
return this._enabled;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 如果启用了SceneComponent,则为true。状态的改变会导致调用onEnabled/onDisable。
|
|
|
|
|
|
* @param value
|
|
|
|
|
|
*/
|
2020-12-30 16:28:07 +08:00
|
|
|
|
public set enabled(value: boolean) {
|
2020-08-11 11:07:20 +08:00
|
|
|
|
this.setEnabled(value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 更新此场景中SceneComponents的顺序
|
|
|
|
|
|
*/
|
|
|
|
|
|
public updateOrder: number = 0;
|
|
|
|
|
|
|
|
|
|
|
|
public _enabled: boolean = true;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 在启用此SceneComponent时调用
|
|
|
|
|
|
*/
|
2020-12-30 16:28:07 +08:00
|
|
|
|
public onEnabled() {
|
2020-08-11 11:07:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 当禁用此SceneComponent时调用
|
|
|
|
|
|
*/
|
2020-12-30 16:28:07 +08:00
|
|
|
|
public onDisabled() {
|
2020-08-11 11:07:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 当该SceneComponent从场景中移除时调用
|
|
|
|
|
|
*/
|
2020-12-30 16:28:07 +08:00
|
|
|
|
public onRemovedFromScene() {
|
2020-08-11 11:07:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 在实体更新之前每一帧调用
|
|
|
|
|
|
*/
|
2020-12-30 16:28:07 +08:00
|
|
|
|
public update() {
|
2020-08-11 11:07:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 启用/禁用这个SceneComponent
|
|
|
|
|
|
* @param isEnabled
|
|
|
|
|
|
*/
|
2020-12-30 16:28:07 +08:00
|
|
|
|
public setEnabled(isEnabled: boolean): SceneComponent {
|
|
|
|
|
|
if (this._enabled != isEnabled) {
|
2020-08-11 11:07:20 +08:00
|
|
|
|
this._enabled = isEnabled;
|
|
|
|
|
|
|
2020-12-30 16:28:07 +08:00
|
|
|
|
if (this._enabled) {
|
2020-11-30 12:57:53 +08:00
|
|
|
|
this.onEnabled();
|
2020-12-30 16:28:07 +08:00
|
|
|
|
} else {
|
2020-11-30 12:57:53 +08:00
|
|
|
|
this.onDisabled();
|
2020-08-11 11:07:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return this;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 设置SceneComponent的updateOrder并触发某种SceneComponent
|
|
|
|
|
|
* @param updateOrder
|
|
|
|
|
|
*/
|
2020-12-30 16:28:07 +08:00
|
|
|
|
public setUpdateOrder(updateOrder: number) {
|
|
|
|
|
|
if (this.updateOrder != updateOrder) {
|
2020-08-11 11:07:20 +08:00
|
|
|
|
this.updateOrder = updateOrder;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return this;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-12-30 16:28:07 +08:00
|
|
|
|
public compare(other: SceneComponent): number {
|
2020-08-11 11:07:20 +08:00
|
|
|
|
return this.updateOrder - other.updateOrder;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|