import { Quaternion, Ray, Vector3 } from "@galacean/engine"; import { ICharacterController, ICollision, IPhysicsScene } from "@galacean/engine-design"; import { LiteCollider } from "./LiteCollider"; import { LitePhysics } from "./LitePhysics"; /** * A manager is a collection of colliders and constraints which can interact. */ export declare class LitePhysicsScene implements IPhysicsScene { private static _tempSphere; private static _tempBox; private static _currentHit; private static _hitResult; private readonly _onContactEnter?; private readonly _onContactExit?; private readonly _onContactStay?; private readonly _onTriggerEnter?; private readonly _onTriggerExit?; private readonly _onTriggerStay?; private _staticColliders; private _dynamicColliders; private _sphere; private _box; private _currentEvents; private _eventMap; private _eventPool; private _physics; constructor(physics: LitePhysics, onContactEnter?: (collision: ICollision) => void, onContactExit?: (collision: ICollision) => void, onContactStay?: (collision: ICollision) => void, onTriggerEnter?: (obj1: number, obj2: number) => void, onTriggerExit?: (obj1: number, obj2: number) => void, onTriggerStay?: (obj1: number, obj2: number) => void); overlapBox(center: Vector3, orientation: Quaternion, halfExtents: Vector3, onOverlap: (obj: number) => boolean, outHitResult?: (shapeUniqueID: number) => void): boolean; overlapSphere(center: Vector3, radius: number, onOverlap: (obj: number) => boolean, outHitResult?: (shapeUniqueID: number) => void): boolean; overlapCapsule(center: Vector3, radius: number, height: number, orientation: Quaternion, onOverlap: (obj: number) => boolean, outHitResult?: (shapeUniqueID: number) => void): boolean; /** * {@inheritDoc IPhysicsScene.setGravity } */ setGravity(value: Vector3): void; /** * {@inheritDoc IPhysicsScene.addCollider } */ addCollider(actor: LiteCollider): void; /** * {@inheritDoc IPhysicsScene.removeCollider } */ removeCollider(collider: LiteCollider): void; /** * {@inheritDoc IPhysicsScene.update } */ update(deltaTime: number): void; /** * {@inheritDoc IPhysicsScene.raycast } */ raycast(ray: Ray, distance: number, onRaycast: (obj: number) => boolean, hit?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void): boolean; /** * {@inheritDoc IPhysicsScene.addCharacterController } */ addCharacterController(characterController: ICharacterController): void; /** * {@inheritDoc IPhysicsScene.removeCharacterController } */ removeCharacterController(characterController: ICharacterController): void; /** * {@inheritDoc IPhysicsScene.boxCast } */ boxCast(center: Vector3, orientation: Quaternion, halfExtents: Vector3, direction: Vector3, distance: number, onSweep: (obj: number) => boolean, outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void): boolean; /** * {@inheritDoc IPhysicsScene.sphereCast } */ sphereCast(center: Vector3, radius: number, direction: Vector3, distance: number, onSweep: (obj: number) => boolean, outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void): boolean; /** * {@inheritDoc IPhysicsScene.capsuleCast } */ capsuleCast(center: Vector3, radius: number, height: number, orientation: Quaternion, direction: Vector3, distance: number, onSweep: (obj: number) => boolean, outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void): boolean; /** * {@inheritDoc IPhysicsScene.overlapBoxAll } */ overlapBoxAll(center: Vector3, orientation: Quaternion, halfExtents: Vector3, onOverlap: (obj: number) => boolean): number[]; /** * {@inheritDoc IPhysicsScene.overlapSphereAll } */ overlapSphereAll(center: Vector3, radius: number, onOverlap: (obj: number) => boolean): number[]; /** * {@inheritDoc IPhysicsScene.overlapCapsuleAll } */ overlapCapsuleAll(center: Vector3, radius: number, height: number, orientation: Quaternion, onOverlap: (obj: number) => boolean): number[]; /** * {@inheritDoc IPhysicsScene.destroy } */ destroy(): void; /** * Calculate the bounding box in world space from boxCollider. * @param boxCollider - The boxCollider to calculate * @param out - The calculated boundingBox */ private static _updateWorldBox; /** * Get the sphere info of the given sphere collider in world space. * @param sphereCollider - The given sphere collider * @param out - The calculated boundingSphere */ private static _upWorldSphere; private _getTrigger; private _collisionDetection; private _fireEvent; private _boxCollision; private _sphereCollision; private _raycast; private _checkColliderCollide; }