public void addHitSpots(SLaser laser)
        {
            var newHitSpot = new HitSpotData(laser, (ushort)(_nextEffectorMask + 1), _nextEffectorMask);

            _nextEffectorMask += 2;
            if (_nextEffectorMask == 0)   // 0 is reserved for the global smoke dimmer
            {
                _nextEffectorMask = 2;
            }
            _hitSpots.Add(laser, newHitSpot);
            foreach (var emitter in newHitSpot.emitters())
            {
                base.addEmitter(emitter);
            }
            foreach (var effector in newHitSpot.effectors())
            {
                base.addEffector(effector);
            }

            // update global smoke smoke effectors with particle lifetime
            float newFlameSmokeDuration = laser.parameters.flameSmokeLifetime;

            _globalSmokeDimmerEffector.particleLifetime = newFlameSmokeDuration;
            _globalSmokeScaleEffector.particleLifetime  = newFlameSmokeDuration;
        }
        public void addHitSpots(SLaser laser)
        {
            var newHitSpot = new HitSpotData (laser, (ushort)(_nextEffectorMask + 1), _nextEffectorMask);
            _nextEffectorMask += 2;
            if (_nextEffectorMask == 0) { // 0 is reserved for the global smoke dimmer
                _nextEffectorMask = 2;
            }
            _hitSpots.Add(laser, newHitSpot);
            foreach (var emitter in newHitSpot.emitters()) {
                base.addEmitter(emitter);
            }
            foreach (var effector in newHitSpot.effectors()) {
                base.addEffector(effector);
            }

            // update global smoke smoke effectors with particle lifetime
            float newFlameSmokeDuration = laser.parameters.flameSmokeLifetime;
            _globalSmokeDimmerEffector.particleLifetime = newFlameSmokeDuration;
            _globalSmokeScaleEffector.particleLifetime = newFlameSmokeDuration;
        }