UNPKG

@rpgjs/physic

Version:

A deterministic 2D top-down physics library for RPG, sandbox and MMO games

70 lines 2.14 kB
import { CollisionInfo } from './Collider'; /** * Collision resolver configuration */ export interface ResolverConfig { /** Position correction factor (0-1, higher = more correction) */ positionCorrectionFactor?: number; /** Minimum penetration depth to resolve */ minPenetrationDepth?: number; /** Maximum position correction per step */ maxPositionCorrection?: number; } /** * Collision resolver * * Resolves collisions by separating entities and applying impulses. * Uses impulse-based resolution for stable, deterministic physics. * * @example * ```typescript * const resolver = new CollisionResolver(); * resolver.resolve(collision); * ``` */ export declare class CollisionResolver { private config; /** * Creates a new collision resolver * * @param config - Resolver configuration */ constructor(config?: ResolverConfig); /** * Resolves a collision * * Separates entities and applies collision response. * * @param collision - Collision information to resolve */ resolve(collision: CollisionInfo): void; /** * Separates two entities by moving them apart * * This method applies position corrections to resolve penetration between * colliding entities. After applying corrections, it notifies position change * handlers to ensure proper synchronization with game logic (e.g., updating * owner.x/y signals for network sync). * * @param entityA - First entity * @param entityB - Second entity * @param normal - Separation normal (from A to B) * @param depth - Penetration depth */ private separateEntities; /** * Resolves velocities using impulse-based collision response * * @param entityA - First entity * @param entityB - Second entity * @param normal - Collision normal (from A to B) */ private resolveVelocities; /** * Resolves multiple collisions * * @param collisions - Array of collisions to resolve */ resolveAll(collisions: CollisionInfo[]): void; } //# sourceMappingURL=resolver.d.ts.map