Add classic renderer

This commit is contained in:
2022-02-08 00:23:21 +08:00
parent c7c40bddea
commit a7aae62233
4 changed files with 100 additions and 12 deletions
+34 -2
View File
@@ -47,14 +47,46 @@ type ObjectID = Symbol | string | number;
*/
type ObjectData = Array<number> | Float32Array | Float64Array;
interface IRendererConstructor<
M extends IAnyObject = {}
> {
new (canvas: HTMLCanvasElement, param?: M): AbstractRenderer<
IRendererParam, IAnyObject, Record<EventType, any>
>
}
/**
* 渲染器 API
*/
abstract class AbstractRenderer<
P extends IRendererParam,
P extends IRendererParam = {},
M extends IAnyObject = {},
E extends Record<EventType, any> = {}
> extends Emitter<E> {
/**
* 渲染器参数
*/
abstract param: M;
/**
* 类型断言
*/
get isRenderer() {
return true;
}
/**
* 断言对象是否是渲染器
*/
public static isRenderer(render: any): render is AbstractRenderer {
if (render instanceof Object) {
return !!(render as AbstractRenderer).isRenderer;
} else {
return false;
}
};
/**
* @function start
* 开始一次数据更新 \
@@ -87,4 +119,4 @@ abstract class AbstractRenderer<
}
export default AbstractRenderer;
export { AbstractRenderer };
export { AbstractRenderer, ObjectID, ICommonParam, ObjectData, IRendererConstructor };