ProFlareExporter.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. using System;
  2. using System.Collections;
  3. using System.Text;
  4. using System.Collections.Generic;
  5. using UnityEngine;
  6. using System.IO;
  7. using UnityEditor;
  8. public class ProFlareExporter {
  9. public static string animCurveExport(AnimationCurve curve){
  10. string curveString = "{";
  11. int keyCount = 0;
  12. foreach(Keyframe key in curve.keys){
  13. curveString = curveString+"\"key"+keyCount+"\": {\"time\":"+key.time+",\"value\":"+key.value+",\"in\":"+key.inTangent+",\"out\":"+key.outTangent+",\"tangentMode\":"+key.tangentMode+"}";
  14. keyCount++;
  15. if(keyCount != curve.keys.Length)
  16. curveString = curveString+",";
  17. }
  18. curveString = curveString+"}";
  19. return curveString;
  20. }
  21. // Use this for initialization
  22. public static void ExportFlare (ProFlare flare) {
  23. Debug.Log ("Export Flare");
  24. string fileName = "Assets/ProFlares/ExportedFlares/"+flare.gameObject.name+".txt";
  25. if (File.Exists(fileName))
  26. {
  27. Debug.Log(fileName+" already exists.");
  28. //return;
  29. }
  30. var sr = File.CreateText(fileName);
  31. sr.WriteLine ("{");
  32. sr.WriteLine ("\"meta\": {");
  33. //sr.WriteLine (" \"frame\": {\"x\":768,\"y\":512,\"w\":256,\"h\":256},");
  34. sr.WriteLine (" \"GlobalScale\": {0},",flare.GlobalScale);
  35. sr.WriteLine (" \"MultiplyScaleByTransformScale\": {0},",boolToString(flare.MultiplyScaleByTransformScale));
  36. sr.WriteLine (" \"GlobalBrightness\": {0},",flare.GlobalBrightness);
  37. sr.WriteLine (" \"GlobalTintColor\": {\"r\":"+flare.GlobalTintColor.r+",\"g\":"+flare.GlobalTintColor.g+",\"b\":"+flare.GlobalTintColor.b+",\"a\":"+flare.GlobalTintColor.a+"},");
  38. sr.WriteLine (" \"useMaxDistance\": {0},",boolToString(flare.useMaxDistance));
  39. sr.WriteLine (" \"useDistanceScale\": {0},",boolToString(flare.useDistanceScale));
  40. sr.WriteLine (" \"useDistanceFade\": {0},",boolToString(flare.useDistanceFade));
  41. sr.WriteLine (" \"GlobalMaxDistance\": {0},",flare.GlobalMaxDistance);
  42. // //Angle Culling Properties
  43. sr.WriteLine (" \"UseAngleLimit\": {0},",boolToString(flare.UseAngleLimit));
  44. sr.WriteLine (" \"maxAngle\": {0},",flare.maxAngle);
  45. sr.WriteLine (" \"UseAngleScale\": {0},",boolToString(flare.UseAngleScale));
  46. sr.WriteLine (" \"UseAngleBrightness\": {0},",boolToString(flare.UseAngleBrightness));
  47. sr.WriteLine (" \"UseAngleCurve\": {0},",boolToString(flare.UseAngleCurve));
  48. sr.WriteLine (" \"AngleCurve\": {0},",ProFlareExporter.animCurveExport(flare.AngleCurve));
  49. // //Occlusion Properties
  50. // public LayerMask mask = 1;
  51. ///////////////////////////// sr.WriteLine (" \"mask\": {0},",(int)flare.mask);
  52. // public bool RaycastPhysics;
  53. sr.WriteLine (" \"RaycastPhysics\": {0},",boolToString(flare.RaycastPhysics));
  54. sr.WriteLine (" \"OffScreenFadeDist\": {0},",flare.OffScreenFadeDist);
  55. //
  56. // //Dynamic Edge Properties
  57. sr.WriteLine (" \"useDynamicEdgeBoost\": {0},",boolToString(flare.useDynamicEdgeBoost));
  58. sr.WriteLine (" \"DynamicEdgeBoost\": {0},",flare.DynamicEdgeBoost);
  59. sr.WriteLine (" \"DynamicEdgeBrightness\": {0},",flare.DynamicEdgeBrightness);
  60. sr.WriteLine (" \"DynamicEdgeRange\": {0},",flare.DynamicEdgeRange);
  61. sr.WriteLine (" \"DynamicEdgeBias\": {0},",flare.DynamicEdgeBias);
  62. sr.WriteLine (" \"DynamicEdgeCurve\": {0},",ProFlareExporter.animCurveExport(flare.DynamicEdgeCurve));
  63. // //Dynamic Center Properties
  64. sr.WriteLine (" \"useDynamicCenterBoost\": {0},",boolToString(flare.useDynamicCenterBoost));
  65. sr.WriteLine (" \"DynamicCenterBoost\": {0},",flare.DynamicCenterBoost);
  66. sr.WriteLine (" \"DynamicCenterBrightness\": {0},",flare.DynamicCenterBrightness);
  67. sr.WriteLine (" \"DynamicCenterRange\": {0},",flare.DynamicCenterRange);
  68. sr.WriteLine (" \"DynamicCenterBias\": {0},",flare.DynamicCenterBias);
  69. // public bool neverCull;
  70. sr.WriteLine (" \"neverCull\": {0},",boolToString(flare.neverCull));
  71. sr.WriteLine (" \"Elements\": {");
  72. int count = 0;
  73. foreach (ProFlareElement element in flare.Elements) {
  74. sr.WriteLine (" \"Element"+count+"\": {");
  75. sr.WriteLine (" \"Editing\": {0},",boolToString(element.Editing));
  76. sr.WriteLine (" \"Visible\": {0},",boolToString(element.Visible));
  77. // //Element's texture index inside the texture atlas.
  78. // public int elementTextureID;
  79. sr.WriteLine (" \"elementTextureID\": {0},",element.elementTextureID);
  80. //
  81. // //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.
  82. // public string SpriteName;
  83. sr.WriteLine (" \"Brightness\": {0},",element.Brightness);
  84. sr.WriteLine (" \"Scale\": {0},",element.Scale);
  85. sr.WriteLine (" \"ScaleRandom\": {0},",element.ScaleRandom);
  86. sr.WriteLine (" \"ScaleFinal\": {0},",element.ScaleFinal);
  87. sr.WriteLine (" \"RandomColorAmount\": {\"r\":"+element.RandomColorAmount.x+",\"g\":"+element.RandomColorAmount.y+",\"b\":"+element.RandomColorAmount.z+",\"a\":"+element.RandomColorAmount.w+"},");
  88. // //Element OffSet Properties
  89. sr.WriteLine (" \"position\": {0},",element.position);
  90. sr.WriteLine (" \"useRangeOffset\": {0},",boolToString(element.useRangeOffset));
  91. sr.WriteLine (" \"SubElementPositionRange_Min\": {0},",element.SubElementPositionRange_Min);
  92. sr.WriteLine (" \"SubElementPositionRange_Max\": {0},",element.SubElementPositionRange_Max);
  93. sr.WriteLine (" \"SubElementAngleRange_Min\": {0},",element.SubElementAngleRange_Min);
  94. sr.WriteLine (" \"SubElementAngleRange_Max\": {0},",element.SubElementAngleRange_Max);
  95. sr.WriteLine (" \"OffsetPosition\": {\"r\":"+element.OffsetPosition.x+",\"g\":"+element.OffsetPosition.y+",\"b\":"+element.OffsetPosition.z+"},");
  96. sr.WriteLine (" \"Anamorphic\": {\"r\":"+element.Anamorphic.x+",\"g\":"+element.Anamorphic.y+",\"b\":"+element.Anamorphic.z+"},");
  97. sr.WriteLine (" \"OffsetPostion\": {\"r\":"+element.OffsetPostion.x+",\"g\":"+element.OffsetPostion.y+",\"b\":"+element.OffsetPostion.z+"},");
  98. // //Element Rotation Properties
  99. sr.WriteLine (" \"angle\": {0},",element.angle);
  100. sr.WriteLine (" \"useRandomAngle\": {0},",boolToString(element.useRandomAngle));
  101. sr.WriteLine (" \"useStarRotation\": {0},",boolToString(element.useStarRotation));
  102. sr.WriteLine (" \"AngleRandom_Min\": {0},",element.AngleRandom_Min);
  103. sr.WriteLine (" \"AngleRandom_Max\": {0},",element.AngleRandom_Max);
  104. sr.WriteLine (" \"OrientToSource\": {0},",boolToString(element.OrientToSource));
  105. sr.WriteLine (" \"rotateToFlare\": {0},",boolToString(element.rotateToFlare));
  106. sr.WriteLine (" \"rotationSpeed\": {0},",element.rotationSpeed);
  107. sr.WriteLine (" \"rotationOverTime\": {0},",element.rotationOverTime);
  108. // //Colour Properties,
  109. sr.WriteLine (" \"useColorRange\": {0},",boolToString(element.useColorRange));
  110. sr.WriteLine (" \"ElementFinalColor\": {\"r\":"+element.ElementFinalColor.r+",\"g\":"+element.ElementFinalColor.g+",\"b\":"+element.ElementFinalColor.b+",\"a\":"+element.ElementFinalColor.a+"},");
  111. sr.WriteLine (" \"ElementTint\": {\"r\":"+element.ElementTint.r+",\"g\":"+element.ElementTint.g+",\"b\":"+element.ElementTint.b+",\"a\":"+element.ElementTint.a+"},");
  112. sr.WriteLine (" \"SubElementColor_Start\": {\"r\":"+element.SubElementColor_Start.r+",\"g\":"+element.SubElementColor_Start.g+",\"b\":"+element.SubElementColor_Start.b+",\"a\":"+element.SubElementColor_Start.a+"},");
  113. sr.WriteLine (" \"SubElementColor_End\": {\"r\":"+element.SubElementColor_End.r+",\"g\":"+element.SubElementColor_End.g+",\"b\":"+element.SubElementColor_End.b+",\"a\":"+element.SubElementColor_End.a+"},");
  114. sr.WriteLine (" \"useScaleCurve\": {0},",boolToString(element.useScaleCurve));
  115. sr.WriteLine (" \"ScaleCurve\": {0},",ProFlareExporter.animCurveExport(element.ScaleCurve));
  116. // //Override Properties
  117. sr.WriteLine (" \"OverrideDynamicEdgeBoost\": {0},",boolToString(element.OverrideDynamicEdgeBoost));
  118. sr.WriteLine (" \"DynamicEdgeBoostOverride\": {0},",element.DynamicEdgeBoostOverride);
  119. sr.WriteLine (" \"OverrideDynamicCenterBoost\": {0},",boolToString(element.OverrideDynamicCenterBoost));
  120. sr.WriteLine (" \"DynamicCenterBoostOverride\": {0},",element.DynamicCenterBoostOverride);
  121. sr.WriteLine (" \"OverrideDynamicEdgeBrightness\": {0},",boolToString(element.OverrideDynamicEdgeBrightness));
  122. sr.WriteLine (" \"DynamicEdgeBrightnessOverride\": {0},",element.DynamicEdgeBrightnessOverride);
  123. sr.WriteLine (" \"OverrideDynamicCenterBrightness\": {0},",boolToString(element.OverrideDynamicCenterBrightness));
  124. sr.WriteLine (" \"DynamicCenterBrightnessOverride\": {0},",element.DynamicCenterBrightnessOverride);
  125. if(element.subElements.Count > 0){
  126. sr.WriteLine (" \"subElements\": {");
  127. int count2 = 0;
  128. foreach (SubElement subElement in element.subElements) {
  129. sr.WriteLine (" \"subElement"+count2+"\": {");
  130. sr.WriteLine (" \"color\": {\"r\":"+subElement.color.r+",\"g\":"+subElement.color.g+",\"b\":"+subElement.color.b+",\"a\":"+subElement.color.a+"},");
  131. sr.WriteLine (" \"position\": {0},",subElement.position);
  132. sr.WriteLine (" \"offset\": {\"r\":"+subElement.color.r+",\"g\":"+subElement.color.g+",\"b\":"+subElement.color.b+"},");
  133. sr.WriteLine (" \"angle\": {0},",subElement.angle);
  134. sr.WriteLine (" \"scale\": {0},",subElement.scale);
  135. sr.WriteLine (" \"random\": {0},",subElement.random);
  136. sr.WriteLine (" \"random2\": {0},",subElement.random2);
  137. sr.WriteLine (" \"RandomScaleSeed\": {0},",subElement.RandomScaleSeed);
  138. sr.WriteLine (" \"RandomColorSeedR\": {0},",subElement.RandomColorSeedR);
  139. sr.WriteLine (" \"RandomColorSeedG\": {0},",subElement.RandomColorSeedG);
  140. sr.WriteLine (" \"RandomColorSeedB\": {0},",subElement.RandomColorSeedB);
  141. sr.WriteLine (" \"RandomColorSeedA\": {0}",subElement.RandomColorSeedA);
  142. count2++;
  143. if(count2 == element.subElements.Count)
  144. sr.WriteLine (" }");
  145. else
  146. sr.WriteLine (" },");
  147. }
  148. sr.WriteLine (" },");
  149. }
  150. sr.WriteLine (" \"EditDynamicTriggering\": {0},",boolToString(element.EditDynamicTriggering));
  151. sr.WriteLine (" \"EditOcclusion\": {0},",boolToString(element.EditOcclusion));
  152. sr.WriteLine (" \"ElementSetting\": {0},",boolToString(element.ElementSetting));
  153. sr.WriteLine (" \"OffsetSetting\": {0},",boolToString(element.OffsetSetting));
  154. sr.WriteLine (" \"ColorSetting\": {0},",boolToString(element.ColorSetting));
  155. sr.WriteLine (" \"ScaleSetting\": {0},",boolToString(element.ScaleSetting));
  156. sr.WriteLine (" \"RotationSetting\": {0},",boolToString(element.RotationSetting));
  157. sr.WriteLine (" \"OverrideSetting\": {0},",boolToString(element.OverrideSetting));
  158. sr.WriteLine (" \"type\": \"{0}\"",(int)element.type);
  159. sr.WriteLine (" \"size\": {\"x\":"+element.size.x+",\"y\":"+element.size.y+"},");
  160. sr.WriteLine (" \"SpriteName\": \"{0}\"",element.SpriteName);
  161. count++;
  162. if(count == flare.Elements.Count)
  163. sr.WriteLine (" }");
  164. else
  165. sr.WriteLine (" },");
  166. }
  167. sr.WriteLine (" }");
  168. sr.WriteLine ("}");
  169. sr.WriteLine ("}");
  170. sr.Close();
  171. EditorUtility.SetDirty (flare);
  172. }
  173. static string boolToString(bool _bool){
  174. if (_bool)
  175. return "1";
  176. else
  177. return "0";
  178. }
  179. }