| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422 | /// ProFlares - v1.08 - Copyright 2014-2015 All rights reserved - ProFlares.com/// <summary>/// ProFlareInspector.cs/// Custom inspector for the ProFlare/// </summary> using UnityEngine;using UnityEditor;using System.Collections;using System.Collections.Generic;[CanEditMultipleObjects][CustomEditor(typeof(ProFlare))]public class ProFlareInspector : Editor {		ProFlare _flare;		GUIStyle title;		GUIStyle thinButton;		GUIStyle thinButtonRed;		GUIStyle dropDownButton;		GUIStyle enumStyleButton;		private static Texture2D visibility_On;		private static Texture2D visibility_Off;		bool listeningForGuiChanges;		bool guiChanged = false;		int selectionCount = 0;		private void CheckUndo()    {		Event e = Event.current;			if ( e.type == EventType.MouseDown && e.button == 0 || e.type == EventType.KeyUp && ( e.keyCode == KeyCode.Tab ) ) {			//Debug.Log("record2");			Undo.RegisterCompleteObjectUndo(target, "Undo ProFlare Change");			Undo.FlushUndoRecordObjects();			listeningForGuiChanges = true;			guiChanged = false;		}				else if ( listeningForGuiChanges && guiChanged ) {			//Debug.Log("record2");			listeningForGuiChanges = false;			Undo.RegisterCompleteObjectUndo(target, "Undo ProFlare Change");			Undo.FlushUndoRecordObjects();		}    }		public List<ProFlare> Flares = new List<ProFlare>();		public override void OnInspectorGUI () {				selectionCount = 0;		//base.DrawDefaultInspector();		Flares.Clear();				foreach(GameObject go in Selection.gameObjects){					ProFlare selectedFlare = go.GetComponent<ProFlare>();			if(selectedFlare){				Flares.Add(selectedFlare);				selectionCount++;			}		}				if(selectionCount > 1){			EditorGUILayout.HelpBox("Multiple Flares selected.", MessageType.Warning,false);			//EditorGUI.showMixedValue = true;		}				_flare = target as ProFlare;		        CheckUndo();//#if UNITY_4_3		EditorGUI.BeginChangeCheck();//#endif				FlareEditorHelper.DrawGuiDivider();				bool error = false;				title =  FlareEditorHelper.TitleStyle();		thinButton = FlareEditorHelper.ThinButtonStyle();		enumStyleButton = FlareEditorHelper.EnumStyleButton();		thinButtonRed = FlareEditorHelper.ThinButtonRedStyle();						EditorGUILayout.LabelField("Flare Setup :",title);				GUILayout.Space(10f);				dropDownButton = FlareEditorHelper.DropDownButtonStyle();			 		if(selectionCount <= 1)		{		EditorGUILayout.BeginHorizontal();		if((!_flare.EditingAtlas)&&(_flare._Atlas != null))			GUI.enabled = false;				ProFlareAtlas _Atlas = EditorGUILayout.ObjectField("Flare Atlas", _flare._Atlas, typeof(ProFlareAtlas), false) as ProFlareAtlas;				GUI.enabled = true;				if(_flare._Atlas)			if(GUILayout.Button("EDIT",GUILayout.Width(60))){				_flare.EditingAtlas = 	_flare.EditingAtlas ? false : true;					}	 		EditorGUILayout.EndHorizontal();				if((_flare.EditingAtlas)&&(_flare._Atlas != null)){						EditorGUILayout.HelpBox("Changing atlas can cause data loss if elements do NOT exist in the new atlas.", MessageType.Warning,false);		}				GUI.enabled = true;				if(_flare._Atlas != _Atlas){            			_flare._Atlas = _Atlas;            			ProFlareBatch[] flareBatchs = GameObject.FindObjectsOfType(typeof(ProFlareBatch)) as ProFlareBatch[];						int matchCount = 0;			foreach(ProFlareBatch flareBatch in flareBatchs){				if(flareBatch._atlas == _Atlas){					matchCount++;				}			}			_flare.FlareBatches = new ProFlareBatch[matchCount];			int count = 0;			foreach(ProFlareBatch flareBatch in flareBatchs){				if(flareBatch._atlas == _Atlas){					_flare.FlareBatches[count] = flareBatch;					_flare.FlareBatches[count].dirty = true;					count++;				}			}			if(count != 0){				if(_flare.Elements.Count == 0){						ProFlareElement element = new ProFlareElement();						element.flare = _flare;						element.SpriteName = _flare._Atlas.elementsList[0].name;						element.flareAtlas = _flare._Atlas;						element.position = -1;						element.Scale = 1;						_flare.Elements.Add(element);				}			}		}				 		bool missing = false;		for(int i = 0; i < _flare.FlareBatches.Length; i++){					if(_flare.FlareBatches[i] == null)				missing = true;		}		if(missing){					ProFlareBatch[] flareBatchs = GameObject.FindObjectsOfType(typeof(ProFlareBatch)) as ProFlareBatch[];						int matchCount = 0;			foreach(ProFlareBatch flareBatch in flareBatchs){				if(flareBatch._atlas == _Atlas){					matchCount++;				}			}			_flare.FlareBatches = new ProFlareBatch[matchCount];			int count = 0;			foreach(ProFlareBatch flareBatch in flareBatchs){				if(flareBatch._atlas == _Atlas){					_flare.FlareBatches[count] = flareBatch;					_flare.FlareBatches[count].dirty = true;					count++;				}			}		}				EditorGUILayout.LabelField("Rendered by : ");		if(_flare.FlareBatches.Length != 0)			for(int i = 0; i < _flare.FlareBatches.Length; i++){			EditorGUILayout.BeginHorizontal();				EditorGUILayout.LabelField("   "+_flare.FlareBatches[i].gameObject.name); 			if(GUILayout.Button("Select",GUILayout.Width(60))){ 					Selection.activeGameObject = _flare.FlareBatches[i].gameObject;			}			EditorGUILayout.EndHorizontal();			}				if(error){			EditorGUILayout.HelpBox("Fix Errors before continuing.", MessageType.Error);		}		}		FlareEditorHelper.DrawGuiDivider();				EditorGUILayout.LabelField("Global Settings :",title);		GUILayout.Space(10f);				Rect  r  = EditorGUILayout.BeginVertical("box");		{			Rect r2 = r;			r2.height = 20;            			if (GUI.Button(r2, GUIContent.none,dropDownButton))				_flare.EditGlobals = _flare.EditGlobals ? false : true;					 	GUILayout.Label("General");                        if(_flare.EditGlobals){								GUILayout.Space(5f);								//Scale				float _flareGlobalScale = EditorGUILayout.Slider("Scale",_flare.GlobalScale,0f,2000f);								if(_flareGlobalScale != _flare.GlobalScale){										_flare.GlobalScale = _flareGlobalScale;										foreach(ProFlare flare in Flares){						flare.GlobalScale = _flare.GlobalScale;					}				}								_flare.MultiplyScaleByTransformScale = EditorGUILayout.Toggle("Multiply Scale By Transform Scale",_flare.MultiplyScaleByTransformScale);				float _flareGlobalBrightness = EditorGUILayout.Slider("Brightness",_flare.GlobalBrightness,0f,1f);                				if(_flareGlobalBrightness != _flare.GlobalBrightness){					_flare.GlobalBrightness = _flareGlobalBrightness;					_flare.GlobalTintColor.a = _flare.GlobalBrightness;										foreach(ProFlare flare in Flares){						flare.GlobalBrightness = _flareGlobalBrightness;						flare.GlobalTintColor.a = _flare.GlobalBrightness;					}				}								Color _flareGlobalTintColor = EditorGUILayout.ColorField("Tint",_flare.GlobalTintColor);								if(_flareGlobalTintColor != _flare.GlobalTintColor){					_flare.GlobalTintColor = _flareGlobalTintColor;					_flare.GlobalBrightness = _flare.GlobalTintColor.a;										foreach(ProFlare flare in Flares){						flare.GlobalTintColor = _flareGlobalTintColor;						flare.GlobalBrightness = _flare.GlobalTintColor.a;					}				}				FlareEditorHelper.DrawGuiInBoxDivider();				bool currentSunState = _flare.sunMode;				_flare.sunMode = EditorGUILayout.Toggle("Sun Mode",_flare.sunMode);				if(_flare.sunMode && ((_flare.sunModeTransformA == null)||_flare.sunModeTransformA == null)){										if(_flare.sunModeTransformA)						DestroyImmediate(_flare.sunModeTransformA);					if(_flare.sunModeTransformB)						DestroyImmediate(_flare.sunModeTransformB);					_flare.setupSunMode();				}				if(currentSunState &&(_flare.sunMode == false)){					if(_flare.sunModeTransformA){						DestroyImmediate(_flare.sunModeTransformA.gameObject);						_flare.sunModeTransformA = null;					}					if(_flare.sunModeTransformB){						DestroyImmediate(_flare.sunModeTransformB.gameObject);						_flare.sunModeTransformB = null;					}				}				FlareEditorHelper.DrawGuiInBoxDivider();                				//Angle Falloff Options				if(selectionCount <= 1){				GUILayout.BeginHorizontal();				{					_flare.UseAngleLimit = EditorGUILayout.Toggle("Use Angle Falloff",_flare.UseAngleLimit);					GUI.enabled = _flare.UseAngleLimit;					_flare.maxAngle =  Mathf.Clamp(EditorGUILayout.FloatField("Max Angle",_flare.maxAngle),0,360);				}				GUILayout.EndHorizontal();								_flare.UseAngleScale = EditorGUILayout.Toggle("  Affect Scale",_flare.UseAngleScale);								_flare.UseAngleBrightness = EditorGUILayout.Toggle("  Affect Brightness",_flare.UseAngleBrightness);								GUILayout.BeginHorizontal();				{					_flare.UseAngleCurve = EditorGUILayout.Toggle("  Use Curve",_flare.UseAngleCurve);					GUI.enabled = _flare.UseAngleCurve;					_flare.AngleCurve = EditorGUILayout.CurveField(_flare.AngleCurve);					if(GUILayout.Button("Reset",GUILayout.MaxWidth(50))){ _flare.AngleCurve = new AnimationCurve(new Keyframe(0, 0f), new Keyframe(1, 1.0f));}					GUI.enabled = true;				}				GUILayout.EndHorizontal();				GUI.enabled = true;                				FlareEditorHelper.DrawGuiInBoxDivider();				//Max Distance Options -				GUILayout.BeginHorizontal();				{					_flare.useMaxDistance = EditorGUILayout.Toggle("Use Distance Falloff",_flare.useMaxDistance);					GUI.enabled = _flare.useMaxDistance;					_flare.GlobalMaxDistance = EditorGUILayout.FloatField("  Max Distance",_flare.GlobalMaxDistance);				}				GUILayout.EndHorizontal();				_flare.useDistanceScale = EditorGUILayout.Toggle("  Affect Scale",_flare.useDistanceScale);				_flare.useDistanceFade = EditorGUILayout.Toggle("  Affect Brightness",_flare.useDistanceFade);                				                GUI.enabled = true;				FlareEditorHelper.DrawGuiInBoxDivider();				_flare.OffScreenFadeDist = EditorGUILayout.FloatField("Off Screen Fade Distance",_flare.OffScreenFadeDist);									FlareEditorHelper.DrawGuiInBoxDivider();				 _flare.neverCull = EditorGUILayout.Toggle("Never Cull Flare",_flare.neverCull);				}			}		}				EditorGUILayout.EndVertical();						if(selectionCount <= 1)		{			r  = EditorGUILayout.BeginVertical("box");			Rect r2 = r;			r2.height = 20;                        			if (GUI.Button(r2, GUIContent.none,dropDownButton))				_flare.EditDynamicTriggering = _flare.EditDynamicTriggering ? false : true;			            		 	GUILayout.Label("Dynamics Triggering");						if(_flare.EditDynamicTriggering){GUILayout.Space(5f);								_flare.useDynamicEdgeBoost = EditorGUILayout.Toggle("Use Dynamic Edge Boost",_flare.useDynamicEdgeBoost);				GUI.enabled = _flare.useDynamicEdgeBoost;				_flare.DynamicEdgeBoost = EditorGUILayout.FloatField("  Dynamic Edge Scale",_flare.DynamicEdgeBoost);				_flare.DynamicEdgeBrightness = EditorGUILayout.FloatField("  Dynamic Edge Brightness",_flare.DynamicEdgeBrightness);				_flare.DynamicEdgeRange = EditorGUILayout.FloatField("  Dynamic Edge Range",_flare.DynamicEdgeRange);				_flare.DynamicEdgeBias = EditorGUILayout.FloatField("  Dynamic Edge Bias",_flare.DynamicEdgeBias);								GUILayout.BeginHorizontal();				{                    _flare.DynamicEdgeCurve = EditorGUILayout.CurveField("  Dynamic Edge Curve", _flare.DynamicEdgeCurve);                    if(GUILayout.Button("Reset",GUILayout.MaxWidth(50))) _flare.DynamicEdgeCurve = new AnimationCurve(new Keyframe(0, 0f), new Keyframe(0.5f, 1), new Keyframe(1, 0f));				}				GUILayout.EndHorizontal();				GUI.enabled = true;				FlareEditorHelper.DrawGuiInBoxDivider();								_flare.useDynamicCenterBoost = EditorGUILayout.Toggle("Use Dynamic Center Boost",_flare.useDynamicCenterBoost);								GUI.enabled = _flare.useDynamicCenterBoost;				_flare.DynamicCenterRange = EditorGUILayout.FloatField("  Dynamic Center Range",_flare.DynamicCenterRange);				_flare.DynamicCenterBoost = EditorGUILayout.FloatField("  Dynamic Center Scale",_flare.DynamicCenterBoost);				_flare.DynamicCenterBrightness = EditorGUILayout.FloatField("  Dynamic Center Brightness",_flare.DynamicCenterBrightness);								GUI.enabled = true;			}						EditorGUILayout.EndVertical();		}						if(selectionCount <= 1)		{			r  = EditorGUILayout.BeginVertical("box");			Rect r2 = r;			r2.height = 20;									if (GUI.Button(r2, GUIContent.none,dropDownButton))				_flare.EditOcclusion = _flare.EditOcclusion ? false : true;									GUILayout.Label("Occlusion");						if(_flare.EditOcclusion){GUILayout.Space(5f);				_flare.RaycastPhysics = EditorGUILayout.Toggle("Raycast Against Physics",_flare.RaycastPhysics);				GUI.enabled = _flare.RaycastPhysics;				_flare.mask = LayerMaskField(_flare.mask);								FlareEditorHelper.DrawGuiInBoxDivider();				EditorGUILayout.LabelField("Debug Info :");				EditorGUILayout.Toggle("  Flare Occluded",_flare.Occluded);				EditorGUILayout.ObjectField("  Occluding GameObject", _flare.OccludingObject, typeof(GameObject), true);				FlareEditorHelper.DrawGuiInBoxDivider();				GUI.enabled = true;				_flare.pixelBasedOcclusion = EditorGUILayout.Toggle("Pixel Based Occlusion - BETA",_flare.pixelBasedOcclusion);				GUI.enabled = _flare.pixelBasedOcclusion;								_flare.pixelLayerMask = LayerMaskField(_flare.pixelLayerMask);				//_flare.pixelMask2 = LayerMaskField(_flare.pixelMask2);				//_flare.pixelMask3 = LayerMaskField(_flare.pixelMask3);				//_flare.pixelMask4 = LayerMaskField(~(1<<8));				GUI.enabled = true;								_flare.occlusionScaleSpeed = EditorGUILayout.FloatField("  Occlusion Scale Speed",_flare.occlusionScaleSpeed);				_flare.occlusionBrightnessSpeed = EditorGUILayout.FloatField("  Occlusion Brightness Speed",_flare.occlusionBrightnessSpeed);			}			EditorGUILayout.EndVertical();		}				if(selectionCount <= 1)		{			r  = EditorGUILayout.BeginVertical("box");			Rect r2 = r;			r2.height = 20;									if (GUI.Button(r2, GUIContent.none,dropDownButton))				_flare.IoSetting = _flare.IoSetting ? false : true;									GUILayout.Label("Import/Export");						if(_flare.IoSetting){GUILayout.Space(5f);				if(_flare._Atlas != null){					TextAsset ta = EditorGUILayout.ObjectField("Flare JSON Import, Drag/Drop Here", null, typeof(TextAsset), false) as TextAsset;										if (ta != null)					{						FlareJson.LoadFlareData(_flare, ta);						Updated = true;					}										if(GUILayout.Button("Export Flare Json Data")){						ProFlareExporter.ExportFlare(_flare);					}				}else{					GUILayout.Label("Connect Flare Atlast Before Import Or Exporting Flare.");				}			}			EditorGUILayout.EndVertical();		}								FlareEditorHelper.DrawGuiDivider();				EditorGUILayout.LabelField("Element Settings :",title);		GUILayout.Space(10f);				if(selectionCount > 1){			EditorGUILayout.HelpBox("Editing flare elements is not supported in while multiple flares selected.", MessageType.Warning,false);		}else{		 	if(_flare._Atlas != null)	            for(int i = 0; i < _flare.Elements.Count;i++)	                ElementEditor(_flare.Elements[i],(i+1));									if(_flare._Atlas != null)			if(GUILayout.Button("ADD NEW",thinButton)){				ProFlareElement element = new ProFlareElement();								element.flare = _flare;				element.SpriteName = _flare._Atlas.elementsList[0].name;				element.flareAtlas = _flare._Atlas;				element.position = -1;				element.Scale = 1;								for(int i = 0; i < _flare.FlareBatches.Length; i++){					_flare.FlareBatches[i].dirty = true;				}				//_flare._FlareBatch.dirty = true;				_flare.Elements.Add(element);			}		}		FlareEditorHelper.DrawGuiDivider();        		if (GUI.changed||Updated)        {			//Debug.Log("dirty:");			Updated = false;			guiChanged = true;            EditorUtility.SetDirty (target);						if(selectionCount > 1)				foreach(GameObject go in Selection.gameObjects){							ProFlare selectedFlare = go.GetComponent<ProFlare>();					if(selectedFlare)						EditorUtility.SetDirty(selectedFlare);				}        }		if (EditorGUI.EndChangeCheck())		{			//Debug.Log("Change");			//Undo.RegisterCompleteObjectUndo(target, "Changed Area Of Effect");			//t.areaOfEffect = areaOfEffect;			//Undo.FlushUndoRecordObjects();		}		//EditorGUI.EndChangeCheck();	}		public bool Updated = false;    		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 = 15;#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 = 15;			#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 = 15;			#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);		}	}		void QuickEdit(ProFlareElement element,int count){        		EditorGUILayout.BeginVertical("box");        		EditorGUILayout.BeginHorizontal();        {            GUILayout.Label("Quick Edit -",GUILayout.MaxWidth(80));                        element.Scale = EditorGUILayout.Slider(element.Scale,0f,5f,GUILayout.MaxWidth(180));			GUILayout.FlexibleSpace();            if(!element.useColorRange){                element.ElementTint = EditorGUILayout.ColorField(element.ElementTint,GUILayout.MaxWidth(60));                                if(GUI.changed)                    element.colorTextureDirty = true;                              //  byte TintA = (byte)EditorGUILayout.Slider(element.Tint.a,0f,1f,GUILayout.MaxWidth(180));				              //  if(TintA != element.Tint.a){              //      element.Tint.a = TintA;              //  }								float TintA = EditorGUILayout.Slider(element.ElementTint.a,0f,1f,GUILayout.MaxWidth(180));				                 if(TintA != element.ElementTint.a){                     element.ElementTint.a = TintA;                 }                            }else{                element.SubElementColor_Start = EditorGUILayout.ColorField(element.SubElementColor_Start,GUILayout.MaxWidth(60));                element.SubElementColor_End = EditorGUILayout.ColorField(element.SubElementColor_End,GUILayout.MaxWidth(60));                if(GUI.changed)                    element.colorTextureDirty = true;                                for(int i = 0; i < element.subElements.Count; i++){                    element.subElements[i].color =	Color.Lerp(element.SubElementColor_Start,element.SubElementColor_End,element.subElements[i].random);                }            }		}				EditorGUILayout.EndHorizontal();				EditorGUILayout.EndVertical();	}		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 ColorOptions(ProFlareElement element,int count){        		Rect  r  = EditorGUILayout.BeginVertical("box");		Rect r2 = r;		r2.height = 20;						if (GUI.Button(r2, GUIContent.none,dropDownButton))            element.ColorSetting = element.ColorSetting ? false : true;        				GUILayout.Label("Color Options");		{						if(element.ColorSetting){				GUILayout.Space(5f);                if(element.type == ProFlareElement.Type.Single){                    element.ElementTint = EditorGUILayout.ColorField("Tint",element.ElementTint);                    				}else{                    					EditorGUILayout.BeginHorizontal();                    {                                                element.useColorRange = EditorGUILayout.Toggle("Use Color Tint Range",element.useColorRange);                                                if(!element.useColorRange){                            element.ElementTint = EditorGUILayout.ColorField("Tint",element.ElementTint);                        }else{                            element.SubElementColor_Start = EditorGUILayout.ColorField(element.SubElementColor_Start);                            element.SubElementColor_End = EditorGUILayout.ColorField(element.SubElementColor_End);                        }					}					EditorGUILayout.EndHorizontal();										EditorGUILayout.LabelField("Color Random");					element.RandomColorAmount.x = EditorGUILayout.Slider("  R",element.RandomColorAmount.x,0f,1f);					element.RandomColorAmount.y = EditorGUILayout.Slider("  G",element.RandomColorAmount.y,0f,1f);					element.RandomColorAmount.z = EditorGUILayout.Slider("  B",element.RandomColorAmount.z,0f,1f);					element.RandomColorAmount.w = EditorGUILayout.Slider("  Brightness",element.RandomColorAmount.w,0f,1f);                }			}						if(element.type == ProFlareElement.Type.Single){                			}else{				if(!element.useColorRange){                                        for(int i = 0; i < element.subElements.Count; i++){                        Color col = element.ElementTint;                                                col.r = Mathf.Clamp01( col.r+(element.RandomColorAmount.x*element.subElements[i].RandomColorSeedR));                        col.g = Mathf.Clamp01( col.g+(element.RandomColorAmount.y*element.subElements[i].RandomColorSeedG));                        col.b = Mathf.Clamp01( col.b+(element.RandomColorAmount.z*element.subElements[i].RandomColorSeedB));                        col.a = Mathf.Clamp01( col.a+(element.RandomColorAmount.w*element.subElements[i].RandomColorSeedA));                                                element.subElements[i].color = col;                    }                }else{                                        for(int i = 0; i < element.subElements.Count; i++){                        Color col =  Color.Lerp(element.SubElementColor_Start,element.SubElementColor_End,element.subElements[i].random);                                                col.r = Mathf.Clamp01(col.r+(element.RandomColorAmount.x*element.subElements[i].RandomColorSeedR));                        col.g = Mathf.Clamp01(col.g+(element.RandomColorAmount.y*element.subElements[i].RandomColorSeedG));                        col.b = Mathf.Clamp01(col.b+(element.RandomColorAmount.z*element.subElements[i].RandomColorSeedB));                        col.a = Mathf.Clamp01(col.a+(element.RandomColorAmount.w*element.subElements[i].RandomColorSeedA));                                                element.subElements[i].color = col;                    }                                    }			}		}		EditorGUILayout.EndVertical();	}		void OffsetOptions(ProFlareElement element,int count){        		Rect  r  = EditorGUILayout.BeginVertical("box");		Rect r2 = r;		r2.height = 20;						if (GUI.Button(r2, GUIContent.none,dropDownButton))            element.OffsetSetting = element.OffsetSetting ? false : true;						GUILayout.Label("Offset Options");        		{			if(element.OffsetSetting){                GUILayout.Space(5f);                if(element.type == ProFlareElement.Type.Single){                    element.position = EditorGUILayout.Slider("OffSet",element.position,-1.5f,2.5f);                                    }else{                                        EditorGUILayout.BeginHorizontal();                    {                                                element.useRangeOffset = EditorGUILayout.Toggle("Use offset range",element.useRangeOffset);                                                if(element.useRangeOffset){                                                        float minTemp = element.SubElementPositionRange_Min;                            float maxTemp = element.SubElementPositionRange_Max;                                                                                    EditorGUILayout.MinMaxSlider(ref  element.SubElementPositionRange_Min ,ref element.SubElementPositionRange_Max,-4.5f,4.5f);                                                        if((minTemp != element.SubElementPositionRange_Min)||(maxTemp != element.SubElementPositionRange_Max)||Updated){                                                            }                                                        for(int i = 0; i < element.subElements.Count; i++){                                element.subElements[i].position = Mathf.Lerp(element.SubElementPositionRange_Min,element.SubElementPositionRange_Max,element.subElements[i].random);                                element.subElements[i].scale = Mathf.Lerp(-100f,100f,element.subElements[i].random2);                                Updated = true;                            }                                                        EditorGUILayout.FloatField(element.SubElementPositionRange_Min,GUILayout.MaxWidth(30));                                                        EditorGUILayout.FloatField(element.SubElementPositionRange_Max,GUILayout.MaxWidth(30));                                                    }else{                            element.position = EditorGUILayout.Slider(element.position,-1.5f,2.5f);                        }					}                    EditorGUILayout.EndHorizontal();                }				                				EditorGUILayout.LabelField("Anamorphic");				float x = EditorGUILayout.Slider("Vertical ",element.Anamorphic.x,0f,1f);				float y = EditorGUILayout.Slider("Horizontal ",element.Anamorphic.y,0f,1f);				element.Anamorphic = new Vector2(x,y);				                                element.OffsetPostion = EditorGUILayout.Vector2Field("Position Offset", element.OffsetPostion);                			}						if(element.type == ProFlareElement.Type.Single){							}			if(element.type == ProFlareElement.Type.Multi){				for(int i = 0; i < element.subElements.Count; i++){                    element.subElements[i].position = Mathf.Lerp(element.SubElementPositionRange_Min,element.SubElementPositionRange_Max,element.subElements[i].random);                    element.subElements[i].scale = Mathf.Lerp(-100f,100f,element.subElements[i].random2);                }			}					}EditorGUILayout.EndVertical();	}			void ScaleOptions(ProFlareElement element,int count){        		Rect  r  = EditorGUILayout.BeginVertical("box");		Rect r2 = r;		r2.height = 20;						if (GUI.Button(r2, GUIContent.none,dropDownButton))            element.ScaleSetting = element.ScaleSetting ? false : true;						GUILayout.Label("Scale Options");				{			if(element.ScaleSetting){								GUILayout.Space(5f);								EditorGUILayout.BeginHorizontal();				{                    EditorGUILayout.LabelField("Scale");                    element.Scale = EditorGUILayout.Slider(element.Scale,0f,5f);				}				EditorGUILayout.EndHorizontal();								//EditorGUILayout.BeginHorizontal();				{                    EditorGUILayout.LabelField("Aspect",GUILayout.MinWidth(120));                    element.size.x = Mathf.Max(0f, EditorGUILayout.FloatField("   X", element.size.x));                    element.size.y = Mathf.Max(0f, EditorGUILayout.FloatField("   Y",element.size.y));				}				//EditorGUILayout.EndHorizontal();																				if(element.type == ProFlareElement.Type.Multi){										element.ScaleRandom = EditorGUILayout.Slider("Random Scale",element.ScaleRandom,0,1f);										EditorGUILayout.BeginHorizontal();                    {                                                element.useScaleCurve = EditorGUILayout.Toggle("Use Scale Range",element.useScaleCurve,GUILayout.MaxWidth(180));                                                GUI.enabled = element.useScaleCurve;                                                if(element.useScaleCurve)                            Updated = true;                                                if(element.type == ProFlareElement.Type.Multi){                            element.ScaleCurve = EditorGUILayout.CurveField(element.ScaleCurve);                        }                                                if(GUILayout.Button("Reset",GUILayout.MaxWidth(50))){                            element.ScaleCurve = new AnimationCurve(new Keyframe(0, 0.1f), new Keyframe(0.5f, 1.0f), new Keyframe(1.0f, 0.1f));                        }                                                GUI.enabled =  true;					}					EditorGUILayout.EndHorizontal();				}            }		}				if(element.type == ProFlareElement.Type.Multi){            for(int i = 0; i < element.subElements.Count; i++){             	if(element.useScaleCurve)					element.subElements[i].scale =  (1+element.subElements[i].RandomScaleSeed*(element.ScaleRandom))*element.ScaleCurve.Evaluate(element.subElements[i].random);				else					element.subElements[i].scale = (1+element.subElements[i].RandomScaleSeed*(element.ScaleRandom));            }        }		        EditorGUILayout.EndVertical();	}		void RotationOptions(ProFlareElement element,int count){        		Rect  r  = EditorGUILayout.BeginVertical("box");		Rect r2 = r;		r2.height = 20;						if (GUI.Button(r2, GUIContent.none,dropDownButton))            element.RotationSetting = element.RotationSetting ? false : true;						GUILayout.Label("Rotation Options");		{            			if(element.RotationSetting){				GUILayout.Space(5f);								element.angle = EditorGUILayout.FloatField("Angle",element.angle);                				if(element.type == ProFlareElement.Type.Multi){                    element.useStarRotation = EditorGUILayout.Toggle("Use Star Rotation",element.useStarRotation);					element.useRandomAngle = EditorGUILayout.Toggle("Use Random Rotation",element.useRandomAngle);															if(element.useStarRotation){						for(int i = 0; i < element.subElements.Count; i++){							element.subElements[i].angle = (180f/element.subElements.Count)*i;							Updated = true;						}					}else{						for(int i = 0; i < element.subElements.Count; i++){							element.subElements[i].angle = 0;							Updated = true;						}					}										if(element.useRandomAngle){												float minTemp = element.SubElementAngleRange_Min;					 	float maxTemp = element.SubElementAngleRange_Max;												EditorGUILayout.BeginHorizontal();                        {                                                        EditorGUILayout.MinMaxSlider(ref  element.SubElementAngleRange_Min ,ref element.SubElementAngleRange_Max,-180f,180f);                                                        EditorGUILayout.FloatField(element.SubElementAngleRange_Min);                                                        EditorGUILayout.FloatField(element.SubElementAngleRange_Max);                                                        if((minTemp != element.SubElementAngleRange_Min)||(maxTemp != element.SubElementAngleRange_Max)||Updated){                                for(int i = 0; i < element.subElements.Count; i++){                                                                        element.subElements[i].angle = element.subElements[i].angle+Mathf.Lerp(-element.SubElementAngleRange_Min,element.SubElementAngleRange_Max,element.subElements[i].random2);                                    Updated = true;                                }                                                            }                            						}						EditorGUILayout.EndHorizontal();                        					}				}				element.rotateToFlare = EditorGUILayout.Toggle("Rotate To Flare",element.rotateToFlare);				element.rotationSpeed = EditorGUILayout.FloatField("Movement Based Rotation",element.rotationSpeed);				element.rotationOverTime = EditorGUILayout.FloatField("Rotation Overtime Speed",element.rotationOverTime);			}		}        EditorGUILayout.EndVertical();	}		void OverrideOptions(ProFlareElement element,int count){        				Rect  r  = EditorGUILayout.BeginVertical("box");		Rect r2 = r;		r2.height = 20;						if (GUI.Button(r2, GUIContent.none,dropDownButton))            element.OverrideSetting = element.OverrideSetting ? false : true;						GUILayout.Label("Override Options");		{						if(element.OverrideSetting){				GUILayout.Space(5f);				GUI.enabled = element.flare.useDynamicEdgeBoost;				EditorGUILayout.BeginHorizontal();				{                    element.OverrideDynamicEdgeBoost = EditorGUILayout.Toggle("Dynamic Edge Scale",element.OverrideDynamicEdgeBoost);					GUILayout.FlexibleSpace();                    if(element.OverrideDynamicEdgeBoost)                        element.DynamicEdgeBoostOverride = EditorGUILayout.FloatField("    ",element.DynamicEdgeBoostOverride);				}				EditorGUILayout.EndHorizontal();								EditorGUILayout.BeginHorizontal();{                    element.OverrideDynamicEdgeBrightness = EditorGUILayout.Toggle("Dynamic Edge Brightness",element.OverrideDynamicEdgeBrightness);                                        if(element.OverrideDynamicEdgeBrightness)                        element.DynamicEdgeBrightnessOverride = EditorGUILayout.FloatField("    ",element.DynamicEdgeBrightnessOverride);				}				EditorGUILayout.EndHorizontal();								GUI.enabled = true;				GUI.enabled = element.flare.useDynamicCenterBoost;								EditorGUILayout.BeginHorizontal();				{                    element.OverrideDynamicCenterBoost = EditorGUILayout.Toggle("Dynamic Center Scale",element.OverrideDynamicCenterBoost);                                        if(element.OverrideDynamicCenterBoost)                        element.DynamicCenterBoostOverride = EditorGUILayout.FloatField("    ",element.DynamicCenterBoostOverride);				}				EditorGUILayout.EndHorizontal();												EditorGUILayout.BeginHorizontal();				{                    element.OverrideDynamicCenterBrightness = EditorGUILayout.Toggle("Dynamic Center Brightness",element.OverrideDynamicCenterBrightness);                                        if(element.OverrideDynamicCenterBrightness)                        element.DynamicCenterBrightnessOverride = EditorGUILayout.FloatField("    ",element.DynamicCenterBrightnessOverride);				}				EditorGUILayout.EndHorizontal();								GUI.enabled = true;			}					}		EditorGUILayout.EndVertical();	}		Texture2D CreateGradientTex (ProFlareElement element, Color c0, Color c1)	{		if(element.colorTexture != null){			DestroyImmediate(element.colorTexture);			element.colorTexture = null;		}				element.colorTexture = new Texture2D(1, 16);		element.colorTexture.name = "[ProFlare] Gradient Texture";		element.colorTexture.hideFlags = HideFlags.DontSave;                		for (int i = 0; i < 16; ++i)		{			float f = i*(1f/16f);			element.colorTexture.SetPixel(0, i, Color.Lerp(c0, c1, f));		}        		element.colorTexture.Apply();		element.colorTexture.filterMode = FilterMode.Bilinear;		return element.colorTexture;	}			public int LayerMaskField (LayerMask selected) {                ArrayList layers = new ArrayList ();                ArrayList layerNumbers = new ArrayList ();                string name = "";                for (int i=0;i<32;i++) {                        string layerName = LayerMask.LayerToName (i);                        if (layerName != "") {                                if (selected == (selected | (1 << i))) {                                        layers.Add ("✓  "+layerName);                                        name += layerName+", ";                } else {                    layers.Add ("    "+layerName);                }                layerNumbers.Add (i);            }        }                bool preChange = GUI.changed;                GUI.changed = false;                int[] LayerNumbers = layerNumbers.ToArray (typeof(int)) as int[];                int newSelected = EditorGUILayout.Popup ("Layer Mask",-1,layers.ToArray(typeof(string)) as string[],EditorStyles.layerMaskField);                if (GUI.changed) {                        if (selected == (selected | (1 << LayerNumbers[newSelected]))) {                                selected &= ~(1 << LayerNumbers[newSelected]);                                Debug.Log ("Set Layer "+LayerMask.LayerToName (LayerNumbers[newSelected]) + " To False "+selected.value);				            } else {                                Debug.Log ("Set Layer "+LayerMask.LayerToName (LayerNumbers[newSelected]) + " To True "+selected.value);                                selected = selected | (1 << LayerNumbers[newSelected]);                            }                    } else {                        GUI.changed = preChange;                    }        return selected;    }		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;			}		void  OnSceneGUI () {		_flare = target as ProFlare;        if(!_flare.UseAngleLimit)            return;                Handles.color = new Color(1f,1f,1f,0.2f);        		Handles.DrawSolidArc(_flare.transform.position,                              _flare.transform.up,                              _flare.transform.forward,                              _flare.maxAngle/2,                              5);        		Handles.DrawSolidArc(_flare.transform.position,                              _flare.transform.up,                              _flare.transform.forward,                              -_flare.maxAngle/2,                              5);                Handles.color = Color.white;		        Handles.ScaleValueHandle(_flare.maxAngle,                                 _flare.transform.position + _flare.transform.forward*5,                                 _flare.transform.rotation,                                 1,                                 Handles.ConeHandleCap,                                 2);    }}
 |