phaser3-rex-plugins
Version:
145 lines (138 loc) • 3.3 kB
TypeScript
export default GenerateFrames;
declare namespace GenerateFrames {
/**
* Edge mode values for a piece.
*/
type EdgeModeType = {
left: number,
right: number,
top: number,
bottom: number,
};
/**
* 2D array of edge modes.
*/
type EdgesType = (EdgeModeType | string)[][];
/**
* Callbacks for edge generation.
*/
type GetEdgeCallbacksType = {
getRightEdge?: (c: number, r: number) => number,
getBottomEdge?: (c: number, r: number) => number,
}
/**
* Callback to draw a piece shape.
*
* @param graphics - Graphics object.
* @param width - Frame width.
* @param height - Frame height.
* @param edgeWidth - Edge width.
* @param edgeHeight - Edge height.
* @param edgeMode - Edge mode values.
*/
type DrawShapeCallbackType = (
graphics: Phaser.GameObjects.Graphics,
width: number,
height: number,
edgeWidth: number,
edgeHeight: number,
edgeMode: EdgeModeType
) => void;
/**
* Configuration options for GenerateFrames.
*/
interface IConfig {
/**
* Source texture key.
*/
sourceKey: string,
/**
* Destination texture key.
*/
destinationKey: string,
/**
* Number of columns.
*/
columns: number,
/**
* Number of rows.
*/
rows: number,
/**
* Frame padding.
*/
framePadding?: number,
/**
* Edge width.
*/
edgeWidth?: number,
/**
* Edge height.
*/
edgeHeight?: number,
/**
* Edge definitions or callbacks.
*/
edges?: EdgesType | GetEdgeCallbacksType,
/**
* Shape draw callback.
*/
drawShapeCallback?: DrawShapeCallbackType,
/**
* Use dynamic texture.
*/
useDynamicTexture?: boolean,
}
/**
* Generated frame data result.
*/
interface IResult {
/**
* Source texture key.
*/
sourceKey: string,
/**
* Destination texture key.
*/
destinationKey: string,
/**
* Number of columns.
*/
columns: number,
/**
* Number of rows.
*/
rows: number,
/**
* Frame width.
*/
frameWidth: number,
/**
* Frame height.
*/
frameHeight: number,
/**
* Edge width.
*/
edgeWidth: number,
/**
* Edge height.
*/
edgeHeight: number,
/**
* Frame name callback.
*/
getFrameNameCallback: DrawShapeCallbackType,
}
}
/**
* Generate jigsaw frames for a texture.
*
* @param scene - Scene instance.
* @param config - Configuration options.
* @returns Generated frame data.
*/
declare function GenerateFrames(
scene: Phaser.Scene,
config: GenerateFrames.IConfig
): GenerateFrames.IResult;