@hiddentao/clockwork-engine
Version:
A TypeScript/PIXI.js game engine for deterministic, replayable games with built-in rendering
132 lines • 5.19 kB
TypeScript
/**
* PIXI Rendering Layer
*
* PIXI.js-based rendering implementation with viewport support.
*/
import type { RenderingLayer, ViewportOptions } from "../RenderingLayer";
import type { BlendMode, Color, NodeId, SpritesheetId, TextureId } from "../types";
import { TextureFiltering } from "../types";
export declare class PixiRenderingLayer implements RenderingLayer {
private app;
private viewport;
private canvas;
private options;
private viewportOptions;
private nodes;
private nextNodeId;
private nextTextureId;
private nextSpritesheetId;
private textures;
private spritesheets;
private _needsRepaint;
private initialized;
private tickCallbackManager;
private tickerCallbackAdded;
private animationCompleteCallbacks;
constructor(canvas: HTMLCanvasElement, options: ViewportOptions);
init(): Promise<void>;
get needsRepaint(): boolean;
destroy(): void;
createNode(): NodeId;
destroyNode(id: NodeId): void;
hasNode(id: NodeId): boolean;
addChild(parentId: NodeId, childId: NodeId): void;
removeChild(parentId: NodeId, childId: NodeId): void;
getChildren(id: NodeId): NodeId[];
getParent(id: NodeId): NodeId | null;
setPosition(id: NodeId, x: number, y: number): void;
getPosition(id: NodeId): {
x: number;
y: number;
};
setRotation(id: NodeId, radians: number): void;
getRotation(id: NodeId): number;
setScale(id: NodeId, scaleX: number, scaleY: number): void;
getScale(id: NodeId): {
x: number;
y: number;
};
setAnchor(id: NodeId, anchorX: number, anchorY: number): void;
getAnchor(id: NodeId): {
x: number;
y: number;
};
setAlpha(id: NodeId, alpha: number): void;
getAlpha(id: NodeId): number;
setVisible(id: NodeId, visible: boolean): void;
getVisible(id: NodeId): boolean;
setZIndex(id: NodeId, z: number): void;
getZIndex(id: NodeId): number;
setSize(id: NodeId, width: number, height: number): void;
getSize(id: NodeId): {
width: number;
height: number;
};
setTint(id: NodeId, color: Color): void;
getTint(id: NodeId): Color | null;
setBlendMode(id: NodeId, mode: BlendMode): void;
getBlendMode(id: NodeId): BlendMode;
setTextureFiltering(id: NodeId, filtering: TextureFiltering): void;
getTextureFiltering(id: NodeId): TextureFiltering;
getBounds(id: NodeId): {
x: number;
y: number;
width: number;
height: number;
};
loadTexture(url: string): Promise<TextureId>;
loadSpritesheet(imageUrl: string, jsonData: any): Promise<SpritesheetId>;
setSprite(id: NodeId, textureId: TextureId): void;
setSpriteFromSpritesheet(id: NodeId, _spritesheetId: string, _tileX: number, _tileY: number): void;
setAnimatedSprite(id: NodeId, textureIds: TextureId[], ticksPerFrame: number): void;
playAnimation(id: NodeId, loop: boolean): void;
setAnimationCompleteCallback(id: NodeId, callback: ((id: NodeId) => void) | null): void;
stopAnimation(id: NodeId): void;
isAnimationPlaying(id: NodeId): boolean;
getAnimationData(id: NodeId): {
textures: TextureId[];
ticksPerFrame: number;
loop: boolean;
} | null;
drawRectangle(id: NodeId, x: number, y: number, width: number, height: number, fill?: Color, stroke?: Color, strokeWidth?: number): void;
drawCircle(id: NodeId, x: number, y: number, radius: number, fill?: Color, stroke?: Color, strokeWidth?: number): void;
drawPolygon(id: NodeId, points: number[], fill?: Color, stroke?: Color, strokeWidth?: number): void;
drawRoundRect(id: NodeId, x: number, y: number, width: number, height: number, radius: number, fill?: Color, stroke?: Color, strokeWidth?: number): void;
drawLine(id: NodeId, x1: number, y1: number, x2: number, y2: number, color: Color, width?: number): void;
drawPolyline(id: NodeId, points: number[], color: Color, width?: number): void;
clearGraphics(id: NodeId): void;
getGraphics(id: NodeId): Array<{
type: string;
data: any;
}>;
getSpriteTexture(id: NodeId): TextureId | null;
getViewportZoom(): number;
resize(width: number, height: number): void;
render(): void;
getDevicePixelRatio(): number;
getTexture(spritesheet: SpritesheetId, frameName: string): TextureId | null;
setViewport(_id: NodeId, options: ViewportOptions): void;
getViewportPosition(_id: NodeId): {
x: number;
y: number;
};
setViewportPosition(_id: NodeId, x: number, y: number): void;
setViewportZoom(_id: NodeId, zoom: number): void;
worldToScreen(_id: NodeId, x: number, y: number): {
x: number;
y: number;
};
screenToWorld(_id: NodeId, x: number, y: number): {
x: number;
y: number;
};
onTick(callback: (deltaTicks: number) => void): void;
setTickerSpeed(speed: number): void;
getFPS(): number;
private clearCurrentVisual;
private ensureGraphics;
private redrawGraphics;
private createErrorTexture;
private toPixiBlendMode;
}
//# sourceMappingURL=PixiRenderingLayer.d.ts.map