# Source: src/gameobjects/components/InputEnabled.js

    /**
    * @author       Richard Davey <rich@photonstorm.com>
    * @copyright    2016 Photon Storm Ltd.
    * @license      {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
    */

    /**
    * The InputEnabled component allows a Game Object to have its own InputHandler and process input related events.
    *
    * @class
    */
    Phaser.Component.InputEnabled = function () {};

    Phaser.Component.InputEnabled.prototype = {

        /**
        * The Input Handler for this Game Object.
        *
        * By default it is disabled. If you wish this Game Object to process input events you should enable it with: `inputEnabled = true`.
        *
        * After you have done this, this property will be a reference to the Phaser InputHandler.
        * @property {Phaser.InputHandler|null} input
        */
        input: null,

        /**
        * By default a Game Object won't process any input events. By setting `inputEnabled` to true a Phaser.InputHandler is created
        * for this Game Object and it will then start to process click / touch events and more.
        *
        * You can then access the Input Handler via `this.input`.
        *
        * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`.
        *
        * If you set this property to false it will stop the Input Handler from processing any more input events.
        *
        * If you want to _temporarily_ disable input for a Game Object, then it's better to set
        * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties.
        * You can then toggle this back on as needed.
        *
        * @property {boolean} inputEnabled
        */
        inputEnabled: {

            get: function () {

                return (this.input && this.input.enabled);

            },

            set: function (value) {

                if (value)
                {
                    if (this.input === null)
                    {
                        this.input = new Phaser.InputHandler(this);
                        this.input.start();
                    }
                    else if (this.input && !this.input.enabled)
                    {
                        this.input.start();
                    }
                }
                else
                {
                    if (this.input && this.input.enabled)
                    {
                        this.input.stop();
                    }
                }

            }

        }

    };