From a49d2a3f22cf1b98dabb6510b63a51b7c2c3df35 Mon Sep 17 00:00:00 2001 From: Demigiant Date: Fri, 9 Oct 2015 12:13:05 +0200 Subject: [PATCH] Created custom plugin example in UnityTests.Unity5 > Assets > _Tests > CustomPlugin Example --- .../CustomPluginExample.unity | Bin 20948 -> 27652 bytes .../CustomPluginExampleBrain.cs | 28 ++++---- .../CustomPlugin Example/CustomRange.cs | 20 ++++++ .../CustomPlugin Example/CustomRange.cs.meta | 12 ++++ .../CustomPlugin Example/CustomRangePlugin.cs | 65 ++++++++++++++++++ .../CustomRangePlugin.cs.meta | 12 ++++ .../CustomPlugin Example/old (scrapped).meta | 9 +++ .../{ => old (scrapped)}/PlugCustomPlugin.cs | 0 .../PlugCustomPlugin.cs.meta | 0 9 files changed, 134 insertions(+), 12 deletions(-) create mode 100644 UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRange.cs create mode 100644 UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRange.cs.meta create mode 100644 UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRangePlugin.cs create mode 100644 UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRangePlugin.cs.meta create mode 100644 UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/old (scrapped).meta rename UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/{ => old (scrapped)}/PlugCustomPlugin.cs (100%) rename UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/{ => old (scrapped)}/PlugCustomPlugin.cs.meta (100%) diff --git a/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomPluginExample.unity b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomPluginExample.unity index be74781d1584e94b634d164d64887a43864a4743..9d1842a7fc0ccb1f460e9b0ff45cf49cd3888e78 100644 GIT binary patch literal 27652 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 literal 20948 zcmeHPU5q42ajv=Jj$fM}pY1b$?)^D94tC*w42N~>cF)Z2&X}3ox#`_AoX)8|N1 zZ%tLJx_Wlzj7&e+2=D_)AjFSAi{I=Q%MwEPg&&CrBOMZ!ELrl4Pxga-wvg8^2Kj+? zd=VK{kyX{R1K2`mO|ELXDl;-8GBWau$gHdlf|X$qJn?ry5WF%7R%Y}YJaYE8&OW&P zaPX5`w{E?Tp6Tb-dX{F3(N4G*XVW}b3?~t1gB)oAe`Z1OD*BnGlX#Ry!%mzQ!R|Ac zxBeg+6f5yCx|oEcN$@fvVRHAY_Zu5U{@8_KTx9u${UV}9vh*C)-^iowaBCyXqqLB= zf>%)0JLp0}^#%HeXJL3TPNLOi=5r?~C@B%{g=ixzb{r7|Lb60GjBu`GSWSy4Ps4=y z-zAmGTCM!=t`Xs}!T;qgM9lwExEo22Aw%`V{GkIRNZq5qt^8?7IVlky8vHS4NS5d- z_4QF=dLa$Bl4!_fuNE@CU+Bq0ZLDSZ{IPzGt>*5zdoZc~Adkldx+izswO=wdaNF9o zUp7RL9I4T@*Gj&K?CvK;9;YMX_&BMTjTknLgk~0IP7!$?9t1u93;Tb)mgBcu$ux5VN! z=!`M=2HxUMOq+X5$R7k!%MgUlpt|0X7XECD$qog+B%`zz{H=>9&Ugi zrBawH;ixY-2yg>@ARQ(V5adva+5p6t$U+9Qq9%C|uSEOBG>;xyh9g*|QRG3i-~s7c z5yk@#P*G|O;+rJDlpl|^L3}*iTaP9?)mXmy_I3J2Si}QC?kcuVj{U4GiivIJe5 z^ae$|7qK93HFT;C7*PqgbD}IFIgYZtiTsj{vYwcRh$t!0-6rc;%LZYxnZc-N1^`Pe zE(WjYFve^rSy%-74OB!ql9V5Cxfe)z<Vvq27F&tdGlxNd)$hi!5b%ccj7l@FE&?4-D2Qi}t!usV~Ty6o?FAurg0;-m8 z5<&x>AEzZ-n9%xk_+%Vi-^lU;B`mh$EKdXyxe{9(i-)sRjwIa@oc54aie35jcv$Rk zdmg%aG&@l|+L5^4gIJF!rLpM@l6c%1Ct)gUY!7ff>g^`6#au`0WTd5aGVEmAojuYE z%j$)iZqdUr8!2rk8|C46Cmt|XSrB%?oom&Sc1qB;IP6QY`^<7QcDk}atW=9}aS?*j zNG?s2g!U}f!^t%kS0P!45Aa#TF{&+FZ9W=zxpe{B%_t=RrFJp9xm^p&DhAJOA$4Io zruP-z2yhuZSvszQK>3_#y$z@vsDIM5q^;F@C+wHw3E75N zRDh9-zR9~aHa=J(vmn64uPNo&b-e^#m$T8i`>f7D9NAJhDf&C%FuOis6ZKq{PfA!H z(Nfb=d(O&H>qhSyAbB?&uM#HgbK9Ql3T8|%vGyYz{JRQQVnEa7?d=I|48mR6MZ-dH zgMmdRf%q2BrBOMO^(~%D^U7rnpuP(;0qrA6eZg|;yR^KF%Ga^rio;~m*jhz1XtExb z+pSg50CNFZCBnD4Fa}NKbxyW`;a2JnOdIn;W9zsS{~91^J(d!cz3fl7Xf$Xj<3S`n zwQfrk*X$`=m6qXGg)4h%y_E9wFo;(lz%_MH+8kxMot|o`0uaUi$zoUxb`a0EEFLN$ zJPlbtrGhjx)B#gURt7hXu1+Gh_l-Q;A_als1k(z2(3OYgDyOQ|O9wl&VTwULX{*w` z>dh0``lq=fTMwl~rT@UPb~V*`%G2sT!+D`Q<0o%GNXHbG(EQ|mE%(05dMV}7Urmb# z-%F0&(aYKjJ+Uroq020Ic>9AWjrvi6)+h7*)Lm4gCel&;RB6r|PxhDb5(Qh85DAF| zpUH21%3__5a;E8415z3?OcY6bk9z^a@?{O=MzSPUAnC+JSVJ(o38fY5f?@4c3P$&8 zDWza8^z^uz04&N4mb?;ND5-?nm}ho&?_CKSGsSK*DUt0fmJS4&RbT6F2bJo5g|k7v zHmKs2eYO6D=s0m-%V13Snl4+{0(x!J>$2}(q}@iBeJ3MCCEvyHT4mYv0$YPaFCRLv zt|$m*W`k)$E3YJ)6kJ!gDXeD#Ig(6oC11&C>k8KCFR*5ybfjCf3f&F|(UqN?_Ny~m zAAsIpY|TKPCf@3rDV9NT71&5Lin0hI1 zwmnT_Upp~$Y!*5pFygH<@&CP9?2rm%d&3VNKMd8lq>zCS!G-J>vk^}cbz1zpBJ_5X zmguV8S!fuEiD~y0o>CmH?9L)kL_)dlo=Umw&VnAPSuVS?Hc0gA%kHc#Zs1Ciz6Ng zyN3ahTiMrlEM#v`mc+cq>3YF})e_g+5*el9Uw%z^-&Jwod$2&0E#?-5$7QAe2 zh%9F55DCdIS;SHn{a5b~NQRRWZp9`fqck4*q{0Mi)w8_M@@9=16 z{G|3N)SKZjo(k~;w{aUmaC5SlI!!#V}ZWSDX zCdH1HDSXuT7GI{ebS{@JZ0?JEto~|Paa2YOn9NCDWC1qKBZH@fB=oTrJiT==s3UWlZGC-P@wGD`M?&LoId{tVB)bijq6WtB7@u^QGdXr$M z6G)QDBl?oIF2>{`FY&?U&G0~|Pqa|04HG>t_a%?wAHCq2@DiA zu2u21;kC=l{b`Q3mh0hoOyRA^#1C_Yi44$2I2>v)+!o+EAaYX`pMudlQ5@rASI`#a zx*GJU#kF2RA6qhETZsEzQmFeTsKhDu;SW-QCN`;A!0&y3Mj!5YEKccbfszrOHTIq{ zXz)--!gI#kwW41NWYWS!_tu;HBf*pgrd}pZI>$NVC(~v>$=sHQ@6a2BOG&&dP+)hw zectpH@hDo(v$5gtyLj8|Zn*zD)7^1zkY|&LXDz<7mpVME;b1VOqm|J{LUy)`FBqXJ z&(U{17IC^6jmTKAAYl`>{@xd!Pc^Tm!eSsx59|1SYB}FrBln%X2*PoKvj7Bd?v^7I z>-VW2?Geg+zi*cD*5R}DP-`!ek;v!m&7(VPX(S-V@@KSaX_`U~`iyxX$6e`_w0*3f z?yJGdpP+o09ZNJ#L*>)te9SY{BNyW`>nWAe*AAOTZzi3)=Dgqt+j86 zj4JiW7FLaXzKBMJDWTBG;p^ur0s~u-G-1LLTYHb!`YQu@W|Z#cNaLrTIKL)pQzPT zWqLB4tP$a{A;YN_A{Wf8PNdfkAJL7|hf!bHA1CzgS(a({S<0?^pdXluDg;A>5x|8W zbm)4Tt{ry)jc0TLm9Wc#3-=$VYmcrkyX!9cMWc_<&v)H5d2H>qk5b-Ey5N*>z4^}d zH{4IZv5>PIZ=t-;Q{ENIL)*CCN_jUa@3VBDxa%Fae(>POsqho@Oil9j0Oj3F%sce_ zguC8Jd5^lhk5C@2cTwJlTps#|>kQ@XQy$7O;c=a%ydP7ZmF2yE{P6oW$U8(-u6*A| zdEcPCXDJV}71#SI?_Tl{r|JHLyMCMUx|CE)`Tx5A>GOYhPwIG7d{Osb zNl23E1876t+V`J-o}Q&{)i&Qz8$p+5#v;*B-@Vkmdi76wWW98?CwP4DoW1dG{w~OU zO0HjKpWS!m?=jU6qdy?JJLo#|P*veD`sauY<+o{HKW#s%JS9Ek`Dxn!Y2~@@+OIF| zpih|k?lXXPTDr=qc*?1g>IDIn&>YI za0VV~31bA4L;^kn1CfA>_(dGF%r9tYl@lhNgg?8K{nD#x5spUW1ZoMq4@nfYya)KV!)X4u%E9ALKl#aXdVTfA4TrZ7M|AhaFMNTp>bd107%z&D zuz}gPpl>9}bAMUrPVYnS|C(vXqu>X~@8{a_>3m0d%db$vzHA+^!dyc_d;x!<;|O1S zf=k2~YZMJ%jcm{@O}8R)mBH=i2sk`@?M%k|kqkWkfz?oR?6hdPFReJ3_=DxTVk} zIMZ3o$-FuGy`BDCb?*mpkC)My*X?rqb(&9T7kWZMA6_{4OTO1XunWDf|DvAuTWt;N o-7}pF>0X>?DepG@e7K63&F5Q=m&>mDtz!gCLLsnU>q6H50h=;0ng9R* diff --git a/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomPluginExampleBrain.cs b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomPluginExampleBrain.cs index fed5cd6..8fbe005 100644 --- a/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomPluginExampleBrain.cs +++ b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomPluginExampleBrain.cs @@ -1,23 +1,27 @@ using DG.Tweening; using DG.Tweening.Plugins; using UnityEngine; +using UnityEngine.UI; -public class CustomPluginExampleBrain : BrainBase +public class CustomPluginExampleBrain : MonoBehaviour { - public Transform target; + public Text txtCustomRange ; // Used to show the custom range tween results + + CustomRange customRange = new CustomRange(0, 10); + + // Store the plugin so you won't have to instantiate it every time you use it + // (you can pass the same plugin instance to each tween, since they just do calculations and don't store data) + static CustomRangePlugin customRangePlugin = new CustomRangePlugin(); void Start() { - // DOTween.To(()=>target.position, x=> target.position = x, new Vector3(4, 4, 0), 1.5f) - // DOTween.To(new PlugCustomPlugin(()=>target.position, x=> target.position = x, 4), 1.5f) - // .SetDelay(2).SetRelative().SetLoops(5, LoopType.Yoyo).SetAutoKill(false) - // .OnStart(()=> Debug.Log("Start")) - // .OnStepComplete(()=> Debug.Log("Step Complete")) - // .OnComplete(()=> Debug.Log("Complete")); + // The difference with the regular generic way is simply + // that you have to pass the plugin to use as an additional first parameter + DOTween.To(customRangePlugin, () => customRange, x => customRange = x, new CustomRange(20, 100), 4); } - void OnGUI() - { - if (GUILayout.Button("Flip")) DOTween.FlipAll(); - } + void Update() + { + txtCustomRange.text = customRange.min + "\n" + customRange.max; + } } \ No newline at end of file diff --git a/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRange.cs b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRange.cs new file mode 100644 index 0000000..e1962be --- /dev/null +++ b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRange.cs @@ -0,0 +1,20 @@ +public struct CustomRange +{ + public float min, max; + + public CustomRange(float min, float max) + { + this.min = min; + this.max = max; + } + + public static CustomRange operator +(CustomRange c1, CustomRange c2) + { + return new CustomRange(c1.min + c2.min, c1.max + c2.max); + } + + public static CustomRange operator -(CustomRange c1, CustomRange c2) + { + return new CustomRange(c1.min - c2.min, c1.max - c2.max); + } +} \ No newline at end of file diff --git a/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRange.cs.meta b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRange.cs.meta new file mode 100644 index 0000000..9ecc930 --- /dev/null +++ b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRange.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8c33f7a63008fad4eac4198a5417ad8c +timeCreated: 1444381777 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRangePlugin.cs b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRangePlugin.cs new file mode 100644 index 0000000..b03be7e --- /dev/null +++ b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRangePlugin.cs @@ -0,0 +1,65 @@ +using DG.Tweening; +using DG.Tweening.Core; +using DG.Tweening.Core.Easing; +using DG.Tweening.Core.Enums; +using DG.Tweening.Plugins.Core; +using DG.Tweening.Plugins.Options; +using System; +using UnityEngine; + +/// +/// Custom DOTween plugin example. +/// This one tweens a CustomRange value, but you can also create plugins just to do weird stuff, other than to tween custom objects +/// +public class CustomRangePlugin : ABSTweenPlugin +{ + // Leave this empty + public override void Reset(TweenerCore t) {} + + // Sets the values in case of a From tween + public override void SetFrom(TweenerCore t, bool isRelative) + { + CustomRange prevEndVal = t.endValue; + t.endValue = t.getter(); + t.startValue = isRelative ? t.endValue + prevEndVal : prevEndVal; + t.setter(t.startValue); + } + + // Used by special plugins, just let it return the given value + public override CustomRange ConvertToStartValue(TweenerCore t, CustomRange value) + { + return value; + } + + // Determines the correct endValue in case this is a relative tween + public override void SetRelativeEndValue(TweenerCore t) + { + t.endValue = t.startValue + t.changeValue; + } + + // Sets the overall change value of the tween + public override void SetChangeValue(TweenerCore t) + { + t.changeValue = t.endValue - t.startValue; + } + + // Converts a regular duration to a speed-based duration + public override float GetSpeedBasedDuration(NoOptions options, float unitsXSecond, CustomRange changeValue) + { + // Not implemented in this case (but you could implement your own logic to convert duration to units x second) + return unitsXSecond; + } + + // Calculates the value based on the given time and ease + public override void EvaluateAndApply(NoOptions options, Tween t, bool isRelative, DOGetter getter, DOSetter setter, float elapsed, CustomRange startValue, CustomRange changeValue, float duration, bool usingInversePosition, UpdateNotice updateNotice) + { + CustomRange res = getter(); + float easeVal = EaseManager.Evaluate(t, elapsed, duration, t.easeOvershootOrAmplitude, t.easePeriod); + + // Here I use startValue directly because CustomRange a struct, so it won't reference the original. + // If CustomRange was a class, I should create a new one to pass to the setter + startValue.min += changeValue.min * easeVal; + startValue.max += changeValue.max * easeVal; + setter(startValue); + } +} \ No newline at end of file diff --git a/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRangePlugin.cs.meta b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRangePlugin.cs.meta new file mode 100644 index 0000000..29bff30 --- /dev/null +++ b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/CustomRangePlugin.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b3ffdccaa6b21544baad840b4b779d25 +timeCreated: 1444382093 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/old (scrapped).meta b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/old (scrapped).meta new file mode 100644 index 0000000..4f7ba02 --- /dev/null +++ b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/old (scrapped).meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0e19028f4214f3241b7878d71060677c +folderAsset: yes +timeCreated: 1444384496 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/PlugCustomPlugin.cs b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/old (scrapped)/PlugCustomPlugin.cs similarity index 100% rename from UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/PlugCustomPlugin.cs rename to UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/old (scrapped)/PlugCustomPlugin.cs diff --git a/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/PlugCustomPlugin.cs.meta b/UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/old (scrapped)/PlugCustomPlugin.cs.meta similarity index 100% rename from UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/PlugCustomPlugin.cs.meta rename to UnityTests.Unity5/Assets/_Tests/CustomPlugin Example/old (scrapped)/PlugCustomPlugin.cs.meta