修复transition层级问题

This commit is contained in:
yhh
2020-06-23 16:18:14 +08:00
parent 795bfab1aa
commit 7399b9f5ca
16 changed files with 723 additions and 93 deletions

View File

@@ -36,6 +36,13 @@ abstract class Component {
return this.entity.stage;
}
public get scene(){
if (!this.entity)
return null;
return this.entity.scene;
}
public initialize(){
}

View File

@@ -30,7 +30,7 @@ class SpriteRenderer extends RenderableComponent {
this._origin = sprite.origin;
this._bitmap = new egret.Bitmap(sprite.texture2D);
this.stage.addChild(this._bitmap);
this.scene.addChild(this._bitmap);
return this;
}
@@ -85,6 +85,6 @@ class SpriteRenderer extends RenderableComponent {
public onRemovedFromEntity(){
if (this._bitmap)
this.stage.removeChild(this._bitmap);
this.scene.removeChild(this._bitmap);
}
}

View File

@@ -11,14 +11,12 @@ class Scene extends egret.DisplayObjectContainer {
private _matrixTransformMatrix: Matrix2D;
private _renderers: Renderer[] = [];
private _postProcessors: PostProcessor[] = [];
private _afterPostProcessorRenderer: Renderer[] = [];
private _didSceneBegin;
public readonly entityProcessors: EntityProcessorList;
constructor(displayObject: egret.DisplayObject) {
constructor() {
super();
displayObject.stage.addChild(this);
this._projectionMatrix = new Matrix2D(0, 0, 0, 0, 0, 0);
this.entityProcessors = new EntityProcessorList();
this.renderableComponents = new RenderableComponentList();
@@ -93,9 +91,11 @@ class Scene extends egret.DisplayObjectContainer {
public removeRenderer(renderer: Renderer) {
this._renderers.remove(renderer);
renderer.unload();
}
public begin() {
SceneManager.stage.addChildAt(this, 0);
if (this._renderers.length == 0) {
this.addRenderer(new DefaultRenderer());
console.warn("场景开始时没有渲染器 自动添加DefaultRenderer以保证能够正常渲染");
@@ -184,17 +184,6 @@ class Scene extends egret.DisplayObjectContainer {
}
}
}
for (let i = 0; i < this._afterPostProcessorRenderer.length; i ++){
if (i == 0){
// TODO: 设置渲染对象
}
if (this._afterPostProcessorRenderer[i].camera){
this._afterPostProcessorRenderer[i].camera.forceMatrixUpdate();
}
this._afterPostProcessorRenderer[i].render(this);
}
}
public render() {
@@ -205,4 +194,16 @@ class Scene extends egret.DisplayObjectContainer {
this._renderers[i].render(this);
}
}
public addPostProcessor<T extends PostProcessor>(postProcessor: T): T{
this._postProcessors.push(postProcessor);
this._postProcessors.sort();
postProcessor.onAddedToScene(this);
if (this._didSceneBegin){
postProcessor.onSceneBackBufferSizeChanged(this.stage.stageWidth, this.stage.stageHeight);
}
return postProcessor;
}
}

View File

@@ -91,7 +91,8 @@ class SceneManager {
*/
public static startSceneTransition<T extends SceneTransition>(sceneTransition: T): T {
if (this.sceneTransition) {
throw new Error("在前一个场景完成之前,不能开始一个新的场景转换。");
console.error("在前一个场景完成之前,不能开始一个新的场景转换。");
return;
}
this.sceneTransition = sceneTransition;