Drawable* ParticleEmitter::clone(NodeCloneContext& context) { // Create a clone of this emitter ParticleEmitter* clone = ParticleEmitter::create(_spriteBatch->getSampler()->getTexture(), _spriteBlendMode, _particleCountMax); // Clone properties clone->setEmissionRate(_emissionRate); clone->_ellipsoid = _ellipsoid; clone->_sizeStartMin = _sizeStartMin; clone->_sizeStartMax = _sizeStartMax; clone->_sizeEndMin = _sizeEndMin; clone->_sizeEndMax = _sizeEndMax; clone->_energyMin = _energyMin; clone->_energyMax = _energyMax; clone->_colorStart = _colorStart; clone->_colorStartVar = _colorStartVar; clone->_colorEnd = _colorEnd; clone->_colorEndVar = _colorEndVar; clone->_position = _position; clone->_positionVar = _positionVar; clone->_velocity = _velocity; clone->_velocityVar = _velocityVar; clone->_acceleration = _acceleration; clone->_accelerationVar = _accelerationVar; clone->_rotationPerParticleSpeedMin = _rotationPerParticleSpeedMin; clone->_rotationPerParticleSpeedMax = _rotationPerParticleSpeedMax; clone->_rotationSpeedMin = _rotationSpeedMin; clone->_rotationSpeedMax = _rotationSpeedMax; clone->_rotationAxis = _rotationAxis; clone->_rotationAxisVar = _rotationAxisVar; clone->setSpriteTexCoords(_spriteFrameCount, _spriteTextureCoords); clone->_spriteAnimated = _spriteAnimated; clone->_spriteLooped = _spriteLooped; clone->_spriteFrameRandomOffset = _spriteFrameRandomOffset; clone->setSpriteFrameDuration(_spriteFrameDuration); clone->_orbitPosition = _orbitPosition; clone->_orbitVelocity = _orbitVelocity; clone->_orbitAcceleration = _orbitAcceleration; return clone; }