import { Component } from '@serpentity/serpentity'; /** * The contorl mapping object, holds a source and target for the action. * * @typedef tControlMap * @type object * * @property {tControlSource} source the source input for the action * @property {tControlTarget} target the target property for the action */ /** * The definition of an input source * * @typedef tControlSource * @type object * * @property {string} type type of input, can be keyboard or gamepad * @property {number} gamepadNumber the number of gamepad to use * @property {string} gamepadInputSource either axes or buttons * @property {number} index the input index or keycode */ /** * The definition of an input target * * @typedef tControlTarget * @type object * * @property {external:Serpentity:Component} component the component affected by this * @property {string} property property to affect. For nested properties use dot.notation * @property {[function]} value a function that takes in the input and outputs a transformed value */ /** * Component that stores the state of motion controls to properties * * @extends {external:Serpentity.Component} * @class ControlMapComponent * @param {object} config a configuration object to extend. */ export default class ControlMapComponent extends Component { constructor(config) { super(config); /** * The map of actions and controls. An array of mappings * * @property {Array} map * @instance * @memberof ControlMapComponent */ this.map = this.map || []; } }