/// /// /// /// declare namespace cp { export abstract class Shape { type: string; body: Body; bbL: number; bbB: number; bbR: number; bbT: number; hashid: number; sensor: boolean; restitutionCoef: number; frictionCoef: number; surfaceVelocity: Vect; collisionType: number; collisionCode: number; collisionTable: any; group: number; layers: number; space: Space; constructor(body: Body); setElasticity(e: number): void; setFriction(u: number): void; setLayers(layers: number): void; setSensor(sensor: boolean): void; setCollisionType(collisionType: number): void; getBody(): Body; active(): boolean; setBody(body: Body): void; cacheBB(): void; update(pos: Vect, rot: Vect): void; pointQuery(p: Vect): NearestPointQueryInfo; getBB(): BB; abstract nearestPointQuery(poing: Vect): NearestPointQueryInfo; abstract segmentQuery(a: Vect, b: Vect): SegmentQueryInfo; protected abstract cacheData(pos: Vect, rot: Vect): void; } export class PointQueryExtendedInfo { shape: Shape; d: number; n: Vect; constructor(shape: Shape); } export class NearestPointQueryInfo { shape: Shape; p: Vect; d: number; constructor(shape: Shape, p: Vect, d: number); } export class SegmentQueryInfo { shape: Shape; t: number; n: Vect; constructor(shape: Shape, t: number, n: Vect); hitPoint(start: Vect, end: Vect): Vect; hitDist(start: Vect, end: Vect): number; } }