protected void Register()
        {
            //Register all elements
            foreach (var Element in ChartElements)
            {
                //Register parent (this class) with children who need it
                Element.RegisterParent(this);

                //Get list of types to register
                var Types = Element.RequireRegistration;
                if (Types == null)
                {
                    continue;
                }

                foreach (var SubElement in ChartElements)
                {
                    //Skip self registration
                    if (Element.Equals(SubElement))
                    {
                        continue;
                    }

                    //Register if it is a required type
                    foreach (var RegType in Types)
                    {
                        if (RegType == SubElement.GetType())
                        {
                            Element.Register(SubElement);
                        }
                    }
                }
            }
            RequireRegister = false;
        }
Example #2
0
        public UIElementSelectAndValidate(ActUIElement Act, PlatformInfoBase Platform)
        {
            mAct      = Act;
            mPlatform = Platform;
            InitializeComponent();

            //TODO: Binding of all UI elements
            Value.Init(Context.GetAsContext(mAct.Context), mAct.GetOrCreateInputParam(ActUIElement.Fields.Value), true, false, UCValueExpression.eBrowserType.Folder);
            HandleElementType.BindControl(mAct, ActUIElement.Fields.HandleElementType, Platform.GetPlatformUIElementsType());
            HandleLocateByComboBox.Init(mAct.GetOrCreateInputParam(ActUIElement.Fields.HandleElementLocateBy), Platform.GetPlatformUIElementLocatorsList(), false, null);
            HandleLocatorValue.Init(Context.GetAsContext(mAct.Context), mAct.GetOrCreateInputParam(ActUIElement.Fields.HandleElementLocatorValue), true, false, UCValueExpression.eBrowserType.Folder);

            SubElement.Init(mAct.GetOrCreateInputParam(ActUIElement.Fields.SubElementType), Platform.GetSubElementType(mAct.ElementType).ToList(), false, null);
            SubElementLocateBy.Init(mAct.GetOrCreateInputParam(ActUIElement.Fields.SubElementLocateBy), Platform.GetPlatformUIElementLocatorsList(), false, null);
            SubElementLocatorValue.Init(Context.GetAsContext(mAct.Context), mAct.GetOrCreateInputParam(ActUIElement.Fields.SubElementLocatorValue), true, false, UCValueExpression.eBrowserType.Folder);
            GingerCore.General.ActInputValueBinding(DefineHandleAction, CheckBox.IsCheckedProperty, mAct.GetOrCreateInputParam(ActUIElement.Fields.DefineHandleAction, "False"));
        }
	void ElementOptions(ProFlareElement element,int count){
		
		Rect  r  = EditorGUILayout.BeginVertical("box");
		Rect r2 = r;
	
		r2.height = 20;

		if (GUI.Button(r2, GUIContent.none,dropDownButton))
            element.ElementSetting = element.ElementSetting ? false : true;
        
		GUILayout.Label("Multi Element Options");
        
		if(!element.ElementSetting){
			EditorGUILayout.EndVertical();
			return;
		}
		
		GUILayout.Space(5f);
		
		if(element.type == ProFlareElement.Type.Multi){
            
			EditorGUILayout.BeginHorizontal();
            {
                
                EditorGUILayout.LabelField("Sub Elements Count : "+element.subElements.Count);
                
                if(GUILayout.Button("+")){
                    SubElement sub = new SubElement();
                    
                    sub.random = Random.Range(0f,1f);
                    sub.random2 = Random.Range(0f,1f);
					 
                    sub.RandomScaleSeed = Random.Range(-1f,1f);
                    sub.RandomColorSeedR = Random.Range(-1f,1f);
                    sub.RandomColorSeedG = Random.Range(-1f,1f);
                    sub.RandomColorSeedB = Random.Range(-1f,1f);
                    sub.RandomColorSeedA = Random.Range(-1f,1f);
                    
                    element.subElements.Add(sub);
                     
                    for(int f = 0; f < element.flare.FlareBatches.Length; f++){ 
						element.flare.FlareBatches[f].dirty = true;
					}
                }
                if(GUILayout.Button("-")){
                    //SubElement sub = new SubElement();
                    if(element.subElements.Count > 0){
                        element.subElements.Remove(element.subElements[element.subElements.Count-1]);
                        
                        
                        for(int f = 0; f < element.flare.FlareBatches.Length; f++){ 
							element.flare.FlareBatches[f].dirty = true;
						}
                    }
                }
                
                if(GUILayout.Button("Update Random Seed")){
                    for(int i = 0; i < element.subElements.Count; i++){
                        Updated = true;
                        element.subElements[i].random = Random.Range(0f,1f);
                        element.subElements[i].random2 = Random.Range(0f,1f);
                        element.subElements[i].RandomScaleSeed = Random.Range(-1f,1f);
                        element.subElements[i].RandomColorSeedR = Random.Range(-1f,1f);
                        element.subElements[i].RandomColorSeedG = Random.Range(-1f,1f);
                        element.subElements[i].RandomColorSeedB = Random.Range(-1f,1f);
                        element.subElements[i].RandomColorSeedA = Random.Range(-1f,1f);
                    }
                }
			}
			EditorGUILayout.EndHorizontal();
		}
        EditorGUILayout.EndVertical();
	}
	void ElementEditor(ProFlareElement element,int count){
		
		ProFlareElement.Type elementType;
		
		EditorGUILayout.BeginHorizontal();
		{
            //
			if(GUILayout.Button("      ",thinButton,GUILayout.MaxWidth(35))){
                
			}
			if(GUILayout.Button(" ",thinButton,GUILayout.MaxWidth(32)))
				element.Visible = element.Visible ? false : true;
			
			
			Rect rect2 = GUILayoutUtility.GetLastRect();
			
			int extra = 0;
#if UNITY_4_3
			extra = 15;
#endif
			
			Rect outerRect = new Rect(35+extra,rect2.yMin-4,32,32);
		 	Rect final = new Rect(0,0,1,1);
			
			
			if( visibility_On == null) {
				visibility_On = Resources.Load("visibility-On") as Texture2D;
			}
			if( visibility_Off == null) {
				visibility_Off = Resources.Load("visibility-Off") as Texture2D;
			}
			
			if(element.Visible)
				GUI.DrawTextureWithTexCoords(outerRect,visibility_On, final, true);
			else
				GUI.DrawTextureWithTexCoords(outerRect,visibility_Off, final, true);
			
			_flare._Atlas.UpdateElementNameList();
			
			int id = EditorGUILayout.Popup(element.elementTextureID, _flare._Atlas.elementNameList,enumStyleButton,GUILayout.MaxWidth(200));
			
			
			if(element.elementTextureID != id){
				
				Debug.Log("Changing Sprite " + element.flareAtlas.elementsList[id].name);
				
				element.elementTextureID = id;
				element.SpriteName = element.flareAtlas.elementsList[id].name;
 
				for(int f = 0; f < element.flare.FlareBatches.Length; f++){ 
						element.flare.FlareBatches[f].dirty = true;
				}
			}
			
			
			elementType = (ProFlareElement.Type)EditorGUILayout.EnumPopup(element.type,enumStyleButton,GUILayout.MaxWidth(100));
            
			if(GUILayout.Button("EDIT",thinButton,GUILayout.MaxWidth(80))){
				if(element.Editing)
					element.Editing = false;
				else{
					
                    element.ElementSetting = false;
                    element.OffsetSetting = false;
                    element.ColorSetting = false;
                    element.ScaleSetting = false;
                    element.RotationSetting = false;
					element.OverrideSetting = false;
					
					element.Editing = true;
				}
			}
			
			if(GUILayout.Button("CLONE",thinButton)){
				element.Editing = false;
				_flare.Elements.Add(CloneElement(element));
				//_flare._FlareBatch.dirty = true;
				for(int i = 0; i < _flare.FlareBatches.Length; i++){
					_flare.FlareBatches[i].dirty = true;	
				}
			}
            
			
			if(GUILayout.Button("REMOVE",thinButtonRed)){
				for(int i = 0; i < _flare.FlareBatches.Length; i++){
					_flare.FlareBatches[i].dirty = true;	
				}
//				element.flare._FlareBatch.dirty = true;
				element.flare.Elements.Remove(element);
				return;
			}
		}
		EditorGUILayout.EndHorizontal();
		//Preview Texture Renderer
		{
			int extra = 0;
			#if UNITY_4_3
			extra = 15;
			#endif

			Rect rect2 = GUILayoutUtility.GetLastRect();
			
			Rect outerRect = new Rect(10+extra,rect2.yMin+1,22,22);
			
			if(_flare._Atlas)
				if(_flare._Atlas.texture)
					if((element.elementTextureID < _flare._Atlas.elementsList.Count))
						GUI.DrawTextureWithTexCoords(outerRect, _flare._Atlas.texture, _flare._Atlas.elementsList[element.elementTextureID].UV, false);
		}
        
		{
			if((element.colorTexture == null)||element.colorTextureDirty){
				if(element.useColorRange)
					element.colorTexture = CreateGradientTex(element,element.SubElementColor_Start,element.SubElementColor_End);
				else
					element.colorTexture = CreateGradientTex(element,element.ElementTint,element.ElementTint);
			}

			int extra = 0;
			#if UNITY_4_3
			extra = 15;
			#endif
			
			Rect rect2 = GUILayoutUtility.GetLastRect();
			Rect outerRect = new Rect(3+extra,rect2.yMin+1,6,22);
		 	Rect UV = new Rect(0,0,1,1);
			
			GUI.DrawTextureWithTexCoords(outerRect, element.colorTexture, UV, false);
			
		}
		
		if(element.type != elementType){
			element.type = elementType;
			
			
			switch(elementType){
				case(ProFlareElement.Type.Single):
                    break;
				case(ProFlareElement.Type.Multi):
                    
                    if(element.subElements.Count == 0)
                    {
						for(int i = 0; i < 5; i++){
	                        SubElement sub = new SubElement();
	                        sub.random = Random.Range(0f,1f);
	                        sub.random2 = Random.Range(0f,1f);
	                        sub.RandomColorSeedR = Random.Range(-1f,1f);
	                        sub.RandomColorSeedG = Random.Range(-1f,1f);
	                        sub.RandomColorSeedB = Random.Range(-1f,1f);
	                        element.subElements.Add(sub);
						}
						element.useRangeOffset = true;
						element.Editing = true;
                    }
                    break;
			}
			
			for(int f = 0; f < element.flare.FlareBatches.Length; f++){ 
					element.flare.FlareBatches[f].dirty = true;
			}
		}
		
 		if(element.Editing ){
	  		QuickEdit(element,count);
			
			if(element.type == ProFlareElement.Type.Multi)
 			   	ElementOptions(element,count);
			
 	 	  	OffsetOptions(element,count);
 	 	 	ColorOptions(element,count);
 	 	 	ScaleOptions(element,count);
 	 	 	RotationOptions(element,count);
 	 		OverrideOptions(element,count);
		}
	}
	ProFlareElement CloneElement(ProFlareElement element){
		
		ProFlareElement _element = new ProFlareElement();
		
		_element.Editing = true;
        
        _element.Visible = element.Visible;
        
        _element.elementTextureID = element.elementTextureID;
        
        _element.SpriteName = element.SpriteName;
        
        _element.flare = element.flare;
        
        _element.flareAtlas = element.flareAtlas;
        
        _element.Brightness = element.Brightness;
        _element.Scale = element.Scale;
        _element.ScaleRandom = element.ScaleRandom;
        _element.ScaleFinal = element.ScaleFinal;
        
        _element.RandomColorAmount = element.RandomColorAmount;
        
        //Element OffSet Properties
        _element.position = element.position;
        
        _element.useRangeOffset = element.useRangeOffset;
        
        _element.SubElementPositionRange_Min = element.SubElementPositionRange_Min;
        _element.SubElementPositionRange_Max = element.SubElementPositionRange_Max;
        
        _element.SubElementAngleRange_Min = element.SubElementAngleRange_Min;
        _element.SubElementAngleRange_Max = element.SubElementAngleRange_Max;
        
        
        _element.OffsetPosition = element.OffsetPosition;
        
        _element.Anamorphic = element.Anamorphic;
        
        _element.OffsetPostion = element.OffsetPostion;
        
        _element.angle = element.angle;
        _element.FinalAngle = element.FinalAngle;
        _element.useRandomAngle = element.useRandomAngle;
        _element.useStarRotation = element.useStarRotation;
        _element.AngleRandom_Min = element.AngleRandom_Min;
        _element.AngleRandom_Max = element.AngleRandom_Max;
        _element.OrientToSource = element.OrientToSource;
        _element.rotateToFlare = element.rotateToFlare;
        _element.rotationSpeed = element.rotationSpeed;
        _element.rotationOverTime = element.rotationOverTime;
        
        _element.useColorRange = element.useColorRange;
        
        _element.ElementFinalColor = element.ElementFinalColor;
        
        _element.ElementTint = element.ElementTint;
        
        _element.SubElementColor_Start = element.SubElementColor_Start;
        _element.SubElementColor_End = element.SubElementColor_End;
        
        _element.useScaleCurve = element.useScaleCurve;
        _element.ScaleCurve = new AnimationCurve(element.ScaleCurve.keys);
        
	
        _element.OverrideDynamicEdgeBoost = element.OverrideDynamicEdgeBoost;
        _element.DynamicEdgeBoostOverride = element.DynamicEdgeBoostOverride;
        
        _element.OverrideDynamicCenterBoost = element.OverrideDynamicCenterBoost;
        _element.DynamicCenterBoostOverride = element.DynamicCenterBoostOverride;
        
        _element.OverrideDynamicEdgeBrightness = element.OverrideDynamicEdgeBrightness;
        _element.DynamicEdgeBrightnessOverride = element.DynamicEdgeBrightnessOverride;
        
        _element.OverrideDynamicCenterBrightness = element.OverrideDynamicCenterBrightness;
        _element.DynamicCenterBrightnessOverride = element.DynamicCenterBrightnessOverride;
        
        _element.size = element.size;
        
        for(int i = 0; i < element.subElements.Count; i++){
            
            SubElement Sub = new SubElement();
            
            Sub.color = element.subElements[i].color;
            Sub.position = element.subElements[i].position;
            Sub.offset = element.subElements[i].offset;
            Sub.angle = element.subElements[i].angle;
            Sub.scale = element.subElements[i].scale;
            Sub.random = element.subElements[i].random;
            Sub.random2= element.subElements[i].random2;
            
			
            Sub.RandomScaleSeed = element.subElements[i].RandomScaleSeed;
            Sub.RandomColorSeedR = element.subElements[i].RandomColorSeedR;
            Sub.RandomColorSeedG = element.subElements[i].RandomColorSeedG;
            Sub.RandomColorSeedB = element.subElements[i].RandomColorSeedB;
            Sub.RandomColorSeedA = element.subElements[i].RandomColorSeedA;
			
            _element.subElements.Add(Sub);
        }
        
        _element.type = element.type;
		
		return  _element;
		
	}
Example #6
0
    public static void LoadFlareData(ProFlare flare, TextAsset asset)
    {
        string jsonString = asset.text;

//		Debug.Log ("LoadFlareData");

        Hashtable decodedHash = jsonDecode(jsonString) as Hashtable;

        if (decodedHash == null)
        {
            Debug.LogWarning("Unable to parse Json file: " + asset.name);
            return;
        }

        Hashtable meta = (Hashtable)decodedHash["meta"];

        flare.GlobalScale = float.Parse(meta["GlobalScale"].ToString());

        flare.GlobalBrightness = float.Parse(meta["GlobalBrightness"].ToString());

        flare.GlobalTintColor = FlareJson.decodeColor((Hashtable)meta["GlobalTintColor"]);

        flare.MultiplyScaleByTransformScale = FlareJson.decodeBool(meta["MultiplyScaleByTransformScale"].ToString());

        //Distance Fall off
        flare.useMaxDistance = FlareJson.decodeBool(meta["useMaxDistance"].ToString());

        flare.useDistanceScale = FlareJson.decodeBool(meta["useDistanceScale"].ToString());

        flare.useDistanceFade = FlareJson.decodeBool(meta["useDistanceFade"].ToString());

        flare.GlobalMaxDistance = float.Parse(meta["GlobalMaxDistance"].ToString());


        //Angle Culling Properties
        flare.UseAngleLimit = FlareJson.decodeBool(meta["UseAngleLimit"].ToString());

        flare.maxAngle = float.Parse(meta["maxAngle"].ToString());

        flare.UseAngleScale = FlareJson.decodeBool(meta["UseAngleScale"].ToString());

        flare.UseAngleBrightness = FlareJson.decodeBool(meta["UseAngleBrightness"].ToString());

        flare.UseAngleCurve = FlareJson.decodeBool(meta["UseAngleCurve"].ToString());

        flare.AngleCurve = FlareJson.decodeAnimCurve((Hashtable)meta ["AngleCurve"]);

        //			public LayerMask mask = 1;

        flare.RaycastPhysics = FlareJson.decodeBool(meta["RaycastPhysics"].ToString());

        flare.OffScreenFadeDist = float.Parse(meta["OffScreenFadeDist"].ToString());

        flare.useDynamicEdgeBoost = FlareJson.decodeBool(meta["useDynamicEdgeBoost"].ToString());

        flare.DynamicEdgeBoost = float.Parse(meta["DynamicEdgeBoost"].ToString());

        flare.DynamicEdgeBrightness = float.Parse(meta["DynamicEdgeBrightness"].ToString());

        flare.DynamicEdgeRange = float.Parse(meta["DynamicEdgeRange"].ToString());

        flare.DynamicEdgeBias = float.Parse(meta["DynamicEdgeBias"].ToString());

        flare.DynamicEdgeCurve = FlareJson.decodeAnimCurve((Hashtable)meta ["DynamicEdgeCurve"]);

        flare.useDynamicCenterBoost = FlareJson.decodeBool(meta["useDynamicCenterBoost"].ToString());

        flare.DynamicCenterBoost = float.Parse(meta["DynamicCenterBoost"].ToString());

        flare.DynamicCenterBrightness = float.Parse(meta["DynamicCenterBrightness"].ToString());

        flare.DynamicCenterRange = float.Parse(meta["DynamicCenterRange"].ToString());

        flare.DynamicCenterBias = float.Parse(meta["DynamicCenterBias"].ToString());

        flare.neverCull = FlareJson.decodeBool(meta["neverCull"].ToString());

        flare.Elements.Clear();

        Hashtable elements = (Hashtable)meta["Elements"];

        foreach (System.Collections.DictionaryEntry item in elements)
        {
            Hashtable element = (Hashtable)elements[item.Key];

            ProFlareElement elementNew = new ProFlareElement();

            elementNew.Editing = FlareJson.decodeBool(element["Editing"].ToString());

            elementNew.Visible = FlareJson.decodeBool(element["Visible"].ToString());

            elementNew.SpriteName = element["SpriteName"].ToString();

            elementNew.flare = flare;

            elementNew.flareAtlas = flare._Atlas;

            elementNew.Brightness = float.Parse(element["Brightness"].ToString());

            elementNew.Scale = float.Parse(element["Scale"].ToString());

            elementNew.ScaleRandom = float.Parse(element["ScaleRandom"].ToString());

            elementNew.ScaleFinal = float.Parse(element["ScaleFinal"].ToString());

            elementNew.RandomColorAmount = FlareJson.decodeVector4((Hashtable)element["RandomColorAmount"]);

//			//Element OffSet Properties
            elementNew.position = float.Parse(element["position"].ToString());

            elementNew.useRangeOffset = FlareJson.decodeBool(element["useRangeOffset"].ToString());

            elementNew.SubElementPositionRange_Min = float.Parse(element["SubElementPositionRange_Min"].ToString());

            elementNew.SubElementPositionRange_Max = float.Parse(element["SubElementPositionRange_Max"].ToString());

            elementNew.SubElementAngleRange_Min = float.Parse(element["SubElementAngleRange_Min"].ToString());

            elementNew.SubElementAngleRange_Max = float.Parse(element["SubElementAngleRange_Max"].ToString());

            elementNew.OffsetPosition = FlareJson.decodeVector3((Hashtable)element["OffsetPosition"]);

            elementNew.Anamorphic = FlareJson.decodeVector3((Hashtable)element["Anamorphic"]);

            elementNew.OffsetPostion = FlareJson.decodeVector3((Hashtable)element["OffsetPostion"]);

//			//Element Rotation Properties
            elementNew.angle = float.Parse(element["angle"].ToString());

            elementNew.useRandomAngle = FlareJson.decodeBool(element["useRandomAngle"].ToString());

            elementNew.useStarRotation = FlareJson.decodeBool(element["useStarRotation"].ToString());

            elementNew.AngleRandom_Min = float.Parse(element["AngleRandom_Min"].ToString());

            elementNew.AngleRandom_Max = float.Parse(element["AngleRandom_Max"].ToString());

            elementNew.OrientToSource = FlareJson.decodeBool(element["OrientToSource"].ToString());

            elementNew.rotateToFlare = FlareJson.decodeBool(element["rotateToFlare"].ToString());

            elementNew.rotationSpeed = float.Parse(element["rotationSpeed"].ToString());

            elementNew.rotationOverTime = float.Parse(element["rotationOverTime"].ToString());

//			//Colour Properties,
            elementNew.useColorRange = FlareJson.decodeBool(element["useColorRange"].ToString());

            elementNew.OffsetPosition = FlareJson.decodeVector3((Hashtable)element["OffsetPosition"]);

            elementNew.ElementTint = FlareJson.decodeColor((Hashtable)element["ElementTint"]);

            elementNew.SubElementColor_Start = FlareJson.decodeColor((Hashtable)element["SubElementColor_Start"]);

            elementNew.SubElementColor_End = FlareJson.decodeColor((Hashtable)element["SubElementColor_End"]);

//			//Scale Curve
            elementNew.useScaleCurve = FlareJson.decodeBool(element["useScaleCurve"].ToString());

            elementNew.ScaleCurve = FlareJson.decodeAnimCurve((Hashtable)element ["ScaleCurve"]);

//			//Override Properties
            elementNew.OverrideDynamicEdgeBoost = FlareJson.decodeBool(element["OverrideDynamicEdgeBoost"].ToString());

            elementNew.DynamicEdgeBoostOverride = float.Parse(element["DynamicEdgeBoostOverride"].ToString());

            elementNew.OverrideDynamicCenterBoost = FlareJson.decodeBool(element["OverrideDynamicCenterBoost"].ToString());

            elementNew.DynamicCenterBoostOverride = float.Parse(element["DynamicCenterBoostOverride"].ToString());

            elementNew.OverrideDynamicEdgeBrightness = FlareJson.decodeBool(element["OverrideDynamicEdgeBrightness"].ToString());

            elementNew.DynamicEdgeBrightnessOverride = float.Parse(element["DynamicEdgeBrightnessOverride"].ToString());

            elementNew.OverrideDynamicCenterBrightness = FlareJson.decodeBool(element["OverrideDynamicCenterBrightness"].ToString());

            elementNew.DynamicCenterBrightnessOverride = float.Parse(element["DynamicCenterBrightnessOverride"].ToString());

            elementNew.type = (ProFlareElement.Type)(int.Parse(element["type"].ToString()));


            elementNew.size = FlareJson.decodeVector2((Hashtable)element["size"]);

            Hashtable subElements = (Hashtable)element["subElements"];

            if (subElements != null)
            {
                foreach (System.Collections.DictionaryEntry subItem in subElements)
                {
                    Hashtable subElement = (Hashtable)subElements[subItem.Key];

                    SubElement subElementNew = new SubElement();

                    subElementNew.color = FlareJson.decodeColor((Hashtable)subElement["color"]);

                    subElementNew.position = float.Parse(subElement["position"].ToString());

                    subElementNew.offset = FlareJson.decodeVector3((Hashtable)subElement["offset"]);

                    subElementNew.angle = float.Parse(subElement["angle"].ToString());

                    subElementNew.scale = float.Parse(subElement["scale"].ToString());

                    subElementNew.random = float.Parse(subElement["random"].ToString());

                    subElementNew.random2 = float.Parse(subElement["random2"].ToString());

                    subElementNew.RandomScaleSeed = float.Parse(subElement["RandomScaleSeed"].ToString());

                    subElementNew.RandomColorSeedR = float.Parse(subElement["RandomColorSeedR"].ToString());

                    subElementNew.RandomColorSeedG = float.Parse(subElement["RandomColorSeedG"].ToString());

                    subElementNew.RandomColorSeedB = float.Parse(subElement["RandomColorSeedB"].ToString());

                    subElementNew.RandomColorSeedA = float.Parse(subElement["RandomColorSeedA"].ToString());

                    elementNew.subElements.Add(subElementNew);
                }
            }

            bool Found = false;

            for (int i2 = 0; i2 < flare._Atlas.elementsList.Count; i2++)
            {
                if (elementNew.SpriteName == flare._Atlas.elementsList[i2].name)
                {
                    Found = true;
                    elementNew.elementTextureID = i2;
                }
            }

            if (Found)
            {
                flare.Elements.Add(elementNew);
            }
            else
            {
                Debug.LogWarning("ProFlares - Flare Element Missing From Atlas Not Adding - " + elementNew.SpriteName);
            }
        }

        foreach (ProFlareBatch batch in flare.FlareBatches)
        {
            batch.dirty = true;
        }
    }