@rpgjs/physic
Version:
A deterministic 2D top-down physics library for RPG, sandbox and MMO games
70 lines • 2.14 kB
TypeScript
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