@react-three/p2
Version:
2D physics based hooks for react-three-fiber
56 lines (55 loc) • 1.79 kB
TypeScript
import RaycastController from './RaycastController';
import type { RaycastControllerOptns } from './RaycastController';
import { Ray, RaycastResult } from 'p2-es';
import type { Duplet } from './';
import type KinematicCharacterController from './KinematicCharacterController';
interface PlatformControllerOptns extends RaycastControllerOptns {
localWaypoints: Duplet[];
controllers: {
[key: string]: KinematicCharacterController;
};
passengerMask: number;
speed?: number;
skinWidth?: number;
dstBetweenRays?: number;
}
export default class PlatformController extends RaycastController {
passengerMask: number;
localWaypoints: Duplet[];
globalWaypoints: Duplet[];
speed: number;
cyclic: boolean;
waitTime: number;
easeAmount: number;
fromWaypointIndex: number;
percentBetweenWaypoints: number;
nextMoveTime: number;
passengerMovement: PassengerMovement[];
passengerDictionary: {
[key: string]: KinematicCharacterController;
};
time: number;
ray: Ray;
raycastResult: RaycastResult;
raysData: [from: Duplet, to: Duplet, hitDistance?: number][];
constructor(options: PlatformControllerOptns);
update(deltaTime: number): void;
ease(x: number): number;
calculatePlatformMovement(deltaTime: number): Duplet;
movePassengers(beforeMovePlatform: boolean): void;
calculatePassengerMovement(velocity: Duplet): void;
}
declare type PassengerMovementOptns = {
velocity: Duplet;
standingOnPlatform: boolean;
moveBeforePlatform: boolean;
uuid: string;
};
declare class PassengerMovement {
velocity: Duplet;
standingOnPlatform: boolean;
moveBeforePlatform: boolean;
uuid: string;
constructor(options: PassengerMovementOptns);
}
export {};