import { Quaternion } from "@babylonjs/core/Maths/math.vector"; import { Matrix, Vector3 } from "@babylonjs/core/Maths/math.vector"; import type { DeepImmutable, Nullable } from "@babylonjs/core/types"; import type { IPhysicsRuntime } from "../Impl/IPhysicsRuntime"; import { PhysicsBoxShape, PhysicsCapsuleShape, PhysicsSphereShape } from "../physicsShape"; export type PluginShapeMaterial = DeepImmutable<{ friction: number; restitution: number; }>; export interface IPluginShape { readonly localTransform: Nullable>; collisionGroup: number; collisionMask: number; setMaterial(friction: number, restitution: number): void; get material(): Nullable; } export declare class PluginBoxShape extends PhysicsBoxShape implements IPluginShape { readonly localTransform: Nullable>; collisionGroup: number; collisionMask: number; private _material; constructor(runtime: IPhysicsRuntime, center?: Vector3, rotation?: Quaternion, extents?: Vector3); setMaterial(friction: number, restitution: number): void; get material(): Nullable; } export declare class PluginSphereShape extends PhysicsSphereShape implements IPluginShape { readonly localTransform: Nullable>; collisionGroup: number; collisionMask: number; private _material; constructor(runtime: IPhysicsRuntime, center?: Vector3, radius?: number); setMaterial(friction: number, restitution: number): void; get material(): Nullable; } export declare class PluginCapsuleShape extends PhysicsCapsuleShape implements IPluginShape { readonly localTransform: Nullable>; collisionGroup: number; collisionMask: number; private _material; constructor(runtime: IPhysicsRuntime, pointA?: Vector3, pointB?: Vector3, radius?: number); setMaterial(friction: number, restitution: number): void; get material(): Nullable; }