///
import * as Rapier from "@dimforge/rapier3d-compat";
import { Vector3, Quaternion, ArrowHelper } from "three";
import { World } from '../core/World';
interface PhysicsWorldProps {
gravity: Vector3;
debug: boolean;
}
export declare const PhysicsWorldComponent: import("../threecs").MapComponent;
export declare function addPhysicsWorldComponent(world: World, eid: number, props?: Partial): void;
export declare const physicsWorldQuery: import("bitecs").Query;
export declare const mainPhysicsWorldQuery: (world: World) => number;
export declare const newPhysicsWorldsQuery: import("bitecs").Query;
interface InternalPhysicsWorldProps {
physicsWorld: Rapier.World;
colliderHandleToEntityMap: Map;
}
export declare const InternalPhysicsWorldComponent: import("../threecs").MapComponent;
export declare enum PhysicsColliderShape {
Box = "Box",
Sphere = "Sphere",
Capsule = "Capsule",
Trimesh = "Trimesh"
}
export declare const RigidBodyType: typeof Rapier.RigidBodyType;
export declare enum PhysicsGroups {
None = 0,
All = 65535
}
export declare enum PhysicsInteractionGroups {
None = 0,
Default = 4294967295
}
export declare function createInteractionGroup(groups: number, mask: number): number;
export interface RigidBodyProps {
translation: Vector3;
rotation: Quaternion;
shape?: PhysicsColliderShape;
bodyType: Rapier.RigidBodyType;
solverGroups: number;
collisionGroups: number;
lockRotations: boolean;
friction: number;
}
export interface CapsuleRigidBodyProps extends RigidBodyProps {
shape: PhysicsColliderShape.Capsule;
halfHeight: number;
radius: number;
}
export interface TrimeshRigidBodyProps extends RigidBodyProps {
indices?: Uint32Array;
vertices?: Float32Array;
}
export declare const RigidBodyComponent: import("../threecs").MapComponent;
export declare function addRigidBodyComponent(world: World, eid: number, props?: Partial): void;
export declare const rigidBodiesQuery: import("bitecs").Query;
export declare const newRigidBodiesQuery: import("bitecs").Query;
export interface InternalRigidBodyProps {
body: Rapier.RigidBody;
colliderShape: Rapier.Shape;
}
export declare const InternalRigidBodyComponent: import("../threecs").MapComponent;
export interface PhysicsRaycasterProps {
useObject3DTransform: boolean;
transformNeedsUpdate: boolean;
transformAutoUpdate: boolean;
withIntersection: boolean;
withNormal: boolean;
origin: Vector3;
dir: Vector3;
colliderEid?: number;
toi?: number;
intersection: Vector3;
normal: Vector3;
maxToi: number;
groups: number;
debug: boolean;
}
export declare const PhysicsRaycasterComponent: import("../threecs").MapComponent;
export declare function addPhysicsRaycasterComponent(world: World, eid: number, props?: Partial>): void;
export declare const physicsRaycasterQuery: import("bitecs").Query;
export declare const newPhysicsRaycastersQuery: import("bitecs").Query;
export interface InternalPhysicsRaycasterProps {
ray: Rapier.Ray;
arrowHelper?: ArrowHelper;
}
export declare const InternalPhysicsRaycasterComponent: import("../threecs").MapComponent;
export declare function loadPhysicsSystem(): Promise;
export {};