# Source: src/core/FlexLayer.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}
    */

    /**
    * WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete.
    * Please try to avoid using in production games with a long time to build.
    * This is also why the documentation is incomplete.
    *
    * A responsive grid layer.
    *
    * @class Phaser.FlexLayer
    * @extends Phaser.Group
    * @constructor
    * @param {Phaser.FlexGrid} manager - The FlexGrid that owns this FlexLayer.
    * @param {Phaser.Point} position - A reference to the Point object used for positioning.
    * @param {Phaser.Rectangle} bounds - A reference to the Rectangle used for the layer bounds.
    * @param {Phaser.Point} scale - A reference to the Point object used for layer scaling.
    */
    Phaser.FlexLayer = function (manager, position, bounds, scale) {

        Phaser.Group.call(this, manager.game, null, '__flexLayer' + manager.game.rnd.uuid(), false);

        /**
        * @property {Phaser.ScaleManager} scale - A reference to the ScaleManager.
        */
        this.manager = manager.manager;

        /**
        * @property {Phaser.FlexGrid} grid - A reference to the FlexGrid that owns this layer.
        */
        this.grid = manager;

        /**
         * Should the FlexLayer remain through a State swap?
         *
         * @type {boolean}
         */
        this.persist = false;

        /**
        * @property {Phaser.Point} position
        */
        this.position = position;

        /**
        * @property {Phaser.Rectangle} bounds
        */
        this.bounds = bounds;

        /**
        * @property {Phaser.Point} scale
        */
        this.scale = scale;

        /**
        * @property {Phaser.Point} topLeft
        */
        this.topLeft = bounds.topLeft;

        /**
        * @property {Phaser.Point} topMiddle
        */
        this.topMiddle = new Phaser.Point(bounds.halfWidth, 0);

        /**
        * @property {Phaser.Point} topRight
        */
        this.topRight = bounds.topRight;

        /**
        * @property {Phaser.Point} bottomLeft
        */
        this.bottomLeft = bounds.bottomLeft;

        /**
        * @property {Phaser.Point} bottomMiddle
        */
        this.bottomMiddle = new Phaser.Point(bounds.halfWidth, bounds.bottom);

        /**
        * @property {Phaser.Point} bottomRight
        */
        this.bottomRight = bounds.bottomRight;

    };

    Phaser.FlexLayer.prototype = Object.create(Phaser.Group.prototype);
    Phaser.FlexLayer.prototype.constructor = Phaser.FlexLayer;

    /**
     * Resize.
     *
     * @method Phaser.FlexLayer#resize
     */
    Phaser.FlexLayer.prototype.resize = function () {
    };

    /**
     * Debug.
     *
     * @method Phaser.FlexLayer#debug
     */
    Phaser.FlexLayer.prototype.debug = function () {

        this.game.debug.text(this.bounds.width + ' x ' + this.bounds.height, this.bounds.x + 4, this.bounds.y + 16);
        this.game.debug.geom(this.bounds, 'rgba(0,0,255,0.9', false);

        this.game.debug.geom(this.topLeft, 'rgba(255,255,255,0.9');
        this.game.debug.geom(this.topMiddle, 'rgba(255,255,255,0.9');
        this.game.debug.geom(this.topRight, 'rgba(255,255,255,0.9');

    };