public void ReadConfig() { if (effectConfig != null) { Texture t = null; if (configValues != null) { t = configValues.texture; } if (effectConfig.name.ToLower().IndexOf(".pex") > -1) { configValues = PexConfig.ParsePexConfig(effectConfig.ToString()); } else if (effectConfig.name.ToLower().IndexOf(".plist") > -1) { configValues = PlistConfig.ParsePlistConfig(effectConfig.ToString()); } configValues.texture = t; if (Emitter != null) { Emitter.Stop(true); } Init(); effectConfig = null; } }
void OnDestroy() { if (m_Particle2D != null) { m_Particle2D.Destroy(); } material = null; configValues = null; effectConfig = null; }
public void Destroy() { m_Mesh = null; m_Uvs = null; m_transform = null; m_Triangles = null; m_Colors = null; m_particleConfigVO = null; m_Vertices = null; m_Particles = null; }
protected override void OnDestroy() { if (m_Particle2D != null) { m_Particle2D.Destroy(); m_Particle2D = null; } material = null; configValues = null; effectConfig = null; base.OnDestroy(); }
public static Particle2DConfig ParsePlistConfig(string plist) { Particle2DConfig vo = new Particle2DConfig(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(plist); XmlNode root = xmlDoc.SelectSingleNode("plist/dict"); XmlNodeList nodeList = root.ChildNodes; foreach (XmlNode xn in nodeList) { XmlElement xe = (XmlElement)xn; ParseXMLElement(vo, xe); } return(vo); }
public static Particle2DConfig ParsePexConfig(string pex) { pex = pex.ToLower(); Particle2DConfig vo = new Particle2DConfig(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(pex); XmlNode root = xmlDoc.SelectSingleNode("particleemitterconfig"); XmlNodeList nodeList = root.ChildNodes; foreach (XmlNode xn in nodeList) { XmlElement xe = (XmlElement)xn; ParseXMLElement(vo, xe); } return(vo); }
public void SetParticle2DConfigVO(Particle2DConfig config, bool prewarm = false) { m_particleConfigVO = config; if (m_particleConfigVO.isLooop) { emissionTime = float.MaxValue; } else { emissionTime = m_particleConfigVO.defaultDuration; } capacity = m_particleConfigVO.maxParticles; UpdateEmissionRate(); if (Application.isPlaying && prewarm && m_particleConfigVO.isLooop) { float lifespan = m_particleConfigVO.lifespan + m_particleConfigVO.lifespanVariance * (Random.value * 2.0f - 1.0f); if (lifespan < 0f) { lifespan = 0f; } AdvanceTime(lifespan); } }
private static void ParseXMLElement(Particle2DConfig vo, XmlElement config) { if (config.Name.Equals("sourcepositionvariance")) { vo.emitterXVariance = float.Parse(config.GetAttribute("x")); vo.emitterYVariance = float.Parse(config.GetAttribute("y")); } else if (config.Name.Equals("gravity")) { vo.gravityX = float.Parse(config.GetAttribute("x")); vo.gravityY = -float.Parse(config.GetAttribute("y")); } else if (config.Name.Equals("emittertype")) { vo.emitterType = (Particle2D.EmitterType)(int.Parse(config.GetAttribute("value"))); } else if (config.Name.Equals("particlelifespan")) { vo.lifespan = Mathf.Max(0.01f, float.Parse(config.GetAttribute("value"))); } else if (config.Name.Equals("particlelifespanvariance")) { vo.lifespanVariance = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("startparticlesize")) { vo.startSize = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("startparticlesizevariance")) { vo.startSizeVariance = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("finishparticlesize")) { vo.endSize = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("finishparticlesizevariance")) { vo.endSizeVariance = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("angle")) { vo.emitAngle = -Mathf.Deg2Rad * float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("anglevariance")) { vo.emitAngleVariance = -Mathf.Deg2Rad * float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("rotationstart")) { vo.startRotation = -Mathf.Deg2Rad * float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("rotationstartvariance")) { vo.startRotationVariance = -Mathf.Deg2Rad * float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("rotationend")) { vo.endRotation = -Mathf.Deg2Rad * float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("rotationendvariance")) { vo.endRotationVariance = -Mathf.Deg2Rad * float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("speed")) { vo.speed = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("speedvariance")) { vo.speedVariance = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("radialacceleration")) { vo.radialAcceleration = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("radialaccelvariance")) { vo.radialAccelerationVariance = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("tangentialacceleration")) { vo.tangentialAcceleration = -float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("tangentialaccelvariance")) { vo.tangentialAccelerationVariance = -float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("maxradius")) { vo.maxRadius = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("maxradiusvariance")) { vo.maxRadiusVariance = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("minradius")) { vo.minRadius = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("minradiusvariance")) { vo.minRadiusVariance = float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("rotatepersecond")) { vo.rotatePerSecond = Mathf.Deg2Rad * float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("rotatepersecondvariance")) { vo.rotatePerSecondVariance = Mathf.Deg2Rad * float.Parse(config.GetAttribute("value")); } else if (config.Name.Equals("startcolor")) { vo.startColor.r = float.Parse(config.GetAttribute("red")); vo.startColor.g = float.Parse(config.GetAttribute("green")); vo.startColor.b = float.Parse(config.GetAttribute("blue")); vo.startColor.a = float.Parse(config.GetAttribute("alpha")); } else if (config.Name.Equals("startcolorvariance")) { vo.startColorVariance.r = float.Parse(config.GetAttribute("red")); vo.startColorVariance.g = float.Parse(config.GetAttribute("green")); vo.startColorVariance.b = float.Parse(config.GetAttribute("blue")); vo.startColorVariance.a = float.Parse(config.GetAttribute("alpha")); } else if (config.Name.Equals("finishcolor")) { vo.endColor.r = float.Parse(config.GetAttribute("red")); vo.endColor.g = float.Parse(config.GetAttribute("green")); vo.endColor.b = float.Parse(config.GetAttribute("blue")); vo.endColor.a = float.Parse(config.GetAttribute("alpha")); } else if (config.Name.Equals("finishcolorvariance")) { vo.endColorVariance.r = float.Parse(config.GetAttribute("red")); vo.endColorVariance.g = float.Parse(config.GetAttribute("green")); vo.endColorVariance.b = float.Parse(config.GetAttribute("blue")); vo.endColorVariance.a = float.Parse(config.GetAttribute("alpha")); } else if (config.Name.Equals("duration")) { vo.defaultDuration = float.Parse(config.GetAttribute("value")); if (vo.defaultDuration <= 0) { vo.isLooop = true; } } else if (config.Name.Equals("maxparticles")) { vo.maxParticles = Mathf.FloorToInt(float.Parse(config.GetAttribute("value"))); } // else if(config.Name.Equals("blendfuncsource")){ // vo.srcFactor = GetBlendFunc(int.Parse(config.GetAttribute("value"))); // } // else if(config.Name.Equals("blendfuncdestination")){ // vo.dstFactor = GetBlendFunc(int.Parse(config.GetAttribute("value"))); // } // compatibility with future Particle Designer versions // (might fix some of the uppercase/lowercase typos) if (float.IsNaN(vo.endSizeVariance) && config.Name.Equals("finishparticlesizevariance")) { vo.endSizeVariance = float.Parse(config.GetAttribute("value")); } if (float.IsNaN(vo.lifespan) && config.Name.Equals("particlelifespan")) { vo.lifespan = Mathf.Max(0.01f, float.Parse(config.GetAttribute("value"))); } if (float.IsNaN(vo.lifespanVariance) && config.Name.Equals("particlelifespanvariance")) { vo.lifespanVariance = float.Parse(config.GetAttribute("value")); } if (float.IsNaN(vo.minRadiusVariance)) { vo.minRadiusVariance = 0.0f; } }