protected void configureSmokeTrails() { if (_doSmokeTrails) { if (_smokeTrailsEmitter == null) { _smokeTrailsEmitter = new SSRadialEmitter(); _smokeTrailsColorEffector = new SSColorKeyframesEffector(); _smokeTrailsScaleEffector = new SSComponentScaleKeyframeEffector(); addEmitter(_smokeTrailsEmitter); addEffector(_smokeTrailsColorEffector); addEffector(_smokeTrailsScaleEffector); _smokeTrailsEmitter.effectorMask = _smokeTrailsColorEffector.effectorMask = _smokeTrailsScaleEffector.effectorMask = (ushort)ComponentMask.SmokeTrails; } _smokeTrailsEmitter.radiusOffset = 3f; _smokeTrailsEmitter.spriteRectangles = _smokeTrailsSprites; _smokeTrailsEmitter.particlesPerEmission = 16; _smokeTrailsEmitter.emissionIntervalMin = 0f; _smokeTrailsEmitter.emissionIntervalMax = 0.1f * _smokeTrailsDuration; _smokeTrailsEmitter.life = _smokeTrailsDuration; _smokeTrailsEmitter.totalEmissionsLeft = 0; // control this in ShowExplosion() _smokeTrailsEmitter.color = _smokeTrailsColor; _smokeTrailsColorEffector.particleLifetime = _smokeTrailsDuration; _smokeTrailsColorEffector.colorMask = _smokeTrailsColor; _smokeTrailsColorEffector.keyframes.Clear(); _smokeTrailsColorEffector.keyframes.Add(0f, new Color4(1f, 1f, 1f, 1f)); _smokeTrailsColorEffector.keyframes.Add(1f, new Color4(0.3f, 0.3f, 0.3f, 0f)); _smokeTrailsScaleEffector.particleLifetime = _smokeTrailsDuration; _smokeTrailsScaleEffector.baseOffset = new Vector3(1f, 1f, 1f); _smokeTrailsScaleEffector.keyframes.Clear(); _smokeTrailsScaleEffector.keyframes.Add(0f, new Vector3(0f)); _smokeTrailsScaleEffector.keyframes.Add(0.5f, new Vector3(12f, 1.5f, 0f)); _smokeTrailsScaleEffector.keyframes.Add(1f, new Vector3(7f, 2f, 0f)); } else if (_smokeTrailsEmitter != null) { removeEmitter(_smokeTrailsEmitter); removeEffector(_smokeTrailsColorEffector); removeEffector(_smokeTrailsScaleEffector); _smokeTrailsEmitter = null; _smokeTrailsColorEffector = null; _smokeTrailsScaleEffector = null; } }
protected void configureSmokeTrails() { if (_eParams.doSmokeTrails) { if (_smokeTrailsEmitter == null) { _smokeTrailsEmitter = new SSRadialEmitter (); _smokeTrailsColorEffector = new SSColorKeyframesEffector (); _smokeTrailsScaleEffector = new SSComponentScaleKeyframeEffector (); addEmitter(_smokeTrailsEmitter); addEffector(_smokeTrailsColorEffector); addEffector(_smokeTrailsScaleEffector); _smokeTrailsEmitter.effectorMask = _smokeTrailsColorEffector.effectorMask = _smokeTrailsScaleEffector.effectorMask = (ushort)ComponentMask.SmokeTrails; } _smokeTrailsEmitter.radiusOffset = 3f; _smokeTrailsEmitter.spriteRectangles = _eParams.smokeTrailsSprites; _smokeTrailsEmitter.particlesPerEmission = 16; _smokeTrailsEmitter.emissionIntervalMin = 0f; _smokeTrailsEmitter.emissionIntervalMax = 0.1f * _eParams.smokeTrailsDuration; _smokeTrailsEmitter.life = _eParams.smokeTrailsDuration; _smokeTrailsEmitter.totalEmissionsLeft = 0; // control this in ShowExplosion() _smokeTrailsEmitter.color = _eParams.smokeTrailsColor; _smokeTrailsColorEffector.particleLifetime = _eParams.smokeTrailsDuration; _smokeTrailsColorEffector.colorMask = _eParams.smokeTrailsColor; _smokeTrailsColorEffector.keyframes.Clear(); _smokeTrailsColorEffector.keyframes.Add(0f, new Color4 (1f, 1f, 1f, 1f)); _smokeTrailsColorEffector.keyframes.Add(1f, new Color4 (0.3f, 0.3f, 0.3f, 0f)); _smokeTrailsScaleEffector.particleLifetime = _eParams.smokeTrailsDuration; _smokeTrailsScaleEffector.baseOffset = new Vector3 (1f, 1f, 1f); _smokeTrailsScaleEffector.keyframes.Clear(); _smokeTrailsScaleEffector.keyframes.Add(0f, new Vector3 (0f)); _smokeTrailsScaleEffector.keyframes.Add(0.5f, new Vector3 (12f, 1.5f, 0f)); _smokeTrailsScaleEffector.keyframes.Add(1f, new Vector3 (7f, 2f, 0f)); } else if (_smokeTrailsEmitter != null) { removeEmitter(_smokeTrailsEmitter); removeEffector(_smokeTrailsColorEffector); removeEffector(_smokeTrailsScaleEffector); _smokeTrailsEmitter = null; _smokeTrailsColorEffector = null; _smokeTrailsScaleEffector = null; } }