import { System } from '../engine/system'; import { IEntity, IAction } from '../engine/state'; export interface IBodyData { mass?: number; size?: number[]; velocity?: number[]; type?: 'box' | 'sphere' | 'cylinder'; pos?: number[]; } export interface IBodyComponent extends IBodyData { bodies?: IBodyData[]; } export interface IImpulseAction extends IAction { type: 'IMPULSE'; entityId: string; force: number[]; } export declare const DoImpulse: (entity: IEntity, force: number[]) => IImpulseAction; export interface ITorqueImpulseAction extends IAction { type: 'TORQUE_IMPULSE'; entityId: string; force: number[]; } export declare const DoTorqueImpulse: (entity: IEntity, force: number[]) => ITorqueImpulseAction; export interface IAttackAction extends IAction { type: 'ATTACK'; entityId: string; } export declare const DoAttack: (entity: IEntity) => IAttackAction; export interface IOverlapAction extends IAction { type: 'OVERLAP'; targetId: string; instigatorId: string; } export declare class Physics extends System { private collisionObjects; private childCollisionObjects; private dynamicsWorld; private index; private byIndex; constructor(); gravity(): void; makeBody(transform: Ammo.btTransform, mass: number, size: number[]): Ammo.btRigidBody; makeGhost(transform: any, size: number[]): Ammo.btGhostObject; makeTransform(pos: number[], rot: number[]): any; add(entity: IEntity): void; update(entity: IEntity, component: string): void; remove(entity: IEntity): void; tick(delta: any): void; private HandleImpulse(a); private HandleTorqueImpulse(a); private HandleAttack(a); }