UNPKG

lr-core

Version:
123 lines (101 loc) 2.79 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _immo = require('../immo'); var _lineEngine = require('../line-engine'); var _lineEngine2 = _interopRequireDefault(_lineEngine); var _lineSpace = require('../line-space'); var _lineSpace2 = _interopRequireDefault(_lineSpace); var _constants = require('./constants.js'); var _Rider = require('./Rider.js'); var _Rider2 = _interopRequireDefault(_Rider); var _grids = require('./grids'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // @setupImmo class LineRiderEngine extends _lineEngine2.default { __props__() { return { iterations: _constants.ITERATE, stepOptions: { gravity: _constants.GRAVITY }, rider: this.makeRider() }; } __state__() { return { start: { position: _constants.DEFAULT_START_POSITION, velocity: _constants.DEFAULT_START_VELOCITY } }; } __computed__() { return { lineSpace: new _lineSpace2.default(({ p1: { x: x1, y: y1 }, p2: { x: x2, y: y2 } }) => [x1, y1, x2, y2]) }; } /* public */ // getLastFrameIndex () // getLine (id) // getMaxLineID () // addLine (line) // removeLine (line) constructor() { super(); return this.setStart().setConstraints(this.rider.constraints); } setStart(position = _constants.DEFAULT_START_POSITION, velocity = _constants.DEFAULT_START_VELOCITY) { return this.updateState({ start: { position, velocity } }).setInitialStates(this.rider.makeStateArray(position, velocity)); } getRider(frameIndex) { return this.rider.getBody(this.getStateMapAtFrame(frameIndex)); } toJSON() { // until List.toJS() gets implemented this.linesList.__getBuffer(); return { start: this.start, lines: this.linesList.buffer.map(line => line.toJSON()) }; } /* private */ _addLine(line) { super._addLine(line); this.lineSpace.addLine(line); } _removeLine(line) { super._removeLine(line); this.lineSpace.removeLine(line); } makeRider() { return new _Rider2.default(); } makeGrid(...args) { return new _grids.ClassicGrid(...args); } selectLinesInBox(x0, y0, x1, y1) { this.updateComputed(); return this.lineSpace.selectLinesInBox(x0, y0, x1, y1); } selectLinesInRadius(c, r) { this.updateComputed(); return this.lineSpace.selectLinesInRadius(c, r); } selectClosestLineInRadius(c, r) { this.updateComputed(); return this.lineSpace.selectClosestLineInRadius(c, r); } getBoundingBox() { this.updateComputed(); return this.lineSpace.getBoundingBox(); } } exports.default = LineRiderEngine; (0, _immo.setupImmo)(LineRiderEngine);