Initial commit
This commit is contained in:
94
C#/TSEngine/Core/Components/spriteComponent.ts
Normal file
94
C#/TSEngine/Core/Components/spriteComponent.ts
Normal file
@@ -0,0 +1,94 @@
|
||||
///<reference path="componentManager.ts"/>
|
||||
|
||||
namespace TSE {
|
||||
|
||||
export class SpriteComponentData implements IComponentData {
|
||||
public name: string;
|
||||
public materialName: string;
|
||||
|
||||
public setFromJson(json: any): void {
|
||||
this.name = json.name !== undefined ? String(json.name) : undefined;
|
||||
this.materialName = json.materialName !== undefined ? String(json.materialName) : undefined;
|
||||
}
|
||||
}
|
||||
|
||||
export class SpriteComponentBuilder implements IComponentBuilder {
|
||||
public get type(): string { return "sprite"; }
|
||||
|
||||
public buildFromJson(json: any): BaseComponent {
|
||||
let data = new SpriteComponentData();
|
||||
data.setFromJson(json);
|
||||
return new SpriteComponent(data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class SpriteComponent extends BaseComponent {
|
||||
|
||||
protected _sprite: Sprite;
|
||||
|
||||
public constructor(data: SpriteComponentData) {
|
||||
super(data);
|
||||
|
||||
this._sprite = new Sprite(data.name, data.materialName);
|
||||
}
|
||||
|
||||
public load(): void {
|
||||
this._sprite.load();
|
||||
}
|
||||
|
||||
public render(shader: Shader): void {
|
||||
this._sprite.draw(shader, this.owner.worldMatrix);
|
||||
|
||||
super.render(shader);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
export class AnimatedSpriteComponentData extends SpriteComponentData {
|
||||
public frameWidth: number;
|
||||
public frameHeight: number;
|
||||
public frameCount: number;
|
||||
public frameSequence: number[];
|
||||
|
||||
public setFromJson(json: any): void {
|
||||
super.setFromJson(json);
|
||||
|
||||
this.frameWidth = Number(json.frameWidth);
|
||||
this.frameHeight = Number(json.frameHeight);
|
||||
this.frameCount = Number(json.frameCount);
|
||||
this.frameSequence = json.frameSequence;
|
||||
}
|
||||
}
|
||||
|
||||
export class AnimatedSpriteComponentBuilder extends SpriteComponentBuilder {
|
||||
public get type(): string { return "animated_sprite"; }
|
||||
|
||||
public buildFromJson(json: any): BaseComponent {
|
||||
let data = new AnimatedSpriteComponentData();
|
||||
data.setFromJson(json);
|
||||
return new AnimatedSpriteComponent(data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class AnimatedSpriteComponent extends SpriteComponent {
|
||||
|
||||
public constructor(data: AnimatedSpriteComponentData) {
|
||||
super(data);
|
||||
this._sprite = new AnimatedSprite(this.name, data.materialName, data.frameWidth, data.frameHeight, data.frameCount, data.frameSequence);
|
||||
}
|
||||
|
||||
public update(time: number) {
|
||||
this._sprite.update(time);
|
||||
super.update(time);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ComponentManager.registerBuilder(new SpriteComponentBuilder());
|
||||
ComponentManager.registerBuilder(new AnimatedSpriteComponentBuilder());
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user