import { EventEmitter } from '@trufi/utils/common/eventEmitter'; import { ClientGraphEdge } from './graph/type'; import { Route } from './route'; export interface PointPosition { edge: ClientGraphEdge; at: number; } export interface PointInitialData { position: PointPosition; speed: number; userData?: any; keepingDistance?: number; } export interface PointMoveEvent { passedDistance: number; edge: ClientGraphEdge; } export interface PointEvents { move: PointMoveEvent; routefinish: undefined; } export declare class Point extends EventEmitter { readonly userData: any; private speed; private forward; /** * Если точка находится на ребре, то здесь хранится следующая точка с этого ребра по направлению движения */ private next?; /** * Если точка находится на ребре, то здесь хранится предыдущая точка с этого ребра по направлению движения */ private prev?; private readonly position; private edgeIndexInRoute; private readonly route; private readonly keepingDistance; constructor(data: PointInitialData); moveTo(toPosition: PointPosition): void; setRoute(route: Route): void; getRoute(): Route; getSpeed(): number; getCoords(): number[]; getPosition(): PointPosition; isFinishedRoute(): boolean; updateMoving(dt: number): void; /** * Проверяет, есть ли на текущем ребре место для движения. */ private hasSpaceOnCurrentEdge; /** * Проверяет, есть ли на следующем ребре место для появления этой точки. * Должен использоваться только при движении по пути, * когда точка закончила движения по ребру и собирается двигаться по следующему. */ private hasSpaceOnNextEdge; /** * Метод должен вызываться после вставки точки на ребро. * Ищет соседнии точки с новой, устанавливает связи между ними. */ private updatePointConnections; /** * 1. Соединяет предыдущую и следующую точку друг с другом * 2. Удаляет с ребра информацию о точке, если она была последней. * 3. Оставляет в ребре следующую точку, если она есть. * * Работает для: * - Удаляение точки с ребра при выставлении нового пути * - Удалении точки с ребра при переходе на следующее */ private removeFromEdge; }