From 7005dd6cb1fcc44ef6da99879faec6b91b85a9cf Mon Sep 17 00:00:00 2001 From: nicloay Date: Wed, 15 Jul 2015 10:41:14 +0300 Subject: [PATCH 1/3] fixed unity5 updated method calls --- .../Scripts/Editor/SpineImporterWizard.cs | 26 +++---------------- .../Scripts/Editor/UnityInternalMethods.cs | 11 ++++++++ .../Editor/UnityInternalMethods.cs.meta | 12 +++++++++ .../Scripts/Editor/Util/SpineUtil.cs | 22 +++++++++------- 4 files changed, 39 insertions(+), 32 deletions(-) create mode 100644 Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs create mode 100644 Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs.meta diff --git a/Assets/UnitySpineImporter/Scripts/Editor/SpineImporterWizard.cs b/Assets/UnitySpineImporter/Scripts/Editor/SpineImporterWizard.cs index bad17f8..5d3efa2 100644 --- a/Assets/UnitySpineImporter/Scripts/Editor/SpineImporterWizard.cs +++ b/Assets/UnitySpineImporter/Scripts/Editor/SpineImporterWizard.cs @@ -6,15 +6,11 @@ namespace UnitySpineImporter{ - public enum AnimationImportType{ - MECANIM, - LEGACY - } public class SpineImporterWizard :ScriptableWizard { public int pixelsPerUnit = 100; public bool buildAvatarMask = true; - public AnimationImportType animationImportType = AnimationImportType.MECANIM; + public bool useLegacyAnimation = false; //false - means mecanim public bool updateResources = true; public float zStep = 0.01f; [HideInInspector] @@ -42,7 +38,7 @@ void OnWizardUpdate() { else errorString =""; isValid = errorString.Equals(""); - if (animationImportType == AnimationImportType.LEGACY && buildAvatarMask) + if (useLegacyAnimation && buildAvatarMask) helpString += "\n buildAvatarMask will be ignored"; } @@ -67,16 +63,15 @@ void OnWizardCreate(){ rootGO.name = name; SpineUtil.addAllAttahcmentsSlots(spineData, spriteByName, slotByName, pixelsPerUnit, out skins, out attachmentGOByNameBySlot); SkinController sk = SpineUtil.addSkinController(rootGO, spineData, skins, slotByName); - if (animationImportType == AnimationImportType.MECANIM){ + if (!useLegacyAnimation){ Animator animator = SpineUtil.addAnimator(rootGO); if (buildAvatarMask) SpineUtil.builAvatarMask(rootGO,spineData, animator, directory, name); } - ModelImporterAnimationType modelImporterAnimationType = getModelImporterAnimationType(); if (spineData.animations !=null && spineData.animations.Count > 0) SpineUtil.addAnimation(rootGO, directory, spineData, boneGOByName, slotByName, attachmentGOByNameBySlot, skins, - pixelsPerUnit, zStep, modelImporterAnimationType, updateResources ); + pixelsPerUnit, zStep, useLegacyAnimation, updateResources ); sk.showDefaulSlots(); SpineUtil.buildPrefab(rootGO, directory, name); GameObject.DestroyImmediate(rootGO); @@ -90,19 +85,6 @@ void OnWizardCreate(){ } } } - - ModelImporterAnimationType getModelImporterAnimationType(){ - ModelImporterAnimationType result = ModelImporterAnimationType.Generic; - switch(animationImportType){ - case AnimationImportType.LEGACY: - result = ModelImporterAnimationType.Legacy; - break; - case AnimationImportType.MECANIM: - result = ModelImporterAnimationType.Generic; - break; - } - return result; - } static string getAtlasFilePath(string path){ string dir = Path.GetDirectoryName(path); diff --git a/Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs b/Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs new file mode 100644 index 0000000..4cc18eb --- /dev/null +++ b/Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs @@ -0,0 +1,11 @@ + +using UnityEditor.Animations; +using UnityEngine; +using System.Reflection; + +public class UnityInternalMethods { + public static AnimatorController GetEffectiveAnimatorController(Animator animator){ + return (AnimatorController) (typeof(AnimatorController).GetMethod("GetEffectiveAnimatorController" + , BindingFlags.Static | BindingFlags.NonPublic).Invoke(null, new object[]{ animator})); + } +} diff --git a/Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs.meta b/Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs.meta new file mode 100644 index 0000000..d23c196 --- /dev/null +++ b/Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0431ec8deb4b24d35b064852bd344afc +timeCreated: 1436945266 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/UnitySpineImporter/Scripts/Editor/Util/SpineUtil.cs b/Assets/UnitySpineImporter/Scripts/Editor/Util/SpineUtil.cs index 2d7a5f3..2f0a851 100644 --- a/Assets/UnitySpineImporter/Scripts/Editor/Util/SpineUtil.cs +++ b/Assets/UnitySpineImporter/Scripts/Editor/Util/SpineUtil.cs @@ -8,6 +8,7 @@ using CurveExtended; using LitJson; using System.Reflection; +using UnityEditor.Animations; namespace UnitySpineImporter{ public class AtlasImageNotFoundException: System.Exception{ @@ -393,7 +394,7 @@ public static void addAnimation(GameObject rootGO, List skinList, int pixelsPerUnit, float zStep, - ModelImporterAnimationType modelImporterAnimationType, + bool useLegacyAnimation, bool updateResources) { float ratio = 1.0f / (float)pixelsPerUnit; @@ -413,8 +414,7 @@ public static void addAnimation(GameObject rootGO, updateCurve = true; } } - - AnimationUtility.SetAnimationType(animationClip, modelImporterAnimationType); + animationClip.legacy = useLegacyAnimation; if (spineAnimation.bones!=null) addBoneAnimationToClip(animationClip,spineAnimation.bones, spineData, boneGOByName, ratio); if (spineAnimation.slots!=null) @@ -434,10 +434,11 @@ public static void addAnimation(GameObject rootGO, AssetDatabase.CreateAsset(animationClip, assetPath); AssetDatabase.SaveAssets(); - if (modelImporterAnimationType == ModelImporterAnimationType.Generic) - AddClipToAnimatorComponent(rootGO,animationClip); - else + if (useLegacyAnimation){ AddClipToLegacyAnimationComponent(rootGO, animationClip); + } else { + AddClipToAnimatorComponent(rootGO,animationClip); + } } } @@ -1076,13 +1077,14 @@ public static AnimationClip AddClipToAnimatorComponent(GameObject animatedObject Animator animator = animatedObject.GetComponent(); if ( animator == null) animator = animatedObject.AddComponent(); - AnimatorController animatorController = AnimatorController.GetEffectiveAnimatorController(animator); + + UnityEditor.Animations.AnimatorController animatorController = UnityInternalMethods.GetEffectiveAnimatorController(animator); if (animatorController == null) { string path = Path.GetDirectoryName( AssetDatabase.GetAssetPath(newClip)) +"/"+animatedObject.name+".controller"; - AnimatorController controllerForClip = AnimatorController.CreateAnimatorControllerAtPathWithClip(path, newClip); - AnimatorController.SetAnimatorController(animator, controllerForClip); + UnityEditor.Animations.AnimatorController controllerForClip = UnityEditor.Animations.AnimatorController.CreateAnimatorControllerAtPathWithClip(path, newClip); + UnityEditor.Animations.AnimatorController.SetAnimatorController(animator, controllerForClip); if (controllerForClip != null) return newClip; else @@ -1090,7 +1092,7 @@ public static AnimationClip AddClipToAnimatorComponent(GameObject animatedObject } else { - AnimatorController.AddAnimationClipToController(animatorController, newClip); + animatorController.AddMotion((Motion)newClip); return newClip; } } From d4e24edf8cfbe972b493bf220b9126c53b278b9c Mon Sep 17 00:00:00 2001 From: nicloay Date: Wed, 15 Jul 2015 11:07:32 +0300 Subject: [PATCH 2/3] refactoring: moved texture size code to util class --- .../Scripts/Editor/UnityInternalMethods.cs | 9 +++++++++ .../UnitySpineImporter/Scripts/Editor/Util/SpineUtil.cs | 9 ++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs b/Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs index 4cc18eb..196e150 100644 --- a/Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs +++ b/Assets/UnitySpineImporter/Scripts/Editor/UnityInternalMethods.cs @@ -2,10 +2,19 @@ using UnityEditor.Animations; using UnityEngine; using System.Reflection; +using UnityEditor; public class UnityInternalMethods { public static AnimatorController GetEffectiveAnimatorController(Animator animator){ return (AnimatorController) (typeof(AnimatorController).GetMethod("GetEffectiveAnimatorController" , BindingFlags.Static | BindingFlags.NonPublic).Invoke(null, new object[]{ animator})); } + + public static void GetTextureSize(TextureImporter textureImporter, out int width, out int height){ + object[] args = new object[2] { 0, 0 }; + MethodInfo mi = typeof(TextureImporter).GetMethod("GetWidthAndHeight", BindingFlags.NonPublic | BindingFlags.Instance); + mi.Invoke(textureImporter, args); + width = (int)args[0]; + height = (int)args[1]; + } } diff --git a/Assets/UnitySpineImporter/Scripts/Editor/Util/SpineUtil.cs b/Assets/UnitySpineImporter/Scripts/Editor/Util/SpineUtil.cs index 2f0a851..a6dde86 100644 --- a/Assets/UnitySpineImporter/Scripts/Editor/Util/SpineUtil.cs +++ b/Assets/UnitySpineImporter/Scripts/Editor/Util/SpineUtil.cs @@ -7,7 +7,6 @@ using UnityEditorInternal; using CurveExtended; using LitJson; -using System.Reflection; using UnityEditor.Animations; namespace UnitySpineImporter{ @@ -86,12 +85,8 @@ public static string[] getTransformPaths(GameObject go, SpineData spineData){ static void fixTextureSize(string imagePath){ TextureImporter importer = TextureImporter.GetAtPath(imagePath) as TextureImporter; if (importer != null) { - object[] args = new object[2] { 0, 0 }; - MethodInfo mi = typeof(TextureImporter).GetMethod("GetWidthAndHeight", BindingFlags.NonPublic | BindingFlags.Instance); - mi.Invoke(importer, args); - - int width = (int)args[0]; - int height = (int)args[1]; + int width, height; + UnityInternalMethods.GetTextureSize(importer, out width, out height); int max = Mathf.Max(width,height); if (max > 4096){ From 82749f1c3fc18463878638f2827c2d1a6feccef5 Mon Sep 17 00:00:00 2001 From: nicloay Date: Wed, 15 Jul 2015 11:07:57 +0300 Subject: [PATCH 3/3] unity5 changed project settings. --- ProjectSettings/GraphicsSettings.asset | Bin 4112 -> 4228 bytes ProjectSettings/NavMeshAreas.asset | Bin 0 -> 9100 bytes ProjectSettings/ProjectSettings.asset | Bin 19800 -> 36017 bytes ProjectSettings/ProjectVersion.txt | 2 ++ 4 files changed, 2 insertions(+) create mode 100644 ProjectSettings/NavMeshAreas.asset create mode 100644 ProjectSettings/ProjectVersion.txt diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index 4a440d2c7ec607403d7c0b58798f7cd1b4a58fce..4744c5a346c4ab121c0a3ab752f59de6e6e2518f 100644 GIT binary patch literal 4228 zcmeH~OK;Oa5XZ+&%lla#1q$VHK|&&^MHNC+P-t3Ik%~x>5S*f|vm}cg+gdxKx#ds^ zi7&v3D+i8TIPeXSfK#tr;0tg;Tp;{s*LIzhPk=npbZ34$J2N|WrG#i=g6PO55go>g zg=oG!Tb>QC)1Sd$;5Yy?(6t}G=H2ffU%h|v>C)%7TR$&?wXj*j%5sCKkNAOc`a}*s zZ%WjE=TLtfkn>n|=qT*VP%bwHWpQAAMUFYx9G~W8eiQx*^gyzQ1@R>l|1e>=MUuZn zWz>BPe-Ct5#%)~zpX=_1vW(W{Gc2QZ_gcK8?miQ1`^necpK*t_(2s`C^Wi(NAipz< z`?4}WXmOT*8fSP8hjN_f@C@;s15e9{L*qkp;Jev5j}Og(XP(ZV`*{hU>rR?1JNr47 zaXaUHqmKAxB0h(pBdr5 z6Fxn{r_coVahCa_&BO28RY0zLjyWW)yO6~5yU&vHYQoQ3obe|KzrcKv=)M+VTe(qP z#fcHH^e6Q8PiAb~vYRG0XOHFV$t&A2 OGl`v~BnQGaFMk0)H0wbC literal 4112 zcmeH~T~5O=497jb22bn+h!YG=;}IbZp~0T0v;$OGW7eQ9LrDshyKyy&-PRIF9Kn_x zr^(-T`pZ)QMqdDv2>_f?qyTU|olj@aGx%=Xc0}J7Nt4KnW-TC7=Y9fD-sifS;P|{6zf$hJaJH diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000000000000000000000000000000000000..2f17c97b8306f84f46b5a08fe3b00d064ab08a7e GIT binary patch literal 9100 zcmeI&cXw1p7{~DeR4k}q?17CshnLBg!x6eE?%sKw+Jtyq!<~z^ceAsaA?m?;g)k=+DsgznzsroGXvTRPS+&4QJ%9YBhJt^lDeRo*r`p}uG(g3;{ESB@V#awq? zzF1NHi{^DM&UIC0=DTw<3Q2EStwl+i+uLl7&(M)n64gGKFH|Pvi*@Of)=f;Ga3t;0 zNA`rHXkD(9^2J_NO#019>Bsb;o3T}MJH1p&hLrhJpLli_x*6A|l%A{4x13*|OHXla zdO#m(V3w+@FDa>ReQx^Eb?l>9^b`h?is~9DSJEM)A+gK!S#sU^%KV|F=9$)oXq;WI z38OK^pue&7&}X3aC5-jcB8;&CHF`$+le7sKV_-;jinSOU3I)U12$HdOt;uUJHijsB zrZr(Sr5M@B5JompH@;WKCiJ}^#-_q4)?#cX6bxf?NbJ&mWo!XacIpnsf^x1@^DD9? z?DD-TwqlL`f%&h<*7R5gF``X)Rcr%8bf}M7h;7Y-|BTUh8N_yw*rf}xJw!1O=GS8f z*yV%Rku?%T9W_CSdKe-@>?9NnVmu^v=|b!bQ4ECn)z}4g`5<;>jRdh9H9?5oVTcT| zhfpwxJt4767h*4nVj!B+eVu7orKG7>Je> zq8WDiAX-=>K}@112r(Ik$PiP6f~{a7PG>`zS);s6*T zLmVg+45AehyL2JiAc}#QoI*^8T|S6*)<_TsQ4@sdfFUx(!9u|xWF2o@a#Xw9+ zA!foZAH<=oksxMK6NESnhR6`Jg@QrMfy6Fdh`A8OKuk>`=D{u>#Nn)wAda9W2yr9~ zks*!}3I;JB61#LE7C;mOF)f8S8g}_07P3ZyIEI=a#IZ0$hB!_r7{u|A*rf|`0z@$o zjpp6giLlKlaT04JiAB@|B~FGRvP2>jOrjGKyL2VGAc~SO*OuL|%_os#jU>@SO;Dm2 zhR70qLct{Rkl3Xwu^6H#33G9|1h)Ak3apVN`l$&@6k&)gF(4F7Vksnc=}MdeQIv$a zx-7vqpG288l0=1?pu`{yktLQ11(P@x61#LIPJ<{)!dzYs!8V`7a@I%^r&AM@I0J^r z5@!kplhB`U=_4DU*UkqMEA*pu=qO6UTwhl89y-$5Rrw>Dv(w_=Mz{RU_&Iil{+{?| z{9G84J{jGweKUTZP%w$}A+bwW;sS`GB+Lcog|N-{nz)EHlElT-qzd}BP54;i5*Q*& zTq+byVkIPY=}KG%QIv$a!n_=|`6RAjjU;g;H9?81V2CVnwNNmLYap>pSK?ZTq9n{E z=5?^mCviP%B#9fS2};}uLu84Ygn~)j42fO361PAUC1I{HSHU))#I3B6ByOW7C~-Rs zktOaB3MO$UBzEaa+yzmLM3cG3yc@RpB<^92Byle_L5cfdh%9lxP%w!HAhAnV;z5X_ zB+NDDL$J*!@i1#7iASgjN<0cfWQoUwf=N6MiCwx9Pe2qUVXiTsgl#^Fr&uFNJWWkd z;u#nsOFSzSOyW66?9!EZ9-=4-bB*}|Z1YLH$QnuFC2E2aFT)U7;uWD_60bsHm#)NX z5JgFtYs}YSn@{2m)<_a>QWKPT3x>!NZwm#Jcn1=@bS2(}C`!UyW4;I5d=l@oMw0k| znxMpoFhrL4NGO=Z$B@{iEAa_LQ4;1F^HbR7llY7^lEmlK1SP(JA+p4mLct`yg2XOe ziLW7wk}%hp-@rDX#J8-GBvw-sl=u#Y$P(WR1(Wyz61#LIeuOAW!dzqi1lxQPKeI-X z_=TFF#IGNe!4b|3> z^ye7*nmbUbTbLA?wQ{lC^2|J~tl(NBCc literal 0 HcmV?d00001 diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 815ecb39b621c242df520f046bd0834ecc544344..916f6599fdd3523d5f702aab1839ebe6db332bda 100644 GIT binary patch literal 36017 zcmd6wd7K(!oCIB*9a(rfXO6bi3mMQmVuefke)0c7<#%ZGfjHBn_iL(Dl~$K z2qL0@$f|-YDj*`bun4HAD4-yUfFPm>qAZFcBERps=hW#sHFf#eh4j zrEd3hg5cC|2Ekc320^ez5S;n|eg|{+pSAz2>g?b@Z@&3vM+d+ucpS3*^Hb+vcE+jw zi?YXWbMFQF>^L_tBOw0-UXy1N{0>@^ z{hI=(`8Ol(9@f9P@{Zv4DM9O_cufu}KRS?pm(KI>oYJ|aW6bwQdM?Im%F}e^9l>MZ zR|?+>zk^_g^IU-x--K7>c^lyvzZtKHZ%x>7uE$&OssoR02xsUy*Vp}cN#VD}gN}&* z4$p~iM-WHEU&V9c+Y`hQ@l7EozJsG}zK8G~6MVMtof5oH_|7p-?eG|I{2%O+;KvK! zHNj63PVF?F-*dnzoim8zh|+(f@V7Ho{)q716Z~c2d&D@UbK@zT&OHm*8&`zJG%6 zCHy@J{$AlT6MU&~^lx`iy-+$s;hhOy6Fxh^PZvHX!7ma%H^HwJen5iXEga*eJEHX5 zFPz3XIwJmz@PipEe^vOr1m6ISkjnGD3BITBLlXP|;qN1!;dp7hJsceW2Zs{J5w+)I zgdfIOc|~}JIDSxg8vjof-bEZol&?>LQ#!jHZS!k|_Ylu8r}TVVJiReaPCUcmw*lK75Bwh-LA=HB zQhS>x;qlxZluqJ@3Li-DZsCg)e39_M1RoGSL_EXkq4{VSoaQ6USy6h-e76L+!-co= zU6#0e*!gH!InQ^Y_?Lo9evO~z;WYnp^;rK3rwZSE`5kmBNop@E;4$5zkN@9R3C2BQcKE zS8Ey;EHsDbiQ}MlLj7nuIGSQmaJ0>L5FRG@+l8-6@V$kPD(Ch;OZZrVA1=I@;46ir zT-`zWqV{$&IJLLcL|ZPMrahE^)7k^A%hK9gSvjZkOo_JwPDj*FFBe{Ato&x-C&W1Q zyPtzoe6<9BPIx`RX`xHu8wtLp@MePVE__Xb&l0|tc&45HBfzPC*Ad4Nbl%A7foW|P+z^NadtlX|YTi{%eQ%pZP zMLDlypBB$YJf2fEy!D)>oIP)d=c69a=^Ea8KBk;KJ7JMb`8vbn`M8F+o->uRr&Bzi z@OaMB@YZv-a`qf4o=_Ot$usa!JHJFd?0-%CmnygI{4(`e|K-Zr zGkqg&S66sEU(oQ@^F`rP(3>!aw)TOC()p#BhvtPo;a94sBS2iO#lo-B@XSNuUygBi z-wICS_SM8&)Q9bT@io9{M<>^E%;8_$l1C@Sr0a|F_+k`L`J>-&6Q^h-WxFt)mVCr*inNhPU;5 zn{rzYx5s!N9LFPh~_?)69D8Zg4K2X{LVf zQO@mZwfMiU9`1Lii~k48ZTtD5dThVDS2?dgFM)^3?MLKkQJQSI{aCpzx1SKlLG9`W zIF85F=k~L{*^j!PxO=Q`_M;w9KGm(C?-&1r;B<5Z z*8g+H;MV_(7=J|4za`j1$~SQPQNPDIs>g?wZ)ocAm*AYv4NW~hqI?4v{&{$){rpNj zT>dXh`hQKlMJ`+Zk1Dt2{~O{ssQfqFq+R}x5o{5+<^Q;HTRvC|rI!D1iMxj_|0k7C zb@z8WBW?=!6drU?y!}YQe!_o8FhiX4dl)#ilc$Ndh}-=BUb)ThGsJOFevgXf_YVYH z950RYQG5HNa+}|0!PDB?pNPAM&F^!{xxJkr>3<%aj%0iLGh=Yu-d;%X38SFA{GNx8?Q{Fz3sb+snk=!;ZtRDDMbxZR>pT{|!9N|99oq z|0;1DR4=>9eJIuMKM1ynb34R(#f=aDRBr3#HSn~0`4@5bu=Vn~a`tbGx~F*m4bJge z{~HuOLoQn{{~_)k*8iq*9*3_(`Ah|Kf!!~jzwVRza&IKW_|w9tkUYlU5WXJq4C%Oj zx56Mp>7PoxMcmf!H1M?gU7t8Eq4GZxS5mv8*BdBj|GUM%A)QR|Z$#lU?7^7OiryF4 zSUuLiiE{QID1O?{PV;Z(@o%mk>)%2-`xl9SOOJoL$G??&tp9DwxqgS?r~2KR{5Ysy zs2mEyw~29@-%kR^|G~D(?fko)`tAI?y>f0p=RiV=9q31<9q;85?~cTAP)%&7`@6-z zpU1zy$NwJnSpQ7r+&%~4r*=Dw{5YcVTkrHfQd+sqQNN9Mu5!*-S^Nih z{0Dmc2dT&U4_40pPl$h>$NyfB{}A<9|NE44xm_;hb}0FAMCEq7#CsU=*5q=_kS9aj zw&yPO+jzT`bG-LUyglT{5%udQ!3p)!j|_7fe_oLA^Aq8xZqDHsB=`*B3lqFk_@V?~ zD4gCujK{kYoZ8jlvG6pWl)-5{If8hL(qP+FKX_XC3=qd9$^O1rIoJEi;vb~IDgGe} zpJ7jYo;p%Jw)~eU=kh;K@|7h&j;P+hB=HUtZxOfoT1uYGBW;U!-3A0qye$3O1zm(^qQTT#yaVp#lDkN*UZzos7RuPbN&YVkKb z{-(#jMm^TQR=Mlx(75%rhHg?~K3Ulo34f^ULN z67qZ^!Dk3RE5YXqKRdw>7yii@r+#z{IQ7$Wh_@)6b{zf`cv?R_m$=K9Er(Al=k@a# z{1omy`hkPWf!5V)gnuT%PZR#x1V2~!`3Zid@C%4%*iZSo6`b;QA@Mtj+kAZvJS|@r z5yvIT_W60`ydQWc{8;J-7gJyy@SA)_O`zC;{HG>>dDoy+Y?;;qT)xr+Rm$?5qrap$q= zxmr2rcUSRWLxEHL*HZWt|8?rI{;w!!|Gwh?s>lB|kNn;!oy>aqS?m9u|L{NM8UzwPmVM?Kd6UFGbb5dUo+|Lq?C9qO_E zJC(El4Do-@%Uhy`)?8dk39Y#d;C99kM-ZD zoc;HT|EC`R&piJ7)nok+C};l@;(yTN|GCHi3-wt4L(19zs`wxF_2VANBZuqaN#jOga1a5dY&I{}UenZ`EV{Pb%kedk*|GZa+nS9MQU>U-<75 ze1-6*6MRhg?_-?i%@e_C-h765i~M%p`~!H}`20uWEA|BuK2rh2R&%PMJC-2Ul<#-vF z+M4{5FIwN8Bz&6~r~8Eq!KpsBP4H`kZzF-&S_P$_OaBf%jz5ws#3Fq?P8y;%6Gsx4TbGF^Sox;0#ZM)rF zJ+}P!P|oi^9wPodoxe57{|@EWPk$dk38MZIfB$hW4bPw7p!XlCpT0}O+xHFk*6{Xy z!+pRzGUT`K8@`*ki`TwyxUX_9x2)uAKj)`wY`N|4{KRd(-s3#Xk3`y|_w{BfXMaKb zvpoJzkAJp$Y`x4;&iD*d$NCRa&i;>!|6q@Qp2z=Q^;rKQ%GrO3_}}O8 zAL{WRrXK6hC};nT;_veKyFLCM^;mzea`t~;{PR8j1s?xG^;rKRaqUl?{aATq519=@eg?Xi#`59kAFxx`#0H!$E71Z{v{rNRy{WT!^%6{=XrLAA0L$r zmXaTDtw;HKuf)5Icx!UMUQV9OoS0 z{3|{FS^Og&f8OISsK@$4woc-5{|9FpowZ~sl zkM)l$Xa7Cor@vQAYd;l_zp5VVKS4SBeE{3m(*Cwu%Y^;rKY%Guu~{*QS4r+WOS zsmJ<1s+|4Di2rnt|6?Bi8S1hAk1J>YTJfLh@qfbOKTAE{j{GU>f z^`EPp{a1+p(;okM9{*?5WBs31&i-4)f4;|mfyaNLdaVC*%GrOv_%HJKKkxBhtRCyX zL^=DP5&xwg|79NkvhG$A7)Ye}j6g|3>BP9})l8J^q_K{%@$q`fpaw z{!_&NO^^Q;kN;NnSpT<_v;REtf7|2#j>rF9^;rLH%GrOl_;2_4@9_BVRFCz4PdWQ< z6aQTv|J@${J?gRk?<;5jgW~^z$Nxi*|6cW2|BsZj|5@?>*yI0+$A6!CtpBIV+5e{a zf9CPu@9{sN9_xQlIs3QXp2vrud;Guf_#aY_^*^kf{riglmmdEk9{;b@WBtEY&i-EU zKkD)S#^ZlXJ=XuYa`rD5{}UenZ$17e)nolnDQEw<_EQpDp~~ z34XZnH;8BW{(|;(j}!lYV&RE5g})i&%fQbD$43<8i+g4u4O4NIF95#?dBTZ{+-Ac%I$vamf#&3 z^4R^@>BODi?#FJWe5(69m+0?A==)bVoz}m#a_irQI1Y+;x7gpgY^&inaQj`+-??n3 zd_(j3neD+lGUVCFeLg4pJBuBNJO4)J?>Kf;&i*L9$NxApsW_1J#ByK?^fuWiJ?2Y8x)PvzGC4&ped{p3ek2>i1pX9U1c2`rVtj^V{~bk8<|+ivQidi;ke=k(t${*1@p zt^kAI1JtUs%q=ezykr*=F{ejL=UXuWZ`@TCd9O8Bw_KUw(l z1iwW1iUhw+_))|&951ayehE(f^ypZ4+^e>p1*i9O->=-hpL+~A_ecAF?y<`Gec=sv zX3qyao|PKjdX7`hp1s7A^LR!yy!GUjbN%+hL*sdYJT1zD9e+X!pCN9?pH=Fy^*gGZ z{l|!Z3_Q(Wr0^;Job3ntz_rz2{g7YaXt zc!oKR=Ql}u==|MTKM2|UezGKEj^x71_(rzmHC$1dESKLVcSKb69#_)k-h z^?y`3&*NLdKNafJ!Rd(R!9672j}dPXxBci0@??nHdjB|a=dtmgshsmQNBo}vPxGHe z;Zyu)tH=63shs`u#eWWXn*UQ2KE;2odaVD`%Gtk6{O5tE`9DM9Q~aM*kM*Cgoc*KX zzW_YVe<6iW@qbP|)_;+5_OB8D=fTtb7gP8Y|0U|N{!5j!|0CkR3_Q($IfYO0U!flB z|AKP%Uo8GFf~WbvMB!8XSE|SQuTswbZ;AiQ;A#G=DSV3m8ueKJwaU5Q{R;l6P+td5 z2lYFeuU``Wl^CaSc>1n94t$k(i^ALf_%-rph}-^nJ#pu^>A68U&kK9PPvLF^kH&vm zw;Uq;>oHFE?<*udHxa*+uC?j;2JzP9^xRAw2cA44-4t%eO`+l2qCEo8V zxAFc!xy{!P6FmC9k$aVMzAh5~kBGM@UhDrcct?h~_5XypOQ+4(eabms*GRs83Qk9q zuiGTvpApXxxAESu;cdJRBzTms2bJ@>^gj4$o&0n4+ja6Uz&ZVPUHXu6-miF4()loX zT6B%=FTYf7`|l&faZrDuaUj~S_?3pAYTDr~K{%PWk;i@fLBL-&d8}{Qg7zHoyPW@HW4%fp@rgZGQhn z98o9p`?_+T_Ya-H>HIf%S~}mL@Xl}3`5*PzdG<}^>>n0?K#jCT>9OU|0iNccLL8US zI1sO|^^~)}ApWV~Y4h?lkAHpjSby|A*-<|_2Yym-NIx=^9**~VaH`*ph_{H_d~FP# zmak2SCWcz z`4E>^#=}NfTTly6XoltdM3AqHS99fw#kuh?sMaclX1?K`ODsLjTD?*W##b&t+g~pggi^AgQSi>?G zY<&qaEUATlsGg*f4Hgu`&@7c~%jl~wMgv}h%G1VLYnI~$6(G5dW-ZL3v`e8} zJ-8;U)sW8_eM6PPjDcpom=A_(VKr9+8qCgEP^ryW66Py4S4Z{c$at~QRnCGLXxo zRROXS&y9g2isdkm zK85Qz1Ouvq;TjrGB;}I}ij8tuuLo<8c-Ty_jpy=I+;ulp3{(nXP?%jfcruzbE5Ru4 zY&8t?W4+z6ge(ekh4_fmPU6C5Smz`Umg5y!txD;b88ddK7Gmqupv*dTD{GNSmG(&W|JW7^&sJ3P57$}yr zh1F4B1tP8JwY9L|T6d|`U%{wGDautEgH?J~4|3IF56usaA_i9^uRmN9mV)BYSfw0h z8?|D!ineHA9yomxjNVwF&Pz!~0?VjJNoqUu42IoIIhc)# zq}hkksJR&h<&mc$u5SruNVL5=5>_wPQN4}j#RWy2$YLOF*1L1HMa2SI1<3q$#l~Pc z+eA|=7vdqZjfqkiB_cj2axxZS07hFd9VAL%spLO9=Rj2GWZm4k#d0(~cuwoco;aT? zcrMHpBpKfGex+RL2{4%L&o#?=StSflR8dftMNuZX3X><=Gpn2NgWBjwE*S<5s5FGp zH4#^~c;ck^dz$q|Wqd_(#4RzT+i=s7MV7F5VP^9=RC!KT1o29ez(<4=(AGk?%4#!o z{~YE)tips1FEd>)!hQ9H6i6cAA*wr9E~B4}uaryqwXPiH^jf#{8spX02wx%^QdV;X z8GX1zqv^}ikryKxNq4hYDsVASSE&b+!1&4-Lb5m*{ajvbjJcv_NCP<)yt$w|*T|32 z92b))!v(b3&Bs9RL^(HZNbJIewOn-!^F2mmlTgD^aC92KFvX6OK3E%$@bX|d97iQK zD2>rmZWqHjtj%*+UslS4<=#qTaoAW|9z%ha!ovJ@d8~qHFb&-l&qH6Xq-%IA?gmGW z?^#;T=bBjjYWTWb&{Mn;>+ zB}0(E))_B{VByeL^qLu12w_qvr!TOqaB_ z{Qymloq*lY|H*M%kI4tUov`Y9 zCzTtTH<|)9?m5+R7WWQl^VF*FiWjh0-nv%{Xmg<;r>KeZ$VVj;U{J&+1uY`$QG*+= zl(A-BgKMjuJc1NyIC8I3T2!@j@sM1)uzR3VTX^`81dVrA3gud7yKD(j=c>D=7roN% zYjNH5<|uHTJ0|WoYzwS*4&=&Mj!P|8JNt28+J*J#LbUHmkXn?xk)L#C5*V(b!z;y; z{8$eri&3nKS5+*>4c2H81FH-2RnQ zEIm*s`g$NN6mz&I&E>JYcb4Q}TkTAaw$;vdSJI@%$6H)tN7x8xHn3&m?)G?8E$Hmi z)=3XMvWa~U32Vn6p@I*XKf^|CJhJ%X2liBj5tm!~Wuk-gFV7rhwZD z+)40|8iF#P~?1B=@sY`ficw zZg2%)2c*LHvoSDh&dkZ|pvkN=5iT0&T?9S2zsK!1rd94dlcBWdA{7grixt55-aA~s^i*Gldpw^1{Uk()9dWye5v7^G!k>7>iCYnkqiP9)qB zp6u5%lj6vZi^i}K0Qv`?9M9Hv4_r!l{VwC*-GhJL#3p5#>;^D496Ha6b) za@9@QG1H`T);RfeWOkbzXi9E7z_pz?QA-@Q`-0mbp_-!Ha%y5&vziRZ<4&xouy{{~pwU^1sAm0O0i zFBq<@4sqjzc|F0fHwH(N;zk>jcRIyAS=-T5#|_A&*yw%=V_+gaYzJaHv%QfRkF^J@ z*IF+9+`^%3`Ux(DzTWh+1I0Y8al4vVA_= z(|%4hI9QMRhih$7#BSk=GD|y&NdtEg#Z`DmB<-{;vT#3Mn`rOiP;PiN%z3~DRk>Np zVS%T4iPxi~qpvRck!z!D^WMS2p{2`U;1NYN*$UQ+*hUZqzjVt*-h;tgyjWLbzYC@7 zMh!f58&9-D7VUxYNU~Dy9(k|a-QSL{mL=2_e#s*ym@$EkhaCjqcpnGPCVWzUfA#FIofHV zfsh6{41}`bAXkOa9$s{ND}0=HVrb659`d|-T{Y}hHn3R5n|n+qrDLR0p{>7Ivc;97 zwoNO z(IxopAOv#Pa3d|a&pzN|5A+d;=y(d>w{;3$oPrOgL@e$16oH4}H~uw|d6JJ&%6p1VN&lg`mW zX>wuQtGE84E(F83A<(BW_Ls!(k0RAiV<1_&i*=}#_viUo&>A&=gfBp1byUg2Y zFLL2u($sWEWfQ-MJ{pK`Wr>A~pZ&k|{NC;$pvPMuR0)*t41Rp$t%K@WDi{3adcg1D z*V`kAbaYoI5*q*VPV~mhklXOWYdTL~2S*3Ki4$*64)yo-bPe|nE}kdt&z+-iS{aV~ z&wtRzSmQ@aUbr~)M2GvhYxI)N?TN?y-dP9Cp1t4Vp%p9U&YFEd=gOHg_nVnG=$dJG z%tRxjRu+Fw=b}SCp%lGL{Z0MErb~jM&}QK2+;z2s<_vW%nSJoAr7Lp%i$-#54qvn2 z=!L5W=N!0VdA5^#R;t>;WLfw_+A}lo@`PoBYv-2MHM{3`FK&hhjvPF6bav)grSE|1 zC}zonm)a}-i&yXBD&7D=u?aB)AKG$d-nWbjc)zahp59rVv**lpW$vCGaNt1)6P~|- z?D2ArKc{o9|E3lso&E2|HV!%Y=YKOUPQL1Yk3_{lzoX~v)U*z3Kc{EO*L-&Jb@rtpMoARs<@RTKpH zra;fy2q$n*-O$+L>Igrm9OyaCd$D{>S})<7y`y}@*GvKaLN?;53n!d*Zc0~_N4sDO e0{rVY(K%f2p1svm8PJ&b`tcY0e#+qVLoCO8T9nzs|k7O?TFD zu67(};UxTXy5n3u0e_vt2M!&WY)(2qICbjOJ~+M!_FCKRtEjG$#1A%NXUdJ01D8)B zkK0}FpMm4t0e^Zy>~93BG2sV^(^*?wzg~ICoZnD0Z5M3!1A=aG!@p^IJq+7UIcP+o z->5}l({HPYE|TvQEI|S`blp%*x7SYUUZhm882Ktl+{6z9y2ELj%e<#Xi5qRGWLj%k=t$go>qQWybha;FR3_e_c9T8)9eWBdY*!(3p*-N(M+Un z=&8W#lbpMAlafA&lL(^jcwwjO2L0o1N5}pi935y$pUG>vk<)M!mrTzP2&1SQg^iw1FaW_op#^*5HaVF@-&35P}&JNx4eue9J zsITiHaev`DYRZ-WRlkw6$lU{SxIP%c=aj$EN{ByqFFd(lRqJH&z`a=LJESHLvY2$% zmQ>JCSiUj9}{b|GActQxg=h}EL(CH|JGgzYe@cU|+!KUBb}_UWuGEN9*+d(Rt# zl9-~w!|Vntv6?B=)u7>fE)=ZAU_NvkSPNi%HK7g2 zlSxu3b#?8z2M-Uocxd=>7pnSUJvQyT?NHzK5rPec&26{CZPh6EKxhbcuv!jlVU$F! zpOC~y{uqWU-56So>2NzB7mxZ8T+BllV$bcWB`V|i8bA8SF`rjWt^Wd>buU(n_3W{+ z>A{;_I0ip-aLP}nb&#ie&8BJM9y7+|;9)dT-K50~9?K0%`hfDnR0`F2rq^!krjbNF zjvJVC-rzVio?Gy8Wi1#!%j0ckQ7@3{i);pq zTPlhm|0k-ouraaFi+zvoaKL6zi&WQ*fM2Xn%!JXzlJdfc-WPm|C)&(Z;I6mT+-eLG&E*J6Y5E{XcDJ1IlR(8f z)1J)nl0KmBfa~G=6;s!9A#CWr)D@gI>0D$+_*tg93$8+3npu3{Q{&5u;33QubIx;?=MHT;Y{!G|=wCcr}EPe4v#JBeX`CN~+#VRwNU8}@bP zL=L+r5LgqLNfBKljIK)B=rov-Nm8wCj28T$-q=hZ248D6-T-=1&?}8pgE}Ma_IwBf zkaSk1DcG9WxnZ){MKGq2ZE$iRhpYw6*pT_mi5#-)1p-6ncKr%Ymn1%n7-1kaueMa1 zO5rB6FiDD+e(UPkZR;D*|+H#FfW)C_1wfDtDffz(5N1_ zkxq(?gysdz0VYK$FJzEa%8LX@l462lRrF%!2a}?rmoUhx=%oTADavMTMxygF<^hwU zmX|Zgs^t{|Bxy0xu}gX-bA(Az(yJI`mGo*0WSVbX`?1dzuVK7N^5&igukN{~26?Su zWSVVrpJS>Y;{-uARCygY8OZJT&A{M;(Ow!xAsec^9xmdRLYU6?G~a-yVB^GyGMKb* z<4oBbwFQ|#my`Y$`@nBvF2z3Zo0${5H*R@lZ_y`n%8F$L8V>WhM^BSZxj_K!EY`el zW#*U^OUT<8l&To1dEYKTTQDAi&l;Vzsh;0%=t6?co$h>P9KMeF?qCwPdrSoM=u9ly0vq|Su1A1ILMs#vZ%Yt(naa`Zs~ z*F}VVwYr@_sl<_T^dT!m0{6q^4>QChhY@3$KjkJ~3#ZgD>p#Mc26Fs93JeM(alnkk z?_+Qgw^Ti*r5k1i?&C!-OuFm(=Cd{4<|~{qE=;_degt!)2z|8xNm{-JO!{zQjP7Jk5X3DXqp$0e znHxMbT4MN60fPb*^9@GXs_kzAGgi#cFekE@pA`tKEMVqxNo}Mf{ckY}XLfK)i<|Gy z!Wsmcfk55gri)saGZ>J*Vut=4Fhkvg(F)+_nUj6ye)%B&fzB8&PJff$OSDTtt-Me0`>Z4>otyNUXB=0q0t8v;S~5M;5LJdKa{0Nqq_h7UT;xtOF-P7|4zayBK zGCNdMfe(@Td&KVwc=|vyZCH5$ZC5P>2S;~2_^?WoR#-ZJZ;YKDRaYVyU{CitU9Ic) zxj|__M<)AE!WW!nKfx(ndb|ICqd?;Qif_pu!nxsFB2;_dVNMXlE&rDMkv^HZ!9%8~ z+JUb0)}ILklLc!tGDUyRP@AH^0A{SBzhq8i zMSmp_SfnuDW)*bfp&bQTG-vqNj5SFbbRi30=G$Rkf1HGAkFW=GdwQwZ-w0O4o*sJO zV>TK)e79hj_Le$ptk3ti3`(C6_2*`7{!W1CMc9G+>hFvCdn85k?-}is^Z~j=xZG&? z_@cOND%1^?j~($~y?BwS}`uKL0I7L99ROgc#LKXJ>_fR0S5 z>c)piC{zzkU#~5~;{H8uF&L1S;#>I7zzhqQ&{q8mb0XKk|0)neVbk-Kf~-vE}40Y9U-Ag9v6k~0YuvCpLSo_S2tf2w9%vbMs5s0Cr{R-?rtgUcVne{OfMg~H?vG@&f-I1?CZWBs-MkyOYL_bU=X8SdZ7C< zC-MWGBM|0+vWIBH0$FNX@5kWu8K~*N8a#s4hqSx~q5E?Zl;MVMoAl9R^uyf)I8Sue z6^gr&pFl=?n<}b>Z66k2W9x7(x3I+LfxsX}yA+=XF(-0-9xMLl`J6C5Op#+l z*$Ga8A3Q8Jvk!-pc%Jr>Aome?B?Zi_^0nb31;U7drS(y0Ug&J<_)(0vMe)(VAV#|+ z>jLIP&fg0KLXZV(2tz7%k72w`)? z1I&r6?1=)wl~q)Pi(sJr7*@^~GaH+k z$iiv@F(Rx5>mak%?WxSdCTs~9#Aug<)tM7n*s?%yVc6kxgT_4cV9L=(j8hg==d3V0 zo4gaiAV#|+Z?P7WjU^v{9YZnO4>x)mqtll;N5fhzrGMgpYuu^FdW~Q+ zThD!BTUSQQ@tZGGmzfiU7mU(>KV3qP-LX*r`0GmJQ1xt`N^4k-A= z_GA+n#0VV--Rw4Z;tcSPPJUF-;e>HvO3m<7T2O%Su&5=3lX#x?lAxuFS5m-e$#?m0 z5D1E}8GYd8h%qBCHB?VsA3l=8Oho!CBRvp}xfO`R%{=8g{Muo29ahEm^-3I=427j1 zIu8m|XM1=1z#vAuB=1J%M1FUl zB@iR>mcva2(?9StPb|F8W+pae&jAK8+9hSrWlm&e&l3n)87$L;TqSJ-W@OWL6EKL; zE@^u{b0TYdfk4RG;D=1m)|0juG9#O|7XgD9?UJ?^GbggPmk7i-ZDz*trOeEx?q$Fr zM!Tf$<;;n!?iB(tqD}|R2zw>7unBt=Fo@AE341kjA`5$sK#T~h#GAR7^tH^$rtNjW zAV#~S?Plgg*7kaV7}16^bkNt$Ueh-)Bb&B20)rUslD0Q7C$hFT3k22c!@4)kPOP?J zq(FCj3o}cr`hr;<{x<`~*39cKw{P9uumY2J^li)y7A{fHdl_UE^gaQy z3##AHgCfg&i!|}@e&)m~=K~C~%K4xGnTjBRuL}YE_bd4SdK9NGZf9n;s^CMwAVxbB zoit|I*Q5_KC#k@E7w;niA*fqfny2>gqYSsH`WP^X(Jra_ICCPa`h-AmRcyK_t2;l* zY;4j#1q@=eOVU2goXFBXBM??;tZ(>PW@nT4IbaZ@U6S{C=0ukF1%cr5iY?9^jJL`9 zA~1;2F3I{5b0W+7vOr)>LPMH*0>7Q=s0RHE3>Wd{mv(%G*@6n%&=x*&Ch(tUtmCTe zd4D}}qkcM_z8|2kGBcB;dX>yzrePbFNa6SdMkny|es1}-ah9;SG-!ZnIgV8lbF(`I zGZc%bQvsKqrvHnloAAQ84PWKd=n6=m1v`AH!vBMbLUuDqs`ezH`V{9-cU=rA+OVetDs)Y_V2wrVrz60>tlu9Xc z;ivrP9Pn4J)#j^}@^W?Y_z{yA*_|=eOXaCDo{=d-ZTe>~ aJW3yxkNIBQhUZ54BKwmcW4XA{xcMO~`bBC0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..b150ff3 --- /dev/null +++ b/ProjectSettings/ProjectVersion.txt @@ -0,0 +1,2 @@ +m_EditorVersion: 5.1.1p3 +m_StandardAssetsVersion: 0