2025-11-04 12:16:48 +01:00

62 lines
2.0 KiB
TypeScript

import { AnimationState, Skeleton } from "@esotericsoftware/spine-core";
interface Rectangle {
x: number;
y: number;
width: number;
height: number;
}
interface GameObject {
skeleton?: Skeleton;
state?: AnimationState;
}
export interface SpineBoundsProvider {
/** Returns the bounding box for the skeleton, in skeleton space. */
calculateBounds(gameObject: GameObject): Rectangle;
}
export declare class AABBRectangleBoundsProvider implements SpineBoundsProvider {
private x;
private y;
private width;
private height;
constructor(x: number, y: number, width: number, height: number);
calculateBounds(): {
x: number;
y: number;
width: number;
height: number;
};
}
export declare class SetupPoseBoundsProvider implements SpineBoundsProvider {
private clipping;
/**
* @param clipping If true, clipping attachments are used to compute the bounds. False, by default.
*/
constructor(clipping?: boolean);
calculateBounds(gameObject: GameObject): {
x: number;
y: number;
width: number;
height: number;
};
}
export declare class SkinsAndAnimationBoundsProvider implements SpineBoundsProvider {
private animation?;
private skins;
private timeStep;
private clipping;
/**
* @param animation The animation to use for calculating the bounds. If null, the setup pose is used.
* @param skins The skins to use for calculating the bounds. If empty, the default skin is used.
* @param timeStep The time step to use for calculating the bounds. A smaller time step means more precision, but slower calculation.
* @param clipping If true, clipping attachments are used to compute the bounds. False, by default.
*/
constructor(animation?: string | undefined, skins?: string[], timeStep?: number, clipping?: boolean);
calculateBounds(gameObject: GameObject): {
x: number;
y: number;
width: number;
height: number;
};
}
export {};