public CCParticleSystemQuad(CCParticleSystemConfig config) : base(config) { InitRenderCommand(); Texture = config.Texture; CCBlendFunc blendFunc = new CCBlendFunc(); blendFunc.Source = config.BlendFunc.Source; blendFunc.Destination = config.BlendFunc.Destination; BlendFunc = blendFunc; }
public CCParticleSystemConfig ParticleSystemForKey(string key) { CCParticleSystemConfig config = null; try { if (Path.HasExtension(key)) { key = CCFileUtils.RemoveExtension(key); } configs.TryGetValue(key, out config); } catch (ArgumentNullException) { CCLog.Log("Particle System with key {0} does not exist.", key); } return(config); }
CCParticleSystemConfig AddParticleSystem(string fileConfig, string directoryName, bool loadAsync) { Debug.Assert(!String.IsNullOrEmpty(fileConfig), "ParticleSystemConfigCache: fileConfig MUST not be NULL"); CCParticleSystemConfig psConfig = null; var assetName = fileConfig; if (Path.HasExtension(assetName)) { assetName = CCFileUtils.RemoveExtension(assetName); } lock (dictLock) { configs.TryGetValue(assetName, out psConfig); } if (psConfig == null) { try { psConfig = new CCParticleSystemConfig(fileConfig, directoryName, loadAsync); lock (dictLock) { configs[assetName] = psConfig; } } catch (Exception exc) { CCLog.Log("Error creating configuration: {0}", fileConfig); return(null); } } return(psConfig); }
public void Remove(CCParticleSystemConfig particleSystem) { if (particleSystem == null) { return; } string key = null; foreach (var pair in configs) { if (pair.Value == particleSystem) { key = pair.Key; break; } } if (key != null) { configs.Remove(key); } }
CCParticleSystemConfig AddParticleSystem(string fileConfig, string directoryName, bool loadAsync) { Debug.Assert(!String.IsNullOrEmpty(fileConfig), "ParticleSystemConfigCache: fileConfig MUST not be NULL"); CCParticleSystemConfig psConfig = null; var assetName = fileConfig; if (Path.HasExtension(assetName)) { assetName = CCFileUtils.RemoveExtension(assetName); } lock (dictLock) { configs.TryGetValue(assetName, out psConfig); } if (psConfig == null) { psConfig = new CCParticleSystemConfig(fileConfig, directoryName, loadAsync); if (psConfig != null) { lock (dictLock) { configs[assetName] = psConfig; } } else { return(null); } } return(psConfig); }
void OnConfigLoad(CCParticleSystemConfig config, Action <CCParticleSystemConfig> action) { // Right now Mac can not load images with data defined asyncly so we want to short circuit this and // just load the data from disk. If not then we will perform an async load on the image #if MACOS config.LoadParticleTexture(); if (action != null) { action(config); } #else string textureData = config.TextureData; // We will try loading the texture data first if it exists. Hopefully we get lucky if (!string.IsNullOrEmpty(textureData)) { //Debug.Assert(!string.IsNullOrEmpty(textureData), // string.Format("CCParticleSystem: textureData does not exist : {0}", textureName)); int dataLen = textureData.Length; if (dataLen != 0) { var dataBytes = Convert.FromBase64String(textureData); Debug.Assert(dataBytes != null, string.Format("CCParticleSystem: error decoding textureImageData : {0}", config.TextureName)); var imageBytes = ZipUtils.Inflate(dataBytes); Debug.Assert(imageBytes != null, string.Format("CCParticleSystem: error init image with Data for texture : {0}", config.TextureName)); try { CCTextureCache.SharedTextureCache.AddImageAsync(imageBytes, config.TextureName, CCSurfaceFormat.Color, (loadedTexture) => { if (loadedTexture != null) { config.Texture = loadedTexture; if (action != null) { action(config); } } else { if (!string.IsNullOrEmpty(config.TextureName)) { bool bNotify = CCFileUtils.IsPopupNotify; CCFileUtils.IsPopupNotify = false; try { CCTextureCache.SharedTextureCache.AddImageAsync(config.TextureName, (tex2) => { config.Texture = tex2; if (config.Texture == null) { config.Texture = CCParticleExample.DefaultTexture; } if (action != null) { action(config); } }); } catch (Exception) { config.Texture = CCParticleExample.DefaultTexture; } CCFileUtils.IsPopupNotify = bNotify; if (config.Texture == null) { config.Texture = CCParticleExample.DefaultTexture; } } } } ); } catch (Exception ex) { CCLog.Log(ex.ToString()); config.Texture = CCParticleExample.DefaultTexture; } } } else { if (!string.IsNullOrEmpty(config.TextureName)) { bool bNotify = CCFileUtils.IsPopupNotify; CCFileUtils.IsPopupNotify = false; try { CCTextureCache.SharedTextureCache.AddImageAsync(config.TextureName, (tex2) => { config.Texture = tex2; if (config.Texture == null) { config.Texture = CCParticleExample.DefaultTexture; } if (action != null) { action(config); } }); } catch (Exception) { config.Texture = CCParticleExample.DefaultTexture; } CCFileUtils.IsPopupNotify = bNotify; } } #endif }
public CCParticleFire(CCPoint position, CCEmitterMode emitterMode = CCEmitterMode.Gravity) : base(250, emitterMode) { if (config == null) { config = new CCParticleSystemConfig(); config.ParticleSystemType = CCParticleSystemType.Internal; config.Duration = ParticleDurationInfinity; config.Life = 3; config.LifeVar = 0.25f; config.Position = position; config.PositionVar = new CCPoint(40, 20); config.Angle = 90; config.AngleVar = 10; config.StartSize = 54.0f; config.StartSizeVar = 10.0f; config.EndSize = ParticleStartSizeEqualToEndSize; config.EmitterMode = CCEmitterMode.Gravity; CCColor4F cstartColor = new CCColor4F(); cstartColor.R = 0.76f; cstartColor.G = 0.25f; cstartColor.B = 0.12f; cstartColor.A = 1.0f; config.StartColor = cstartColor; CCColor4F cstartColorVar = new CCColor4F(); cstartColorVar.R = 0.0f; cstartColorVar.G = 0.0f; cstartColorVar.B = 0.0f; cstartColorVar.A = 0.0f; config.StartColorVar = cstartColorVar; CCColor4F cendColor = new CCColor4F(); cendColor.R = 0.0f; cendColor.G = 0.0f; cendColor.B = 0.0f; cendColor.A = 1.0f; config.EndColor = cendColor; CCColor4F cendColorVar = new CCColor4F(); cendColorVar.R = 0.0f; cendColorVar.G = 0.0f; cendColorVar.B = 0.0f; cendColorVar.A = 0.0f; config.EndColorVar = cendColorVar; config.Gravity = new CCPoint(0, 0); config.GravityRadialAccel = 0; config.GravityRadialAccelVar = 0; config.GravitySpeed = 60; config.GravitySpeedVar = 20; config.Texture = CCParticleExample.DefaultTexture; } Duration = config.Duration; Life = config.Life; LifeVar = config.LifeVar; Position = config.Position; PositionVar = config.PositionVar; Angle = config.Angle; AngleVar = config.AngleVar; StartSize = config.StartSize; StartSizeVar = config.StartSizeVar; EndSize = config.EndSize; EmissionRate = TotalParticles / Life; CCColor4F startColor = new CCColor4F(); startColor.R = config.StartColor.R; startColor.G = config.StartColor.G; startColor.B = config.StartColor.B; startColor.A = config.StartColor.A; StartColor = startColor; CCColor4F startColorVar = new CCColor4F(); startColorVar.R = config.StartColorVar.R; startColorVar.G = config.StartColorVar.G; startColorVar.B = config.StartColorVar.B; startColorVar.A = config.StartColorVar.A; StartColorVar = startColorVar; CCColor4F endColor = new CCColor4F(); endColor.R = config.EndColor.R; endColor.G = config.EndColor.G; endColor.B = config.EndColor.B; endColor.A = config.EndColor.A; EndColor = endColor; CCColor4F endColorVar = new CCColor4F(); endColorVar.R = config.EndColorVar.R; endColorVar.G = config.EndColorVar.G; endColorVar.B = config.EndColorVar.B; endColorVar.A = config.EndColorVar.A; EndColorVar = endColorVar; GravityMoveMode gravityMode = new GravityMoveMode(); gravityMode.Gravity = new CCPoint(config.Gravity); gravityMode.RadialAccel = config.GravityRadialAccel; gravityMode.RadialAccelVar = config.GravityRadialAccelVar; gravityMode.Speed = config.GravitySpeed; gravityMode.SpeedVar = config.GravitySpeedVar; GravityMode = gravityMode; BlendAdditive = true; Texture = config.Texture; }
public CCParticleSystemQuad(CCParticleSystemConfig config) : base(config) {}
public CCParticleSystem(CCParticleSystemConfig particleConfig) : this(particleConfig.MaxParticles, false) { Duration = particleConfig.Duration;; Life = particleConfig.Life; LifeVar = particleConfig.LifeVar; EmissionRate = TotalParticles / Life; Angle = particleConfig.Angle; AngleVar = particleConfig.AngleVar; CCColor4F startColor = new CCColor4F(); startColor.R = particleConfig.StartColor.R; startColor.G = particleConfig.StartColor.G; startColor.B = particleConfig.StartColor.B; startColor.A = particleConfig.StartColor.A; StartColor = startColor; CCColor4F startColorVar = new CCColor4F(); startColorVar.R = particleConfig.StartColorVar.R; startColorVar.G = particleConfig.StartColorVar.G; startColorVar.B = particleConfig.StartColorVar.B; startColorVar.A = particleConfig.StartColorVar.A; StartColorVar = startColorVar; CCColor4F endColor = new CCColor4F(); endColor.R = particleConfig.EndColor.R; endColor.G = particleConfig.EndColor.G; endColor.B = particleConfig.EndColor.B; endColor.A = particleConfig.EndColor.A; EndColor = endColor; CCColor4F endColorVar = new CCColor4F(); endColorVar.R = particleConfig.EndColorVar.R; endColorVar.G = particleConfig.EndColorVar.G; endColorVar.B = particleConfig.EndColorVar.B; endColorVar.A = particleConfig.EndColorVar.A; EndColorVar = endColorVar; StartSize = particleConfig.StartSize; StartSizeVar = particleConfig.StartSizeVar; EndSize = particleConfig.EndSize; EndSizeVar = particleConfig.EndSizeVar; CCPoint position; position.X = particleConfig.Position.X; position.Y = particleConfig.Position.Y; Position = position; CCPoint positionVar; positionVar.X = particleConfig.PositionVar.X; positionVar.Y = particleConfig.PositionVar.X; PositionVar = positionVar; StartSpin = particleConfig.StartSpin; StartSpinVar = particleConfig.StartSpinVar; EndSpin = particleConfig.EndSpin; EndSpinVar = particleConfig.EndSpinVar; EmitterMode = particleConfig.EmitterMode; if (EmitterMode == CCEmitterMode.Gravity) { GravityParticles = new CCParticleGravity[TotalParticles]; GravityMoveMode newGravityMode = new GravityMoveMode(); CCPoint gravity; gravity.X = particleConfig.Gravity.X; gravity.Y = particleConfig.Gravity.Y; newGravityMode.Gravity = gravity; newGravityMode.Speed = particleConfig.GravitySpeed; newGravityMode.SpeedVar = particleConfig.GravitySpeedVar; newGravityMode.RadialAccel = particleConfig.GravityRadialAccel; newGravityMode.RadialAccelVar = particleConfig.GravityRadialAccelVar; newGravityMode.TangentialAccel = particleConfig.GravityTangentialAccel; newGravityMode.TangentialAccelVar = particleConfig.GravityTangentialAccelVar; newGravityMode.RotationIsDir = particleConfig.GravityRotationIsDir; GravityMode = newGravityMode; } else if (EmitterMode == CCEmitterMode.Radius) { RadialParticles = new CCParticleRadial[TotalParticles]; RadialMoveMode newRadialMode = new RadialMoveMode(); newRadialMode.StartRadius = particleConfig.RadialStartRadius; newRadialMode.StartRadiusVar = particleConfig.RadialStartRadiusVar; newRadialMode.EndRadius = particleConfig.RadialEndRadius; newRadialMode.EndRadiusVar = particleConfig.RadialEndRadiusVar; newRadialMode.RotatePerSecond = particleConfig.RadialRotatePerSecond; newRadialMode.RotatePerSecondVar = particleConfig.RadialRotatePerSecondVar; RadialMode = newRadialMode; } else { Debug.Assert(false, "Invalid emitterType in config file"); return; } }
public CCParticleFire(CCPoint position, CCEmitterMode emitterMode=CCEmitterMode.Gravity) : base(250, emitterMode) { if (config == null) { config = new CCParticleSystemConfig (); config.ParticleSystemType = CCParticleSystemType.Internal; config.Duration = ParticleDurationInfinity; config.Life = 3; config.LifeVar = 0.25f; config.Position = position; config.PositionVar = new CCPoint(40, 20); config.Angle = 90; config.AngleVar = 10; config.StartSize = 54.0f; config.StartSizeVar = 10.0f; config.EndSize = ParticleStartSizeEqualToEndSize; config.EmitterMode = CCEmitterMode.Gravity; CCColor4F cstartColor = new CCColor4F(); cstartColor.R = 0.76f; cstartColor.G = 0.25f; cstartColor.B = 0.12f; cstartColor.A = 1.0f; config.StartColor = cstartColor; CCColor4F cstartColorVar = new CCColor4F(); cstartColorVar.R = 0.0f; cstartColorVar.G = 0.0f; cstartColorVar.B = 0.0f; cstartColorVar.A = 0.0f; config.StartColorVar = cstartColorVar; CCColor4F cendColor = new CCColor4F(); cendColor.R = 0.0f; cendColor.G = 0.0f; cendColor.B = 0.0f; cendColor.A = 1.0f; config.EndColor = cendColor; CCColor4F cendColorVar = new CCColor4F(); cendColorVar.R = 0.0f; cendColorVar.G = 0.0f; cendColorVar.B = 0.0f; cendColorVar.A = 0.0f; config.EndColorVar = cendColorVar; config.Gravity = new CCPoint(0, 0); config.GravityRadialAccel = 0; config.GravityRadialAccelVar = 0; config.GravitySpeed = 60; config.GravitySpeedVar = 20; config.Texture = CCParticleExample.DefaultTexture; } Duration = config.Duration; Life = config.Life; LifeVar = config.LifeVar; Position = config.Position; PositionVar = config.PositionVar; Angle = config.Angle; AngleVar = config.AngleVar; StartSize = config.StartSize; StartSizeVar = config.StartSizeVar; EndSize = config.EndSize; EmissionRate = TotalParticles / Life; CCColor4F startColor = new CCColor4F(); startColor.R = config.StartColor.R; startColor.G = config.StartColor.G; startColor.B = config.StartColor.B; startColor.A = config.StartColor.A; StartColor = startColor; CCColor4F startColorVar = new CCColor4F(); startColorVar.R = config.StartColorVar.R; startColorVar.G = config.StartColorVar.G; startColorVar.B = config.StartColorVar.B; startColorVar.A = config.StartColorVar.A; StartColorVar = startColorVar; CCColor4F endColor = new CCColor4F(); endColor.R = config.EndColor.R; endColor.G = config.EndColor.G; endColor.B = config.EndColor.B; endColor.A = config.EndColor.A; EndColor = endColor; CCColor4F endColorVar = new CCColor4F(); endColorVar.R = config.EndColorVar.R; endColorVar.G = config.EndColorVar.G; endColorVar.B = config.EndColorVar.B; endColorVar.A = config.EndColorVar.A; EndColorVar = endColorVar; GravityMoveMode gravityMode = new GravityMoveMode(); gravityMode.Gravity = new CCPoint(config.Gravity); gravityMode.RadialAccel = config.GravityRadialAccel; gravityMode.RadialAccelVar = config.GravityRadialAccelVar; gravityMode.Speed = config.GravitySpeed; gravityMode.SpeedVar = config.GravitySpeedVar; GravityMode = gravityMode; BlendAdditive = true; Texture = config.Texture; }
public CCParticleSystemQuad(CCParticleSystemConfig config) : base(config) { }
CCParticleSystemConfig AddParticleSystem(string fileConfig, string directoryName, bool loadAsync) { Debug.Assert(!String.IsNullOrEmpty(fileConfig), "ParticleSystemConfigCache: fileConfig MUST not be NULL"); CCParticleSystemConfig psConfig = null; var assetName = fileConfig; if (Path.HasExtension(assetName)) { assetName = CCFileUtils.RemoveExtension(assetName); } lock (dictLock) { configs.TryGetValue(assetName, out psConfig); } if (psConfig == null) { psConfig = new CCParticleSystemConfig(fileConfig, directoryName, loadAsync); if (psConfig != null) { lock (dictLock) { configs[assetName] = psConfig; } } else { return null; } } return psConfig; }
void OnConfigLoad(CCParticleSystemConfig config, Action<CCParticleSystemConfig> action) { // Right now Mac can not load images with data defined asyncly so we want to short circuit this and // just load the data from disk. If not then we will perform an async load on the image #if MACOS config.LoadParticleTexture (); if (action != null) action (config); #else string textureData = config.TextureData; // We will try loading the texture data first if it exists. Hopefully we get lucky if (!string.IsNullOrEmpty(textureData)) { //Debug.Assert(!string.IsNullOrEmpty(textureData), // string.Format("CCParticleSystem: textureData does not exist : {0}", textureName)); int dataLen = textureData.Length; if (dataLen != 0) { var dataBytes = Convert.FromBase64String(textureData); Debug.Assert(dataBytes != null, string.Format("CCParticleSystem: error decoding textureImageData : {0}", config.TextureName)); var imageBytes = ZipUtils.Inflate(dataBytes); Debug.Assert(imageBytes != null, string.Format("CCParticleSystem: error init image with Data for texture : {0}", config.TextureName)); try { CCTextureCache.SharedTextureCache.AddImageAsync(imageBytes, config.TextureName, CCSurfaceFormat.Color, (loadedTexture) => { if (loadedTexture != null) { config.Texture = loadedTexture; if (action != null) action(config); } else { if (!string.IsNullOrEmpty(config.TextureName)) { bool bNotify = CCFileUtils.IsPopupNotify; CCFileUtils.IsPopupNotify = false; try { CCTextureCache.SharedTextureCache.AddImageAsync(config.TextureName, (tex2) => { config.Texture = tex2; if (config.Texture == null) config.Texture = CCParticleExample.DefaultTexture; if (action != null) action(config); }); } catch (Exception) { config.Texture = CCParticleExample.DefaultTexture; } CCFileUtils.IsPopupNotify = bNotify; if (config.Texture == null) config.Texture = CCParticleExample.DefaultTexture; } } } ); } catch (Exception ex) { CCLog.Log(ex.ToString()); config.Texture = CCParticleExample.DefaultTexture; } } } else { if (!string.IsNullOrEmpty(config.TextureName)) { bool bNotify = CCFileUtils.IsPopupNotify; CCFileUtils.IsPopupNotify = false; try { CCTextureCache.SharedTextureCache.AddImageAsync(config.TextureName, (tex2) => { config.Texture = tex2; if (config.Texture == null) config.Texture = CCParticleExample.DefaultTexture; if (action != null) action(config); }); } catch (Exception) { config.Texture = CCParticleExample.DefaultTexture; } CCFileUtils.IsPopupNotify = bNotify; } } #endif }
public override void OnEnter() { base.OnEnter(); CCSize windowSize = Layer.VisibleBoundsWorldspace.Size; Color = new CCColor3B(0, 0, 0); RemoveChild(Background, true); Background = null; string filename = "Particles/" + title; CCParticleSystemConfig config; if (particleConfigManager.ContainsKey (filename)) config = particleConfigManager [filename]; else { config = new CCParticleSystemConfig(filename, null); particleConfigManager.Add (filename, config); } Emitter = new CCParticleSystemQuad(config); AddChild(Emitter, 10); Emitter.BlendAdditive = true; SetEmitterPosition(); }
public CCParticleSystem(CCParticleSystemConfig particleConfig) : this(particleConfig.MaxParticles, false) { Duration = particleConfig.Duration;; Life = particleConfig.Life; LifeVar = particleConfig.LifeVar; EmissionRate = TotalParticles / Life; Angle = particleConfig.Angle; AngleVar = particleConfig.AngleVar; CCBlendFunc blendFunc = new CCBlendFunc(); blendFunc.Source = particleConfig.BlendFunc.Source; blendFunc.Destination = particleConfig.BlendFunc.Destination; BlendFunc = blendFunc; CCColor4F startColor = new CCColor4F(); startColor.R = particleConfig.StartColor.R; startColor.G = particleConfig.StartColor.G; startColor.B = particleConfig.StartColor.B; startColor.A = particleConfig.StartColor.A; StartColor = startColor; CCColor4F startColorVar = new CCColor4F(); startColorVar.R = particleConfig.StartColorVar.R; startColorVar.G = particleConfig.StartColorVar.G; startColorVar.B = particleConfig.StartColorVar.B; startColorVar.A = particleConfig.StartColorVar.A; StartColorVar = startColorVar; CCColor4F endColor = new CCColor4F(); endColor.R = particleConfig.EndColor.R; endColor.G = particleConfig.EndColor.G; endColor.B = particleConfig.EndColor.B; endColor.A = particleConfig.EndColor.A; EndColor = endColor; CCColor4F endColorVar = new CCColor4F(); endColorVar.R = particleConfig.EndColorVar.R; endColorVar.G = particleConfig.EndColorVar.G; endColorVar.B = particleConfig.EndColorVar.B; endColorVar.A = particleConfig.EndColorVar.A; EndColorVar = endColorVar; StartSize = particleConfig.StartSize; StartSizeVar = particleConfig.StartSizeVar; EndSize = particleConfig.EndSize; EndSizeVar = particleConfig.EndSizeVar; CCPoint position; position.X = particleConfig.Position.X; position.Y = particleConfig.Position.Y; Position = position; CCPoint positionVar; positionVar.X = particleConfig.PositionVar.X; positionVar.Y = particleConfig.PositionVar.X; PositionVar = positionVar; StartSpin = particleConfig.StartSpin; StartSpinVar = particleConfig.StartSpinVar; EndSpin = particleConfig.EndSpin; EndSpinVar = particleConfig.EndSpinVar; EmitterMode = particleConfig.EmitterMode; if (EmitterMode == CCEmitterMode.Gravity) { GravityParticles = new CCParticleGravity[TotalParticles]; GravityMoveMode newGravityMode = new GravityMoveMode(); CCPoint gravity; gravity.X = particleConfig.Gravity.X; gravity.Y = particleConfig.Gravity.Y; newGravityMode.Gravity = gravity; newGravityMode.Speed = particleConfig.GravitySpeed; newGravityMode.SpeedVar = particleConfig.GravitySpeedVar; newGravityMode.RadialAccel = particleConfig.GravityRadialAccel; newGravityMode.RadialAccelVar = particleConfig.GravityRadialAccelVar; newGravityMode.TangentialAccel = particleConfig.GravityTangentialAccel; newGravityMode.TangentialAccelVar = particleConfig.GravityTangentialAccelVar; newGravityMode.RotationIsDir = particleConfig.GravityRotationIsDir; GravityMode = newGravityMode; } else if (EmitterMode == CCEmitterMode.Radius) { RadialParticles = new CCParticleRadial[TotalParticles]; RadialMoveMode newRadialMode = new RadialMoveMode(); newRadialMode.StartRadius = particleConfig.RadialStartRadius; newRadialMode.StartRadiusVar = particleConfig.RadialStartRadiusVar; newRadialMode.EndRadius = particleConfig.RadialEndRadius; newRadialMode.EndRadiusVar = particleConfig.RadialEndRadiusVar; newRadialMode.RotatePerSecond = particleConfig.RadialRotatePerSecond; newRadialMode.RotatePerSecondVar = particleConfig.RadialRotatePerSecondVar; RadialMode = newRadialMode; } else { Debug.Assert(false, "Invalid emitterType in config file"); return; } // Don't get the internal texture if a batchNode is used if (BatchNode == null) { Texture = particleConfig.Texture; } }
void ParticleSystemLoaded(CCParticleSystemConfig psConfig) { label.RemoveFromParent(true); CCParticleSystemQuad ignore = new CCParticleSystemQuad (psConfig); //ignore.TotalParticles = 200; CCNode parent1 = new CCNode (); CCParticleBatchNode parent2 = new CCParticleBatchNode (ignore.Texture); parent1.ContentSize = new CCSize (300.0f, 300.0f); for (int i = 0; i < 2; i++) { CCNode parent = (i == 0 ? parent1 : parent2); CCParticleSystemQuad emitter1 = new CCParticleSystemQuad (psConfig); //emitter1.TotalParticles = 200; emitter1.StartColor = (new CCColor4F (1, 0, 0, 1)); emitter1.BlendAdditive = (false); CCParticleSystemQuad emitter2 = new CCParticleSystemQuad (psConfig); //emitter2.TotalParticles = 200; emitter2.StartColor = (new CCColor4F (0, 1, 0, 1)); emitter2.BlendAdditive = (false); CCParticleSystemQuad emitter3 = new CCParticleSystemQuad (psConfig); //emitter3.TotalParticles = 200; emitter3.StartColor = (new CCColor4F (0, 0, 1, 1)); emitter3.BlendAdditive = (false); CCSize s = Layer.VisibleBoundsWorldspace.Size; int neg = (i == 0 ? 1 : -1); emitter1.Position = (new CCPoint (s.Width / 2 - 30, s.Height / 2 + 60 * neg)); emitter2.Position = (new CCPoint (s.Width / 2, s.Height / 2 + 60 * neg)); emitter3.Position = (new CCPoint (s.Width / 2 + 30, s.Height / 2 + 60 * neg)); parent.AddChild (emitter1, 0, 1); parent.AddChild (emitter2, 0, 2); parent.AddChild (emitter3, 0, 3); AddChild (parent, 10, 1000 + i); } Schedule(ReorderParticles, 1.0f); }
CCParticleSystemConfig AddParticleSystem(string fileConfig, string directoryName, bool loadAsync) { Debug.Assert(!String.IsNullOrEmpty(fileConfig), "ParticleSystemConfigCache: fileConfig MUST not be NULL"); CCParticleSystemConfig psConfig = null; var assetName = fileConfig; if (Path.HasExtension(assetName)) { assetName = CCFileUtils.RemoveExtension(assetName); } lock (dictLock) { configs.TryGetValue(assetName, out psConfig); } if (psConfig == null) { try { psConfig = new CCParticleSystemConfig(fileConfig, directoryName, loadAsync); lock (dictLock) { configs[assetName] = psConfig; } } catch (Exception exc) { CCLog.Log("Error creating configuration: {0}", fileConfig); return null; } } return psConfig; }