<commit_before>pc.extend(pc, function() {

    // properties that do not need rebuilding the particle system
    var SIMPLE_PROPERTIES = [
        'emitterExtents',
        'emitterRadius',
        'loop',
        'initialVelocity',
        'animSpeed',
        'normalMap'
    ];

    // properties that need rebuilding the particle system
    var COMPLEX_PROPERTIES = [
        'numParticles',
        'lifetime',
        'rate',
        'rate2',
        'startAngle',
        'startAngle2',
        'lighting',
        'halfLambert',
        'intensity',
        'wrap',
        'wrapBounds',
        'depthWrite',
        'noFog',
        'sort',
        'stretch',
        'alignToMotion',
        'preWarm',
        'emitterShape',
        'animTilesX',
        'animTilesY',
        'animFrames',
        'animLoop',
        'colorMap',
        'localSpace'
    ];

    var GRAPH_PROPERTIES = [
        'scaleGraph',
        'scaleGraph2',

        'colorGraph',
        'colorGraph2',

        'alphaGraph',
        'alphaGraph2',

        'velocityGraph',
        'velocityGraph2',

        'localVelocityGraph',
        'localVelocityGraph2',

        'rotationSpeedGraph',
        'rotationSpeedGraph2'
    ];

    var ASSET_PROPERTIES = [
        'colorMapAsset',
        'normalMapAsset',
        'mesh'
    ];

    /**
     * @component
     * @name pc.ParticleSystemComponent
     * @description Create a new ParticleSystemComponent
     * @class Used to simulate particles and produce renderable particle mesh on either CPU or GPU.
     * GPU simulation is generally much faster than its CPU counterpart, because it avoids slow CPU-GPU synchronization and takes advantage of many GPU cores.
     * However, it requires client to support reasonable uniform count, reading from multiple textures in vertex shader and OES_texture_float extension, including rendering into float textures.
     * Most mobile devices fail to satisfy these requirements, so it's not recommended to simulate thousands of particles on them. GPU version also can't sort particles, so enabling sorting forces CPU mode too.
     * Particle rotation is specified by a single angle parameter: default billboard particles rotate around camera facing axis, while mesh particles rotate around 2 different view-independent axes.
     * Most of the simulation parameters are specified with pc.Curve or pc.CurveSet. Curves are interpolated based on each particle's lifetime, therefore parameters are able to change over time.
     * Most of the curve parameters can also be specified by 2 minimum/maximum curves, this way each particle will pick a random value in-between.
     * @param {pc.ParticleSystemComponent} system The ComponentSystem that created this Component
     * @param {pc.Entity} entity The Entity this Component is attached to
     * @extends pc.Component
     * @property {Boolean} loop Enables or disables respawning of particles.
     * @property {Boolean} paused Pauses or unpauses the simulation.
     * @property {Boolean} preWarm If enabled, the particle system will be initialized as though it had already completed a full cycle. This only works with looping particle systems.<commit_msg>Document pc.ParticleSystem#play. Fixes #709.<commit_after>pc.extend(pc, function() {

    // properties that do not need rebuilding the particle system
    var SIMPLE_PROPERTIES = [
        'emitterExtents',
        'emitterRadius',
        'loop',
        'initialVelocity',
        'animSpeed',
        'normalMap'
    ];

    // properties that need rebuilding the particle system
    var COMPLEX_PROPERTIES = [
        'numParticles',
        'lifetime',
        'rate',
        'rate2',
        'startAngle',
        'startAngle2',
        'lighting',
        'halfLambert',
        'intensity',
        'wrap',
        'wrapBounds',
        'depthWrite',
        'noFog',
        'sort',
        'stretch',
        'alignToMotion',
        'preWarm',
        'emitterShape',
        'animTilesX',
        'animTilesY',
        'animFrames',
        'animLoop',
        'colorMap',
        'localSpace'
    ];

    var GRAPH_PROPERTIES = [
        'scaleGraph',
        'scaleGraph2',

        'colorGraph',
        'colorGraph2',

        'alphaGraph',
        'alphaGraph2',

        'velocityGraph',
        'velocityGraph2',

        'localVelocityGraph',
        'localVelocityGraph2',

        'rotationSpeedGraph',
        'rotationSpeedGraph2'
    ];

    var ASSET_PROPERTIES = [
        'colorMapAsset',
        'normalMapAsset',
        'mesh'
    ];

    /**
     * @component
     * @name pc.ParticleSystemComponent
     * @description Create a new ParticleSystemComponent
     * @class Used to simulate particles and produce renderable particle mesh on either CPU or GPU.
     * GPU simulation is generally much faster than its CPU counterpart, because it avoids slow CPU-GPU synchronization and takes advantage of many GPU cores.
     * However, it requires client to support reasonable uniform count, reading from multiple textures in vertex shader and OES_texture_float extension, including rendering into float textures.
     * Most mobile devices fail to satisfy these requirements, so it's not recommended to simulate thousands of particles on them. GPU version also can't sort particles, so enabling sorting forces CPU mode too.
     * Particle rotation is specified by a single angle parameter: default billboard particles rotate around camera facing axis, while mesh particles rotate around 2 different view-independent axes.
     * Most of the simulation parameters are specified with pc.Curve or pc.CurveSet. Curves are interpolated based on each particle's lifetime, therefore parameters are able to change over time.
     * Most of the curve parameters can also be specified by 2 minimum/maximum curves, this way each particle will pick a random value in-between.
     * @param {pc.ParticleSystemComponent} system The ComponentSystem that created this Component
     * @param {pc.Entity} entity The Entity this Component is attached to
     * @extends pc.Component
     * @property {Boolean} autoPlay Controls whether the particle system plays automatically on creation. If set to false, it is necessary to call {@link pc.ParticleSystemComponent#play} for the particle system to play. Defaults to true.
     * @property {Boolean} loop Enables or disables respawning of particles.
     * @property {Boolean} paused Pauses or unpauses the simulation.
     * @property {Boolean} preWarm If enabled, the particle system will be initialized as though it had already completed a full cycle. This only works with looping particle systems.
{'fraction_non_alphanumeric': 0.07360672975814932, 'fraction_numerical': 0.003455009764158029, 'mean_word_length': 2.7299719887955183, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '526298', 'n_tokens_mistral': 1714, 'n_tokens_neox': 1634, 'n_words': 662}