合并camera

This commit is contained in:
yhh
2020-07-01 14:19:40 +08:00
parent 124cf3f66c
commit d9840d60ef
17 changed files with 422 additions and 835 deletions

View File

@@ -1,5 +1,7 @@
class SpriteRenderer extends RenderableComponent {
private _origin: Vector2;
private _bitmap: egret.Bitmap;
private _sprite: Sprite;
public get origin(){
return this._origin;
@@ -10,17 +12,21 @@ class SpriteRenderer extends RenderableComponent {
public setOrigin(origin: Vector2){
if (this._origin != origin){
this._origin = origin;
this._areBoundsDirty = true;
}
return this;
}
public setSprite(sprite: Sprite){
public setSprite(sprite: Sprite): SpriteRenderer{
this.removeChildren();
this.addChild(new egret.Bitmap(sprite.texture2D));
this._sprite = sprite;
if (this._sprite) this._origin = this._sprite.origin;
this._bitmap = new egret.Bitmap(sprite.texture2D);
this.addChild(this._bitmap);
return this;
}
public setColor(color: number){
public setColor(color: number): SpriteRenderer{
let colorMatrix = [
1, 0, 0, 0, 0,
0, 1, 0, 0, 0,
@@ -32,21 +38,27 @@ class SpriteRenderer extends RenderableComponent {
colorMatrix[12] = color % 256 / 255;
let colorFilter = new egret.ColorMatrixFilter(colorMatrix);
this.filters = [colorFilter];
return this;
}
public isVisibleFromCamera(camera: Camera): boolean{
let topLeft = camera.screenToWorldPoint(new Vector2(0, 0));
this.isVisible = new Rectangle(topLeft.x, topLeft.y, this.stage.stageWidth, this.stage.stageHeight).intersects(this.bounds);
this.isVisible = new Rectangle(0, 0, this.stage.stageWidth, this.stage.stageHeight).intersects(this.bounds);
this.visible = this.isVisible;
return this.isVisible;
}
/** 渲染处理 在每个模块中处理各自的渲染逻辑 */
public render(camera: Camera){
this.x = this.entity.position.x - this.origin.x - camera.position.x + camera.origin.x;
this.y = this.entity.position.y - this.origin.y - camera.position.y + camera.origin.y;
}
public onRemovedFromEntity(){
if (this.parent)
this.parent.removeChild(this);
}
}
public reset(){
}
}