# all files / src/ Light.js

25% Statements 2/8
100% Branches 0/0
50% Functions 1/2
25% Lines 2/8

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68

    1×
    14×

     import Node from './Node';

    /**
     * @constructor clay.Light
     * @extends clay.Node
     */
    var Light = Node.extend(function(){
        return /** @lends clay.Light# */ {
            /**
             * Light RGB color
             * @type {number[]}
             */
            color: [1, 1, 1],

            /**
             * Light intensity
             * @type {number}
             */
            intensity: 1.0,

            // Config for shadow map
            /**
             * If light cast shadow
             * @type {boolean}
             */
            castShadow: true,

            /**
             * Shadow map size
             * @type {number}
             */
            shadowResolution: 512,

            /**
             * Light group, shader with same `lightGroup` will be affected
             *
             * Only useful in forward rendering
             * @type {number}
             */
            group: 0
        };
    },
    /** @lends clay.Light.prototype. */
    {
        /**
         * Light type
         * @type {string}
         * @memberOf clay.Light#
         */
        type: '',

        /**
         * @return {clay.Light}
         * @memberOf clay.Light.prototype
         */
        clone: function() {
            var light = Node.prototype.clone.call(this);
            light.color = Array.prototype.slice.call(this.color);
            light.intensity = this.intensity;
            light.castShadow = this.castShadow;
            light.shadowResolution = this.shadowResolution;

            return light;
        }
    });

    export default Light;