///
///
import { ResurrectExtend } from './Serializer';
import * as MatterTypes from '@rozelin/matter-ts';
export type Selectable = MatterTypes.Body.IBody | MatterTypes.Constraint.IConstraint | MatterTypes.Composite.IComposite;
export type InspectorEventName = 'import' | 'export' | 'pause' | 'play' | 'selectStart' | 'selectEnd';
export type InspectorEvent = MatterTypes.Events.IEvent;
export type InspectorEventFunction = MatterTypes.Events.EventFunction;
export interface IInspector {
engine: MatterTypes.Engine.IEngine;
render: MatterTypes.Render.IRender;
mouse: MatterTypes.Mouse.IMouse;
mouseConstraint: MatterTypes.MouseConstraint.IMouseConstraint;
isPaused: boolean;
selected: {
data: Selectable;
mousedownOffset?: MatterTypes.Vector.IVector;
}[];
selectStart: MatterTypes.Vector.IVector | null;
selectEnd: MatterTypes.Vector.IVector | null;
selectBounds: MatterTypes.Bounds.IBounds;
mousePrevPosition: MatterTypes.Vector.IVector;
offset: MatterTypes.Vector.IVector;
autoExpand: boolean;
autoHide: boolean;
autoRewind: boolean;
hasExpanded: boolean;
bodyClass: string;
exportIndent: number;
clipboard: Selectable[];
controls: {
container: JQuery;
worldTree: JQuery;
pauseButton: JQuery;
importButton: JQuery;
exportButton: JQuery;
helpButton: JQuery;
searchBox: JQuery;
addCompositeButton: JQuery;
};
root: MatterTypes.Composite.IComposite;
keyBindings: string[];
keyBind: Function;
serializer: ResurrectExtend;
beforeEngineUpdate?: MatterTypes.Events.EngineEventFunction;
afterRender?: MatterTypes.Events.RenderEventFunction;
events: Record;
}
export interface ITreeNode {
id: string;
data: {
compositeId: MatterTypes.Composite.IComposite['id'] | null;
};
type: string;
text: string;
li_attr: {
class: string;
};
children: ITreeNode[];
state?: {
opened: boolean;
};
}
/**
* A tool for inspecting worlds.
* @module Inspector
*/
export default class Inspector {
static $body: JQuery;
static instance: IInspector;
/**
* Creates an inspector
* @function create
* @param engine
* @param render
* @param options
* @return The created inspector instance.
*/
static create(engine: MatterTypes.Engine.IEngine, render: MatterTypes.Render.IRender, options?: Partial): IInspector;
/**
* Destroys the inspector
* @function destroy
* @param inspector
*/
static destroy(inspector: IInspector): void;
protected static _initControls(inspector: IInspector): void;
protected static _showHelp(): void;
protected static _initKeyBinds(inspector: IInspector): void;
protected static _initTree(inspector: IInspector): void;
protected static _addBodyClass(inspector: IInspector, classNames: string): void;
protected static _removeBodyClass(inspector: IInspector, classNames: string): void;
protected static _getMousePosition(inspector: IInspector): MatterTypes.Vector.IVector;
protected static _initEngineEvents(inspector: IInspector): void;
protected static _deleteSelectedObjects(inspector: IInspector): void;
protected static _copySelectedObjects(inspector: IInspector): void;
protected static _pasteSelectedObjects(inspector: IInspector): void;
protected static _updateSelectedMouseDownOffset(inspector: IInspector): void;
protected static _moveSelectedObjects(inspector: IInspector, x: number, y: number): void;
protected static _scaleSelectedObjects(inspector: IInspector, scaleX: number, scaleY: number): void;
protected static _rotateSelectedObjects(inspector: IInspector, angle: number): void;
protected static _setPaused(inspector: IInspector, isPaused: boolean): void;
protected static _setSelectedObjects(inspector: IInspector, objects: Selectable[]): void;
protected static _addSelectedObject(inspector: IInspector, object?: Selectable): void;
protected static _updateTree(tree: any, data: ITreeNode[]): void;
protected static _generateCompositeTreeNode(composite: MatterTypes.Composite.IComposite, compositeId: MatterTypes.Composite.IComposite['id'] | null, isRoot: true): ITreeNode[];
protected static _generateCompositeTreeNode(composite: MatterTypes.Composite.IComposite, compositeId: MatterTypes.Composite.IComposite['id'] | null, isRoot?: false): ITreeNode;
protected static _generateCompositesTreeNode(composites: MatterTypes.Composite.IComposite[], compositeId: MatterTypes.Composite.IComposite['id']): MatterTypes.Common.CustomPartial;
protected static _generateBodiesTreeNode(bodies: MatterTypes.Body.IBody[], compositeId: MatterTypes.Composite.IComposite['id']): MatterTypes.Common.CustomPartial;
protected static _generateConstraintsTreeNode(constraints: MatterTypes.Constraint.IConstraint[], compositeId: MatterTypes.Composite.IComposite['id']): MatterTypes.Common.CustomPartial;
protected static _addNewComposite(inspector: IInspector): void;
protected static _exportFile(inspector: IInspector): void;
protected static _importFile(inspector: IInspector): void;
}