Files
esengine/source/src/ECS/Components/SpriteRenderer.ts

121 lines
3.6 KiB
TypeScript
Raw Normal View History

module es {
export class SpriteRenderer extends RenderableComponent {
public get bounds(){
if (this._areBoundsDirty){
if (this._sprite){
this._bounds.calculateBounds(this.entity.transform.position, this._localOffset, this._origin,
this.entity.transform.scale, this.entity.transform.rotation, this._sprite.sourceRect.width,
this._sprite.sourceRect.height);
this._areBoundsDirty = false;
}
return this._bounds;
}
}
/**
*
*/
public get origin(): Vector2{
return this._origin;
2020-07-08 18:12:17 +08:00
}
2020-07-01 14:19:40 +08:00
/**
*
* @param value
*/
public set origin(value: Vector2){
this.setOrigin(value);
}
2020-06-29 15:41:02 +08:00
/**
*
* x/y 0-1
*/
public get originNormalized(): Vector2{
return new Vector2(this._origin.x / this.width * this.entity.transform.scale.x,
this._origin.y / this.height * this.entity.transform.scale.y);
}
/**
*
* x/y 0-1
* @param value
*/
public set originNormalized(value: Vector2){
this.setOrigin(new Vector2(value.x * this.width / this.entity.transform.scale.x,
value.y * this.height / this.entity.transform.scale.y));
}
2020-06-19 18:16:42 +08:00
/**
*
* origin
*/
public get sprite(): Sprite {
return this._sprite;
2020-07-22 20:07:14 +08:00
}
2020-06-22 15:27:58 +08:00
/**
*
* origin
* @param value
*/
public set sprite(value: Sprite) {
this.setSprite(value);
}
protected _origin: Vector2;
protected _sprite: Sprite;
2020-07-01 14:19:40 +08:00
constructor(sprite: Sprite | egret.Texture) {
super();
if (sprite instanceof Sprite)
this.setSprite(sprite);
else if(sprite instanceof egret.Texture)
this.setSprite(new Sprite(sprite));
}
/**
* sprite.origin
* @param sprite
*/
public setSprite(sprite: Sprite): SpriteRenderer {
this._sprite = sprite;
if (this._sprite) {
this._origin = this._sprite.origin;
}
return this;
}
/**
*
* @param origin
*/
public setOrigin(origin: Vector2): SpriteRenderer{
if (this._origin != origin){
this._origin = origin;
this._areBoundsDirty = true;
}
return this;
}
/**
*
* x/y 0-1
* @param value
*/
public setOriginNormalized(value: Vector2): SpriteRenderer{
this.setOrigin(new Vector2(value.x * this.width / this.entity.transform.scale.x,
value.y * this.height / this.entity.transform.scale.y));
return this;
}
public render(camera: Camera) {
// TODO: render
}
2020-07-01 14:19:40 +08:00
}
}