Exemplo n.º 1
0
 /// <summary>
 /// The default behaviour of a projectile is to head towards it's target at speed:
 /// </summary>
 protected virtual void Start()
 {
     if(target != null)
     {
         transform.LookAt(target.transform.position);
     }
     GetComponent<Rigidbody>().velocity = transform.forward * speed;
     particleSystems = GetComponentsInChildren<ParticleSystem>();
     renderers = GetComponentsInChildren<MeshRenderer>();
     _light = GetComponentInChildren<Light>();
     flare = GetComponentInChildren<ProFlare>();
     timer = 0;
 }
Exemplo n.º 2
0
 /// <summary>
 /// The default behaviour of a projectile is to head towards it's target at speed:
 /// </summary>
 protected virtual void Start()
 {
     if (target != null)
     {
         transform.LookAt(target.transform.position);
     }
     GetComponent <Rigidbody>().velocity = transform.forward * speed;
     particleSystems = GetComponentsInChildren <ParticleSystem>();
     renderers       = GetComponentsInChildren <MeshRenderer>();
     _light          = GetComponentInChildren <Light>();
     flare           = GetComponentInChildren <ProFlare>();
     timer           = 0;
 }
Exemplo n.º 3
0
	void Start () {
        _light = GetComponent<Light>();
        if(_light == null)
        {
            Debug.LogWarning("Expected light component");
            enabled = false;
            return;
        }
        normalIntensity = _light.intensity;
        flare = GetComponentInChildren<ProFlare>();
        if(flare != null)
        {
            normalFlare = flare.GlobalScale;
        }
    }
Exemplo n.º 4
0
	override protected void Start () {
        base.Start();
        if(data != null)
        {
            nameText.text = data.name;
            descriptionText.text = data.description;
        }
        flare = GetComponentInChildren<ProFlare>();
        if(flare != null)
        {
            normalScale = flare.GlobalScale;
            normalDistance = Vector3.Distance(transform.position, Camera.main.transform.position);
        }
        starCam = Camera.main.GetComponent<StarSystemsCamera>();
        canvas.alpha = 0.5f;
	}
Exemplo n.º 5
0
 void Start()
 {
     _light = GetComponent <Light>();
     if (_light == null)
     {
         Debug.LogWarning("Expected light component");
         enabled = false;
         return;
     }
     normalIntensity = _light.intensity;
     flare           = GetComponentInChildren <ProFlare>();
     if (flare != null)
     {
         normalFlare = flare.GlobalScale;
     }
 }
Exemplo n.º 6
0
 override protected void Start()
 {
     base.Start();
     if (data != null)
     {
         nameText.text        = data.name;
         descriptionText.text = data.description;
     }
     flare = GetComponentInChildren <ProFlare>();
     if (flare != null)
     {
         normalScale    = flare.GlobalScale;
         normalDistance = Vector3.Distance(transform.position, Camera.main.transform.position);
     }
     starCam      = Camera.main.GetComponent <StarSystemsCamera>();
     canvas.alpha = 0.5f;
 }
Exemplo n.º 7
0
	//Called from ProFlare.cs
	//First checks if the flare is already in the list, if not adds it and rebuils the Flarebatch Geometry
	public void AddFlare(ProFlare _flare){
		bool found = false;
        
		for(int i = 0; i < Flares.Count; i++){
			if(_flare == Flares[i]){
				found = true;
				break;
			}
		}
		
		if(!found){
			
			Flares.Add(_flare);
			
//			Debug.LogError("addFlare");
			
			FlareOcclusionData = new FlareOcclusion[Flares.Count];
			
			for(int i = 0; i < FlareOcclusionData.Length; i++){
				FlareOcclusionData[i] = new FlareOcclusion();
				if(_flare.neverCull)
					FlareOcclusionData[i]._CullingState = FlareOcclusion.CullingState.NeverCull;
			}
			dirty = true;
		}
	}
Exemplo n.º 8
0
	public override void OnInspectorGUI () {
		
		selectionCount = 0;
		
		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;
					}
				}
				
				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();
                
				//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);
				GUI.enabled = true;
			}
			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);
				}
        }
	}
Exemplo n.º 9
0
	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.ConeCap,
                                 2);
    }
Exemplo n.º 10
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;
        }
    }
Exemplo n.º 11
0
    // Use this for initialization
    public static void ExportFlare(ProFlare flare)
    {
        Debug.Log("Export Flare");

        string fileName = "Assets/ProFlares/ExportedFlares/" + flare.gameObject.name + ".txt";

        if (File.Exists(fileName))
        {
            Debug.Log(fileName + " already exists.");
            //return;
        }
        var sr = File.CreateText(fileName);

        sr.WriteLine("{");

        sr.WriteLine("\"meta\": {");
        //sr.WriteLine ("	\"frame\": {\"x\":768,\"y\":512,\"w\":256,\"h\":256},");

        sr.WriteLine("	\"GlobalScale\": {0},", flare.GlobalScale);

        sr.WriteLine("	\"MultiplyScaleByTransformScale\": {0},", boolToString(flare.MultiplyScaleByTransformScale));

        sr.WriteLine("	\"GlobalBrightness\": {0},", flare.GlobalBrightness);

        sr.WriteLine("	\"GlobalTintColor\": {\"r\":"+ flare.GlobalTintColor.r + ",\"g\":" + flare.GlobalTintColor.g + ",\"b\":" + flare.GlobalTintColor.b + ",\"a\":" + flare.GlobalTintColor.a + "},");

        sr.WriteLine("	\"useMaxDistance\": {0},", boolToString(flare.useMaxDistance));

        sr.WriteLine("	\"useDistanceScale\": {0},", boolToString(flare.useDistanceScale));

        sr.WriteLine("	\"useDistanceFade\": {0},", boolToString(flare.useDistanceFade));

        sr.WriteLine("	\"GlobalMaxDistance\": {0},", flare.GlobalMaxDistance);

//		//Angle Culling Properties
        sr.WriteLine("	\"UseAngleLimit\": {0},", boolToString(flare.UseAngleLimit));

        sr.WriteLine("	\"maxAngle\": {0},", flare.maxAngle);

        sr.WriteLine("	\"UseAngleScale\": {0},", boolToString(flare.UseAngleScale));

        sr.WriteLine("	\"UseAngleBrightness\": {0},", boolToString(flare.UseAngleBrightness));

        sr.WriteLine("	\"UseAngleCurve\": {0},", boolToString(flare.UseAngleCurve));

        sr.WriteLine("	\"AngleCurve\": {0},", ProFlareExporter.animCurveExport(flare.AngleCurve));

//		//Occlusion Properties
//		public LayerMask mask = 1;

/////////////////////////////		sr.WriteLine ("	\"mask\": {0},",(int)flare.mask);

        //		public bool RaycastPhysics;
        sr.WriteLine("	\"RaycastPhysics\": {0},", boolToString(flare.RaycastPhysics));

        sr.WriteLine("	\"OffScreenFadeDist\": {0},", flare.OffScreenFadeDist);

//
//		//Dynamic Edge Properties

        sr.WriteLine("	\"useDynamicEdgeBoost\": {0},", boolToString(flare.useDynamicEdgeBoost));

        sr.WriteLine("	\"DynamicEdgeBoost\": {0},", flare.DynamicEdgeBoost);

        sr.WriteLine("	\"DynamicEdgeBrightness\": {0},", flare.DynamicEdgeBrightness);

        sr.WriteLine("	\"DynamicEdgeRange\": {0},", flare.DynamicEdgeRange);

        sr.WriteLine("	\"DynamicEdgeBias\": {0},", flare.DynamicEdgeBias);

        sr.WriteLine("	\"DynamicEdgeCurve\": {0},", ProFlareExporter.animCurveExport(flare.DynamicEdgeCurve));

//		//Dynamic Center Properties
        sr.WriteLine("	\"useDynamicCenterBoost\": {0},", boolToString(flare.useDynamicCenterBoost));

        sr.WriteLine("	\"DynamicCenterBoost\": {0},", flare.DynamicCenterBoost);

        sr.WriteLine("	\"DynamicCenterBrightness\": {0},", flare.DynamicCenterBrightness);

        sr.WriteLine("	\"DynamicCenterRange\": {0},", flare.DynamicCenterRange);

        sr.WriteLine("	\"DynamicCenterBias\": {0},", flare.DynamicCenterBias);

//		public bool neverCull;
        sr.WriteLine("	\"neverCull\": {0},", boolToString(flare.neverCull));

        sr.WriteLine("	\"Elements\": {");
        int count = 0;

        foreach (ProFlareElement element in flare.Elements)
        {
            sr.WriteLine("		\"Element"+ count + "\": {");

            sr.WriteLine("			\"Editing\": {0},", boolToString(element.Editing));

            sr.WriteLine("			\"Visible\": {0},", boolToString(element.Visible));

//			//Element's texture index inside the texture atlas.
//			public int elementTextureID;
            sr.WriteLine("			\"elementTextureID\": {0},", element.elementTextureID);

//
//			//Elements Sprite name from the texture atlas, this isn't checked at runtime. Its only used to help stop flares breaking when the atlas changes.
//			public string SpriteName;

            sr.WriteLine("			\"Brightness\": {0},", element.Brightness);

            sr.WriteLine("			\"Scale\": {0},", element.Scale);

            sr.WriteLine("			\"ScaleRandom\": {0},", element.ScaleRandom);

            sr.WriteLine("			\"ScaleFinal\": {0},", element.ScaleFinal);

            sr.WriteLine("			\"RandomColorAmount\": {\"r\":"+ element.RandomColorAmount.x + ",\"g\":" + element.RandomColorAmount.y + ",\"b\":" + element.RandomColorAmount.z + ",\"a\":" + element.RandomColorAmount.w + "},");

//			//Element OffSet Properties
            sr.WriteLine("			\"position\": {0},", element.position);

            sr.WriteLine("			\"useRangeOffset\": {0},", boolToString(element.useRangeOffset));

            sr.WriteLine("			\"SubElementPositionRange_Min\": {0},", element.SubElementPositionRange_Min);

            sr.WriteLine("			\"SubElementPositionRange_Max\": {0},", element.SubElementPositionRange_Max);

            sr.WriteLine("			\"SubElementAngleRange_Min\": {0},", element.SubElementAngleRange_Min);

            sr.WriteLine("			\"SubElementAngleRange_Max\": {0},", element.SubElementAngleRange_Max);

            sr.WriteLine("			\"OffsetPosition\": {\"r\":"+ element.OffsetPosition.x + ",\"g\":" + element.OffsetPosition.y + ",\"b\":" + element.OffsetPosition.z + "},");

            sr.WriteLine("			\"Anamorphic\": {\"r\":"+ element.Anamorphic.x + ",\"g\":" + element.Anamorphic.y + ",\"b\":" + element.Anamorphic.z + "},");

            sr.WriteLine("			\"OffsetPostion\": {\"r\":"+ element.OffsetPostion.x + ",\"g\":" + element.OffsetPostion.y + ",\"b\":" + element.OffsetPostion.z + "},");

//			//Element Rotation Properties
            sr.WriteLine("			\"angle\": {0},", element.angle);

            sr.WriteLine("			\"useRandomAngle\": {0},", boolToString(element.useRandomAngle));

            sr.WriteLine("			\"useStarRotation\": {0},", boolToString(element.useStarRotation));

            sr.WriteLine("			\"AngleRandom_Min\": {0},", element.AngleRandom_Min);

            sr.WriteLine("			\"AngleRandom_Max\": {0},", element.AngleRandom_Max);

            sr.WriteLine("			\"OrientToSource\": {0},", boolToString(element.OrientToSource));

            sr.WriteLine("			\"rotateToFlare\": {0},", boolToString(element.rotateToFlare));

            sr.WriteLine("			\"rotationSpeed\": {0},", element.rotationSpeed);

            sr.WriteLine("			\"rotationOverTime\": {0},", element.rotationOverTime);

//			//Colour Properties,
            sr.WriteLine("			\"useColorRange\": {0},", boolToString(element.useColorRange));

            sr.WriteLine("			\"ElementFinalColor\": {\"r\":"+ element.ElementFinalColor.r + ",\"g\":" + element.ElementFinalColor.g + ",\"b\":" + element.ElementFinalColor.b + ",\"a\":" + element.ElementFinalColor.a + "},");

            sr.WriteLine("			\"ElementTint\": {\"r\":"+ element.ElementTint.r + ",\"g\":" + element.ElementTint.g + ",\"b\":" + element.ElementTint.b + ",\"a\":" + element.ElementTint.a + "},");

            sr.WriteLine("			\"SubElementColor_Start\": {\"r\":"+ element.SubElementColor_Start.r + ",\"g\":" + element.SubElementColor_Start.g + ",\"b\":" + element.SubElementColor_Start.b + ",\"a\":" + element.SubElementColor_Start.a + "},");

            sr.WriteLine("			\"SubElementColor_End\": {\"r\":"+ element.SubElementColor_End.r + ",\"g\":" + element.SubElementColor_End.g + ",\"b\":" + element.SubElementColor_End.b + ",\"a\":" + element.SubElementColor_End.a + "},");

            sr.WriteLine("			\"useScaleCurve\": {0},", boolToString(element.useScaleCurve));

            sr.WriteLine("			\"ScaleCurve\": {0},", ProFlareExporter.animCurveExport(element.ScaleCurve));

//			//Override Properties
            sr.WriteLine("			\"OverrideDynamicEdgeBoost\": {0},", boolToString(element.OverrideDynamicEdgeBoost));

            sr.WriteLine("			\"DynamicEdgeBoostOverride\": {0},", element.DynamicEdgeBoostOverride);

            sr.WriteLine("			\"OverrideDynamicCenterBoost\": {0},", boolToString(element.OverrideDynamicCenterBoost));

            sr.WriteLine("			\"DynamicCenterBoostOverride\": {0},", element.DynamicCenterBoostOverride);

            sr.WriteLine("			\"OverrideDynamicEdgeBrightness\": {0},", boolToString(element.OverrideDynamicEdgeBrightness));

            sr.WriteLine("			\"DynamicEdgeBrightnessOverride\": {0},", element.DynamicEdgeBrightnessOverride);

            sr.WriteLine("			\"OverrideDynamicCenterBrightness\": {0},", boolToString(element.OverrideDynamicCenterBrightness));

            sr.WriteLine("			\"DynamicCenterBrightnessOverride\": {0},", element.DynamicCenterBrightnessOverride);

            if (element.subElements.Count > 0)
            {
                sr.WriteLine("			\"subElements\": {");
                int count2 = 0;

                foreach (SubElement subElement in element.subElements)
                {
                    sr.WriteLine("				\"subElement"+ count2 + "\": {");

                    sr.WriteLine("					\"color\": {\"r\":"+ subElement.color.r + ",\"g\":" + subElement.color.g + ",\"b\":" + subElement.color.b + ",\"a\":" + subElement.color.a + "},");

                    sr.WriteLine("					\"position\": {0},", subElement.position);

                    sr.WriteLine("					\"offset\": {\"r\":"+ subElement.color.r + ",\"g\":" + subElement.color.g + ",\"b\":" + subElement.color.b + "},");

                    sr.WriteLine("					\"angle\": {0},", subElement.angle);

                    sr.WriteLine("					\"scale\": {0},", subElement.scale);

                    sr.WriteLine("					\"random\": {0},", subElement.random);

                    sr.WriteLine("					\"random2\": {0},", subElement.random2);

                    sr.WriteLine("					\"RandomScaleSeed\": {0},", subElement.RandomScaleSeed);

                    sr.WriteLine("					\"RandomColorSeedR\": {0},", subElement.RandomColorSeedR);

                    sr.WriteLine("					\"RandomColorSeedG\": {0},", subElement.RandomColorSeedG);

                    sr.WriteLine("					\"RandomColorSeedB\": {0},", subElement.RandomColorSeedB);

                    sr.WriteLine("					\"RandomColorSeedA\": {0}", subElement.RandomColorSeedA);

                    count2++;
                    if (count2 == element.subElements.Count)
                    {
                        sr.WriteLine("				}");
                    }
                    else
                    {
                        sr.WriteLine("				},");
                    }
                }

                sr.WriteLine("			},");
            }

            sr.WriteLine("			\"EditDynamicTriggering\": {0},", boolToString(element.EditDynamicTriggering));

            sr.WriteLine("			\"EditOcclusion\": {0},", boolToString(element.EditOcclusion));

            sr.WriteLine("			\"ElementSetting\": {0},", boolToString(element.ElementSetting));

            sr.WriteLine("			\"OffsetSetting\": {0},", boolToString(element.OffsetSetting));

            sr.WriteLine("			\"ColorSetting\": {0},", boolToString(element.ColorSetting));

            sr.WriteLine("			\"ScaleSetting\": {0},", boolToString(element.ScaleSetting));

            sr.WriteLine("			\"RotationSetting\": {0},", boolToString(element.RotationSetting));

            sr.WriteLine("			\"OverrideSetting\": {0},", boolToString(element.OverrideSetting));

            sr.WriteLine("			\"type\": \"{0}\"", (int)element.type);

            sr.WriteLine("			\"size\": {\"x\":"+ element.size.x + ",\"y\":" + element.size.y + "},");

            sr.WriteLine("			\"SpriteName\": \"{0}\"", element.SpriteName);

            count++;

            if (count == flare.Elements.Count)
            {
                sr.WriteLine("		}");
            }
            else
            {
                sr.WriteLine("		},");
            }
        }
        sr.WriteLine("	}");

        sr.WriteLine("}");

        sr.WriteLine("}");

        sr.Close();

        EditorUtility.SetDirty(flare);
    }