From f8ebef5715bb60367f5a8a5d8f4b0fd7fd5114cf Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Fri, 26 Apr 2024 03:34:18 +0200 Subject: [PATCH 001/215] [android] proof of concept --- spine-android/.gitignore | 15 + spine-android/app/.gitignore | 1 + spine-android/app/build.gradle.kts | 70 + spine-android/app/proguard-rules.pro | 21 + .../android/ExampleInstrumentedTest.kt | 24 + .../app/src/main/AndroidManifest.xml | 28 + .../app/src/main/assets/spineboy-copy.webp | Bin 0 -> 72634 bytes .../app/src/main/assets/spineboy-pro.skel | Bin 0 -> 64468 bytes .../app/src/main/assets/spineboy.atlas | 94 + .../app/src/main/assets/spineboy.mesh | 2411 +++++++++++++++++ .../app/src/main/assets/spineboy.png | Bin 0 -> 245321 bytes .../esotericsoftware/spine/MainActivity.kt | 64 + .../esotericsoftware/spine/ui/theme/Color.kt | 11 + .../esotericsoftware/spine/ui/theme/Theme.kt | 70 + .../esotericsoftware/spine/ui/theme/Type.kt | 34 + .../res/drawable/ic_launcher_background.xml | 170 ++ .../res/drawable/ic_launcher_foreground.xml | 30 + .../app/src/main/res/drawable/img.png | Bin 0 -> 652621 bytes .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes .../app/src/main/res/values/colors.xml | 10 + .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/themes.xml | 5 + .../app/src/main/res/xml/backup_rules.xml | 13 + .../main/res/xml/data_extraction_rules.xml | 19 + .../android/ExampleUnitTest.kt | 17 + spine-android/build.gradle.kts | 6 + spine-android/gradle.properties | 23 + spine-android/gradle/libs.versions.toml | 36 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + spine-android/gradlew | 185 ++ spine-android/gradlew.bat | 89 + spine-android/settings.gradle.kts | 34 + spine-android/spine-android/.gitignore | 1 + spine-android/spine-android/build.gradle.kts | 40 + .../spine-android/consumer-rules.pro | 0 .../spine-android/proguard-rules.pro | 21 + .../android/ExampleInstrumentedTest.java | 26 + .../src/main/AndroidManifest.xml | 4 + .../android/AndroidAtlasAttachmentLoader.java | 110 + .../spine/android/AndroidTexture.java | 45 + .../spine/android/AndroidTextureAtlas.java | 98 + .../spine/android/SpineView.java | 231 ++ .../android/ExampleUnitTest.java | 17 + 55 files changed, 4094 insertions(+) create mode 100644 spine-android/.gitignore create mode 100644 spine-android/app/.gitignore create mode 100644 spine-android/app/build.gradle.kts create mode 100644 spine-android/app/proguard-rules.pro create mode 100644 spine-android/app/src/androidTest/java/com/esotericsoftware/android/ExampleInstrumentedTest.kt create mode 100644 spine-android/app/src/main/AndroidManifest.xml create mode 100644 spine-android/app/src/main/assets/spineboy-copy.webp create mode 100644 spine-android/app/src/main/assets/spineboy-pro.skel create mode 100644 spine-android/app/src/main/assets/spineboy.atlas create mode 100644 spine-android/app/src/main/assets/spineboy.mesh create mode 100644 spine-android/app/src/main/assets/spineboy.png create mode 100644 spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt create mode 100644 spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Color.kt create mode 100644 spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Theme.kt create mode 100644 spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Type.kt create mode 100644 spine-android/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 spine-android/app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 spine-android/app/src/main/res/drawable/img.png create mode 100644 spine-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 spine-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 spine-android/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 spine-android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 spine-android/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 spine-android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 spine-android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 spine-android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 spine-android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 spine-android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 spine-android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 spine-android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 spine-android/app/src/main/res/values/colors.xml create mode 100644 spine-android/app/src/main/res/values/strings.xml create mode 100644 spine-android/app/src/main/res/values/themes.xml create mode 100644 spine-android/app/src/main/res/xml/backup_rules.xml create mode 100644 spine-android/app/src/main/res/xml/data_extraction_rules.xml create mode 100644 spine-android/app/src/test/java/com/esotericsoftware/android/ExampleUnitTest.kt create mode 100644 spine-android/build.gradle.kts create mode 100644 spine-android/gradle.properties create mode 100644 spine-android/gradle/libs.versions.toml create mode 100644 spine-android/gradle/wrapper/gradle-wrapper.jar create mode 100644 spine-android/gradle/wrapper/gradle-wrapper.properties create mode 100755 spine-android/gradlew create mode 100644 spine-android/gradlew.bat create mode 100644 spine-android/settings.gradle.kts create mode 100644 spine-android/spine-android/.gitignore create mode 100644 spine-android/spine-android/build.gradle.kts create mode 100644 spine-android/spine-android/consumer-rules.pro create mode 100644 spine-android/spine-android/proguard-rules.pro create mode 100644 spine-android/spine-android/src/androidTest/java/com/esotericsoftware/android/ExampleInstrumentedTest.java create mode 100644 spine-android/spine-android/src/main/AndroidManifest.xml create mode 100644 spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidAtlasAttachmentLoader.java create mode 100644 spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTexture.java create mode 100644 spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java create mode 100644 spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java create mode 100644 spine-android/spine-android/src/test/java/com/esotericsoftware/android/ExampleUnitTest.java diff --git a/spine-android/.gitignore b/spine-android/.gitignore new file mode 100644 index 000000000..aa724b770 --- /dev/null +++ b/spine-android/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/spine-android/app/.gitignore b/spine-android/app/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/spine-android/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/spine-android/app/build.gradle.kts b/spine-android/app/build.gradle.kts new file mode 100644 index 000000000..0065be9d0 --- /dev/null +++ b/spine-android/app/build.gradle.kts @@ -0,0 +1,70 @@ +plugins { + alias(libs.plugins.androidApplication) + alias(libs.plugins.jetbrainsKotlinAndroid) +} + +android { + namespace = "com.esotericsoftware.spine" + compileSdk = 34 + + defaultConfig { + applicationId = "com.esotericsoftware.spine" + minSdk = 24 + targetSdk = 34 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary = true + } + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } + buildFeatures { + compose = true + } + composeOptions { + kotlinCompilerExtensionVersion = "1.5.1" + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } +} + +dependencies { + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.activity.compose) + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.ui) + implementation(libs.androidx.ui.graphics) + implementation(libs.androidx.ui.tooling.preview) + implementation(libs.androidx.material3) + implementation(project(":spine-android")) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) + androidTestImplementation(platform(libs.androidx.compose.bom)) + androidTestImplementation(libs.androidx.ui.test.junit4) + debugImplementation(libs.androidx.ui.tooling) + debugImplementation(libs.androidx.ui.test.manifest) +} \ No newline at end of file diff --git a/spine-android/app/proguard-rules.pro b/spine-android/app/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/spine-android/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/spine-android/app/src/androidTest/java/com/esotericsoftware/android/ExampleInstrumentedTest.kt b/spine-android/app/src/androidTest/java/com/esotericsoftware/android/ExampleInstrumentedTest.kt new file mode 100644 index 000000000..efa76c79c --- /dev/null +++ b/spine-android/app/src/androidTest/java/com/esotericsoftware/android/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.esotericsoftware.android + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.esotericsoftware.spine", appContext.packageName) + } +} \ No newline at end of file diff --git a/spine-android/app/src/main/AndroidManifest.xml b/spine-android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..17792df33 --- /dev/null +++ b/spine-android/app/src/main/AndroidManifest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spine-android/app/src/main/assets/spineboy-copy.webp b/spine-android/app/src/main/assets/spineboy-copy.webp new file mode 100644 index 0000000000000000000000000000000000000000..b5bef489a14e3b94769feba2fad799c11f6337b5 GIT binary patch literal 72634 zcmV(zK<2+vNk&Gp8vy`UMM6+kP&il$0000G000300|5U306|PpNP5fw009|?ZQDo^ z?D2evw*P`Jb2UWte*zpFK#~B1Oq<@=wj9&?VIF-B56%VGt2887!c9@&!hH;qxv(#= zhjLM*>dIE}r_nJwro)LaU%~`98a7xoRbK>b82e{w?4vdgBb#+yrS%#1N5fQLx+ltzppc$IB_dR)l;P~qg+xA0} z~_e_s>yf)tc*tTukw*BUM_p|2A?Cz+|s_t@CIx`&c!f|v*WTEGS zKO+JbZCg>BQ{$AO_dVc=h?@N3k|fEIB}uCOYA{9@m@6#a`=1BzR#kUbx)4>Unnz~6 z0iO{;3z8(Et+Ym%T>+|Twp+;dyZgs&+qT>`lJ-95UI3)*=rXHs|Np!CzAC~NLEL-J z9z(c*BnI<6B4hzzRJV-=F~-=HuusO1blWe>{NKD(H14Pq&)9olv?J1U!k(jg<{6n( z^VXFMf7wF+Pm2N@j;>(q-TSSXP}&YF3j%ufBUfP$s}F9hSP zKVCbiPz=>Rf1j~n?*QT%bA=j!+UGhrm>x4; ztB~uMF!zCwM!X>)W?u&?Q}#Fz0I9|y-f+0$dJLuJKK+fW&ai7HiXcFk<2U{_T((KP^y+x7?TjA%tQk+9;VB0|5~bk}sjB91Ux; zGj3U~NdGUE|NH!ZJho)+l-wt@Two3XArg>cxdcGDm;}{=-v2wC2F~oM5?qIUoKOh2 z%o-$wQmPRGN(v<4S@F@JETuBX0ecCtNh#~|jrGy%$ zP7#aqmxP#qwEbZ*aqe&;Zo7WL9eRoDn#|YU^A7iA&rgdz3L=s7zbsH<%+mx*-U_6E z0A@1R%m4v1v%nP+VAypi_#`yE5D0-da3CMmW3L_%apt|du+zjYMx4oB{`l1+{?Cs4 z_D~EjI`cH2IvRl@HFRXUtpOpE$19(nIR5zMf8y_DId;Y&HxjChNhnNC za_ByLq4)LS^G$BsHc=*vCKJL?62v3+3&d`m6()2i&UQr@IAD+)j_AbSJ|# zkTC?CI1BMCaw6Xn1R;dBOF+QTMG9^L#uzd}PMmX)r`R)|Wj67?7vJdwdDI?*b!Jy9 zhRJ*9esubTD{eb$@5t^re=wx3sPBoAXahoYjS@vDRjRaXDgdY%+nrN0$Xz4sw7AHC zyPldD#6NvOKz7sDBc${>-#5^2nmWga5$&%5AbS0N&wSUaS3-n1A{qb=5i_|9Hh^D3 z)3uo65&<%B1A6J{cwt5;WZBuQ%eh$8dbnDmFZ!Q*YdSqznW6=glh(pH#W?<_4hn5P_gRt&ks<;RL}av>l_Qh#Y{9Tg#YW{u3yHgqolR$j^>{H&46Nbv z>2Mk6``0|yb&tpyez#Wvn|$TyU%#4LO{zXaG!YGM0C98~f=e!!OGE&)$Y5Ofa)`U! zS9-rQsAbEl44wP_}Mcv%|S`Rv}$e%O5eX)1!xAW^oLN=8*9VJ{B`+*Grat z&|87T%C{%&zVZ}+Mw-yg6T<{i2?c<}VFdR!ss#c-O_KmZx@}A0(EMmT!qc_e$TWc5 z_6G+r12etv$0H@C9;;yd-pg90)BRFOX8DvuCZvB|`1^)B6`vs*7BS8MIB)|1Y@tN- zQD!3B2@!zB9Uz~lgYE>(>)LPG9b4qq5FkTlLy(14(rO7^XoC90xguc-C(kafdkcapqZ9{p#CV zK@635cWfRmHaBm}5=n})BSTW$Ww4Xu?lOVtOjoMOGXmE?<A|L^+=KW6`k0QY)Mxw~6&u~e3 zRqE44`V(vCTmWE338g6)ATpVpu>XVpN=}+nEazaFD*S`Q1*aG}d5N`xaJNjR8)GM_7K+)9`5~*J@1(%{|O5jh!s_4qLC9)JDf{P7GxGT zLa`)}0~`dT;}Va^By@RV+7h1(3}l9h3k4o#96?As=HnpeV{x$v%j3F}^yI8cP+gRZ zlz5A&tPFnPSj_2h+JCv37)d?)`y`#cCJ zLRFgP3t4Pvk@V_iRAo|6Df@(%z&NPsL|HnMwgG_wImF5H+W^~Nx-qyXsQ92vSansx zbUd79>M1uy-0{O>AS+gw#TYATHeF$j0=dJ%bxBryU>L#bw}Hsr34<)5Y#ZbWL!<_k z+wB&-*pkOw-!E<#tB{6$GCGC_X z>GtPi|6Z6Au;QM6p7Egn{`gX7#qsS8wk|8mqV-=1Yw)Lf^jz|#yW{8GCqw%9G`BlF;B`w5D?GQJ4Fe@ZEY}1 z!VE=cu`58%G_juaj-q)>m!KC1?WnOI7R}1Q$vayz^;D50r^|eQD{rz2!6^QMymWn2hI|-H5 z5ZPHyBwGe7jA$jANEG8To*@7d*jCD<7}tKi!b7_2D zXem1G%wn@)TlMO{)>YZNEFyQwBs_R;J+NLX>+P9dI7-u*;-F$KGhDQE_)VB0Afn1Z zkRiC9lPf+l)7gMx6|wCttX&^NJ=393l~a371A?AMotbwef**4mw8}j zj2mui5zknF*tN<4*KutL$j~q?Y#FeXhzNIrt}Q8+3jDHH@!i*DMDHL_yR(~XHrq&6 z_a6BMLxw;Ahk_J-CkV9U`HZh7Sti#~sanv8JRF0)v?gFqQD&g`>7-P#AHRk+1_<)d zao754DZTIFKqK>BZL-l_xpS`e(c0sTUrM?(+-VMMv_LF1;7*p0Lpk7}n`b|$j}!z$>XyUa zXy?a275LIq`QIB*E_vYER*#E~0oD1*7Pq7|ZrM;=6|*w7?RvkAh#^Rz-PFxZw@(qP zg`BK}kmG00-u>S2cp3;e=T7ssx@@SlJl|xD0SZkFIdhstn)7}A;t=jZeHGD%J&ppy z`63l4;j!w9&hv2k>;8%s2l{_{U0tfOV{7P}04aLHMdrJ{wSM`$`72Vp7R>YdfDAl? z-pnJ}?)`ZPL)0hF7(m-Xtb{!EBaDKk}TR0!(ciNaW6N)V#bG=j+x5d?L< z+P__LgAoM$!D;nE@t9oUkNdF5p*)}^Fmck89?UK+5UI;XQl*9+Z_LKK)VLXMn+S!{ z)E-dP8ZAfy0p{}-zH{c?_}FFWgL&cej>px&X=ie?S=$PQ48|CWskWQcSNC|Ac}U4M z-_yv62bn<5JApC=)Y&J`vuERBDu>BQ1Xrq^dnSPb#$}HOSZqB@s)Fj~e>H18-(?WG zvD~kAyPr+~FV8^^L_%48d3a^0Pc=tglw{evL!FzFqF%uzf&v5t|IX~#eP_nvZlp)r z6*0yU8B=-jIa$!6^@i6b#=e=Sb1Y?KViI9YyEfl|G^ zfj+vq&~ScQ79=|TQt_bzeR?Uaxelrbihu5*DCdARRY5W6DJ@a%npxB5r*;X%rui%B zb_N0eWunkI^zHa}JI9jm-x^u7%To`?7P9|NSLL}+WbF$H_+S7KyXGY39j}bqqPDv| zi`YKnj_m><`O)_LtCl{_zf%$)avz%SxtIj@=pI}{ao^8`y2S`J_OD}E8z9CkYBjo5 z$FrPs?}W^-SXfeb_enyuFdI!9HgF=Ibv*5o&7o5Ns%oouK#hc#BoxHLYmu$5 zUoTl=lKj1|qHD5kqz#qkKyCUmK)UNtEYvs0sEUdnHz){3W>mpR3uP2INoBe{5sc@Y z0%I&vMrG!S*Q$9IpI!|=eOBY6g;8U2aJg$R6&o`R&eL33uBvsEjtO>lMuZ-$Mo>xt z?D3fzz=&x~@3!>0(nUA&yI9fPFp-d%215jYlK;91wV5N^vq)Y>U4GD+bGav*oe%(3gQxT^*^f8#O1{%+Q+k&HyR;ecReZ|#fjW{6+Fu12? z7E~A1dy|BHFE|TS$$vUH=Up<#L|eHi`|5*CRZ#ghUm-{+Eml|8QKL%8a)}5ovt<8N zV%}B|AW$Msg_4{nLhas@r_Nj75_;iO?Yk?BPj4dA!=?d-WqHOYm712bV!AkA$(&Or zW%V|RKlTrDv3A`e7yxx+npnF4G5{R}vMj@KyiW{`?Bw6uxCxLSM$?6m3E&8C1Yv*q zudw35lD3gY8lhmHEKE*5;vXggUw;93358T$W7khGUD#*kglewt8GG-sVOsz}{AH{GO*4qr51p9+d7(_y37io1EBDg-d# zzHOhBp8u~I8kMs4E|ZbFkAuJZ45&`4adJV>i=fne!)?T=ric2c0ASqt#u_<@42|0E zsw(P;B2|_}gv#+PD3FnCR7R*2NXdneLZm$5;dOEz5g;xR$~2uagQ0;4sO|#&w`;3q z&CrC>UQYnHSCBLc&H{iPWgG~RJVqDw=((uX^?=A|!x0-Z3;+t#aTmTO&uq9Fzsu^tcf=vxR%O2Fp_W@m4>=4xKH-jSLYS8TI=$ZPVG6Vp76an1)^WCl@ ztUxnwLXQvIl|LK9>cz{J)si3i|IEQcaM^04*-EIyX#bm9-8K(i;`qoUv|!)fH47S5 zGD<8ra)8vtAx!GV_d34+bF=AY=|TXp~SSV&}V7(X!WfaZP?9=}#2tmI#t9 z0!YwU1YQWqD1_Qpy&x2EJ}I~0CSnDFiBR&+x9+dn;NF6&L2V@=h>jCq{n~>qek#`YgVkT+0^EZ zf%DzmEQgCG8tFJ?bblCih3z-~Q8|RLO0wb>Ek;1ZzE;#oeq=wY(sLvip&-2*gZ#-3mWi(^K89T ztTDdeZgxLtp<)kXM197827uV7{ZtfXwr<$8W^L{En#8=`Ia&_oS3NY9{g3?3YxSk! z$YpXBX7i8#{ZD!+g;IabmkV$V=a(J7dV()%^0PsQRTI(}(mdJkMEa$|4G%CaGSYya zpguYsBnw2(0hKq4-2;p~4z`Nwyq;#*tJm_%JXxm4JTNWCb-it|9mW3i-AH~p?3q%b z*4i^ufgbRg!v+^-sZJx^R198DAdEvb17TmjaNL%=pFttv_noJbk48NJW$C#2}IiTT(a zK^0&HA0MeybZu4Uiza}^TFov3p3}wyj=uM*@{ayDuL(rmyS_QyU+ka0O|u&$MPNC# zE@$D^Ofr?UZAf-ZM?G^fYV|MI$zr>=6lar!E78}AaJKg@24$fE3MvW}?m5fOsg^`3rIhac#0QE{2YQ-Ws?M6ZGWM5~D3dM1z@YCId*D3dRFznn;s_uB-wD>0ja+3j zLJ}O$-GqaNkFPVS5>7zkET%x$S{Ysao3u}e0@*7aYDvCm-!T2NZE{Sq=Jy8gZk86v>C(I;q1I@+VyxpvK5kSG38Z#yHo1|Gtd# zK!(T@P+WgJ-3v;_^0 zxFOfC!8!mZ>?w`V`|=fWpM1fa&2(_c(t>9LbOoDo^?(kxmqD<_z{sQTmpQ;}!hfxE z86l+L{P+$;1mU|xgdHXI{-Hv7)AcFRlCna1pY)czV931x6?h@nacoM*j06DMO@$c? zhyS{MI0F=QxsJKfE-OJPlpZPDQj@75&ut;se^I@u1xP7$DY5B+&V>`e^L`EW(Y=pB zHU4|UUsWJbyMNHfXjm&fDe7LTdGo=WvmVE2&032fcaZ!=)YQ zZ(bdo#I^=I6)(Mg{sQS{$1mUiQ%kW!;3+>bC58x+3cABM?fj?0iYtMCnjM5E;0X?h8qBA(+8hy0DxqAoqz0M4#|=K~)doI4H?htS4; zMs)((O6j*jG0XJ)8s~NsS=mB#@?}dVysn%9dQh>fSxVGa(A65ca4m&A&VkN`Y~ZQ3 zHOTPXcaEI7L#Cp>E>KcU5)M_}?qSty4oNCA4O-Wa1Xb#unQ4as0L=)ioAIA#ehFst zv9hNY?9%~YCk6KDn%lf9Ysn>&Wlxw-zy5!nkEdAy(nlu<$QWasaZa2g;aO7gI|nPI z3Mng2Tx?e16c#ohWte0dVlkFA( z$QY()ptA@~5BW+02qjAZ6kUjm&Dxo(D67xpwD-Be<_*(gADfoU=(QUscBY-ae=Q3P~{tLcqhUV0Wf zp~nodF_0N^vI^gMsUaJH(0edDQLL7_vR?cA+jChoRhn?C=7_4p=nyo>uc_EvK`wjhD=pKG24=t;9Iuzw=Bb>t4zg` zI=KjyMdt7*P?bc_Nj28){IoM-pL|$Zp-O`D$%~=rl3)QZC*`Sb%_z@0+jOuErpC$| zLq$w&Unkk(1kr2o_UFBFLEe~yBe$nZ9tlA(IIp|{8dUz8^dm%xAE$^0v#g4ZV7o4- z_BYQm0T^@p5n;)y!Xr;4L5A8{M`UYj&t0IH5h%6(^VzCBQ=B`T11F-|ZU{(#z{1S? z6#$;)-~caiR>$MTbxpnbnuh*)J7EH>T&dA1?^MgGEG~H4a=qn}5L@}`m(WQ)#)D=| zJ8FR%0Jloc-ygUkP$WG=;nOexpvuvJ97|2jDzzxB-^*c?Y_S7qI~=v*3g*qWW-xTU zaL-`?-!BVpC+%evOMK-X-LHsTb?CcrECIc^^F(xHUMDjdoQ~HofWytiSONyQhI#EUs)O`66+`T z1U2kGHf|hLS>NVZ`*%M=6k605o@mx(;6&K3Wk@ zF8{d>I8K%=USv zb|wh?Qz_h*@j*Ihzv!#m{Mu?w56uI;X=loqE+HoXv5N&m$Yi>9!pTjo7{w^vTE-b5 zV`0u}EGA!RyiVT+BHM6*a{v&FO~XKx z4!cl>IHkc9WDzi6EM$63Q(7ywlTrpM9)w@x$-x1Ng{C*kx@W7;LF85iOV-=HRiUh_ zNe-?c9WoXR%vc)NM|cYe2yGdCnfYSqA6KA3m*dZk0Myj%ALRLIYHqf*m6?_AcQ5>O zZz72a+&(Stp`S9leZr$MAR^@a#RJlv5bIBDlP})OrkuzmB7VCifb4)o;1W3=rx031 zCd!*7KrR8H*K5E+jG=&`M3dC}`DH5PI7sJwK?2Y`fS}GVljrC%VfKjxbF^pD!*Nu! zlaEe2LjqW_U&^Bk0Ni9yEv3ApG(Y|4^sv8t2k?$M0X^!zcsdXhgpA^}gN7scQ(l)4x0%C% zkR*;W(eh{*lhy53=$BN$X}H=Gpt}!@HjEG5vcnn`h(dBZf)?=M>l_^l0ad9_`N&wC z)zaP?M@?wT$=wCrEOA_mCt9)not>sYz*CgSKkn=8uqHLKowEx9{PdPg09G2wTbSXK zAGnkD&k(r1tY**ho;4(d?_=b*PXnxw$#R|kJhMT7e>DCV|EA#i<1PsaBbL+ryQ8%J z_)dr!F7lm|2`JOVIdYqjydDQc!`m%;vUY#ipt1@WxEwGY)2f`r2*(G$8K5&(8w_0x)3QcDHWdez0Q#ithe=8$=cg4~a)3Cd>J` zY=__a)r#3qjy-XUf~4$CKb$?$teN#~fJSg|vnD4KUB+EY9CVStu!(Ub@P5@aMeUuput(cjoGW3PCS)ZUm4Mjq*JFya9KhR9en zyru7!nZ_7TOI?rou=08)_6k`!e}c{bI&$OzSEvptu6SXQ6Kp+%#2v#13phHAF+WXQ z=%{kRGa+G!iA->nY*;DdEL&ydZ6@~@Pk3wMWl0z-kb0TSfVzdiO_;o#tp1F$f-2MC zYtpQ}jaHmfTaG7umdq_(J zhK3m{-oP6zWF}Hz6EZWeG;y32Vz?{G_|!hP4MajhR4J4=xSUXg5JMhqd#NpA*(lYp zLsSf$rHJYNw)e!a1YH>Vw~Y{Ry24+<67mchF=fz~O_~A4nVxRkY!YE}(Z$F1I%rbL z6PyH|@7b?Q_m>Ew>}B4DZtvoyMR#QbtfFs82RIovf#By#f-pqG2t}!NSw+Mo&XGTG z5{(rmVkQQKppO0r5)wFwfTW~J7@KsFp-YGy&@w!XP-BCa{5w^QDB5Ira5q}K)pgte4?e`(^2~h82ndNb z3P_}B=P>D+MnqX|7~qh}U1l;pmu>TQh)3^pL4kF41KQiX*Hs6N7m2YbsX04}Qs%>k zyIt{02dY!xztX;3H_!TF__!q5BFI47Zfq6;2|YO+0m=Gh1JFN-`XE;$qe zW8FO&2ogHFD1N%1+vf}!i-$8vnUlY6bU37#d_VgR@xhL!+#z2NuUA{rIkU(3Go zLcke-Ae0b4Pf&V^- z0GEjkF0Tuk3UqddKU}TNd|ei_`4KN4+vj>M$= z-v&^qeTqFlVg+Q({96hrpvjCF`+v_fPCzM)fjl93t)kqA%WvBhMiy3V7Kl9xN;tVY z6QZ?7ur_wAS)Jr0#g~l%nB)hq6e%vg0d=AkzVPV{5a?4kzv!wv6L)3}PD%I}?a&QG@^~_i=RN?Y@;j+H(Z= zn@EkDGP&^)u)(YIUfRw0xH+LegoEaD!k_4D(-=}1@BFC2)x^(p6+S9(y(N4XP{qN7 z$?rmfxGbsdl1VRI3j*A;b9JxBIRu6C?$bG{7uadwLvGzN1S8T0so3!41&+&kD)$AS zn;isTnu@OoQA>&^rL2(1q!hkKSj0Z<2+VC5V4`4ym_dMeDL zL5*$pBi|wYz%`Yf^o#?sZhB0}_tWv+B_e5Cg$e`8+h(+A=4K9Z8a`q^W**RrqI*g1 zX+Z=<*9aPos=t)l6ZE2Yqxwsas`&8OSTmgLLNFxXs#_0h zr9tX)4xB(!HyV-rcxm{~jLjGe;Ey6fjp<+ccmFGmxr6{H+N(<(gPMe;&I2azQl)bS zK7C!*XQzVeMNTbHtO=%bsm-P(bbVkxx&Q&4|^rdn9y-%oBJ&zytm$ZB8)GAN=LDBk4)^PV}c$GTN z6jk&FpU&vaQV`KJ;!;1sTh0(DWB@>EREP4({w!D6ko}v(y7xKy+P@7fKlDceX8X8w zW+jut`|Ob+iQ7>OC?Zh;r_G}CjPKp4er!0yH{VYCIk*e!IB3=8+%VKuHheZApdy)m z2M8K~uA|1V}o1(aaxflz&rDTwEB|eab`#X4*gQtMI|oj+5589zxxy5vPewhPx z0ZsNS^byQYauVG9K_Ti8Jxf8#W3CTvS0D537QyNr-%UMjEf^U&Yv%jpD`QF$WiBS6 z!#?bdgy9a(Cdy5#`KmQ?eq$@ zODqo#20Ujqz&QI!^T6Ep8zJ4A0WU$Uk+rkZb%}I8CLo?k-|w7w_2Cz=ViR>iK%{u- z^`Epsdti_**_KZ~Xd1H5L8xmALoh;x#?a;U4u`;=LY{qtqRQLBwS4*5y$`)FKm0+m zRIPx@BW98MyQ4;9EJG^Q*5$jNzC$%}%yx?P=&^@C^pO1R3rl@OC9hc=ZABUUlQtjC zC8OJfV3kNSnl~=ura+`xVi0@t*tq9!zWfv@P&_a=a{5Yg3ZKlm6@=Ek9#N?z8rD%8 zihmR|H51wPx?!hGK5?LF6OjIl61L+=ZT+}}qi777bMJG%A3Rh8ueX@drLc9t@+O-T z1+;h~SI0crqBy{9y(g*p`qoguvn##VxJu0C92#1r>g7 z20~4`wBU1-gvA@}^o(FBPbeoP-gB32}ptp)*T&ZN~XE zOe%)bUz!iVR2!J(IO9ZoZ zTPIWc;a8L+!0q@9VQ8ND37`U!b&*nH4qUg0su;3S`{kewhzJ7+<#4Zq@ay{@sM?X? zdJ3}#2(**)D=AhUyi##pgRFS|(9-%0Xu<%DP?th#1Qfb5f|v^K<3SxFyW11TudMU# zr=m1QGC!AF^-*vZ;v)sx#18P&k%=MVuB^+l{STq$-u__)Dc}6$rS%!EG6MabX&4ex z(|rf6$0vcL)f`1uGcYzSwhY3?buzu?{OSp9?}I9pJp$a6z|J9QB|mxa6NP|)N=bRO zsn2vNNlGeR^Oy3O=M&O{VWMzHZPkXYEm=;Q2>_A3b@ow!3)fhpK%0?&pA-$ZIC_>4 z17v6x5*YcJECut6)~#HoJECRNnM=FCh|!BZRQFQ&`Q7f1MU&1Qub^cHP#y$*O7acL z5V4)Ojf-Eqa{u0+2GFb7Q)SK3xg+IWt*iqDGFOh3yKlx0l;iG~k$RYbqU#92X#Al$ zKd*M3DO&&yReM%~GS$VgARyk{lFHOZa+d`XAPIdcbX7(eideic|K1yFi$CH7+TBTF z0AkX5%ZP7!=f|_}pWKw?T)&I}B~`ZxaB}t=^Z}?x>ch|G{+0y&k_?f#0EzL79G8Fs zNJn%Js5I~Pbv)A zOvBn*DU*omM!Ss3F#yx zbW?Bjvnmctw<|=gNfAVl80eB*>bx5ev{w@BEp@AQaL`N$h>X>TEXWo(6v&(57X%Xs z?4X|y7xK<{$%^T#|6o4btzP;exV4oNMG>vx1PkjEKfwo=JOajR-25Jat<@Y8Qqgip zy~sveP3h1x03aA^`$UWt~^fZB_)3w1F_YZW0i1Btov75RjSS-WDRv4*@U)M2#W>kx-OD z9j+h0d|Ef~@COOPJ-a%fI|+sx(NMbuA+-wG4KDWnpsb)T3sVq^_kt^gFDdxZ!RYw z0He|n1R+B?yrOlZ8u26yJQj2rIJjg~uYNP`O63wMRpg({1StZd`_XSgtI=&Lgk9Yv z?KxuY!a3BMxQ6@GROgxd7j7DFvSJa zvq6onGhcXOYb0N5fugstzG%z)xg-^+Mo6D26G{kCGHp#r-ZSe^ZqxONz|u^Hz;`C# zTs5^z4u$evNI*k|o6&eIWC%~nB^0$E9sH+@pK!zHhKu(y&!7&*p>2B~9npSb2x#mG znE>6ODa%3oP2t2q0s(Ki#gYg$B~2guzM`Y1^a(ZmK6`$fir7t7vKT!M6bYh~`lnx! zy^jdR-fhAo+5(R*QlVAc&1|in3+Fz5>Hd4|F@EHxH2Rg19DsnlUXHF+^lHrd1ynHK zgsY6ru9me-791yi(w4*JFGOB}{NSO0fQW?TstfFM@8dX_N?}TD7hz|@w%T!tb87#Q z+6>KTG}7&-Zz@-P>{6ttYgtU=34pR+(TKlsW9$1L`5o;yY%dksKKt|g4dn@@IUxdL zl;RdZdFfgX9JnTXrXYyfxwjbLB@~h_@`g9GOiD$$pRR`M7Y1IQ7!Uxb`DKM%LdJbh z$<3bVQlfTJnVGLpFqgNU7o&m$%Q7g%9TbySoD`}}DL&gjDseUdT$<1eDXD}WO)a_o zrk0W)9^(^00vgjP1tge;sp>W21|(%AHCqFWx4E2?!-*5Ril-dPE6S^#`06>QEwC|G za^IMk=IO__9>4XW8)vQ*h+#*}zYl7OBzxV@8y%lzpk_H*`Pq5~kZtY8IgsWPI|=;A zSK^?@A|QeD;1=*Y*$A!7S%@bl59B7=eOOH>LmT64#Z`+x0pQfIHms;{>S=?cKCu@q zcRe!{q_u8W3XsgO)UQhXHGl=VxNOYrS5ouGzj%z0d56|`X6rUx)-OA}FZD16BMgfZ zzuYaj_{eLc6E* z3Y7NG-Au+63jIDB*#Xgr46jSVPB4a?bgA$^{8UIO<3F7z&#S0%&k=idh57|=&hcN8 zKY<;j=LZKe0tvRWec0_J5r%oQgnoFA@2AA}OB(_9tI#(tTwdJ0xCi4>c--*ToFv%2 z$xtA)&&H9fODj|-Mr1U5u(AAcl*2alxl0PMUK9y)+@Ka9l%`;|}ZrQX&yQ%AY;P5Y|oj&zJvd zIxA&C<*^d&jv)qe>hK9tZgW6mLKJ%H2yN(f#Sy&O&!j&2$MyiM%j;fJTLTB$3jV2LQ4ckw3u? z%Jv*r7gHUPZn*U+2F0-Bk?pW>&1(@ocFfB$*)DT_G$9Zq43)S%H9H5gS5`VGO#)I( z0Y>>D(_+<`-fsJ(7SP1)mez+-1JN+7P#0(6Z>3pIdS1}f2U?IQb@${a#LAGnTpfGc zUm0)z&gwO`PVL5cC>aubP+-`$UQ)YP#ZXw`f0=%k`3N%~K0xc9BMN|TpLCO+RRWno zK&Nez|DjT1MzVWAG@qet#P+~849mugiweRKOB!}@03hMd6L71_@qKk*IMvjweD`Eu z)}F(Rm433j#Hu9{q#dq)@G)xK=7nsV zK&Kh&EK2Xyp2FSTOcNK9I{j>aIQQj%aeBMT9(FSN-E)MH!B~u*RRFm`aIa6{eNF)} zOivhTVqg1v?)zAHG(Q@_c!Ybvwqmh5Cn2b@u?eL8Wr`v2Imq?wyO4@z-JM$$W=d8HqJxAnQ1S){DFjnFtECA;EmfeGiQ6CKNbchOI zM|C(7hES0=Ic7+(mPDH~o0$Z+=Q#(>xj?5024FXMw6P*9@-JMzo@~z`0TDBvvs0i})Ud;DI{Cjdr@0(RdBa0s@e9UXT6`+Hy?eZ# zu(`M?5UTBUz*rF%J_id%KPo>7(4T3uT~`Ndf58NIL{vBlS|i z^(A%`XpKyE8LxfM5%0SJkiuH*VQ}=RJaYq&9;TZDW3R5J4PTtJ=u042!H z>igHc(RoI95|vlSiCKX1&CLZ1hrWMRlI;Xtl!C(Nh=3H2jDPU1Ui9FW?NtQK6t-eQ z{|N|E)BdTQ&2V&fh1pGj&Tou5w!;Zf5u@VtJ5MSDNQ5;21O&tA*F=KQ@Pb%kV?SBab#qEkg!n{lNtj#lWORD#uJar65p4>ke z2q=&#{OF~}Zo%#;sI)jGSxrhg01csyecR&o;W9=bpP|P9W*7!fe*hJSmR^%w-ke1= zL-BajG8iKIObCP!c1+0%C^V9^TS|A{+jmQw!$~>w#veQFv^$T8WWyo788WismYAta zn!;Jmfs^V}>0WD8vXOs7LUUJ{kfDFi5hKiH;)q``45R5MP8f{qpY`bn1u6L!szm+@ z4u`D|qExeQ{j~!Xv`hX7TdC3tF1X!JNUA^pqne9kCyhJ(?BGTVyN%b?6*=S!p5xT| z56fvoo*gbK_cgs?f#HX+x)=LnY`P{vjkgT?_ z9(9>qB4n(;EIl&up`<`5#i2K=qqt|z5;ms1Q4uxehfIb>LEqmU&H<#!Fv)UwC=#BO z$j6o^8vsIv6)EZ6v!JlgQ&uDvk5~+FjGaiRMhWsX0s!t^n7Ml+smc1++tMU7P}CBy zk8bIH{Uc_@N_XzjO<^Jt=E^u%rx3SL~rp?Hr%I^&?R<6*yttXOGLq5K>Kgb+h> zG#N!dJPUy36L9AGr3>MAe=6e4Fb&2~vBa!>a!K*Y*Nihn43%8V0FBT-^;I0ay+D@3 z)l&IYBUBfP>z6$S8k!}O!DMK(bt_~^_kq{F>J1q-sK96)SkB{2kILgyih8CR;sg@s zElH_nsFS^GO9yLHWw7C`pCIcT+1-XzAt%w%2xL_6#5v%kKObv>0LfaY%P+ak0gBh< zkJ!`EHKdcHLuHDVpqHOI9^!xtI)>P?!mUQvNOf}9)*ee307sHcK2wzL(5&!gp53JN1+8Myp@@KARbPctLB-@CGn}Sp&caog9Dn zV;&?mT@6hZugf)=8~&V4T{^l(@U);1K^COG?)LL3yr2&inPZ7&`^nouH#7(;Y^ z`)pJs|3B8^g;$Qgu=l(ySZ5DBEmQb@U8*US&41dgMU?&yQZxC3H)5(v@kS%lOT0qi zk*!g~=kflmqyhI1or87jF{C;KVzd;?2 zK8!+5IO*MUL<4vE*bu*nH-Lj?;bq+glT7L0oW4RMa#kXFGzhEeZ+1JLyWJGG*1!7c zRyOtUNZb?7J7M)1Dmt@E+iMFUNS2p()f`s&`d=egeZDrANbB~OOKS>YJXcG3e%3{$ zNK;e$<{~ClDp8YY90)&7%z%M}fTD0Td(=RBOMY?kNtPXIAK2$_r-Xn_ykx^`x6evzlXrC_)JPgWX}0l*jn-;yxBut=QS4i{d?==CIMU^{Zy1l_taW@_AXM3DFGbxx*q z@A=voh4MYfP^)J_o;26#aOIaenle=(`1V@~E!&k{@XWFf*{|A`bl8kL-`SS8&%}sJ zLIn$T*EyVLQ(sl4 z+ATws>vEuJeEUla@0Q8Msb}@vC6_Cc`Y@t0zV8Z4x=}Q7z#;}<_1|~DuGWtHsVCoh z;P1WrWj$A|*4Op<)I=axTB)$oo*T2AIF~-fUJfok68rYnrE5s}o+E;N?x4Y<)v7Z4 z`bHFgTCHEi_TbAS)ajvV-K+zY$xM`<5ax>`Rkt|GB5RIg)1dq*XABABjwWs(?xgXX z;Rj|npB8j0;qgk)A`Ac!zoG8Q9Qucx=8_UO>j*Psz`!AiDnKyY`YkDID02+c$6&HT zb>SWZD{F+UgGr*5n+q=K^EtBT`e~ZF|L)08l_Ukgi*6_Uw?@b~#10`k$yZYVOk=Oj z)vX(Q&cz8)7WRnW6e|~JKf1owoL(7wu`&suJOxRw0xP;+`WWuX(7OOv&h_Zx7uKNDiR) zPR`W{2`_q9mGtTIvw^&OiW=p9Bk{3S3&{w@$DY1VzL9QBxyTrOeM};I{YMZm+XA_Q zSo6X!H|22VCd~@WxUNeG3=ML*6oBj*b>Fw98(483g?yG+lx3~5`u+a$tj8mHv^t?D zUn>6!HWJfvs*P*w=V-AJQZFXDZ zaPp>cS1~O}nkp_UQY@Kt`LR7L%H>Mpp<}-o*NI|4p-pXnc!K&R`D+i&t%<2ob>bqB z^76TAEMk!R@G2t=g$JH;L{|p9E#27EC7->2gB`f~_x|Mupsh>Z+8oY!GSfSe7LLoy zkQv-{Wv_{o_3|l`XR~CU5sreKa5k3Tup--V2)Ud~su%)tv*CwMsvsBiv-CHd?X6}T zC65P!6+cw{_w}t&@!O~QK6$fw^C9^gzu7mRNsb_5#q9n&mtHtm_MeUjjwS1pD?k6- zd%UjWTYlNHxh$%b*^x2RU_FP`rTqjYN<&uS&oq}jO^bmRAxn}+raU_sl(2QLnl1eS zK(~Vwc5r&LcW3{TdA{aW0BZ(eL*I_e)LPwNp10NSL}6+h`kp2KO`nDJ-|{_A*e8}D zu#vW$ydekL?|sk-z&z&WZbm%Q+O62O9quBcVeyPBiE{$t+3?r=@GN7P@f*7}3^N=v z?Ns-5u0udFt=!3A)eys>^v{z2x%i2fw2Yi`3R?Boen#8wkm2V9sBsVv|2BO8`VF*a zR_45(3Fz*9sr<};xk>>6Q2`JuP!Q)DN4I}r)y%_&wLZ;;2#Dnj8eqgLYByy4k0ccz z?PSwi(vnkQW2ho+FgT%Lcz%(y7D!?Q0w+fBFGxSPb;BuDH3x zm&$3+_-47QCs#Gt>1;(`lP7s*M`LrfDpjf!Q|35pxc>nM4lQwQ_SC&ODH?9OI;%}f z4jo7wvO9`zyHmzhdzp!AqO%Rrv$>2TDGhmD6R7IIP^m2zpV?AA4wx;9F{(& ztzR8wBr67Jh}{ci6-!7g>(LCIy?n`%?g>9IT2fX?Eu27PlA#In`nmUWU6hxajDD@E z_Z&e=HNw;v3OezRkNDV9c$9~Y8Qh~sK`})jxjiZjK(z*RT1G}a$6Poy?txb?t)Bj4 zmhoN85(p)__86MK@w2Afi2m%=6}qg60Oaxq%``Ba;;sW|m^^C(%Ij55z|b&Qq1}pp zg4=ATscv$l`=5*fp!9_s`r)=7?-TbX74YBwPF78KkUnnxO+N;mE6N}W#X@>RK*G8o+H#GAOA{0=lwj^Qshb`L2b8s?ZZ0>SBH}#R+`l|!b0RPd-r_O|9D$>0X2QUt1YwfG zo5Gj|N-f_oc9g*o0cB5+j@>f7%cn!3kS@K984Q2w?{O+wIgN!i7Yz3Z_f$;Wbyl<- zz~Uv9oJq4^T6fr!t8aev`OocJaI1}L7r%9>J$7@Rs1*fsTU@$GjIzHB9+I$C3W`k? zp^*0{@ncXE14T|g+yZ4Z?>XYN3;-Ylwe)Veu7}K30>9+l%8hNCIP4xgsJ97v{7?%y zol$mM$v`8?fe?+hBuQ)}1>V)f?iVU}{rZ^D_8w?oAyu|G`cI$Z| zPm%DZoeQ1+^pEzb$!7oL`rlII@2EfZ7Lupj12=2e4zPT$%?Sq`+j?&PJ3rC&K;>c0 zHV1VbQ2T;A_F=?;{2Kj?z_ycR#h?JjLPM6gE(oc60(6N9lwK1@Wn_(?vmKQPdq=!R zJ=He$r|szbnnNp=b_@-1Eo%M)klW4}-Kh+PmzKZ7j%}3R`@5~6^v`bYNQFYl1_a#AWS5SM zQGs7bpSV(o_QF3|8`l~sPTyV2*p&?Sk(l4LCh6C_LqJEdVmF3l2K-j<5CExMijwkf zh5s0+QR+)txWf)szvl>^Qk6V;jax8QG7TRUO?0;!YEr4TZEG@ir^9C4leDHA03gS2 zTetQb6>n-KgEepCVdhnYf+#)@D^FZIIKs1GX`C`^a|lmdx}(u$Z0E!Pe3EU4!K^;% zu1s`tTFk%q+iu;i?fl(K0Nrm3KbGii+aQ2peATPaw`;#LN1*U&&y9tGoY%kWU{(Q9 z9$WE|eDEUWJqkOV#k%BvP?m5C$*4*AA zuhAcaK^j=ggE;w39moe8N$$5|TGUkEvd1JBkv69y$xoYz;@M=g{{+6g$0 z&8;k2u{EYqP(;i%05T!m)YOA@wWfST9GHR984@Cb>k@^3@V@x_&zJK>)B@wDul9b{ zBw856DOcz<4h_qhSo6(D|6af23>IaQh_T^plv6;*AMwYUR*dcYa|-Q2iKULWG|M*d z?x^DBg67Xg^Z^vC&eIMH6xtid^<_E*QznRej%ZZ3D#S=*b!X7s_A<1zls2c01D+h@ zBP9L%@;^RV+i5JoPr8^Il)OIU#n#+r4j0^}jon7{F0^;ltTPh^fHZN}bschf|H@V~ zLs=u5W)@}JDzX$Zw)}8vx{xtsKJSrPh>qg|PTTNFP`Lo3UfW*$?d`v@Ir&@O`1gWy zsbraxA2>d3ZO%9R;ISSfE8jW zXp01pncJ0~WPt|pWDxfp(V#Bc##fw83cW3mhOar2HuZi(VMWgQ{)I2nodYwg5p>dZ z-_6b~oI_@F^?=@`ynYiei7-FFab4Forza-4(3XK@!nQHbT3u0M0Z)E?Zo4blKn|s=E0FIO#{bn>**eLG}+FI!Spv ze&Zi+kDtL?hI&rLoYTi;g14I~aI zsBsxYEM~i{M%OS}08B2HVCB6()qrCEb$e!faIx$+^qHD zp{0dU$2Wrp>rdYP6`!}r{y*&Snfjfp-EmqduX|eec_>kDn8yZpv!6pJ=of`e|HFIu~_4tBe>*n&>KkGIvbk|A*^8!pvyO- z74=lT_VR{Z{+G38&$FCEoRQPkl(Y&H29v)>5`Wos9hZoNhz3GH5IP$S0>dzYG4gpP z+m70nNyxNE0ms;YaIF4o{>s`fdt!C#)vY}W0)#*WXoak>LR)M2o#&3<+Y7nMwNYdv zRpps8@Z_)hO{-%t!mGO-QvUl&Y|VOY1R^K3${Em2A(Lab0ShQgOz=njAKFVKp?xz< zuwLVyBbpXV&MeLYSn~DV$uj=YgFenv6_owr;f0-5X`Or_3ps}qFd~bZNpyhVKYf2Ske`14kDq(xKYX2x z8v$4ahq~ZTY8Af-w>KYrP<|(0-6!q^t_`d7o}0Q5dab=O)ZDVyqo$W=XAMmX(ybxHPTcdyu$vu3+0{ImN2 zpd%ziAzld?fNvrYkJKY>tjkgO2oZ%g1!KVchnGpbiZI))Ph+BIG`XQu07|X~kt%%s zPtF_7bgW7sXWuU}*xg4xXVaQq{L%K_@IKig%=W>0b#?3KuZ#&>V8+&l(+e|wN`0Kg z!7R=YfiLNG*+oT@O$MTS-_gD84?$f(-j~@L$bqeF7|WRY&hD*~OJ2RV zX4lP*H%X0kHz0Hfh=i31;(!P$NqBHUpioW#BLpFK5rL@$4H^K(kdZI|uOx0_X{e0+9CF^XIQ6q^(Zl8^{U_+2hjgMvUrQGo(< z+4Qa9nU{a{e0uZdP*m7cpFes1N69^pgQj69rR0fFGP_*cO*+}4BDd;~a;rQNp|-k> zFtGUgng2C#4|4b6jsH~F3voVfg(p^QUfgP@A>8M%=tq^*ZZ+*p&enHAC1Zy%-=BA# z>4d|~3%vflChe*ha;A5<2lac7kRSZo(Wk;1y24?x$nM}TLVB{6+_cMH#D9G4-?6py zi*Ers3f`3pWJ;RQ`}Z)oJj2;z`K4C<59zOdW!H_;@Jw<0&u~Z*4o0OId80%MDaU3+ z?qr>8YRtSXlQ*oPMnHpGy{x~q{%Fv4V=m;rJCN-kd;Ilp@8xAQtS&7Q+9Q?A4&3*5 zj~juzX{UvUx--f&wed_i0VzA4zp-H5(1^ttG7s)~%Sj7&Creii*8#cmJx6>eADpPv zXOuH^#el^kyRz?xYwF5Aepg$L{KsGXHI%fNS~suy{P~Ng^n(ud5S#3Xikbp26y1~fI6Y#uxz zW+7ut(ug^7v5rrvQn;YNw+szoj360T8wy@2&+4=Em()RwPJ4{(@X1THmCZgg_&;f4 zzrXZ0?}pnSzUh+F4j9_A&+ua|dhUlE(9seRb|52MBytC%e;l;jID4xfDUCM*lS7HuG+3OT-Tux&2 z)l)GY_(eop*``x|&V}=^#9wyHK7HQ})BgMJ>_3`p+SSz&gusDk$zR?ZMxhW&LGChN zC?faoqMz>jKw*?HyIe`0^~ zFZ_-2lsP6cblW($siE9r203y&fD^fP%0)zgcGHm|L&Gq@0E3~={(;9Vu$2*uo5n*P z_@||uDG9zk1QnQ{l|K*DUreKw($@^Aq``B#1fb2n`~CnYq90WA*hm)&5x_5ZS z1_L!Fr*7$R8IHR?D!EUsL80U^f>cT!^x!4{3cpVtZ)fzW{h$A=lx_hzrBVP z8xXzgP5Jr*Z?{=|$AJru#r7FP1DJpJ%Ho6XZr0iE2msoyJoX`tE5ZDBSWktYKMhhQ zp*EG~U>Gae<;|K9ggEE*OVh#}jCpRJ8GH{1Nd}55FN_(cWtqio=c>roTI*dJxxKT) z&?5v9C6=Mr66CopFAzXd!vmq$TIxW*0HF3WL!lDmoa!ftNU$HJjyytPQ;0TMD@s^{R3bO722T>UZVOfE;&8LxC^iD&J<~VHdiV9|p3nnZ+JhPIZjKj*baQfpl3VWjVRe**SibSK~NXW93(r_*unzrq> zzP3ocLsJqoB&~x90NW)Aa&nd(Jk`YnJAh>75>Q8|a8SVk^gKDKPX8GNt| zZE`Wzvlmc`C#(xoF5S1dW50>Q@&tk;{hnb(qp{e|DHK8mlo3c7j9%(AS0~!-cH2T= z9(J48D)Pz@K176eCCGF437$0-J%e5W9+T;RF3VBwEmKGYK%4+j;&2A2tn=gjKXs&V zZo39-SSOXz{KEK&XC7I>RN5t%ALw(>5&s51){!pN@-WsiP58Pbs9YN@g$NEmmM8Dn z(T6h?#4yv5P!=0TD4s~fqLGkk8kW&6EJbk~7e`7g^KzLix7&K}@5v#F3=%YuXd31G z6C{ayfCNn>Q6spFcIg!!0(l+B1sRBdT8>ndj-^e{MY+Ji})+aTFE4St6%c7GG z-FHZlCri-cSA>6%K6~)Bl6#JL9Tl1tT$}x@r5+zo3{2r?oYD#DhFKgba(n99bDLj4 z3}g(&^9%A~AlK@|8Wr9%mbqEktt zKolWSMnL~7m?6t-cfRd79VY>bZWEk}f%tFj^QR2xbI?ggpL*fNCr#|#eK0C%OU=0% z^7{8HDTst<+k8pMG3~`E`}GO!_(z3--9cuo$0GDy zc!9r)9xKzOiXgcyf*=I&OoA+;4o+d0va*6Wrjx0p>k=>kJC$rrrP9HUFL* zpM&S8P8Od!cm61Ch`n7L1e8)n1i`6E2axY}DXE>U%FB;e^q&3RI(^@wArTVI2@dzh zcK*nW9Gc3O>!SNRe`h{VF;L*|a0(!m=;u0MoXU|bu@1PNIPY}>0qElLa!n1}J&!BK zG^V6T!Z_gqh(;j|3-tdTrLW|^^GzKZc9#w^)ZE?f6sV~%UffhQt$`RuSG=2>`coFn zEQ8}b1XH?RtnD?*tg>huo)#Y0(+4eA{^h5y`I?ru8(AkeWzU4nhWFn@qqMIJ(9pLo zWu&ZJm!%+dy7PDjK601NskmKoUgH)ngoeRtj6T#t+V8Frf`#XP>vY%|BwDFaFP0ob zN8pO{H0%#Ld#$}eAPFzji`xHDFjV}VYtwO$_HD;yr~>cQ;AGKEU-!605GiZLOC#FC zB(X|9zwBrIJj_wB>rY?pTQB)~W8Jrl9x%Ec{-wXU6LcD@DY9o$5q(dfPuHpFqygWx zkw=#*QYukgI1Di}fdnCP5%Lbbff~`D{PiC#_h`u}IxJ1nRN9(tXcB;GN$7cl!En&p z8?mS}1luD2=RAr9+oB{6qA&{Ifw3U}jMGQtt+@1Am1c3~b=b{$cE;=+ON5N1EE=^Dh(M8})+GaQI+R zGYn>x3$;?IVB0hqwsy8A>_Sxwe5t+jXE5Vm;uI^TqE#yBBx$YP>%Ie56y$HQpOM`- z*DH1B7Xd)sgl-j}GIg9gWE{P0 zB&w2w5cEAXV!+~uADh1L(&Nj{##^`AUJymPZ966fDK*D&Y{w~D`RJSonB7YbRJwE~6bn5j+tu|3Kk~^=}@tv5_yS_D5C`D=8jGL>A z$BpQ_@Y}lGn@^ia6GQUx>UFMm{tQDd0zo(d=IMJ3RK6SNT>kJ&{vYCY$5IqqO!K~e zwr%SPtF`*Bz>-}VV4_r4V18M$_3hrexq-G^81VrN(q85;A4Jr(q13OEDAXH*NC$0k zBfW=(*f{(0*~j1g$b4nxfBm!n5h*Oz8U>YvQ7jc8=!_9&=mn=zotT@Oz3`q7{nSsq ztAd3h%6Aw70FMGGcjB}7o+qJ zHY`$k_KEkuFgG3i;@|%7H$uHRUlzkr#HAuk(+xvo6hUS#HGrC3p85G728)ls`^P_V z3Tc6=cTmBnwMX84EWZ5u9o5@iU)$)7{8$JjxDexiN7|X^p2oS4{_5w7@Q(i5?U|yC zphC{{JQ#FRYUhMtK;T{k@IA-;i+}vv|CzVng4M0Bxhzv|-(SOr*y8*8%#D@V6Ll`i z^y@WOA8%pMmI*zM;&vt)RQe^O?xeX`Yr(Uq9QX^2nS+slZ`gE`oqO>EkCn=+|M;I? zjJ3IEpYnTt8gn!Xj%CnHXDr4v!(>YMz88e*^4EU$KYy)lOg#DV=MCkscLtO>^Uu~d zUcJ}ayYcqgwwpcI5f2tnN&P>*713iKey;TYbr|YasIeFoSf^@&?AdGt%q?+w-p~B< zH~;u&zr6h43ZIH@w{o3gy>B#weMY30V(8tc$&q%MFP`AQvn+cnzN3^6$^!w8=&0KW z4;tz;at<3AOeEGf-b4o)Prv&FkXQfmfA5mQ`Dd!_-O!DwWm2W2PzrJ(fKX->iX~eY zeogmRzxQAN`&<36`0R_8Fv!D)S*7DM{WrFHE8o3JaxT_O#d4vjqlnUAFN?l!5>fc+=rpgMp?QM9%ge0MI>gzd9R%_q^?_wc1>j7S9G{rZ zQ^hf!y~?Xp+u!atkeUIA(?KOgfZPH zl)35HI`Lln+3$CI?x`mkY7ZIRaq8Oorn~XR`q*SEIF&-FR4f$`(ygSYGGhK7-^ro+A@_~>oSF;fU= zrJAP^_i?z=rV&bg{7n`U%tud0gDe01+ZruhI2rHlZMFqt1XP-Gsm3@25%K<@X_OFP zYa87lk+fJHee0EOcW-Ke(}%edO9qPe&|h5}>uRbq!(mL*3x$d%sAbux($4PA`atB= z+Ucb$y3<(Hj*8x24waad{ppn5lp%#r?e_sMLe!IjQG~gdm-DCj=T!;0jLVod+??45 zm-V0j_Ag$3oD$Q8>%AU9 zeMnSHfR@tDfM35C8fodA-fe&Jt4Os|XXM`2mPaT`nWpkUzRJ8x(@hQI(a?{5FJVpN z+Lb|PG^tDa@E}seNw6J`vCu4)Y~3(WN2)-gKk`P2UMMvtigCZSx8vo#Z_@RSK`Te} zKZkr%A(!#)d2RmN&y}v&4S;EGkV))BNX99X4U;{@M_w>VB?!)bPW+X{_`I$ zSM&MHkL&71TQ^2hnIKJk*xsT|74%Hfhop!hJ+98n!o`OcD)D^L#JH@AA&RKvJqwJ3 zkw6FvUfBo{^G2uj#vM~x=cZeC_7VWB&dg3%TroBdSSACNCUGKwFw<4@E}74(LF-t}&% zMcp(o$e}T2?rZp7c+{B=fSI4y=EnEf@0ejiw-bN=(jB`2A3i|9G#rFcN7U0+oB}Z7 zav%C19au_l3XDeAarneZJ?y7H|FX;}yL_2?&DhM85>o!qGbWX9sW1&;LAHP-`J|R7 z)F?kiZkyEtIklq*aFPee%tpR|F0#hJ+ZXG>P~wH#5+>5l-5aqknrHZ(-2}in`^55e zy=r?I@uh{Cg)-w|5GR}qk%XS>hJx7zbFl%wJB%=NHAh7evxPFO<%)QC8LTubgNV!0 z?Cd1pxO#bK*xqZ6xEk9EVKET~*~y? zA`!GOY;UwEkfq7(^#GvouICq~YH|=L0OR=CCFpMM3{zx`A}Apx5<+AWhUjo>?szE< z+(5dnW+bs>9IE!z;!(GI5DhZH+B#X@^as}L$p%?}ZEbVli9x)d1%--JD%tVgZa>N7 zM{CS23p9fkA>x{TIE8mNPy$c{k|bK}i^eup%*UjS?>4Ujhp6h|lk3%PouS zjdUP5P#9iWz0M_R^DIluC*1LB16$V~f(wGHM35 zcBWJfNePmQ7?oB7hG;68S2ZP(4!Y|R6V7pVuZN&N_rAFqduwH=Ks)}(w10O!cAE9F zfkH^B03=TW*YzW*L^$Y1=EU+u8U_&`Bqnmfpl4Uh3!sh?yPU*40SNaWScG4xjIJ-NCe zqA?N)s+_%l0NMAis;}Nkp)xkifQv_AEu3(LMj(wsp%U9-V)1^_L&bw`PY_X_@wXCy z(;r`$HLqPuby|D+8M?bm7f(zWA__du^M}I}04ZS_K@|-~F{7jPPGM%Dk;V~^Mog1} zFh8j|v+O9(^C`Cy?nCjM*zB#&Jgv8GU*BjGa)|WO8qK-7k*347d%RR>PAwcexu5|6 z4?|x=ogS*^$d&)Wz@Qr*+1+{WCX8B4ajg;BiCzajL5(f!r26U5U$eioL8EHRz{C@u=GQLgfano!c< zl06y3OBShw=XC-EQK|KN0M3UmOw_MkM29xc%xeK2J3Gx}5_p5*u-)tSdody*lu^o% zYE;xTpz+GR#_~)lO=3Rc3?-5%u9WIWmXtVO+zeVNIX1uDTEQn(cVlI*Lk}&Mnlr~| zX`I}%M?r{{`C}(403h8sqR1#a1pmDlg5$wkc6ay~qZGHXozQWfn|zK*GOfgtti9x` z8EEH8ci#K?<;C8z3T^S;w4jfKf6q~yD~ zx*lrA{XdOJ9=KkN2BU!u0-NACcwcINj@R5&Z($+*v!z zwxf+bMUF^tap`0=otTj$cMwl4%uP@L6(td;1o05R59f*iIr+m*6Aq7uC|WGV@}^$+ ze-lKaM~EPbA-!OgF?Z@^#DY;lj+n1rq6MY7C`E+r9QnHriI`yv*KW}oBw2n6)&`2OWcVV*h>SmSE^7L~j z9{-v5&3k(rm*2d+o0Ke#M`Z1?qv*@@7vHv#eO&382{DLD5jp;8Gb zmq8u{bXlg?I#_hOL`$Nhan#X$`~Hha1=5G0J;z?@w=r2_yLDNR$N4$OHk zU|>`ZZ`sZH_%n=RvH*bRcs+7}$2XE%+IB!l5XVX0ZZ>k{MU|`9zI74Hj3k*yclv!( zgw0sHM-NL02G+jmb5uQa+@WGBYX(VWR1^g_1d6H0Azv^}Kd|a<=&M|&Nrs?-Qi?rZ zbG)}mEwu_SUpVoB`MpR)Qh{MB<>Eu-xCzm(-KZHqN^l?93nr@dT7iOlIOapH;>W_wfZ~XPf=<9bo z!z2mfh)m2*I{+Y3G3*Z#aZrEv`ZE?3>0@T>=6u#%ABy2k0I;9r(h)sIBMQ+OT}dn< zagFx%leGSjvnJJjO+{ZR$r2Ac&AzW&N9ta@hijzG#ZD(0};3|Nb9-eo$Gg^fw1$ zUzZU8LJ6zQ&7YmBKKZO3&6K#las7Dw! zRYq~Lx%kM5rAeE)y>7SH>-PrzZm-iHn^i=Ad#@GAC>ai!Su1D!9rt>}QFKsCpSTQz zq4}KYy8-(hax|Y{6w_7>Q2d4^>GLd%2?`g6I2u$7i6O3nF14!vw{SP!uaFSE~nYkI~N1y-9moE2b&#Tp)K<(o-B)O=mP}6Sypfg{EGmoZZ9)Wy+ zX%dtW3XwvJOBK1Uy_L~G`MJ(u&e`Z(YqEV(MrozVi7JSy;byJT5X5nk#NlYa z4l#1jO#pb}bwcJ?0H6pTcKQSFfE3Id7D!h5?VRPE>VAhD91pFL_9v)j#db)1&`aSG z@KA`W`uLu%8dXXFJYECL82@s;f%2}&7P><-K5ud)>t(xua zJ0^iKXk~P*x)Hmrc8mAht#-hr%48;{DjSqS-`AKB5L6lB$m`K^EGb@w= zij>H7{-pm{fmXAp=jh0lHY*OgopEBQFLT?m}2K$Ew z#bv+eaq>VP1+O!Z2kzu_@8y=1y4K<-nqKVWg}*qAVlp%GKbs0t ziY2}w-oDFxR&B;4Iw}}80g=H@%X~|v7@h$Es`o(lL~qD#8)HA0{4PClt^4UCPK?N% zDz2QVsHub*pxQ3xkS-ICNXKIqKWW^C*wK1EorSd9?T6G%RXJ|&e)~=cWUjh1;(})a zRNaoefLn!9!K5njz0eO8r8*^qF`{WCxwuVX&Pgg1qrD0M5M5EpjT4otu0(Z=!l99t zyP(BMZ=Bz2GmBd*ZkMQ$o00=awkH}h&1$`@4fa|qm)!lcz+k7<@uJK%p!}`i5Dwqt ziW9ne`0C~Fli@f;^9oD4bg5`~Z)FO0j~)p))zq{tp5m7QJz**YFbi9XW7pP=4#yzO zVr7dhLkOkPpXGPu=U6A^7TLRE>tlcTw7!1W&hx(g#!4O%reOHG49Vg>Q3TWl+MMLl zFW_A$!ZJ{U!NgN`d}>&OL3~0c9XX_^DW&y$_bvqh=43DwQf3YfEVvsTXL_!tMSc*a z5-HVG;`QAKH4~9iYUpHmgO7Y8wWvhTKv2X~29KNPj<{lqGCVdg+_(ZjggyW;Ck+*7 zkIabI_wI!Nu{xkwq8BUE3yX8J^RRyHYd;$8rz#EHPQNt(05j-!$zifpc-Y9n{gRC< z7p-!3&yGhL=pBq|3TN#BJ_s^Ue23*Sq_iz?e%!V=eYcGJJ(4|`@iduGq_U?Xw;pR# z-vS0&F8M7a`QCtK*Q+QsQb?EtCdcK9m}D8EWtbFrh?)bH_hJA7P^A2d*jLFywCA4D z@GgNOBFebaU)u!$M|V>YD)WsYuiU_?N$3vxVyx$=W*8U-JQe^*n5n7tet$qDL4XJP zlx9jJ#ks~)E-q2c)sc##wpA$rnE-$}Jqkl*zqfSfd$)J-&?(J|b7#*y|0G%Y&gXu( zuQ7xK-K{UQ&-?kabW;=`5kUnjvI~>d&)# zGKuUxBi8MHPec!z5u9$XH?Cm)v4QOI?~XDpu8}cL8o6I3D7X+r@-*Zrh!`-{IHcq* zcJas+a}sndsy4~ngf^AXMZewKlLWvJ5rSldym;nY*X%kO4%NY2&KMA$2&F*RO&o0u zdWuK|V2qRkO9zscKN)z+k*K)5BIWkRMvsQl^7^O?_4l*yf9o0@>l;c?ft2z9qP5zo zr#|>ZaN|46Y#*x%wMp692mvte%TkH_f9mzfgC+0)dGZ$kc*pH!Tl01Pu_F3vDJ9 z#h*|V96_M&uKiE9pDkazp0uCE8=d$px+T%uZF?pHVk`)1Or3oC^&jfC@a1^DNDv;F zFVzD%2@rLEkh-Rmq}3fIm?%``T?M4TtkC{y!@+;+qlDd7+_0ktM2b&c?%#u{_xfM` z+B%NC+j)f{;j!y>y@TB!W%B6{oa!&Xe7sULSRSo8F)KS;3IM#ISSch~h1(&q_8mPc z@$DDuX*X{66wU+4crqVK{@T#uBB;+Buv4`VXmFs6$|81`Gcvk8PliNv?Hkx4wsmVw z8OiZE=c{$o`j&?8##phRk%e3VGeP20twBf=3={!KPz(qJil!%S@A7F)TTO56J#z4R zdb-@15}oZ%R3M;4qA0aMd)L-Q)KoggS6QD>s_TYMM4HA?q97OJIW;Iz{a#EVkjN_A zpjbf_;8TI7g{8A6=H_c8r$wvOCx^Q}04QNK9lDZyh!`VZ9D)Fl`t0FfVR!A}$j=>&?l{kxJ-Jg@tLEcdPDPRcn~pJcG8r~<$u4wmE}gB zP%y4DMO4f)LEz?DE;*1 ze~v8#F-E=Pv>llT-#yYAR{)=OJfRr$ez$c;`vuj4~8C7O6*>pUH_tR53=z9 zXpP5Vw1l;Gyvy4n?YG04qc`~zzuzprhG&QO33{eZFu^>!yVzAtd`o12OuhW%e|{M2 zHy5SJYt6JMdtu;VGMH&vBr3Td%^O5TFu*rORFHW90`5OOHu|o$`OMC5{t5Q-`s=Na z|Ez7QsB{m3Rr`o=`K6t|kjY*rpVJFcpPHVXpFzOU_V)H(r@g)DDmFD;ELH12`E=8g z5)p~oBNc-UBd0bw+q8GQGYR+xmuWOC&ldORDQ)*_GRxfTG8gi9(F^#W9pZmBqlB!V5$s55}+`#ot)`h1yQ3 zvH0(dX2bvN8E4(r(uti_z?!SE=+&3L_Z2DtN*{Y{BH2*R?1I(Z3lkP}M?8*t{UNCl zA17vyEiQfHlQSid_o29Hl^E%}%$k_3H7_sgC}OP_1w%GDxi6KI;kUcFJ&YHAxVe4e z!dt^Hq;r%ESY{E3A!DkS%ZyOSotfoG^{vs!)o zeO(M0_l90npWZL-;UnI?YxytyyCT1Sx_(>xTHZ6o+12*9cgZ+M)o16YrYB~Krg!hw zt(%)k2Ho`YdB<(9t@O3Yvr|Tv7#mAPp7p%HH9QKX435g}&wqOGpBf}iKF{Qy0&36+ zJhSYD_gg!whJ-XM?u4^42IGjTK*$xsd=&n-8seW;qzE2j@rhI=A5s$8*~L2U@OSyvu?rV^k9f39h(V(y<2|!!~c$WzISD^rpC8 z0z+?p1wePi(|@8d`??PEjdJwwFOivNlGg`3lT7>G`XkJUVI%SS-@NFXCeaB)BrVHM zs5i1zQf*Z4UFfL|=|z1$Q5}yV_^=dbuU^-$eR|qAwJzilqW}Qafzp;1D#gm&M7+Lo zHv!Pky*#OZ>nnLxUiV6;RyActL=Wt$pOxOSh6W_09ajFe?Ab}R!wXJ$fLb2?RKBpX z>mDe-^3uP}Jayso}4JemW|>78?3EJl^Cz-E5GWuW@VlF>k(%qUALp52^N5an0zvtr^A=d-2t z#d|;VKjbkoST%e~aYB3dh5bv9p>iu@L%mzXP(-)nyQ0%*{l_?+v5+4cuRS| zaMfi#*qPzZXE{YxW_drmD>qxV0~zE%uM#hVyQwA7SBe9EL~nRA|O@GAzB4Czhp3wy@9Y$G#uxpwjV?;AEUc z;ZPkSjTy;>LhE<@D)wT2kinge0hdWe#E6y({j9jgO>C$oJDu3?3a24HW|}`^u7{Zq zql&@q4~M>T(A!5W?R+qxYG8ac zt$bJ8sSaNJJUEo?r4a>Mb$%W+bMfS_oK3y7{H`C=|8rO&3E&Ah9#!#x#s=?3SFXFW(@ekxbfHF~$-tIbx8BAo|m<6ketKm}9=U z6?EeM5hb?s$A9bT3u9!9-APq{e$iwi&g+ZK)%2D(dA*7 z{gP^pSAE7i`@eqBR_G)jWiY<%)Yp0=NFa>2#O3Sz!aUHvaB{o>7kum0rvw5l?Mc1c zWC@ibDfX@iLP@Uu@%6-Z{Ek-y)F1gr0EKDd{ks#xQQ?Ve?3GO)ysu^j@APX zKt8(Wy$u~WB8*eNFD%TCi)T@gcC?HgE>WVDyJCG^(b!1HtL-I)fyRyP(Bx@lKbVAPYMj50<#QYrQnX!7lE2-5D zQp+Cs0SC0t`~xuIk%^z08@bl$bk%!Z!{!~WXbMx~T%=q|$@d5JXQgETfRgc6-(#b> zLS+e354TQz?0)6yT}C);Fxt(Is~M z^tFLzjq!&|!$G!UEJL1-g6!sV9UIXtFYF=p689H>%9goujt-};K@CeQFZt}mqd)H) z-!m?l#tf>Xw~{_S%O1k57Y0 z)Me|8=)CX*ba515=FlXd1B76ml%=ac&i%$JH0|zt6m*320>i>F<$NBmLWZR? z_&J)vUI@0=0N5ukuf1M9+QjyDyR9J1%kYyvovQl)km}&?sEnApKhr&<1>V)0s^uzM z(*3+$`s{3fRnJoAp(P`a{-|?-6U&F{RpCQ_Nb{WNuxrHejI6!cey|i?Oi!}p2D$|d zB`x%{kO(8KPn~b6!(teM{Pe@8U1%YNXbT2I=u>er1csG>rEPK*WCEDL7%u=$s63PR z3JA;?gD`Gt8)^`xDA7&Wbh}$z11OV=P~j(ApP5OF#hsg{ZyY-d0}}WB8*aoEki?U4 zP`ZiEvY|sNY6X=C8q9)!E&?)dP6( zuLBku&HsI@%ujUhO~wAx#$ZoN{5#Y4AE^7mVcgv@xURr302I}drCrI{U~!Fcf=Nr4 zz18DHc3JESXWS(R@Gj3_e$e;^W-uCbX9K``=G9l+qt4mNmC0@g^DQP{A(?J&nr#I5z@G&tJn#MDvZGI~_D|nkvPS(nAMCIS zmxM*p;oRLVq(n`fFaa2|6UDjIm@8=t#U3Q;@)-qPO}ddzbC7ws1sRUb#$U~~W*hvb z0$5(%edXw{6`IE3jz3u(Q&@O;dM2%x%S!jXQI^!kmV$Uu$Sd^rq(bjW_75*p-Cv?U z;O0!!FQ=|sHhSt?olE&5HpmbPYj}9B!X$(yUl*@s!hM@9BQ%+i!vg>~qodd}Pjy`z0UI1nz6$2=Yv@L9QGhk6zCzaO~#A zJpes$JNOWgqxNWeVbUgfH%ywot5wSb9^@NK>vp8##U&D@4{hxP%T&jKBTJ^ z4E+^`b}n#Y*GH~VRO8Dps|R~pOK+jmx>o6KSXA4&xC+sN&gZ^?Go%{(8d;L#uG>HL z_p?mGV>Dm_W{}AY88Lvkc#1dShgoB4q{?U}27VlGh-Hfq62nhmrrv3!LxNBL3oxSN z!4xzd{ZlvVXiC=@5Cp<@4vUQD+*ITyY@QlBC zQx^&f`*o+SkQgOhrQZHc-E5)NqwOY*|*`QPQ zwmDbm#i5sv_gh<=;yq<0#|!IxDe1YaotJwd!J{K(*q1I82|YYn211XS@blEp1CE0y zCgujU8W*iZUia(l-}FLVtSxI<2zkLacrfUW6lEaZV1Npr`4Y~EWYTx>parpbd;3x< zSj3sokOc&eaEHYpX(P!OO)-a_xG|^6N<*Gqrdjp{Cnq2Xk6(lNh3jiJ?DD^C?Dmq!J z;db^@4Xb*s3jloJKfLrd9H%mo*rk3d0Zz2A|GQocGT0FMcwX=JYr;jgcY#H^|khIA?ADVRO^PD~&x6)+O} zWPcd$-E(Akm6F9G1aq+9Y@uiMI%fohFcgv?Ds*}74YLYi+>B8qu1diS(^`$~ow-b~ zx&~mRNKXCE@5$c4MflMx|7%>#zzszZrP;x06yvg)_Pi6XGcywh)A~b`WWv!3iEZ*aCR&HW)8_ z%$VskDXj1znvn)QT;hai1ci&FH=4*5E+&ZrJXnh{;S0(aFE{<0)#5n9!&uXjWU3Up zGb@bLUI(CHC0w0;T?d`_T(;b0c!cm1`cT7}Vxd$NiN_-_iJpL{q85Tk5r9id6rmX` zZy0AW+)bIm9MYYPs3z&94+}nF&z8L)>)x4awAV0td*e$>n-faN*!qfZ{OrA`-Qe>! z!t?#FUQQCMLJw_MSTd30US0P$+|r5Qg4*R9m@R6kq*v@v56^B&-&Ock9K`&RAT>g}7Ab2Q_{a_gMk} z+qXbuKx~mb6M3*#`)qr&_V-Tk*H(F13CtBaR1z)K_ZNc7Ru(uQxS?boXeMZox&^lAMDQrcNK(fQ;c-B@;1rLAxCpK~8mS?N{Z8ofmC1`}I9`N_CIz3Z^d*;? zX5R!Rv~+-_xi?LaG6lmuVrN$^Em28QHrack~Oo~w0Mb8*2Qu2sw4mK+1QPL{=_tp9*~2#s4H3RpI3!V*`m zD6eO8sLp3G7!zO_0CaM1uFCMcYG{=6s00mtVE|#aFt^%a^`2|+AS^Zhqo5_Xfr&k9 z4R(1nO5SBOeObZ|rl(-d0mO5pWY2?$Qek=ffd52s8AW5N(nZVTm{KX!WNC;#(KWUW zRBB$#3dI#26qi7Ja@jGoph%g|!03!VMp_=DY)Jr4m4tdVV6J9RIRL8YKo~ab8cIk6h>#p< z{!)+a4G^$Y?%&%BR7li>$DllKSv?aVRRA1;Ajyy*Gh_yTV3xA3OGbE~M!9zv9v<=3 ziRRjMnSp3-&zy?x#p7_%rih$XzPlezTucH#j2vJ1iyWRPPjiqnen8z1oeY9^FBVa$ z&gCg>Pz*IBMmtJo^7D~e@(n4OK+{MHOVmRGYZo};ow3p#kz;L za1=J zRm|9|b$AHX80g#-=h#8O@C1$Q!FZ473m~h(L4>QdtPtM%9nEgqGb@2N_CXrbC*4;S87i0=0>0tRWm-L#}+wl zn@TyN=?DTn-8f8RIyU{3J- z;HA?~U-P>jBaTnK)Y(iNR27l9sH3S~6EWymaN;P>vBH*TA*e)u1Kpmr`ly~3uoM$I z^u=RU^_>Yq9U_e}?I+`6Xi%vUJd19Eu{lM+TFFwdIaF@FZ6j3(L;x)mQAv%ch*AaE z(TbS^q(W+-2q8y0(VuuL)bwV_Xs@h=iV~Rhv3O?I!;S?q0R+l{<~$+L&bdMw#hh;j znNCTX6+{n{sb`K~dNUaF{e#k}cy-)nD~h}o4IkET_JN)1Irz|mmSb;zuuX^9-O*1M zbTSZEA*-cx0vlzl(RY}fX0mxW8L(Mt(%#QXF}lyyAurRk)Zsz+lY$IZp<4`Ikoe;L z`04(fP{nqV?gDhECjyH?vI(wW!5VrB*scO6Zjl!pRYgW zgF@p@WR*%bf+%pQc!kr9=vt=xI8;_K%@Xb zI1-SMag|w+IlZO))rj3aHd& zpXchZGoaxy=w#ro3R5mWzP~!JxrH)<=;3IKA{5KE96oMajwn_!RkviVWto69e^x*= zq%vVtk`HZu`u%s$VAgTwmZ&am2QJr^99T(HEIppRR$gVT8j}q4!FxGUAt=`r#818o zPW5hL70OA~eeJWMfmEc#cCuWnyIJm|df!Qsvj6o1B zRxDAPK6=-iV3jsv%dSQf;guJ@B~wtyb#3_(>Kz?h+Y^EZo21b8jwvau^v-0^TdO~x z9`BcwNDzS~1R+~BlyY2~Z@HOoU`jJ*2X^9ziJ9!vNsW$DZLA8GA5Av(u~CTmb?JjD~vZd4OZRV zSf+{6#cjSA0`*y^fQwCOz_kyP9kZo1%TriL`3 z0(o6yL{l2yA87%jX{wiZp1&eZXD6|Ynwph&mTx2}00`#HJvp&+blftfUuRy0m&td9{4qkF0rmIgVVpagvyyPue+j{Ib zBgp^3&Nb-4vs2k&vl}#3pB6_v>9-FD#pXS{r)WdWuf0BeeuM;5rJNP)T)+uYGk= z-R)P#L7bjHK47psBbg*08XQ0FzfBg2@9x!f=PND#W~{S1@2*S%>mi8M$m5 zl;*7rdUFy0hMPV55Ygg(-x&uZkw%koGOT>olJaAvZzJdKyJQ;5pFP@~dGF6Yt3lyO zSAp}%Yn{+^&heVEVgy4xt3M^Iuhqxl#<13AYe`?*Tkzn?rYyBo-(d#(QhchWpg%1f zk@=QsI}2<7h+)Q$FTjX;t&7T-ktgwj#hTRY7r;g8pd5gUQwY_VaZVG_LxbDxA`vSK zC+}Psc1kMrb)zJv=hxehU&_WfJ9@lMc8`iAFi?pfoPJ+9))h)txoTY7?&~KOYoSSb zLaB5-uysx{mWxywEVt+H%rr8Hi8%xq-D^1y5o0f5+W0Uei!@DC4rax9YsQbN9e&kZ z|5~{j7vEN5&wTa!7F!UDR^9=p$#dgtu1Frt8*3rzq_j* zW`Ym+_@Jdn;OHuja}T2+l5TZVUKh6MF>JVu|Buf36BO;I#Tx4$(P=RzD@wD(O`S6(<`2*jooQT z71M+>GAd@mWCowxM$QE-`>_nMo%v!Cy`9lRg!|kaUvJ=28ajsDLs_J`%@_WBom9k| z7iJV%+~*$G%N!pA2wh|F?D|hW?2KN8Nws)D5bEp<<{C(5kX|~FGM@0#j*Z6ySuC#= zZZxAW=V_XhIhA?BbfwSE47XT@Ij$+YR23rq~5OtmNCHktMiSMSRLs~_{>l>@7VF1?Zp;=T_vdWU>Ch3 z0WC_X=&YRlmAaAyC8_SPJDWXWFA%%iqzNTdT4AxM`7}%573`e5Z^`pnCz1Lr04Se7 ztfVeRaq4q@Jh7tEU?LJQ%`RqbD(in>jU^IN_dZBU28BjV95r~NMT=J~TTHYt}(jaky-z%?#!n~s%%$YT%%hPpTL?Qhp!p`avpj7@ub{mz9KH|N~Q z3PZw}(VegD^(sA-jRl7U%{yw%R!4wl=}dufwer*p%r}ro!&&F6+ksgsnTfD-(T`%qlabx zSfXyzQubhR=9VVtlpaq@CNRWu#mp!52Mn?g?}7ku*w@=}1Hbo1Z+cq+KYIv@rL76YcqT;U{n(|EWBQVDGegHS&& zJjW0%$0G&vPQ5Yw>JuOR!CWV74h0f}Q-_o`Tq}n1;!J2H*xA^d=OP2Ci{8N?^R@{R zYf*pU<7lQj$^4SBy{#?HC^Dy8MqO!k=(uW@aD`bLA}_$)3s?5&OlG^bSAAFQVJ7wI zUPnS0?6WK=M?L=oa6|c+X-PQ>yU<_JA~@oqhmu+aD}e!SXM=%bm{5NayXtV3`4-_P zg2|0Oqd>&vV}Zo}+Pto3VpuiKNboY1IXqu%Ub0-k$=$>!1zJOzBTbeCus(lRG0=Lo zX4hASf}B)zatuk-2&vMbmB$%WRe8X2a|TJ?rW~WVFtJ@G=4ROuUw-QRx5_RwhDs1! zRQAfVI|IihWcfr&vC!?_9UcEdwj4ixX7lyo0k9q~F~K9Kc8aIYQE3t?vE0LZyF=a3 zHDhm5YJ?SnLSLKIeVVgA8Tl$FVe8J|Of~?)xtAUywOXeIu#a=CNT|%QW+76{Ta%=s z_>H4ybZ?vg!b&}>YS!jA_k&J|?u73{-J_hDCf;X|+P1*F0^~#5UyQWgSaCb<$;Cj< zi%&34Q(43p%Tj23*5%PQ=0uUyF3x;>NK-TjgGwyXsn86eS93^i?F{Zu7IGjBoC&50 zBJgH19H&pT3bQRIEUA%P`f6$EVrl}YIMqOd?hICTeB{Z(!dy@YYpNqa__gwl-BFadA!`p4P18!0NL7f` zcDqdwZPs^CaiiH|3147-i=`QF*yX{PDhRyNE6rvC(AR?Vk3BS|pZd;C*bf6@6pX0E z$}}#UkWEIutX#*t)euGOPPAs80nkd?9%6y{;{(f2Ke?QFbkLlJzfM zrt}L{{b_TyyXVB=^`~(N^xbzu`L!QLRByiKzJO##NDoZ&nH+=`(R2P-Qh~9M1|q4; zKsAOPqv336P2)!K#P%1Sv~SoQtKLH-NQ@1uy}0cu*`1wvDH4+cz&-W8OJ4%9_Qh$o>Np?m-_%jqy? zIW}*0&t{JSTvqSZ9}?_0f9c+}90*zW7JRNL(9#q&7XZSAiPTml*gnrL?+Wz`-kifb zS(+m()*UUidmUvK$EN~G?1SLG0b#F47#VnzZHF%D{{r6-7U4qL=SbTh~AFx zo$e)Ebb6ETdCpp{3L^R9hof)q8Ql>zOhyf>I=eiTy!y=n0O&TuXzR+=?KCVnhNUFB zGcmY336YeMK~bo*f94KL2{qSJtzL)=8rl# ztYYNJ``98vP&$Ny2w|s#-s#O*1xnsNUSehIC2w@1^!Gak$C(~wOj{iMia%-n<_0(u zVXcScN7`$#%04*a6j+dnW|`eFwbt&$2Pz1Xgv`-kf73nVr1_Oue`S(CECTV z{`3iLd72wS86Rxkx?`E`y`gS9Hcdypgi2tQ5=7?vF28<#0I5^Lq7tfqJOv^>0@47H znvoV?vf5Ta&f=a&xy<0Pa$^wYAnA?XRHpQ|ez3DRWlv5VImN%{?)_uP(MVE}Jiu2( zF~-AO^~)$rZ3KVJhYygdNL}`_-`$Y+>sFYqT)!^c32}$d)nUk69Afs{-(Dmu_niQr z)1UhS*ar8?ii1Qmw)w)@dgPU}#ib^nb3sSjoO|B&QwHo$kE2u)m6#}7<;X`|r5JKLj}(J?5F<7AYGP z(V~<@8UQ%?M$2Xe4m%m;G8*?@CB3b_vj;K38Jm~A`eA3oz23!8=#RyXSHmQXkNJ_* zj^Bc<=#i9TUz<&gqyqz|`0B#!mXS{BZ>dkdIV98v-+|CT=Gmzc z_1|7F6pzW*SFcs;otd4Vr$j0>IRhhJU05g)1(>?6^<9rm)mE=Y0>GXZiKa=x)hq(x zk&;4Fl3S4;zxk2dS`25M-i{IEE$>(}#he5*%htwF&y?}*8(YP?Gx5HY)=^^rxlaGj zk0~_GgvVi~f-H3%Odd)om?i-AY}(SIz*%uW9dDlLW#ES+P$sYFs#To|xA+J#tc)(> zm|b<<)O`$+KF7dl4~sZcj4$4hWlPM6?Yh{UnSDXcm|ZF`J{i>Qz7oq`1RQ(I*NbmK-l0$lpglg80e{(V2V z{!hoXBdF#|wud)Qq^;>ugk_ex09IM^YVfDac<>`R!E^0F6F%uKmBS9a@46p55jsm% z$6+Tk-PL%z)}++-bD*J~4i!5MW)#mGdG;c3_kC-PcXyjQ=Zwi=Pgj?(;a)lTSrHxi zTkP$VSSeV&jx$;UFNiEonC60U5IIOjNr_&oZcTKaD&ChCmg}1p-6;N0{Dj*VNy-x@ zld46NNS7KhKKBVkknrjcu52@}x$w=eb4GIR0#FJG5}8KXIAZ^}dsj##ifZ#fiAqu- z1(5>H(BMD(I8q5GriQDQEA!qAhQ;&w4|2`w**Jf@@H_W9SMGKm`NZ?uVaYpn_9s5` z=D&bER%Pj8yqc?JN>!DSC{xuTfO2T8RG=v4pN0Q*o4|k{yZQ-AT=1XHgEq*g^P#0l zsTO`>#wLlKj3`JDVaxO{;lMhnbaGv^Ypt`g$ArQxmRg=|65+QnO$KA4q?zaK{sW`; z%e)LPwL>?PMncAcmL!4G0y0gHlr{HTO6&nK*)8v-DrJA9fvG%;aNGuXub~^~A4#ai3YFLhV~T zj3Nxh@zY;k8`oH<9iLfWxtvekNVA0BFazHOz@AN;k_v*hhck z5B|4Aj#MkmQbej!R%uQ;2(iUNL%#M&P?}tr8Cm!v$g*Zl%$r-=-ZWg={vzbjFO;Ki+{SSmP|ih(ClA6!Jle1p z6o{!*v7a0d08d;F{#et>hrjtK?*uT6#89n&8nn3KC0@ot?m^%~LiLWAF$xM3;O={}MP_NP2(u_Udd-`LwyZ9+y&R(i5XQ+cK;bw-nH3f3X^>6Wh>Z}2IXIJUinEKX$B zvwk~z}3GD>@~Db9D$+jm8Z+@iTQQ?2*oJ0+L8VKibsrrLZ}!A?n`X2oCmnPTkl zvK<0|R;wBeJxh(A3H=e^~=XkiZayV(^}4RkM1 zGgzQL(a%#CHYF!UH33FA+HdtE;ZG_ia-%YZhH6kMZXELEnHr)IJXD2Q=peHS`hbq@ zIMfB_=^G2*QB9Wwu^Kr;N#!F3Nq37`J?F37xM178k9fQ zgz>{y{@ynWzv4HXWk?Ajs9-p<%;{5SkIyzNNMi5S+Z*>*DbVg38>_l1177mR5S;^R47xoE>st8l>%K6K&m{`4~pa& z#-g?(IW4l!J^j9ss-&hjl0Zzywk@J~lyXIw!9=(lfIfS|6gsizU)sGXXqqUiR%V%s zV1aQ>U40&?S5J?pcM_R~`_yl*m_Ih1-^=`VI`v_5ysGqDf8!Ut3qO9oFmrr)`9$02 zoz<>j%(SL08I4+7Yas%FNMHT*8(ayTxDU5Tn+zL zKcs%a6SV2s+Fd%q=&vn&2%5i9CQlE3zEKPf=_OvIQ+lveMEIYcYe3ob8sD;==U!>c zY{!3h_YD_WVFb-`%~E<=v5^L{Z`(A4R*R!j6a_5%1Oger7v^=UR30Wm)PBI z8$8~gdXRiy$v?cH;cW)4LUQIG0- z29UXdmCu<@88w8p7ba1%sKQQ|q)c!t5!Asm+K(Quf9Q+F9#{e;qa(tjZ8G^DUGsKq z75U|fVEZFaC#>%FWfE~TX6NT>7FCowdd(>r$NpWH_hvPheSw%r+QWc6Xx+pNI*VUlodVPS51W_EI_VG}>-tzUn0lgu{1_3438 zX$5-4!YGvr0WF;p3fs#{A5O%ZlRZsOMruFQ=U1kG+R6Wi&+it0a&{kGdUNi^_qxIE zkG^xMJULOJe3Xhfr-=}fjx_@d^Lq57oB4UH&KR4Q+gOM_ImlHoRHG%N!lFrV=r?-# z>sgvUFA1zij}^&XF8=<;P*nUAu{{_~wJy+j6PDMcr1S$RYzHRFoMsbCBRd z2*w7paKTNLCLJEeUGeqwi6193uF^RZ$VkTyy=!aJpDOCfreevqTdUSe^6u?!Ut?() z#i`Mlotv7jm#ld0>b*`{D#?wFjxpixkm_^=qXY#PAJO5wYr9;o8Kli4Vktd+?tb!|TK}Aw zwn-v{#zfYM+@!I=LH945C&Tlxa>0%p|R1;_nN(8EvZOwV1ilkm5XS zQMXa+Od*e(j-Z%fF&^Ej^ zNTp+j(p;XXl~aHH)>y%N?1WTap zxsxrrV;txPW}C+*8h6~B9z1m_y1f#Ol|^gErcNve-ADnTK?=2rdefE~)!5#4YkQlI z(Kj9J+`Y5f#WB6how8koBuZ(C9u`pHM}X?QfR4ub=LlyPOP?D+o9{e%@#>$VC>d&e z;q4ua5P97?GR26q5BI-?Pu||avGld&xNq6LX*Q!$D3e9dGtKCz?~oK94P(OURJ<6? zX{JP-c%t0C(Omnv(q+)`LNHZ5E+h|VCVHB4MoFt8YA!!7V7Bq6kqejI+r8SLK#>J5 zR9&hapPT#go)Dyzh}c=4D3#LfJ1cvGkr#3$fK3k?rnFmT)+&13(G805y#XqP2+Ivq0|xcIe?93Fz_+Ucd^`(r;BU@ zpQR6YS{ij z5HHot1}h+yUK~f|Hzja}QDw_mhv~SOk;W3dSIF!xsUWDF@l>pzUhE}pkJevzucVe& zl|TZIR6W2Y``FvpSt=YYjatt>KUFHnTlYF`F9-%5Pf4j{CT?3g_gnyK#<#9rUcE2N zv>KtU6J!veN#hCxg}SrWKj=4f?ZNE%9pBBzk11o&_AnX0SHvfe)vf8xw^mwiil(U( z5J?=1{nA0_#i{9qsRqd=RH~RsWttM^nDxWeAo9ypm<3WuAMjihhV!_CggWmoF(YMS998K+upW}Cd=_S2dMdMgC(RJ)a#NxDw3t(lxKvv z6V>T=82GMUn1pOwYay}Jy7Pb%(EHCbeXlhUAz8;v2u2r|z{NJ96>Wi84U=bLD${7f z-RU1aCNBk-8HuM7r9uyDfuPmotb7$^tcoZS{mk>rW|9s^-EONl@$_LAPVG^g~a#E?=PD1)R9NWE%XTh(g^wSBuWacU>_aw=#Uxq@K)tBQrRFg3Y* zXKibHyCV)Jos7Sz>H;FgtON9Fe;XlfVNAi&uP1IoH79eb~f*+9;XOkAX1JaC$59KTyL zL^cK52TGJW7|?jmhu%giYvOdIpK%>q)P11@6f;}5g&8(O#if*tB;iyD zyQXv_@|3uc0y05#a{cyg6Ac{1z9AxIHZX+9X9QEplX6W!0o-s!)hMRNJy1DGU0lYq zM%oXXoIUSs@A`L)n9Ys2j6&s*P?O2_*%PlvR^&}gilHCT`lQ2TD$+DgITwmPxJjwD zb!RIAG%PBsrHOKHN(iKicQpev)QU!xQ6|?8(Q@U+-6QZCeIuz{fhp^?9XW zn7ZutT5W&46Om1yKVKuAR+^6b5&(!nS*n0QFdPhqW~p2yhobl}@P`XW9(2y%=X`ax zY#ki-UX<_O+IFd&o6v-ajCAg8BfBF(fCA1}{|-dswlHXI$8+h^gXPDVJk+2aQ7(V~A@Sph4zPBAgLKUvFz8Q_|oJZ@I^=d1R^2bXW_61JMKm zx)AUPB;>$R>KXebmF4DhDLfDa@k`z?@cgXR>ISQNqAd**nM6XjLq)yKotKW^3W|fU zI9ZH_9=9y3;8=#PQB5;24o9({x`RQn#6)AdI5Vu-t^|-ls|cyhjcTDlkc#rX!8`&|7lbqb%Yo%I+%2LQmKjzin| z&BObKT35~o05Lsp**n}>KPp(E!6qBSDm)F6;)EL8y_2L8>~2i~=N8B;g4E5(AXnbg);(Ke}FNaLX2yFb?p70w+i zPDy>T7bqh5U^o+C#bdRy4GM*GNRxNLe>u2&Q;q3EP-)r$k zOc|)Jt%Cq{PKO~{{QU15vVpZx3@lWW*9x2JYNnDOR9u%aTD;lDmY#CNhWl(@r_je|rfgT!0~rf zH7C*QzK~8=&9uk2q~hn}q2Q?$x|5`)E>~}!J@eg9ZxRe5Ix#!jY!u5*)s_<7_TJ9D z?LnXlXO`>=F=qO04l?q)bfWDz?SiAJR7tSlkjU39+$mH_0STJ=V= zUaDEDJp$%$Z)F>dDux;294|cv|JC31!NIBOWj3SbBkJYC8ip#~#c5)ffS`4=q=rnPN zZ;pSVh+(}q7{Uuxm@z8VI4Vi$OzSAve%AL5inWuL!(9VTS-TSCpb6#y(B_mxuUw#3 zWvY)`DT$9e?Ih(=a@)8+qhYK3@{c#)`1%c>P>DvNQZ1Jt@&>LO#7ZkROJJH>Wum?A za}j#O!L-($5?;Bgf>=nR9o_+Axc1mWa{JbpP~DiXRg#cUmC90`aCIOmMNI`hlpL+s zin8g#+pWzzoiRm6DMsN?MDKG!f%y_2Eu5@Da>=hhf1cds5}q0eyn~on-_TK9mDdvB zWX0-h+iw5ea5@1F(Ri?=d`nX%lzWJgrEaa}x|MmU#$g+hB9Rn~PMHtu0xhtdKm9)_ zSR@7rCe<=g$3-~#yaUBSG*{6$uim6KgA`*`Nc{7vo2C*}B5Z@F8WpM1%&F5S7mLUP zKS~84Djo%%A1NYtF0c0e*y|4heuk{hoA*i!#jq8{!alNgC^bJ%23O-TWxP}+hABn^ zw^(b=EKP5=2Z@mKP&V*kdyvbhtk|3`!lCUwd>E+E_^T{V6|gtH_u-w#d;K(JmwOoE zkrW663Yt2Ik=ccr4#9Q^I;Ag5Un^{P(|9Lra&2`vyh58T?tbxp$8dX#Q?1+!hw)h7 z>1F~FU`WB{qU>J!7J0vKTWgU!fYcj!CQ%13cuF>-l*N-M#bilHiPxm#Nr_$fzFajaQstSFJGK*K4OE9HWrDG`N17$s7QAc(dHUNGo+ z0#3|aE-dVf7Us3qolc~Rkvck)XHHQ*?n}VMQK>-9g1a*!#d>w7#`?SMzBlN5T!B(q zPos{p93!0P=4f?hW@@q&%R{oqRiMOT*|D^}9%#%oWcG-PV-l0sR4nN3IcWQJpX_QG z5)3<gtZG z7mhX`*UvNU&fXYb`L69Sji%u+5YCCIDN}OcwmRL>!1KMB12uJhG>G@lQ>9~*i?d}* za5x;XM?ncb!%O55?{fJ2)>Oq?hG(z5>*35-nYe%cFWkUeup}3$V#4blIw$> ziM&HMD<)x0>&7`=n;7CXm-5J4%Wy8)qeC(wIla=mYT zcoUD%I6UUDFG!3uWIvJD7k8r-|zv0zJ6sd4aGiEcsmmYKO zuN0X>xJ)xBa3LQ!09in$zh23_#Tg?NP*NzF#gmPz(c}CYd$c*)x^{aIR`ICY=e0-l zcx!V^`A}{joisp9+*W!1?Ae8yMp!x+jQlW4k~9p5{eF*+by()ih54C39= zl(z^RnQgCanj%7uRJ8j&>TL8%b&0e=f)XhWCv`d^0`ApJz4z8xeC-kO23o#*b*zVZ z0A$3R`b9j9o!WQ#aKw86re_l$~Y$1u#z*48m6s* zWlb$cSDmN*x8oBN-uCT_Jvml7Hb|g#fA6Ms?&jXGYrxTEz|E-bCi#zQDbmF%17i$VDnHhb%cXvZ6Rt<{7 zxmC#E;cp3HsReG?TW#av4jd_F6PiLxp}U0jO>oR0+W|p_MRpUk3x83eB2GZ?(>!U3!wZBQ@LVwzqEf z<>8OPlNyffcw);$ZhtScD`n}S51gKFYLn=; zreoQRdt;Gs500ogl zU>7$5mVLW5`7~UEM-GGW=sj_e1wPyY7*x6*7868L1kFH{qB~8eUs?{F3!GqO6m~I%F&Ip2(Tq?>K#;)66dV&4$vT7ER&b=F5Ls<)hjfZ2fOp9q4 z48-{4NJb+!D})#fP$?<+cwuPNri%6HxhK!pS#Nds&dt7pLvx^NOZhiho%xSm;x2_f zcc$t$w@kZ1aKXW|0Q%4FGXeW^41SzvYm30Rm6jhD93B zVbfVt;u8VcerwksOV8mIWMxM5-XW!i8;nCMgAoQ$642J$mUWuki*w|{?0qalhx$Rk zPTbC~+aPI$jBx|V47Hd%Zc;a>oRxn2FR7V8hNF5()u-g{PEvt5@PY>`2qomfdP*q) z87Fb<)Mtv;Ti5ba@@M%;zO&gGBQY_MD6E>!;}=gTrV*~oW(gJyVo~& zZuaDnG{OgPgBuM_nRxc$N}=k!>`6hz&--No`pxksSa|-f^;@$J-}BrfyXyA+c05}v z=cIDQpC9C4g0iTL9p;^z@ctD54-|;@{bny;km@u;N>H{Q8Nhf6W9D^u2&st3Yyo;H zLj=+R?S$G;dk}RHtx+d06A!s@BX1Nh7!n#QP(}`u1!7B7$-IyGqNJrO)$13FqOefv zwV7?86iJ$J&ZSZr520q*<$@6pI$o=^ury^vLL@4|6H_Z2_z*1?T!mgNj>LUP>|({y z2qW6mjPysFyWN$}5qZ5>4d*+bJCO5i`&LvbtOFnAxyqhL0pR@Sm{(ox$v^E<6Q6f} zVx4BwVvi1JYvY@<-Q2WTZq7lZNQSf~>*hTD6cOFOb^m%n_Jj?CY78EeksUBV(5ZD< zF(+l98%xcxiLp6h89mZKMJ73z63qr`Mzft9+3)wR zGXoHgqo7k|uV17pVh9<0jb|?~aH|<8@9YbS;EoAuwAm-ZkA*+z`Kbbx*&WLUQ$mM{vaHGmI^Q$*G@`qmOiDR=|oph4qFc-L}7K=KiA{34x1if>u8+(KF=nPxe zUx_&&Bg`}M%9690Ls1{|6$8H`HFiqFwCbxzy zB`gQRbNYY45-7IY8uQCy!^3sjaDqi*2sP&55dvgE-L`fD%#y63Upa8w??h6Hrlaw==|(&)Qd4 zl#1m$<2;#KxjJ2jgdY%M7aYwXaTrUWB=J{AZZ|nfqn3|UA^D*k$-v~Wl>pG?H`)5| zVVeNDK7UBK9s9vMU{?z{nv68uj%jT=deTjSzF2W>&YUV4tg_>s#?P3LcGmH_M!j4M zQlT@yIMfWA8^oE>c0!q=S{IKjsgHDpFf#fkJ5;cY;CCP_T$R1YSxO+na*?S>XeFCU z$%&Le8AF1YdBTKv)b)d%Auc|9YAu2g=e%8loOFqM;(%otg-3nkFamB~e83np8}l*I^AVIQFX17!c{_ zKgwa8n6%&hcVT{>ce}66=IiXp(BY23aNm%JrXnHGSehy!5eU^7iALQ~uODf}v(GH`uIy-yQuXBldYc|CG1w$ zua~o;8Fs<6>dNZVkxjM^zIKWc0NJk}&S6HKe@eGFw?_o$@Z>Vvx<#3nxj@RU6iD(c z-i5>%^$~#+M$oaIXGD0e)vs0&;p|1`Srj|hNaRf~=3U>ZDnb&yP;xXzbZQVL7-Ve* z&mE3JVi!rYd1F{C_$^nyvn*yMIvfd2*UW-S(_Uxbg*=~x^g)Y9*)%X1^?S+DTh#i< zZKm&$Z__b!yIF#VtcNgr!A5^JD^()`5>EN9nlg~J$KkBh{`inXCs$;Ei zb1Sd~v4>U5iwTaWb6u04JLM3!!EQ2H|dLDg+0MF>_AZK6)@b~ORAxFK|bX*ti zned%YRmr7cX^a_`sWFoAGAdLG(m0heP82hyi-Wb@=pAUWkdX8{qZmzw!N45`QDPQ= zGELJd11f}w1}*=g1iP2n**^JUyZZBuw7^>9Gd@on$aWOCPJd-i+ed~Z9iS&`ZqHSAGueH|UB0G0Jx$_!cONx}) zJA(DWdk2I@rQc4;EC*+ADl{rG{)>6HLc$EwHW(!Y2#~D%6%wjxR0RFOwGCgrGYu9| z6bt1IiLN_DND6>vrgkY6Ph)Qsgb&T!%MUz;Nyw@k+4jTaSqK31>s(RC!`Ddi&bD#Y zyL8^V@6dq-LYJ90aHy%Kdiifl);a*do&N>Pjs6p+jP75Aa`=`N^XF{r7y*LPpHDQ3 zI;CMBFpMLoh`zN*$Z6(>{uv%e!iiJU8g=k}g**^~An98UOj1zQA^(N`$||$cFmy%; zA}Yz_(DTDcywf|&q+t*?^b+?Vm1R1-o=wZpW^Ddi5wTj$4@B(NMR&cI&ns|BL3w`VZ(ousA=8 z+2-c0e^sutJ5CK*cjd3N^}E5f6F(!Q%*dXp(L3I8j}!mWIe#9x2>Ot;Z@sIjg8#CA zbB!cZkCIBt|8w@1Gk(q->v;!l80~2M8gMV=R|1gDm`aaD?e;-Km0o`ilP zw;6+9%KxE$F8@vcL;ZhT6ZseNf5va*|M5S>ZTfSw>Eo8q`S;_$^h=cJqBsvn^1sY} z==*5$FMHn}{12TD|9ex;Kc;-}f6MiK{agMQuvhE1p3kfQ-H%ZJw?DX^?;rHPZ2jv0 zdH;X=WAFw2PyGM?pKKrf-pM|I|F<5UKf1sBeo_Cpf7<=p_!j-W|Ly-v+ynp5s0aS; ztbV}%e*Ad%vE=XWKCAto^hxv05pyrwHo4vj=jZ$X0smt04tTwxehBmE{LeRj*n0r^ zpWsXEe!&0FKg0jr_KN>!$+zr(@V$imyM2%T^#A|&R{hI5)dC5zx8#cgre{_oRC9et zFXgn)k=)lFVsi5YR?r3ImkE}PM>L8ym(&4cZMjivyPBaMnUMPZ3`41a>6`83(Q$b{ z%>-tuCet=wOZA7~E;0LWk;wD!Q((0--dTMGC+o{~jTCQtoOu;uu8jF&v6>1~Z=j3+ z2Ao?NhJhm1?~HM@G@S1;nf_z0N2@3fjP z-VYR|im!QGD1jQvDtRrYBlj1=RJx)VPEZ~(|BrGEPXd7^*bTDS#bE{F0JKSFu)By6}Z99&))b8fwR&7t3`Ni=wR zPhBdu&)}1W5)Rh1$4F|fJJX)892hg0r}sNk5Tt?|#J=A+SY*-kyX>-3o0P!|oLbe5=~UkneHk=8x* zUvL=!h<*5#XIs?&w)bn)s;A2G0f6~SE7~{u?UMG!27)(?_$Y4OIm30j#=l9l4KnwB zviE*93V!-6$SOlE!oR!$=IRtBG5PC2>;Z?z4MfFAV4bTOnbO}*#1F71x~kTn>XcI- zk^*oua$;kMXATKL&X0ZH?>%6{fJ?Gk-&rPOw{`@6l5%fRyapg_xTvnq9U^V=Wft0R zJ1ILJ+~VN%$B?KM`J^RZJ})x-_=1XCF4fb;to2REo$Fr9&$Xq)Jh}l0NFCU0R;q-o zOIX<9285y>$m=|$H%jH}8Ej<&5yLv}5AQ1lhP{cN<3e5HQhX)lryk{}9@z_mndJ|n zie(QcJ!dOEzad$bbkCRYbLSH~zbh~6^>oZh)M!Y13eHt)N1cNZ-DzN@nR!K+kBWHY zz$OXb#XyjnyUNeC6u=MsE`WubBto0BG0B$sO`W*XXf8%iKCE|)XdLHR03Z{f0;?fo z`&DYhytzKnLzyHW9ZkKfVdR?hp>|*Nj)k5FfEk6v#~YR7exf5bR7QC+$m?upH{Cu$ zCVqe|^33Szm}-vpLEH>gmnl>d>H{Z>q8++%V^OD^8u?{2@#rX@#i z4$s1E6R(Pjv=*yy{Z#P?u~94(f#FU_qMGFg)w5-juO?&c&`^>h$syM*)s&aS(1u?t zjNR!Kr#_mz1bmDJe81ZZ-TKSj`pYKZ*aog5vS|<}LY&z~M70cHpJT%djg>6$)MT$8luX|-j z1aeS4$nv0d&#{{40{Q4L{V>+?o6y3XheHDTfW$l9?j{5%!Y?2#;<5vkY zbx2rm*6kT8oUy4=t!2!Y1EV5so2_AB*!bjCin>*bekFv!I6*mNZ)1qf_YZyckZ3Ed zOI)&I)s^K3GB>-<`bmyw)~GT5m#!qa@BwhN?7^pP(`V>{(rrZNTDP4l9;gK{v0PqM zZwvi@bY@b)VOwb^O>BcYxUt>hR%OiX>`&JtBlw<)st}f6mZSvU!Mp1gWtU|NO<{a-1PY(E}93BliJV$$M5*av|}{F&VIy zoefsh?_Ly(O2t)b4om_a=okVB*DUME0>FYt<{NxEy zD^J=Oys>~AKou*do(xn9D(B^wAiKjbdC(c_vy+lR=}{}eIcf?yL!yhJb5P7IyA08=t%qTIKCTl3`&{v3k`>_&lT#*yt}E#!nS}fEjMSX8L%jw zxdBWF2QqTZIR}|+^XSI=@9;wnl13Os5RR4K(7;mU(I0ui}FZV)!@ zTL?^83PS(zH~JVsnL)|7H?%)uy?7V|#r-}qQ+WW`xzZagG)4woELJ@YHt$0Y@X|+( zFNEMTwQD!TO-}b8SmTl(vWuA8+_dA|j^?>O-UH@RveyC; zKf|ChFkG=@@pT@8n7-9p7Hz@ z0ewZj&q8Yf+PjM3=g84qoz5QZCI3#XMebzHuAF<8oNwgOGfrr>{EK!lDmmsckQ-7` zHG44freIeyJzHKv0VtG1i4gG{xnn5G%1xWrS=|lE-x5V~|ArMVpA8UoYSS+P`qg*5 z1yy*%W_Nr(E}mGN0dh`C=k_Q$V-WbX{UaPi7|F@LO>U~|q)U-9?eA1_23j%Pykc68 z_UO{RT{zkR0R61%y5JN8B;^`*B~~f_`J!eRybxBtrDX^1#G3pAkx)xHFPY~)#Z9v35j;%#$nuFzm|Y}s+2`1gJHvh7^lZ2Le(jAkM~r1Sw@cqY;|H;cTTpIAQUB-a8vmVA8 z`J^aQRG_}Qa=_Wo|*v~r^_206qc zP2ZNFJK)kD)+|?`uD*G-M3KPQ8J5S1RQElj~e z)|YGj54YFxb^o3XA0E(S^<9Q79T?rjbWfM@AZKM z?g42rDH5zKBQlw=JW} z>|sk`dzjt*zYExp!6rv0TzaB0pc6WpKP5WnW8Gqsg9Ua&@=os$z$zrel63cb_FFS- zdJ>BiS3s$NnFv@&HX|kG-Tf#1bG0vMK!{t-?pKlOehW&>`Ty@n>v8 z-QL)EKN}_G&J5$G!ccYxSnK|3l&WoxD;=q4#G%OjCY z7N$p6G}l*g%@HM*0s+Ku`%K<*19Sndbxg+u+hG@7HFJ zU#PVO2CG5f2I!T(DQX0Ar7>5VY~4K5$g7zSdKet?K{urL;`U+aO>}-n*ba$3?P;JT zcZy&~XPE4{D#kXQ&9InvQCCt{|9SgnSVa78-GK97puy|xC|^IUWQRM?wj%y}?UHnd zk*^m$X@r#x8L_BN%o_GpNyxjYlVQ)BS*j>v0UZ{E#jvWDMgK9J*7}^4Igjy%%eHgz z8z#hq@S$0o4h)YpJq(B=F#+Tdjkm@d!_!HZQLJcISBkV^Y$l031>DLj|FZzBygZ2V z6XyVsp4>C#2#LNgsJkE#Lm4K!=Kqy9niMINBFQlSflsvPXDj$XGJ@BBLCT*&cBoOA zgzlQ*I4-h*gPmVab$0%%4t2+oCz5&*{Mk(EOlOH;d$6jq}Xh zaBM28p4uN)>9qu=5Y~(>D0+-pWLEBf!C;z;Y&XVG6CqnkiO;7pBbtJHcJ6}bis2P5 z^F;^j@vb58zjd zF8ehRn!C7Fctf;@c|_lC>8Uu^Q-lCm$zGm)cWu|zYFrH92+NNQ4fhoY!s-rLfx(=M zc#`M;+yD&zh=FpAh~3eZorRxX#sIGI?%`~CJ?eFP6}R1X+Z3bQ005_`N2H_xOM+!TZ>TIS6>5GtG#i(+4J`PomwY}MF&Mxr z{%7D_Yw5fB=6NpWHH2u!)dH3@p7`s+Y@h8wG*3_wG+g+)R6#-{)E_2Q7fB#KhS6e( zOdyqu6jIXLTkk!Yi?}DldFCmKot0%f)Cr`l$eI~g>6Vop7|E0vr7%Y|Bfv`4L(A2M z07!4kp*f3njIy=CljtYll(@8%W!TK%#t!VvaQgBa*;Ux0Wt3Cr450ut)t8eKSQ)^J zz?g2I;XaqdGY5FXF#L#ghroFv0oDDAy7HrPB2IT4?tt(2BIH36)Ko0iMvzwOjG?@D zT!7n&(&B(tsBu7_smo|p+#hzGtCy62xHB^T>vE{M#)+i}B!{%CKDeIV_~~sYG4thBdD`)| zPXZaNI>+G|GQh}XwLmQy4AYaWdZo%1Z*xi)$R|kiWk6y5 z@NxwQ=!VLjZa4IZrY~@XF_~&-BJnw8fO1=imLl#(kfdKY1PaBGf26jaZO;Gp>NYIy z8l-`e95Oix{g4dIv&rgOeGOYX*(*cTDcZS(>Jba!7y~QB?3?Q|VCRfEb>!io02KQt z(Q8<}`lE!r^;pMaJ2)ZCJBm4y7^9Wv@aRk2dopB>Spa^{Qq=`Lt`*u#E{F&PtQ2qD zOGr7F5Xv)oBt3EBVeG?eo|8@oB~9(ZP~HNw?-!a^P{s=+6t$&N7<$Rz(eq+%u(e{O zRpkhj?rH25uo)3a_w#lhv&{S~aj76?bsi3}Dt*2UC=GKs<>r3jkm&Jh7l?#S=zcfd4>$$dZ0uSs&1HwDy?@2? z5#@BzTZK7?n_QOWU=o3R;V4RC$f<}-cqZSA&DELllxL0zl@2c2S;;iZ)&$Y$dGr7P z1-8|v^0L4mh<8MD?>W&};8x5B%*FM)S-%S47%XI6RC-r%Y+bEu@52&8PsUm|4${KB z26h-C=AcJMBgp7mVoEZ?PfYY+R6wirYogxCsh0#tUM!>^M2|yCkUDJ*xQ+Fd#9{?; zF%I~$CsT9f!bJ2@FkXz0_imKpokxGE0|;U}FGarll5<}mX1fx=Ck714&k|rUB$6M8T+U43 z=KO2u91o#Y&ZzK#4-}yjnbN#{%}3a1g^TxvpRw(+Gyp~ritc;v3~TT|{vsQI{`3Fo%+T%?HrYT$jm2A;I6c$ml|#7U{$M{PoM36P3q zFL660tA~XyYl}5$^3SLA+8>BK>!rfvq=<4rM%-v$up6sSvy(m$&N;~tax-33jC%5G z>PO7fymLF>T`1_SC2zh{hUyf42JioPKrQ=8&k;~a3|?pdpx>6DDO~_$8OTAjgVnx_ zYEb|j8zE9lAJOu1S?k!ZP|ek4{GO}451JTt(nXEWOyoCt`|m8`jCXcymZRRP_6H_E z7TkSD=n2)%r2ja41oPsCm0{>){>-y(fS;XB&SDV{eU>H^QKH>cUG;vCi2RB(&H|2J zE=P*OY_so~t1opQ|J6BAC!B6%4px4;Mj}weibxfBpE3uv>g6AjJFrRzm6K=0eKB7g z!jTlRt}XC$`4A=ZbJCW&^&`biCfelVR8-{JgoWlZ=#%h8n~W~;d?J-r?y51ANYxOJ zdfIB|qS6dX$idhNYdxS!_(OJm=i`dul zxx6l(H_#K-@8aHgze`8KUZtslq9=5L7NwAJ@d^s2>F|atlI~M3Nztm*M4Taw4uHX( z8^8bn%@23>vxrL~ash7sp4+)d4FA+r#{&aU0r>VNaE%rr2hhKgyW=bb1)V!(a5Pvd&JuT3i?BLX#bf?vUQ?UYr zSP@0ZXMT=l`+QYF^emQb@z&a*38Xh5@y_H$E6DOJ61BC!6*=PQ&KCI?5bHQ?F-RIB zWye(2r1$GLi(Y6^=Z;tc2~UsFS^x)H({ID1U3Gf({SH7D1cf{B5`(3s-H$Po2EYVq zw`*9G3_pLF`)z=|+o^`m3xuDp?5-C2YcOM+67D1_>4%l-hlrTNg%Qibg0X3KKAmh_ zCcfuETaXXu(3M;g4?!{HA!lb|^h$L~QN=4xbI4=mK_=+9T_OqdU6g8q{^==Cv@5M9 zF+n=YmPF_T(=*BXy z;JuwB5iW!OG)vGz5+4AWJ$O!11PSOQa^oZ5C9B@X5Xq_@5Z9*id7a6HDMtkhPp~tR z3y_O_`ZvnpqC8bmn=dflfAj{vyN7HcWStolakV(_K=~lRZtf?jC9IHQ6oxAqGe;3V z!5O3pLg8e@SG%AOz{*)~d?x~VhbW|+N*QgoLi1U^x3jnH3L+LTk85)SCc1nvjd>xQ zNPI}Z@qIELhLVj}>=_eB+K%`)pv)6cal(Ob~cWsY_uy5(uUk&9gQx*q!w0$!-d6sQt<@nRgF z?j4HxT#exZ%#Qe5To~eTN&XuSb3@MBp{1BM+w6`iqb4c`p{ke-7=#~!{l)E;Zf
    e;e-`2z(2AU#1i$3j-$c6c50wecF6s3{6_%^+HT`vs*T~c zMKG98N^W*I_qCPXK@$(lP|&Oc005~7-_usoj3dY+c2CLnd+1?NBz$j7foW9OzPEy7 zLWay>f@&nv@tHr{Ll|qsy@8=ShzlYEYb|~|nhq-CtrTtbHg0-SOJ zL|{(?gg>_Y1-t5dvwJpkG)61kTFgJL+Ol-|Xr)Lx^8#Z*i-Z;_wEQH{?K7_{`1r%} zAvkw-ZH1`4q^AVwZt+14`4H$-R3}IH38Z~CGNz$0Ap3)Shb>NAL;9UoD+!S-La<++ z&@+#aAr`32w0qI;hBQQs)X%P97|vdX=OI*_NJ@|yCdugSUQT7&S=D1!myLwGT}*{W zyzt8fn02G`QEnnU`tBD_B|2&{zR3Peri3waz%w2shUIxno5%hv92f&d@hy&9Qv;|< zHBM}5yHBA;TWbd>sk8TrrAHxobNqFOkSfl+%G2}XtSnS-CTBCRrDOfLn_~ms|KE-! zQsN$lOk~z%kTGb~VO0^O#CaT&#-ahbB9_ z6@j$Km{#UHNnRjoK#pf^bfHLK11vamU$$KGXuqi-s?7SQxms~9mQJ{R8YScvlsqCP zLkgXDsOwpy#Mx4@U|?R0D?dR)Un1Fj5K4BGo=DSNX5|Uyom?|wOKgntRTs+9ghDab`h<9S#Zd7V{oKUuH_nt59~b#o|S z+(3M|6d$7GN~@LVQcqpXte=$V=v=5O;fBC}Yn^@- z6%k?&oZ*NtY!MFu7U@><;}#Pr)pqhLK48SF&hZUfIhpJI4gV}_K)Y2HZ-JpeL=GKVhAH9|`p z8K<{ab+Z;PQU(3VQMsyFgey@x!D&o4W?p}~fr>IEUTp#lyY^|EX(LN2IpGqM#)mcG ziots(`N1t%n1br(e_nXEx*XsGbggEm@!{8{mnl(;R%^!a0;?9AkT5 z)C{T~f*uU~frF3@l5|^F4A&%~9CBuuS#_TSe@el$OA)Q0kGt)b)UVs%|FZ?gWU)+I zggjYphl$<0T-qRh2k)={Hv!tFc?jU^X|6TlASfKSyF{o7#QFqdm_iDALWbQoD$?F4S+3#Pl5 z)bPOtHuSvq5SxfMItAcf9y@SDk%yG!Ls2){Yg-uY!#gAtDn4eoVtnwU&FsszpwpT& z(9Y!tcL*ZYe0OYfU)LvmK;B(x-Yw3NY)NP&;8UWLg2OjAnSrmV61-@#qNS0wwHxbr zxQOH?brx60UfkK@MEuMCgT?Q4t1^&ORoKCkP<;XUyjao=@1Z|{@@hqW{r;sqB&XgGbeDxwNQY1xL6iO?N9)ExK!_t3Qla{u6JQLoxA8edlqXa|oQKWP8X1Qq-+IpJ` z7X@$q-1!jxJ}^MQB9g$oKl(ax&+7jNV>O)Ml-H<2qBrB+r~6J9am6WRK}>DykC9+$ zceA)#`?#aW7=VKF0GDq(J_|=6cx(?|^m8wzW6MW`7+Lh2^k~>H^58U?PJ(&?ASG0H zw@CCSd7~_ME+R%_V^cscwwZZJOny5fz6jl&2SxL)2JQTX6O2XT7jE$D9Hd^ai#3x- zxp|II+2&*j909krwVeIut{D=J-guy7OELVB;r~x?5VouysAYpTQq5d-qunZc90UJs zKz^d0&6+cg5T5~6R}mzL_>P+$3&e?y2W>bWO*FX>JGcg#9R=oyer6IS{&=6(V*cE$C*IsaI6jMytNZzb=Fwucx@L;BK=gemVTpPM^I8pSPAZc0q|ezlCcl_W#X!ug}%Ct6(x zPF3I5k6xkO;^n-+kyw%s@DSquv}a^bB(_5XZ)I8M7g@f07@+%V;LK!;*r;V95w{Y~ z(|xd%jqXvLwHJTAWAi!M4EyK>unF3to!^;mT8(SHS398(i<}3R z!8cP{70#VYGCwtV(6cTUH;-MS`vP=6%EGZGX`^@2-6C2yZB5wx%R56NJvtGbeA|(kG9Jgw=M1mpxHMJq!dl)bwF#a#)tg8rWqJ|w2)O)GxqroYC)gd49Se$t zpFT%qOuzsDKjq_pK@V`ADOXTTWT5#xMV_biQ_WMZxwPRZXs6~_yDSVGZDn_?(=SQf;DSJ4Q|&2i&tPsK$|Louo_^ADrd)XfvoZ7nvC%w zgLlWR$Des2Vg-AuPyw+UtWhwr!A249UdpB=sme%rO*+5MWSqL;d{v0WK$&^X-8E!n zrpeg? zH?Nu6AhRB)@BywOIUnn09T_2}No`LZW>4g2?x?_^boSV!vCGyHqS+?cS}8qc@GK5u zAsjPxwz?rIP%G#t%w&;MB0TA8(lxCEY*sv1tq@bIlUeT`K$I6J1!JN^!YIO9nZ5e? zf}ikCq)rGl?kRw#$Ao4n`GtVNOeSQC)Mm#baz^zb_x3LdxwpSj>;SI#6L^@cUSIv) z%f~$Zl~Yf;YQ+89f%r}&qTghFDsXjPUaUkhd3b5K?}$>5M%5f#s|%)(3OyOVSue>g z{2(5wp$!!HQ*xZ8`qzJ3(UpZ=( zHifBwB-aA0d(jklzqpk|rxfdjXHP=@CBN-x!LkVFL49s3#bH&nodlJ0fJ?Ced9DSY zZHprT*B559ta+T@L*xlFUbc{a&01iTSN3Y4-XfJo*&@680?vA$jrO%HbOZ@ZGHtR@ z4>ky8sVDC>YuxoyBdqCbdC(&M!4qZ}f4Y$$jQ>z5J-Ev+so??==Pasve3IVlJc|R3 zu3t$;Qwp1z<$VF+o~WD9Z@@qzZX2__>E}9HE1xqr%6C(RuFz%+P9Cfc+viGW=WO5A z$c4CT%l-x%j8#xD;b2|>p+LQYA=4Et-jP|f);T#}n`fJ2J%V%*hg}7met3~Cu@yXl z1kG)U<;%{xrkTvRJH@AFslz5+Jcr)poEW3^6m#@W-0DC|lMP6a`S8w?QMiv4!*sB` z&1;YDJoY9yIMLCfc0tAZC*->2PLQtmwkRHgJ&G#URzhX>RcFX~sDd6Anf#ZpqLe{1 z0sa=dH5h_=949jUSYou)l-Fo(1k79Wm2Thvj!dF^X4>}}5aA-t&9|?=jx3+BqNCESscomNd z_{sV1AQ`|Yz!25}PIK=!?r~Si^H|sBzdeuN6~%mjWMxG90ej0j<(vNoqd~WfsO=HY zj|*DriU&p+5fGJaYg%^(G}jxPu=e=%_o&Pwy8nrI361`9+0{FVxZZ@a38=b7J|zP* zw=rMLHnw zSk**ej?|!9LepXKM%F^S@H5nmHLeN_zpztmp&o7~qgaDhFuo~#Isv=D3V0>ox`I-6WJ5Cl_NkHn6cQpe#8%VmiV#%WrlK5iAgYEa zcdFF|Qp=6lPht&M<0AXxFfX8XOu*$rZLU@_!+@({ao&DT4HPsntlU(&_%D#v@RRwf zOeA#5Reu|*IS){tYFLJ}?R@6`nP%`UbZ7{iTX_8vdR*X1OvVa5niGX|&b*W`oHaOiWN$tKgtWMJ|^03myxS@8tI1AN1!H zT8>skOjtJ;TH)!3iBb4tvs$zJ#iELx(#-dNYx9c$(x-mk6>U}reM}kLCbjdb9TklY zNGo;yGc}oqAzoW3M%`7^heG}W%XS!QU`JC zMs~0VXBV0TMesCEj+9+KsCu+*aw<$f(tqqdOUWb`!0G$u8+sqE(>@z;GY8$?>hMYE zCus;~jPmm;RKB_*0L6m4I)M^Bgv+;oIt#av*-Q9KlrtY4l~oG=+;uwXU+suaCD;9e zCA&8CcLqFA>~t1F!37m@50jVG_aY}oi0aWMAEQ&z9fx#-{ zQgt(zJg#$+1FM+Kd4h?^z8bgfZ%XweR^@x&0PrgdR%?qr-gh-gfftT;W51~XT9T$S zcH~&(G;lK7`kSw@^p4k|wrx$|*@}s>^zVTz)m6>v*NpOZq_5mg;XH1TiqgEX^ekpZ z__4HcvEGjIP-J@75teMNuAtI6|GoHvILlvw+?E=mN)-P~{{~}xMz#pUwFLW9#hRj5 zFw**_A^d*V4w-XRC)PTceCj~!%z$h8wHT$WK;6}{nXd9c7jDh5ae^16GVT4ihZ|zM z3RR5X0YC}#i-ocb;k2|E+L-s8YXS0$1mi8Rpn0T)QdgViGLXBGE5_$bs`?}U9D4y# z|6C<~0KS70$h?@217UCd2$ye~LU6=XUZl+ zkjG}@#WS%iTb6-{X+QR!18f$PFEYaUR~S|z2jKd22lpApGjHCV8j63P$3EO~Q!H-F-ghmmln3cP4`C`HJa8Y?xC95{ONgSwV<;g(FYnsfttwKzg+W`x-dj(yx zyt`Q#*Rp{B|AR?5v<~vG&I4K|kt1@Q(@^z|=U3^=X%$6qg6<7Q->idpEQ9&hZ|jlT zRpKA|Av)~hF`OM5bKAt|Jt3dK^iaA>_yBsF9${c{Pc-FvNB3Sje}OC#!b;y|Y~TPA z3&>>-+IRp!1GK!Fw@;L4Q!BWQm>7O<4SYk9GM)Yiyr=H~z|%Ozwtbn&_eHcB@WpT9 zUu+WtM{`Qt5f<4H7OB$|%71_c+w0`Ki7h@eHkVNEc7VqgtXndKgAhT)hE}-%ztaY> z`y4qIn=ud~L(uo?dIg)z(*OBP$wKB>G;KkhmTa=G1#9`dO!ev3%+jh0+m z`OP`a0yz(&_K@2)ML7hIXr|zot(!ZE$;On;02TbcVvc#rmd{;wFUF1gV5 zt5BK@pSb32AaITV00DC&+5(t{k(g^%okDV&#-83YrQdu570BF*b{roSa>%P%y?e0y z%^bIVeFFufW@~q8PIi<_yHp?gJ9b6I5M9V2#^^s?sJh4k`FF;%%~F`2VgEzaXp7b# z;`lWxeQj>_0a|v!Fi$-m$}Z+7(|Y<1a{nD;sDAu?O^BQoY-3k8Zi~z(_V^Kv0-J0> zr6ax4Xm6%C8=xU#k8ixAW6-`Ge;BsFf3N6c;7T*nRn;byC1iFZ>&dwfCNU&6pKlI8*K!J z3S65~5Dv({9yyh>$`gf3UCaDx&Jxz>t-`+%Y7s|WoE->|PFZyBHWAz+gZhI$hz-uD zh~pqRte)ocj)o0@X`g%=x3z`R%`T?1a z4WFO;{r+U73+8Fn0DGQ_D0pTLg_2X|gdr*|q#C&y{4_jF;3aljo&U3V8zDMYxXr)< z0RSXeV48E=kG>3#S-Hm79e?z{#b4dPhtb&`(=$XLU{$3=z%sfh1N*ov6f;ChZN}#- z=}uo?n|1?{;{39G73+Yg;`cT^19SA}3y(R*>a6axzPHzWVElZP5C8xG;AIskuTZ-s z1xakmW0GM8IXtu7c`+LkD>nGZ0V6Ki>Po_*S2i9cu>5!2-!lq*G9)C;O?%Whfk{tv z7*(m;hlem>JkjCp$wD_h#%x*4bSDx^*<0D9(-F|tD&Y4ENC|4B>OsZys-4{}Z_$Wa z8X>=2O!qDpPkT%KVH?HFROe)MX<5s65&70M2dM}&(D&{LB9J{Qp|6>V~mf84Fvx;0ho+=g2@#$)pK=H3fy*t6gsC7wOaa>@VXu5C$&WFl+B}muC zv$UJLc2pwSW$&BHn`R1~MBV77#oy=uWRAAC6itk+sD-}aLn$-DeTeVtUm8q z3Fr^lZQow+4!W2QIvF0AyO1=gHJf67Hh0a%TaLQq%8C4c}3dk9@(Bi9{`aRBF39Kp%jX{u3Oj0>RD zfOrzsi@ZQmUNE1`-!;B7m6B?~*xPnhMNKi#ZZKohL7AfA1M<63-{%sVADpGz;Z+Bi zKYeu__-?^QCt$WxPqgmDsDz)lmK!-M7S%B(7Rkth|FKo<*9h+0mJLcGw7UUdfe~7q z0AjvI^OPXricnbW8s<*OL&Lx+!QC+C;SM=^*RV?4!i{XCt&QVeal!eMp)*NW7h({g z)omsjvj@v>tmpWcysVwr0J^N0Mo8%Jk{as&yue3!DaG<1sUoc@l$y|t7qiR5Xg0N7 z7Fgb7HR0W*ffsR7&zfnWNoL~e?6Rwa0fl4nXQ#m;NLkxDJF5lm9f3js08rAu7L5X6 zeFW5X?mSI;{-cDh9|mlrjls=Bqg=?PYhqF_M;Oi`hNm3KRQ;JT^*TwE1HZhC(ayVD ziy_)zG_t*OR9NOnh)%e8Nw#`KcjQjUgpCdLyJTjjRtWSPr3yke9N^3j04t0tmW<;{ zQUEBGjj@->JJeYBE;sX`wmMS?Er)=i7fr3diiu42z_ds`5jux>Tmj=O-Q-@d z>~(sgiPWIQ!bS~vYM)^a!7lC;kjlv0H(l}6-2dE!HpZPr1S0yGtf$0vJEOo=c(~95 z$w2nV;y_nPE5#tipR$OR$DDYdqnKJJV@-YLN4)sdv^D`}MCk44bg9BGEJhD`z8*-{ zaAI8q2lSAi)u{83akUHv)o28dcIYDsATU&${uuf)DGprw`!j>F4WZP7cV#qfheuAw z79)oZOtq#_2=Ky3E|zJPdFhFr2sU2;7~ORM*lLt(<9*4Ryckfo04~;XWd6dl-OM`m zhtcUt*{d24CMA^C)qj#OvJuMii`YTNUneG zuE^#Mc*%dkOgbh?kllXKhGChwS=(grPr|6YIc2Y1;~_#9h&kVnz?}f6SS`9BPgz85 z>tF@me5YY;64x|7Qt3qCb6V9hSeCSS6&rMh|Rrq+B0=45m{QwGgB(rfuog{5IQnY(a>Vy3t8wZe- zo1vsd&5UamSa^IF$XJpD($UQRnpG(~e3f>Ww{JHunN6EbGi+V3LH%-~WRX2fP18^# z%QqA8nx1*kSaDnj%l@i9zL`{Fwxlos028R4dljw26Ugtmj|HZHK!fd3unk$!+<HaG8H&kn)wDZd!8!BDiCsOMqA7KMb8BcoTcbm^qm|rr+==_HE-SNhbL}NFHIF_nSbQTy5_|X0=a~S8~4|<(~=x}uh zCxn>WV#9lPiQNzAUub0adOC>oKw3tiJ$D-9Dih&Tj!YWx7AJa~kPVyfp6dnEFdW4{ zhFU0TaH~QQJR}`L;6jHw+nUWOQ&@5DL{yvK>ll+~VIK0n$;@dvgthJD22bZEmx@vw zk;NhDNqR${I*91Cg=D!NOertB(C0kyXIP<)$vEUubW&rtNaIEg$@MG>K0Eolw7hy) zg|yar6Ple2FSgDf=t6AYTF`LVM~j*V8o3&Jy}{TTRgG3%EQQHiG3z}E=jAPA2l&j> z&6@WS_X;3w|NXCKhg((`rE}5ZK=to{5^ehVJ$e_DL$E1#7zRDm$AmYs{&bg>?#1 zT(aP1QRj3LGl;lFf`0v6;3Z9z-dSi-7w;tucJ~sb<-XOdJy3iA|KgYdGIPGc6Q4#62 zMLW$D=?fA4{>!;JSO4;|iJpX-mUeMbp?_wcg}x1qFzb50Dh6h??=Uc(F@5QzG+z)_ zKja04X*)D+Dn`Buz@!^viu&fBZbARdbT#AOg-&44MRL=b>W97`LA75Jt{_(&;AzA( zF7~$E#dq}@6MYKQ5w1|KlTax4G= ziBO1_unlN4$RfybzheLYcZ1~xVQb${90X_kBia z;=uAGqgX^QX{|%k5#xNP;D~8%Nl%ZyFk}d^UVs4&*`GQZIlDLoSx$_-37Wh~0SX6? zAC0v6YXs3`BTE&~`id-R+T6D9OGVB-Hf%Ca+R6~U96tzkYt-zfE-hkA0)n;FP-tTY z(EQ>VPD3Z4709KlLl<)sEuRwo%_?AKk?6=k-4&t zOdgKZ?_1k}DAofmlQK;e?6^CmzC#}jT&{srG9NlxnnRWFJ4#EkdEJaIwiT`QS3(ic z=!~|=l)=`^g@fbrLJGd|llJd4sKs&2;T3`WP_2t;{vSrmEBP~Wyh{Mbsh$?wO7U{t z+$pD8%a_vS_to4=WgT0o}(m;ro@aq6@Xs<)1ZsHzszUy^I%x#6`(()~`AM z86ndi7#*nmCG!vcM6IgsR^=9d)P7RcrZcyUAE`tu&DU8h{{Ad^FsGaJbD-;nI?Zvk ziHMd7!8$se;!CcDvs$w%&?Zl2DK3t@Vx8wEb80_))K_pMp%+~jbno5~q zG-A6g6^%%u;f~I10C>&%W6I?az_vlQ;DEhrU9WP8;$+N|1OPdAfzR}k&(Aj0&H9$9 zVqw&}kUNE{qqg#aWJipsIm6FqvZfL_$}l11k$vWFn6gV~dWYe$G*Tbfgm;>8Vddn= zhZ@`&p|Mp5mF;l4WTY#libVGM+MWv=^m(1k&EKfQBtApH$u&p^GrZ>iaa*dWtH7b6 zk8Q%n>Z>n4yjU$l2?+wshbYEN0uc`=u(}~b7iR3Q`J2W?5D5&$Cy|+WOYT@Q3|ZVs zb@js6>_Ti~XX&6lsYS1~z-jG3u1(vMB*eGFP2+Pw!O{#cjT4($gsoK)tt>t}F)iSn zH`TKi7<%vEDUwe6z*0t`WE!~3&dofvBFr{;^Um;@)pn1auBND)k~os0n;U{Z+lcY8 zz|pK9lb@wS+F5k1%ZP1kmAxd28M+zg%(_KQjX^~+1{N^$FCcKu%upWm-7SetA)dSN zHg&)q2^#Dx^jVX(L7aP7&uB4zq}9fKM-0e^g@`PUVj;dfJPDh~m_YG|dvuE`2EaMk zY)P?uwCXu3K1Zu)8$Lh76@(b+wxm(X(9V6P;8IxC4i2|{Ht;_^cPsHD z%m7jCh2`^1G4sb)JVjQ4F<9UU%~Qr3(IyhJpd?QMxcVN*BkQ#$oAze0%H-g)VC!~6 z)$8#Jtk-EVK$PC3T(%tsxIegxTlhE>XTQV&MxQuSfd9CBjcQ}dqG_r#IGp_>Sj15u zuBEE$#^KcC&n4_%jKE!jWhw9Bn+6TeF zExu^QysH_4n~)IGMiH$T4+B9&c?cEqS9YB;Hz$TSDWcEF@Bso8_j7Zj>{Lm;v1dGy z6XxGZ$ml5o$mpe9I7m1D0*o$(JL_|ANQ#~tM-t~LCDU?{P!VYa>FFnFXF<5gc}SD? z2)A!f?f{>zomNTx#Aj~m`G5!U{0Ws*Z2qiXp%zZP%%NOPRbTl40C|&Zn4o0pq*!93 z$Mk<5h5%1hgK1AqP6c|65pUGePSQ(;1jrY+Hua|mx-`*9G6PjYJE_b>d%*olF+>Jm z?uvCA!M{D>eLR=@N~nG#>l7_(!6w!U^8&o-g(!2`c2H+Dt}+$)8y)El3{V*e#}3|t?lun}uIJN?_9Ae7L1P4P{&2Pwgb`}y zWrPTvUdrQZI(}qNGjU2ev!c>mW3&n!}6wKoU%AuJiFb*+2aUf_^Gl&4aNCYMSS_wRe^zRY~t35B8NQ`CZr~PEFyIT;MncK zA&?0G?$zi8N+39etbj)8yvYMu#*xic6vRavw^HB$XiRyj8SfllfHgPw&97H=QaOe@ z6yGvdo%-!CS3q{FX3|P=pcv2-ZV$W~eJH_&3bo-@)g%)9xmxut0w+ZEu`M8 zgnr;~6l}uy@~IVtyZ0PO_-~IzMrH|BR@h&!89vC2>*L}l@y^+#U=sYI-^pSB;Q#EOOpcWObtaXL#Kx(tR~GJT4&obf<8y-=rPwA;$b3^@ga@4sn@l zf+3Tr1fw9$DJD4i@B+`X*Xp}J1&*R+%NooI6R@+i1~RpBoVluyH0&29JN?9PNC65G zIMExBK*}NqMAYV0?{F^rV`;LM8a)AAqWtfmJ2U^UZYd?qdD9o^Q<3O36)G6h&8>wi|%9)a~HKki+f zVy7o3j;0(qIu(DPRw_hTKO8DzrPyY^jlt09eoI-WEahp2&n2R;)ZZFK%O!+w7aw_#Kz@aq;6 zPlFf6JhgTy6FkFJSb)!8S*w*o*$6Z}C_!#i@wS;|*0GWy)cAiD+;NFrJR+p*CP~;J z%)sh}fklN;?BXA9g4J03B8vw#*i_KxpdUP^dg?0aFeLQZ_gr*pa(Y!+i|PB>n5hO> z>IPXq_Bb*83XA_IhGWh~Mp!AN(2Gx8xrHnzWAnw58vvKa;AhvAiNeKEH^kj`5iCuC zBnV(COKyxG+WlVs-Sl@o$J#8>Yk3T?4CD%t={)eQHe=B+GNF^KBO)+ZByUkS9b=LG zMZ_+DRcJ55x-swJFM?HN4E|taq6hnQ4v;9;#I<1yjU4Q(_{`_ z!q*cTNDvRUCQhf&2=QA-s?jui-uk>Q{n}C|K5h1?LgrtdDWxxIjUyz90izw80u_Gf z(g-{!;k`)W{UtaMXcpm%ovpQcyD_y|`GVt5XeW<2fmSD75EWEOrK)HuiqK&5ncjPr zEitO^y!(RP@NSZwn(`xYbPLLMLxvO~iyCJEhCR#hAHsd|=nP}o$ZRPacS-QTP$Snf zOViWG?8-u$ypd_F_V7zU9KnA>{MUf2EWgU?VjX>2XdiuiCFW+Tr%c3LhxQfJRSghL z)F*DY)_3Ty%Z4Lb&19G1o(|_FrM}y^HOAue2m}_8r7S{Or@=f!)2))L590%v1P9Mo zcjD6-EEj4+)6}}gak^Orqn=@H7#cL61|vlrkoaxeId+GALu7fr#+sBZ7aAf?-Xd`x UOwInI{?M&U*l@AH0000005%Xx4FCWD literal 0 HcmV?d00001 diff --git a/spine-android/app/src/main/assets/spineboy-pro.skel b/spine-android/app/src/main/assets/spineboy-pro.skel new file mode 100644 index 0000000000000000000000000000000000000000..4dfe536cdee2cd7d77b343462a494d5543dddfd5 GIT binary patch literal 64468 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 z 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 literal 0 HcmV?d00001 diff --git a/spine-android/app/src/main/assets/spineboy.atlas b/spine-android/app/src/main/assets/spineboy.atlas new file mode 100644 index 000000000..eca542b71 --- /dev/null +++ b/spine-android/app/src/main/assets/spineboy.atlas @@ -0,0 +1,94 @@ +spineboy.png + size: 1024, 256 + filter: Linear, Linear + scale: 0.5 +crosshair + bounds: 352, 7, 45, 45 +eye-indifferent + bounds: 862, 105, 47, 45 +eye-surprised + bounds: 505, 79, 47, 45 +front-bracer + bounds: 826, 66, 29, 40 +front-fist-closed + bounds: 786, 65, 38, 41 +front-fist-open + bounds: 710, 51, 43, 44 + rotate: 90 +front-foot + bounds: 210, 6, 63, 35 +front-shin + bounds: 665, 128, 41, 92 + rotate: 90 +front-thigh + bounds: 2, 2, 23, 56 + rotate: 90 +front-upper-arm + bounds: 250, 205, 23, 49 +goggles + bounds: 665, 171, 131, 83 +gun + bounds: 798, 152, 105, 102 +head + bounds: 2, 27, 136, 149 +hoverboard-board + bounds: 2, 178, 246, 76 +hoverboard-thruster + bounds: 722, 96, 30, 32 + rotate: 90 +hoverglow-small + bounds: 275, 81, 137, 38 +mouth-grind + bounds: 614, 97, 47, 30 +mouth-oooo + bounds: 612, 65, 47, 30 +mouth-smile + bounds: 661, 64, 47, 30 +muzzle-glow + bounds: 382, 54, 25, 25 +muzzle-ring + bounds: 275, 54, 25, 105 + rotate: 90 +muzzle01 + bounds: 911, 95, 67, 40 + rotate: 90 +muzzle02 + bounds: 792, 108, 68, 42 +muzzle03 + bounds: 956, 171, 83, 53 + rotate: 90 +muzzle04 + bounds: 275, 7, 75, 45 +muzzle05 + bounds: 140, 3, 68, 38 +neck + bounds: 250, 182, 18, 21 +portal-bg + bounds: 140, 43, 133, 133 +portal-flare1 + bounds: 554, 65, 56, 30 +portal-flare2 + bounds: 759, 112, 57, 31 + rotate: 90 +portal-flare3 + bounds: 554, 97, 58, 30 +portal-shade + bounds: 275, 121, 133, 133 +portal-streaks1 + bounds: 410, 126, 126, 128 +portal-streaks2 + bounds: 538, 129, 125, 125 +rear-bracer + bounds: 857, 67, 28, 36 +rear-foot + bounds: 663, 96, 57, 30 +rear-shin + bounds: 414, 86, 38, 89 + rotate: 90 +rear-thigh + bounds: 756, 63, 28, 47 +rear-upper-arm + bounds: 60, 5, 20, 44 + rotate: 90 +torso + bounds: 905, 164, 49, 90 diff --git a/spine-android/app/src/main/assets/spineboy.mesh b/spine-android/app/src/main/assets/spineboy.mesh new file mode 100644 index 000000000..2eb9d274b --- /dev/null +++ b/spine-android/app/src/main/assets/spineboy.mesh @@ -0,0 +1,2411 @@ +276 +1029 +42.879013 +-297.047607 +6.236506 +-281.006226 +-28.653503 +-360.703705 +7.989008 +-376.745087 +62.652306 +-268.730927 +11.352795 +-246.272964 +-17.521706 +-312.229492 +33.777809 +-334.687439 +229.816147 +-154.047729 +25.090149 +-107.279572 +-20.119045 +-305.181427 +184.606964 +-351.949554 +55.973713 +-50.431744 +60.000725 +-45.838646 +63.459427 +-41.895344 +67.670807 +-40.684006 +72.906685 +-39.176933 +88.494637 +-34.689171 +113.775513 +-13.848475 +113.528633 +2.136607 +62.500793 +1.265033 +35.758568 +0.943742 +0.551171 +0.417753 +1.076124 +-34.735672 +16.845055 +-59.338657 +48.578522 +-58.865547 +43.379440 +-162.329895 +-11.614739 +-161.529526 +-12.982636 +-255.519562 +42.011539 +-256.319916 +65.043198 +-11.982086 +-9.951412 +-12.882217 +-7.815128 +-190.869385 +67.179474 +-189.969254 +-3.026524 +-370.122864 +-37.433113 +-359.531067 +-49.496010 +-398.716339 +-15.089422 +-409.308167 +-22.821608 +-380.509888 +17.435993 +-362.172028 +18.170435 +-357.714722 +29.042627 +-291.733337 +29.693506 +-287.783203 +22.567608 +-284.760193 +29.863823 +-257.309418 +16.866358 +-227.740295 +-9.695295 +-223.363510 +-31.426403 +-219.782776 +-50.997978 +-258.157837 +-57.465271 +-273.560638 +-64.414291 +-290.107788 +-73.625572 +-312.043945 +-77.089432 +-333.065277 +-81.286545 +-358.537018 +-72.989655 +-395.361450 +-60.091599 +-397.486786 +-8.700058 +-355.176208 +0.127717 +-323.098633 +14.998151 +-285.877106 +-2.462405 +-291.598358 +-23.514177 +-333.334900 +-52.957638 +-339.976227 +-41.758320 +-299.855865 +-25.460911 +-258.150757 +-56.479904 +-367.056519 +-30.831459 +-368.242188 +4.588335 +-268.304260 +13.812860 +-276.573578 +-47.665607 +-321.018127 +-11.210316 +-308.941681 +-34.052513 +-280.136780 +-26.962830 +-349.786926 +-5.811657 +-276.585388 +-51.092575 +-268.483643 +-68.176712 +-363.967316 +-22.895794 +-372.069061 +-41.517307 +-678.262756 +4.756733 +-662.967102 +27.035517 +-631.043701 +21.181705 +-665.676025 +44.648727 +-654.730042 +66.348602 +-613.574951 +63.094486 +-595.710632 +60.145405 +-579.537415 +48.342926 +-566.127686 +47.067940 +-524.576538 +50.305164 +-495.177551 +76.461578 +-507.918457 +86.074051 +-488.016388 +82.666870 +-476.777222 +68.601036 +-467.543640 +76.467094 +-456.328857 +64.882347 +-418.107849 +-1.124334 +-383.302216 +-68.765465 +-396.801880 +-88.752258 +-400.786804 +-121.365784 +-423.613708 +-150.618195 +-444.090759 +-174.983337 +-490.293304 +-182.793427 +-554.658447 +-153.730392 +-590.830017 +-92.385025 +-624.156860 +-101.022026 +-642.420532 +-131.935181 +-651.167725 +-93.884949 +-671.229187 +22.045732 +-610.792419 +4.060351 +-577.345825 +-24.378452 +-602.536499 +-35.769398 +-645.546875 +-92.140846 +-658.155212 +-92.876022 +-594.650452 +-137.738342 +-558.649292 +0.035936 +-572.425293 +-42.157799 +-569.496704 +-85.525314 +-562.776550 +-117.991913 +-552.428101 +-0.445878 +-570.610779 +-41.981926 +-567.314148 +-84.644432 +-560.175903 +-117.190552 +-547.730408 +51.034946 +-578.638794 +-57.058067 +-443.197510 +-77.297791 +-458.759583 +-95.078400 +-463.162659 +-110.531441 +-452.958221 +-114.658646 +-435.820129 +-106.326714 +-420.266724 +-87.203674 +-408.095825 +-70.355499 +-409.597839 +-53.781849 +-422.371063 +-45.719143 +-448.175842 +-97.368286 +-477.148438 +-126.345207 +-449.629730 +-48.403282 +-421.397003 +65.129303 +-459.058716 +56.715298 +-456.420074 +37.337090 +-472.026398 +-81.100037 +-442.776611 +-103.435188 +-439.148804 +56.140377 +-488.318420 +-13.882811 +-427.133514 +-72.438599 +-494.144257 +-2.415684 +-555.328430 +-9.752207 +-133.299133 +-53.597122 +-143.429474 +-28.383848 +-252.554596 +15.461065 +-242.424255 +0.280756 +-45.509258 +3.817970 +-40.700172 +7.250431 +-36.034451 +10.562510 +-35.046749 +16.135471 +-33.386559 +21.410233 +-31.814659 +51.100018 +-12.496605 +50.862698 +7.939594 +7.424946 +7.435127 +-15.988001 +7.130658 +-75.103821 +6.607407 +-74.704819 +-35.344917 +-51.963093 +-62.175610 +-11.707943 +-61.792732 +-4.850842 +-178.681305 +3.297174 +-165.704422 +3.263706 +-149.529526 +-4.766674 +-132.281067 +-14.226085 +-123.686310 +-14.779051 +-115.977768 +-15.510324 +-105.783768 +-15.629786 +-94.454346 +-9.939468 +-72.033401 +-2.601040 +-51.485832 +-0.615288 +-45.925728 +-14.924071 +-28.016983 +-33.008259 +-5.382965 +-57.001526 +-5.432617 +-79.034515 +-5.478195 +-78.791306 +-12.632462 +-77.848518 +-40.365326 +-76.570442 +-77.960693 +-71.999954 +-106.402145 +-63.270332 +-130.782532 +-54.491909 +-145.303955 +-53.917458 +-161.935043 +-47.619102 +-178.553772 +-34.960701 +-189.387360 +-20.812759 +-189.358093 +-45.230839 +-56.986832 +-45.453281 +-88.667320 +-45.129532 +-105.946686 +-40.050804 +-124.656250 +-51.398773 +-138.215729 +-37.589401 +-131.131165 +-25.341869 +-65.153694 +-29.029552 +-92.377365 +-29.576653 +-106.346527 +-27.344521 +-120.292831 +-24.884426 +-127.082634 +-55.947918 +-128.850571 +-63.272888 +-106.272240 +-65.339859 +-81.652481 +-63.969269 +-48.097580 +-37.311478 +-144.065002 +-29.954123 +-156.316788 +-29.362101 +-169.851608 +-36.529163 +-181.428452 +-19.561584 +-136.273285 +-11.209936 +-152.048019 +-7.510107 +-168.396408 +-13.406410 +-180.816635 +-41.929737 +-160.853561 +-58.138187 +-12.392563 +-35.415283 +-15.545456 +-17.216610 +-36.189270 +59.851063 +-426.057495 +-22.414417 +-382.681976 +-49.933273 +-434.870422 +32.333668 +-478.247375 +-71.253433 +-569.188293 +-17.546474 +-575.142944 +39.032654 +-572.722046 +49.985153 +-582.050476 +69.749718 +-561.091187 +67.134560 +-542.310364 +55.744041 +-525.135559 +63.388222 +-499.740784 +47.547886 +-476.782471 +46.784439 +-451.506104 +14.528856 +-446.019623 +-15.556076 +-440.891754 +-44.274376 +-450.349915 +-68.898865 +-446.637878 +-88.967331 +-458.249664 +-109.572525 +-437.958740 +-100.400833 +-420.669861 +-111.548637 +-405.734772 +-173.281952 +-462.488678 +-188.633789 +-491.601959 +-175.587204 +-508.105988 +-154.378281 +-512.934448 +-133.983353 +-517.571655 +-126.570023 +-543.502441 +-117.953842 +-552.279785 +-45.517567 +-460.661987 +-67.649040 +-483.031342 +-82.742340 +-511.720032 +-74.425705 +-531.700500 +-46.103344 +-537.426453 +-6.433783 +-537.497681 +33.053020 +-530.199219 +47.890587 +-522.756897 +51.820316 +-545.348450 +-5.725768 +-551.145752 +-47.459347 +-552.656006 +-78.592064 +-551.894775 +-106.722252 +-547.885376 +-108.586868 +-523.697815 +-101.043076 +-503.968384 +-73.456360 +-474.797241 +-50.950211 +-456.127899 +-85.674408 +-464.526978 +-125.814529 +-495.315521 +-152.884552 +-479.553986 +-33.213146 +-515.003784 +-56.159058 +-515.149109 +-39.806046 +-495.741577 +2.324126 +-504.425873 +30.676798 +-501.983337 +4.470346 +-535.486511 +-5.209473 +-233.373047 +-62.302799 +-223.157776 +-76.392807 +-301.907196 +-19.299480 +-312.122467 +39.466541 +-181.314575 +-34.361038 +-168.105194 +-48.803307 +-248.823334 +25.024269 +-262.032715 +0.807617 +0.531250 +0.807617 +0.609375 +0.764648 +0.609375 +0.764648 +0.531250 +0.833984 +0.191406 +0.806641 +0.191406 +0.806641 +0.050781 +0.833984 +0.050781 +0.438477 +0.054688 +0.438477 +0.464844 +0.338867 +0.464844 +0.338867 +0.054688 +0.729650 +0.388398 +0.731862 +0.380333 +0.733762 +0.373411 +0.734321 +0.365086 +0.735017 +0.354732 +0.737090 +0.323886 +0.747074 +0.273438 +0.754883 +0.273438 +0.754849 +0.374010 +0.754883 +0.426712 +0.754883 +0.496094 +0.737714 +0.496094 +0.725586 +0.465744 +0.725586 +0.403209 +0.791992 +0.800781 +0.764648 +0.800781 +0.764648 +0.617188 +0.791992 +0.617188 +0.207031 +0.402344 +0.169922 +0.402344 +0.169922 +0.054688 +0.207031 +0.054688 +0.804688 +0.113281 +0.787109 +0.113281 +0.787109 +0.031250 +0.804688 +0.031250 +0.150029 +0.095333 +0.167969 +0.143456 +0.167969 +0.152279 +0.167969 +0.282887 +0.167969 +0.290706 +0.164296 +0.294269 +0.165632 +0.349487 +0.157022 +0.402344 +0.143878 +0.402344 +0.133124 +0.402344 +0.126741 +0.322175 +0.124848 +0.290443 +0.122814 +0.256342 +0.120117 +0.211144 +0.120117 +0.169533 +0.120117 +0.119112 +0.127038 +0.050781 +0.133421 +0.050781 +0.154821 +0.148639 +0.156528 +0.213260 +0.160737 +0.289713 +0.152779 +0.273143 +0.145950 +0.186026 +0.132292 +0.163877 +0.134503 +0.244751 +0.139044 +0.330298 +0.132745 +0.110571 +0.145196 +0.116431 +0.154327 +0.320273 +0.159428 +0.307266 +0.133337 +0.202093 +0.149942 +0.236942 +0.136650 +0.285200 +0.145595 +0.153225 +0.625977 +0.210938 +0.603516 +0.210938 +0.603516 +0.019531 +0.625977 +0.019531 +0.178955 +0.445703 +0.195521 +0.514296 +0.197887 +0.589749 +0.203266 +0.524585 +0.210938 +0.564884 +0.210938 +0.655771 +0.205444 +0.683669 +0.200469 +0.708931 +0.192287 +0.721366 +0.182234 +0.791999 +0.176917 +0.845739 +0.191170 +0.847560 +0.190788 +0.890704 +0.186740 +0.907022 +0.178530 +0.910159 +0.179377 +0.936707 +0.165616 +0.992188 +0.129041 +0.992188 +0.102801 +0.907234 +0.095048 +0.882130 +0.086127 +0.812974 +0.078125 +0.750945 +0.078125 +0.648911 +0.089454 +0.530587 +0.110323 +0.494576 +0.144531 +0.492861 +0.144961 +0.453419 +0.133559 +0.410156 +0.154643 +0.410156 +0.191094 +0.620193 +0.175651 +0.661630 +0.169076 +0.592162 +0.173969 +0.507459 +0.152409 +0.434334 +0.137577 +0.543412 +0.109901 +0.564740 +0.172783 +0.666458 +0.153819 +0.633071 +0.133479 +0.605199 +0.117039 +0.593478 +0.172158 +0.669171 +0.153398 +0.637012 +0.133269 +0.610470 +0.116313 +0.602326 +0.196312 +0.702200 +0.118485 +0.837731 +0.113268 +0.792404 +0.106566 +0.768593 +0.097532 +0.772144 +0.091826 +0.797999 +0.091881 +0.832460 +0.097390 +0.870913 +0.105037 +0.883669 +0.115143 +0.876705 +0.124539 +0.839463 +0.108769 +0.742339 +0.089916 +0.763488 +0.117252 +0.883290 +0.175086 +0.921663 +0.170835 +0.918551 +0.166001 +0.873925 +0.107965 +0.816554 +0.097452 +0.802473 +0.601562 +0.183594 +0.555664 +0.183594 +0.555664 +0.007812 +0.601562 +0.007812 +0.758789 +0.265625 +0.736328 +0.265625 +0.736328 +0.046875 +0.758789 +0.046875 +0.697459 +0.349872 +0.699822 +0.342882 +0.702112 +0.336108 +0.702579 +0.329642 +0.703368 +0.318739 +0.704114 +0.308412 +0.713507 +0.250000 +0.723633 +0.250000 +0.723633 +0.334860 +0.723632 +0.380619 +0.723633 +0.496094 +0.702850 +0.496094 +0.689453 +0.452177 +0.689453 +0.373550 +0.114172 +0.063757 +0.118164 +0.089070 +0.118164 +0.120661 +0.114260 +0.154382 +0.109650 +0.171207 +0.109388 +0.186265 +0.109041 +0.206178 +0.108994 +0.228306 +0.111795 +0.272074 +0.115399 +0.312176 +0.116375 +0.323028 +0.109406 +0.358064 +0.100599 +0.402344 +0.088883 +0.402344 +0.078125 +0.402344 +0.078237 +0.388370 +0.078669 +0.334200 +0.079255 +0.260767 +0.081458 +0.205199 +0.085696 +0.157545 +0.089967 +0.129148 +0.090231 +0.096663 +0.093290 +0.064179 +0.099460 +0.042969 +0.106368 +0.042969 +0.094579 +0.301605 +0.094438 +0.239730 +0.094579 +0.205980 +0.097040 +0.169417 +0.091485 +0.142979 +0.098235 +0.156761 +0.104282 +0.285573 +0.102454 +0.232417 +0.102172 +0.205136 +0.103248 +0.177888 +0.104443 +0.164617 +0.089273 +0.161289 +0.085719 +0.205417 +0.084735 +0.253511 +0.085438 +0.319042 +0.098358 +0.131498 +0.101938 +0.107539 +0.102213 +0.081102 +0.098702 +0.058520 +0.107032 +0.146645 +0.111094 +0.115801 +0.112884 +0.083856 +0.109993 +0.059621 +0.096086 +0.098727 +0.088321 +0.388755 +0.099413 +0.382505 +0.108278 +0.342111 +0.793945 +0.808594 +0.793945 +0.992188 +0.764648 +0.992188 +0.764648 +0.808594 +0.277623 +0.091463 +0.302273 +0.130116 +0.326254 +0.185839 +0.333136 +0.179700 +0.336914 +0.233922 +0.331484 +0.263999 +0.322618 +0.283290 +0.320127 +0.334136 +0.308007 +0.359383 +0.301897 +0.402344 +0.286655 +0.382445 +0.272438 +0.363885 +0.262149 +0.321377 +0.250622 +0.305352 +0.244575 +0.267005 +0.231001 +0.283295 +0.231025 +0.321520 +0.222776 +0.337169 +0.208984 +0.182861 +0.208984 +0.118573 +0.218416 +0.101934 +0.228715 +0.112926 +0.238620 +0.123496 +0.247764 +0.085440 +0.253507 +0.078125 +0.263967 +0.302431 +0.259486 +0.243611 +0.259501 +0.180292 +0.267676 +0.153336 +0.281266 +0.169258 +0.298485 +0.205271 +0.313937 +0.253864 +0.318669 +0.280252 +0.325537 +0.244797 +0.301911 +0.182351 +0.284161 +0.141703 +0.270486 +0.114661 +0.257371 +0.095961 +0.251034 +0.136051 +0.249794 +0.177011 +0.255085 +0.252551 +0.260575 +0.305313 +0.247438 +0.259162 +0.237073 +0.169394 +0.221730 +0.171963 +0.281729 +0.219745 +0.271811 +0.198592 +0.274465 +0.247020 +0.294720 +0.270399 +0.306455 +0.300457 +0.302752 +0.218690 +0.820312 +0.355469 +0.791992 +0.355469 +0.791992 +0.199219 +0.820312 +0.199219 +0.825195 +0.523438 +0.788086 +0.523438 +0.788086 +0.363281 +0.825195 +0.363281 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +0 +1 +2 +2 +3 +0 +4 +5 +6 +6 +7 +4 +8 +9 +10 +10 +11 +8 +20 +15 +16 +20 +16 +17 +20 +17 +18 +20 +18 +19 +23 +13 +22 +15 +21 +14 +14 +22 +13 +24 +25 +12 +12 +23 +24 +13 +23 +12 +14 +21 +22 +15 +20 +21 +26 +27 +28 +28 +29 +26 +30 +31 +32 +32 +33 +30 +34 +35 +36 +36 +37 +34 +56 +39 +40 +57 +40 +41 +56 +38 +39 +61 +53 +64 +65 +64 +54 +52 +53 +61 +53 +54 +64 +55 +65 +54 +51 +52 +61 +38 +65 +55 +51 +61 +68 +49 +50 +62 +59 +69 +57 +50 +51 +68 +62 +60 +69 +69 +60 +57 +50 +68 +62 +70 +62 +69 +62 +68 +60 +41 +58 +57 +70 +69 +59 +49 +62 +70 +42 +43 +41 +46 +66 +45 +45 +67 +44 +45 +66 +67 +47 +63 +46 +46 +63 +66 +47 +48 +63 +67 +43 +44 +48 +70 +63 +63 +59 +66 +63 +70 +59 +48 +49 +70 +66 +59 +67 +67 +58 +43 +67 +59 +58 +43 +58 +41 +58 +59 +57 +71 +64 +65 +60 +56 +57 +57 +56 +40 +71 +65 +56 +68 +61 +60 +60 +71 +56 +61 +71 +60 +71 +61 +64 +65 +38 +56 +72 +73 +74 +74 +75 +72 +126 +125 +138 +110 +101 +107 +115 +111 +110 +114 +115 +110 +113 +114 +110 +118 +115 +114 +119 +115 +118 +108 +78 +107 +107 +113 +110 +118 +114 +113 +117 +118 +113 +119 +98 +115 +106 +107 +105 +112 +113 +107 +106 +112 +107 +116 +117 +113 +112 +116 +113 +112 +106 +120 +131 +98 +119 +131 +124 +132 +123 +124 +131 +122 +131 +130 +118 +131 +119 +123 +131 +122 +138 +125 +124 +137 +123 +122 +138 +124 +123 +137 +138 +123 +122 +130 +121 +118 +117 +131 +137 +122 +121 +131 +117 +130 +137 +127 +126 +137 +126 +138 +136 +117 +116 +130 +117 +136 +129 +137 +121 +128 +127 +137 +133 +129 +121 +133 +121 +130 +129 +128 +137 +128 +95 +127 +133 +94 +128 +133 +128 +129 +93 +130 +136 +133 +130 +93 +94 +133 +93 +95 +126 +127 +109 +103 +104 +102 +103 +109 +76 +109 +104 +108 +109 +76 +108 +76 +77 +109 +101 +102 +109 +108 +101 +107 +101 +108 +78 +108 +77 +78 +79 +80 +105 +107 +78 +78 +80 +81 +105 +78 +81 +82 +105 +81 +106 +105 +82 +120 +106 +82 +94 +95 +128 +125 +132 +124 +110 +100 +101 +111 +99 +100 +111 +100 +110 +115 +98 +111 +98 +99 +111 +83 +120 +82 +84 +112 +120 +116 +112 +84 +84 +120 +83 +132 +97 +98 +131 +132 +98 +85 +116 +84 +96 +97 +132 +96 +132 +125 +85 +136 +116 +86 +136 +85 +96 +126 +95 +88 +86 +87 +89 +86 +88 +90 +136 +86 +89 +90 +86 +135 +136 +90 +134 +135 +90 +134 +90 +91 +92 +93 +136 +135 +92 +136 +91 +92 +135 +91 +135 +134 +96 +125 +126 +140 +142 +139 +140 +141 +142 +143 +144 +145 +145 +146 +143 +155 +156 +150 +151 +155 +150 +152 +155 +151 +153 +155 +152 +155 +153 +154 +158 +148 +157 +147 +159 +160 +147 +158 +159 +147 +148 +158 +156 +149 +150 +148 +149 +157 +156 +157 +149 +185 +161 +208 +204 +184 +185 +208 +204 +185 +204 +183 +184 +203 +204 +208 +207 +208 +161 +203 +208 +207 +207 +161 +162 +209 +183 +204 +209 +204 +203 +182 +183 +209 +202 +209 +203 +206 +203 +207 +202 +203 +206 +207 +162 +163 +206 +207 +163 +201 +209 +202 +209 +181 +182 +190 +209 +201 +190 +181 +209 +205 +202 +206 +201 +202 +205 +164 +206 +163 +205 +206 +164 +191 +190 +201 +196 +191 +201 +197 +180 +181 +197 +181 +190 +205 +196 +201 +189 +190 +191 +165 +205 +164 +196 +205 +165 +195 +191 +196 +166 +196 +165 +195 +189 +191 +194 +189 +195 +198 +180 +197 +179 +180 +198 +188 +190 +189 +188 +189 +194 +197 +190 +188 +198 +197 +188 +166 +195 +196 +167 +195 +166 +194 +195 +167 +167 +193 +194 +168 +193 +167 +187 +198 +188 +199 +179 +198 +199 +198 +187 +178 +179 +199 +192 +193 +168 +192 +168 +169 +193 +186 +187 +199 +187 +186 +188 +194 +193 +193 +187 +188 +200 +199 +186 +178 +199 +200 +177 +178 +200 +212 +192 +169 +212 +169 +170 +172 +212 +170 +172 +170 +171 +192 +211 +186 +192 +186 +193 +211 +192 +212 +210 +200 +186 +210 +186 +211 +176 +177 +200 +210 +176 +200 +174 +210 +211 +175 +176 +210 +174 +175 +210 +173 +211 +212 +173 +212 +172 +174 +211 +173 +214 +216 +213 +214 +215 +216 +235 +261 +232 +238 +236 +237 +234 +235 +232 +261 +236 +238 +219 +220 +221 +235 +236 +261 +219 +250 +251 +250 +219 +221 +222 +250 +221 +222 +223 +250 +224 +249 +223 +248 +267 +250 +249 +248 +250 +223 +249 +250 +248 +266 +267 +266 +248 +249 +266 +249 +224 +225 +266 +224 +250 +267 +251 +234 +232 +233 +226 +265 +225 +266 +265 +267 +267 +265 +262 +264 +262 +265 +267 +262 +247 +262 +264 +263 +262 +263 +246 +247 +262 +246 +247 +246 +251 +247 +251 +267 +264 +243 +263 +242 +227 +228 +229 +242 +228 +258 +229 +259 +259 +261 +260 +260 +238 +239 +258 +257 +242 +258 +259 +257 +246 +252 +251 +257 +243 +242 +242 +243 +264 +254 +241 +217 +253 +254 +217 +259 +260 +256 +259 +256 +257 +245 +255 +253 +257 +256 +243 +245 +244 +255 +243 +256 +244 +254 +255 +240 +256 +260 +255 +255 +254 +253 +244 +256 +255 +260 +239 +255 +254 +240 +241 +239 +240 +255 +253 +217 +252 +245 +253 +252 +246 +245 +252 +244 +245 +263 +243 +244 +263 +252 +217 +218 +251 +252 +218 +229 +258 +242 +264 +227 +242 +261 +238 +260 +259 +231 +261 +231 +232 +261 +230 +231 +259 +229 +230 +259 +263 +245 +246 +264 +265 +227 +265 +226 +227 +266 +225 +265 +219 +251 +218 +268 +269 +270 +270 +271 +268 +272 +273 +274 +274 +275 +272 diff --git a/spine-android/app/src/main/assets/spineboy.png b/spine-android/app/src/main/assets/spineboy.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea9737f30707915e0bf495cdf987c6511dc0500 GIT binary patch literal 245321 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 z
  1. sZ@kf@gL7X)y;k|NZYN7CI4}AlT7Z z)K6se`+EpT$JWFJDK(_l{{m}QBz2b8w^)=by1iC*+?^1Gv&H}sXC`rc`N=el&L)zr z7b)*FB}8sZuR9ZD_7>JgRxg;Qw=EdCV(vUdUjCx-oKiD&hCIoq>8PUqBZA}wz6AfN zw!BAgGVd;~EY4)an69Od=hLV1BB_jefZ1j2!!oKv7H7w2f+9F#cENRw@o0r$mS}gg zi*6ye+?VF4Z_0!a)P;nPJ7wzloC{oyHtCfH{I#Bw4u0KogveH|Tg(4ghdcd`=af*j zAjj+}maLjOz{G03_rc|*g-5KHBAv@&2e)J zF=N_iHnWJZ=(uFD`F08``>GkK0;hrm2HYyEAG0Kwf>k8|&5-r)R1jT*IIivOmo~88 z4*6x}XyD4S+c$OWu2=q3%ms$0uoXxYL&wj_#y0`ji73G}41S^fJZnXGWDT0&ocT&! zJv(NnJ~C*DZdeoti&-MIQ2 z3urco1-a>*7}kvrlKi^byNY;s5a7t?WOI}F>&O4V$&Ke7Jf|K|Z|>*ir(;2zSTM`% zP*(!H&<}qTHy$A!o~X_Iy2hvTJgcC$a`;%GE7V!F9%X=i$-oUL4u=Au!`N^Hp1=l< z<|Wgh`For%fw(e!)CL=k34^<(r^S`iJeVNBI;Bmi|t)F$v;a;~3Fi-|} z@g{V8`_(`Fo#loXpI|8wL9%>z{5lWuzNTWe*&4VPT38vT2ow@otv^#mQK9F5cH#=R zKIlxSy^8CL!Xko3P2NUAb}hB7UjJNn^z;C#e}(;o;J;kH74z_qYoY{6Y`Jqnac%p~2RtRH5Wy5ID4o$Tv{UT9hwUkdl*5h!%@~ccqZM_YLE4=BRQV9zq z-?&o4h1{+pG52d=LBB@rr=u6Q`@fu=Q;>0ijgRs=47{|+Cyk^8ySr9}0COs-SLsIM z0-@3eZ+W0BsCW)X0!_*F%31W>+ZSMsx{H`aVwn>LiJ&N0ZhDko6~d)+otMT8N-rz zetGu?K&ohHqn-NG96ZSBAbq^^@*sY8{$2v7eT8Z&!=K{o7ObNQ ztF-yvyvzdp>>g~Y>e;q?V`E=eP`pHYGIqS^>mjJnW zTP+%$4@iYf=xFokbB|}{4orJ%5+pV`?*_DfRO&`BUdY0@!ry8yQ5SYnzPbJ{!w{0e zDd>6I^ETSVX$sE|wQQ1CI*QucaAJelW+D-mB$@+ZS%LPvZ6rC>?n*%Z68xjL{5O3n z=D&f6>V&2Z`Nq||n#|u_^%|xb0rU*usJ=*rMoIS71;20n5$M*kmHJB*km+h1{SFTk zO->4JZPtDO3pFL>Dx6xv$rp9JFRi#iJ9~Rls%NM)K-ST|Izn8DznrP|A&kuX+>QEi zc_h!>5~{tujKz#P^ks_`?J|3ZU{MJ^B{4J{Yu)jOHzj7ihE24#obF1K0b&PQV+lU( zWACc3WzVSgr>IhAtrv2fg~8}j7Ba~bPs#7t$A7L&TPiT8{-#EOG^H@kw`Dkb_`SCg z39P!F>`>(QXRXwKm@D{*#u*b49VbSG2QxXWumN<}MgPr^*shS9NUC;BZLN9h3Vu9PiEL5vbVd1!MUC#q_R?}84vAXrkdj}+wf&(O( zg6~Wf(^K<4+79;p5=EvzntpIqpUWtZ`ToUZ*eIvhfU;X55$*)+o#r`19i5-5vaMxy~K}xQy_lZqg%L`bXdT zo+(%VtdjJa)t=1EM3h5#9Wt-s%N?)(>|f9)2@v0>*(d3DD$%EuYOtFv^Ea8BE_?7O zc9N(5sY+~76*xRN6%=O_fRiVDR+ayIshT4|$7-vUtf9$bK66Z{pf{i{)2c}m`D!r) zOZ?y);$nVd(9`<`&OwjlysYxd!a}9Ixt7kPm+vH!9uD7S(VysJdkSRW~Ec5VcO|t=i=e@DDe^1jF5raa45Un;giJlB0*f_&Ncc!PxK7CnI3TrLO zpM5MZHgyC<_7DJLM2;Lwr?frWyJ1 zcC!(f22Ku=Kn<7{y|A?Yh49}pkS~Ov%D8-;*cyr--A%oKr^8O92-^HSyeAtRG0_4H65Ci9mmbn&zic$P~ z1yhdAG%C?b46qVnhUjq=!|A`0r=+Cmsuo$A;W}#3mg)}hMBlF{xA*b5lFZ)zbXX9F zI-W&U)mX9+o@44QTU=pSuN%?(92^3Uj&j>O{0{YuFmr1kOVbG?gV4g1`$K*W4EEN< zi863TMbQk@adzR}3I81CEl{<~+=57iyG|DJrR)S(9as9wdFJv3oRkZ+JZw}1K3o=j zjEpM7@Y0U9IS>taO~5Fnldf^XWbhY%-_G5avcJar0)JSbY%V1~@}udDaWl}-W}+aO zgyh2PbbSq|JZj|ad~y+8IntLhni@K^79{J(@%bZ*LJR(sFbNXuUZR) z9S-;5c=AbqqZE5P;s8uj@v^abTmuEyaBue$U2k3XHa-hU_Omo_hZR8M@G7T5-F8~WzLc}@DHem za&ftL2k-J?03HKU1mlN_ZXzYg<&&8S{t*N3y#BT6mMTajx0*sO9uLelEIE2A$O6SM z2((Q+7LE^_3O5bZ>#eh2Z8BT!jLf2=A%=(Wa?4(o_27b1fII-(w-11{rqygB^n_fs zZ7y>gS_Ii2f9dxDBO>b9T6-S08}`xB)3e$2X+JGt^MyPU0rTk>Z?u1jX86x9 zrCM_7?M(^OgL-qXtap0--1hdL^?ws+o7gwm*)aLk+a{!Qs0JnnzHC(;rRj_rw_VfO z+fQfvdgiE;{Jt9mKg`?JQ`ZNZP`aWl28@GOI^^S7a183*i)K`oPvV=(c^ugk1afWw zA0=etn9qgZOUJQd(4iFb7Pus{Cj3k(u^_R#&Ma0Vaz%#Rq}8RXitRrc1t*5RCfV)n zb}L?AB5Ycxp1uV3=pg6Zzx-95LhQgE;%DIsc-d8*m3;Ivd&!m*a6;jPKE7h;|EpKr|}n^{`zT&FQpsI`!0dp-{YO#i?a2efn+_&-tTUf>oRb>(o@N?8#J@ zV?a27W?|ZkT;5C{LRYyP%~gV;nL)<%9{Z=ZLL;O4xq{w$YTa|PIc|#z^L`uCqU&s` zee0LP1E;dB33L6(9W?hIh!qe~ij6dL?WNh7Tx_1vC;$5^W)uA47$PqU&$V{@e%ibAIgDXZ z*4;y6i_G|6kBtg-i)Oz^WyZ*4ei;N0a|KuV(-72;%|E0bo&A~8zA($gtw|a@QGZsZ za=G3_K(#Ch}|#G$LIWsE8B<&q<3uHRPTBx%+^9fkMNb?9A!etB+qYYQl;5HiX(j zhO|LGruCokNByzHbWgpPrXOU-*hdExa+;X*-s@oj5d;CYX8Y=+q@UO>BqFi=FueTh zDXNQ{bLsw5tmO76aFXNIq9@+R^_a!AlZ2zYj*WKm-VXXAsSFBH??-?XnYs{XLis}A z+b6Ly2b|z%F`5&p;<-=c@{Oe|?hWzN19%ax_*L7Z*I{l5@*n3I z(Jd8DtNHRMFn_d%y{l4ku^~%cF@wc-FI3uo5jimqBk+_dr?r#})2Q}HU)`BSc{g|Q z&0}vXJQgSX89YCNCwwzprZ?z2tAqxvj>~b=?bCwm3{-HTAlWUiMe;|QsnW>%O(H4N zBh(ep3*adbc>6E3zB6f;_!4)KdJ)0SpZ>fWaw(H*T6=BCger52RVNzKyyx%i`}!`W zf)GgYWx(04U@jqr{ja#bp0f?3EEf&sd!>CfIwb6_wRn%li7r@9EZ0-;_g6l*Nbo!sqSUjj@}>YUsMHj>0GOiq5?RGb5l(?ufXuNXMSX>i*|S8d$B)po8FTKs=$NuYhw9MnNvT(D;vB|-)s$bY& z-_bDPE5)jSM$xN|Y}?j7ooTypXaMx&#gCmO&>BtwA6175a#`)-XOLQ(39yhd*2TFL z$LTZ9bfCt5jr}-gJMD5#-6#`ayD|OR?Z;R1fa{idX-^5O&OHB&74)CbxG>a&?Ak%^ z-X+#8=9^%2pEl`sITz;wdH%}irB|o|(kM`+j`d|`!SHbPw)LLBm{k!^MlXmO%|Ez? za=~WbAbP*H8*xFRzkdu-Tu`~O+tFb z*UU#t+F{XBX)VL|19b&S*l6@*{*$BK*jR%Gf&Qtjjj%E9oN*0>oXpr|4KL`htqF}d zdZ-;q&xTXT?2*Z-673M!&(s4$FsXP6coH~QWdhWu3`qG6p?QwDQrQ2oc0Ce(D&c%9 zLD%RF)W4e-_?>8k{QIp32eBDRO3gb%xjCqER3stOf4YYWN!UllVFLUe&gq{b^BJ_v z*Rsg@&HGWAmCX4}jt>sWM(aaLU+WfvrlTV*^H&#q9#O2OxQ2$j=jWPu5ga~CoRZQA z`*zRUQ3JApz4dLbX%T>`;2gN$Xs}!9YCak(ds16m>hsXy zn8zayeICLIAX-?brV*;*>&Kuym^YPeYO?M!)Rs6egTBE?z8OzfuioWVo!>jD2ILs8 z)=$4|><3=rb{#ki!7vH#&!%s0C43`XRctfeJI?K1rB<~PE(9-n*DVgZoGZG2)iOKB zC^7#t6{fQFU)wVFC9*Q#IgVwIji*@v#ZI+1+@DA%(tqWZ^7qB|Fc3h1*@YjH+>XGF z&3LijeIk9dil&!*_8^j$W;HoO}e9}HgKJ4SJ21lMDHFqlxv{pw_v<>9C0|*yg;x+ zG|g6ocE2QTfF4D9+BxeZbISAm)X-A@8PuwrD6!1@ zjuMWa+`0Dntn_I?LZhmiDh zBHdtbrJ>Z*ekhwivWl5jj~_1OMQGp;e;@Gk@%M`qnkZoD7DZ>~X)Da)^d>M?|8K4$ zAzd=eZC{eKKSp$Qu73 zyK-?o&@mJZ+o*Db}HLacVm}Ms|$7$<;Ko_IE~?nfN@W4H99l z?Ok#^FuV}ttMq&W`g^4_+Wj{iB4R0HP;yz5ur82o|D<=!wtU~^GV-3AcTS50yUm7Y zd95k<6sA43+-UeZjBm8867HT_usAxA_bE++=1u+VV2pg3iL{tSorvW(cMP@)hpLzL zZ|xxBIL^+tID*suvB*$eMOTX?@Khw>Qm(jWtj!)S9Pgs(n=tLxT1iw3%F?~Tqnt13 zeB58mpx%M(3eD+Ty%8+Q&+tF>({Yu!hyOwJizwtXbsgFeTsw#w5QUUwF^JZ!UoBy4 z*5kS^6lb?*5gy(SxKk`F%(k*g)xZEG%_{DkPgiLMm9{VK!}t$xxtHJ9kA1MdcX}6S zq2W=D)pDmbtK;Ois`S^D@Wb?{zU4@S8f7J7cvnVOR=T!pE*k7~reIy7 zB8^Y{F>Y>OseD;yR#zF{=`sTxH`X585BX?N$V(GH;q|!J9!x^SpU6JTsH1g>Q)-Jl`hod6Fv|n3?c+9DLq-yxIg-PR2~7e`n|C za90kVvyv_k)a_`il!Xightboks+%)1$KY`e6uG7Rb9!dsQ=4jYxJi3@0^u$Zs}P_H zIbmJ`aYvx45~gE#I&UI?dOUPQlvvQi1sy+!N&i%muTHwFaycSk z?T=1?jcYt~q~TD^@b=A;3{?W{l~`~hqLAQD#C?pE{T`N_09Ic^tGLor9tDJsH$VOn z&PkcLdkx&~cDkP>jfS=AxkXO>mY1HC>ug4BIcaSz#;IhVwo-{z>n{kGm63j&WtEOX zV+{M3NPlI1R}e>*$Y#J<6;m`@W=B+jR!H~_3m8&McHXEe2>O>Y7R*-&9cQ^dPBeG% zox186-DOV(LT^nxDGqa^2fuBn+kE0m1x)KR5tx;8{#N|MplNq!Y5#C3T*N{6X|<*} zcy+qB&p+JM7g{w#iVpf0Q_VxP8RUCwqmrc>Voy!VkC0 z&spOS>+Bv~dm$aZN8BobXQO`kuOz83aeUSV_+(LeDZU69yiYusooc-$K_XhrYB&o~ zG;!xUzy^no`!r0Xf1dWo02xj&uTqf3jbyzi$3=`uEUfbqu;ItEu>{odd+cxB$jQNl zzR8QvtS?VrgKDp@qb$D@0?5q%&4HLD>zw|MYdF3us6_o;L$mlR2M=9ovcKKZf|w?yc1YWf_(a~HrmpLf zU{Xy3Q#7x}7p>ZMk;Ak4eSVt?H>h?^XfGtq>JH${fu-s3 zOsi+AG4J)`sXo;8pMU%0UfVogn1k+Q3-2%tVKHYKutwlf$-N#{?zAr98n?{JBrs5A|Hmhcg1-u;-Q-!fKhJg6 zQ=Dud_D#=n`JyMoH=xdwOaaG`U2L3{$Jro)VUxmHmbw^mccLFF`pd!Ezs#6jT)4&C z{ygDiCn^*nfYvm942c%}3l$FxiirEs$622)k$=+afX#^cSY;o<$VGDfsQzQ$kLT~+ zF+weWAGgsyq~hCv=8$-$Rq&;=>{Y3ssX3~2c4e$vK=^*~=Ip!S8KtjRSx2z)4?(EB z#;yTEg)K;oZalZ|m8l&I&t=ZU23S4cW+-xyl%HNHs0NQ%vTG1{yoDJ_fo~EBO|C-O zBI}7hn0y(0I?UN#dqeYL>ITDE(L25II<4^V66GakIR%c7zGMo)|F2v4Z$aD&lQrFp zkHC2Gc>S!n8B6RrnGPGYlfQh`ta>MqWM6b;6aLu@i>-6^IH!HeV}`^)CiQ9lrtW5G zYL&smF(O~=E}bE#mVJGu$>ZxZ6B*C>x)b!hMwChd3K9=#xQQP)=mdbqu7gbG)3(A#Tat1C}9^&L_!NdgI>DJ{#AC zX;P~&$Mb@A}`UKd9VjP{aWPrywk4Uak!snYGL0M1hIaWqzMyUCtEQ@ zbMAAOXiFOs&se+B&vN2td_hv;`6!hKV9FzuV^XvEU0ukB5Zb(n)AO=I-*A{&C6HanoiD3q9Gp0{aOkXh)u(Ldnu%e@LZM6mB;E9Iv4m=r8(#A#r*x z=$OcGE_}^Ea$$jbx0jr_UNphajkI1neijx&k=0dAU&!q7Ak>mTtgx0!;9)WIJ|ozK zZ?|`8xMEMok~JRs^kTkSW^)7v)$S6Sr}rdf>?b7XFfdn>a40O7y>@%v<&cGej+y_6 zxPH0&<@ly5cXyg|wg2Y4LHg%8CUJ#L;TzxRTHvyhb{gdl9hJ#IHnDK%CY6QU9{!Nr z#A~r~GLCbB@J3OBPSsB);-f!GGc3D*DKyF8f)*?mU?JBzraC0Z;J|)itvs(#GchCD z_wH)G|M8OXjq^TyhRbY8fBjRn4DoOGe_kWji;qYe`7zN&fisp860%R%%&C>(0GVcuaQfyTpKuY)Q+|B71D8+2*sbI{ zZT|*!Q|E^$YPxeTbH%542|E_Mh}^fsIxg<2AF8{d&n!x2q0fu--W^D^q?!WlodK4X zqbw~@b87~%mtMoa(XPS<2jfp$XB{2>Z8hRSxVU{e%wv2%aP!otV-c7`+%?C4q$dpq zNK+l`X@6qc3s)Z#@Vt7QFb!BcxD7IzTP?`1DS_DDwQw8byya1z$fN8eNjxw>>Dnzq z{lUOW`Sb(aawX~2Q}~ci|~3(^=;i*CgY`_x!1NlD)&4I zX2R31?3MY6>@~EmZ+cT@2Bo*|6#I7RF^ zW2)!}?#eqGM()bBiv62+wU$BYD9}?m6P7@edvIJFX3}t3ut?TmtDR11a?*RE=jky% z$dK5dJwWymGRAzp3Wg@>PJ5GI*Ym;&2BW{1pRz!}Qri^`Kgx&xb=V6zctwm;hrR6t zb_2HB;sV$ZOwmjunFxmroskI+b4G;@vk2@r>h>vm=DUaCIDwzPc$Dg`-jc+Oot$+C zd<%Cmd5b>dD#qO4EgTPkxg`|P`%HTDVG|U+()en?Cs>$yv~wXxk>r-mSPHR@6bqH} z$hMoQSIZUA+bWF_-BOW3Y)_e?i0)!nl?6u-9-rO=8_k%s=kwm^mY?IC)EM?!bX0N6 z^#%SH&b>dH-{Vu5&W|oMe68n^cWnM`)9h&kUD2@@nCB6leW({e&h5A?YC=8C5`x9! zTDA*{=^AX-Ss#v7ixFnm`h0qbvn>+u;g<*K_;sLZuFypDB+KM?qA_4ORq)kq3wHKe zs8p&>z0(7_Qk-m&!>vo2+}d~J2;#KFBBDR$I4myH#U1mj79V6==zTdPIeQ@7${a_^ zP2)}AVdVVjr~e;Y^#e+eIw*74z3HzCEcZeP)1-u)tPuNYf-=jEh(b2b#dbt^N4IjC z6v<9NmU&a5sSp*Ss7|^Jxp1!t?p4OECSPs6I|bg(3Sx|M%-Q}$6u)3UFg^`@Oon|{ z@%lM)XDEQ%f#?+%xfac3Qia+(b@&9j;}@T40@d4W?*3j0oOx~-gucJ6vsS2VzFx@J zxpln0y{cnHrSuw)oxST@I6f(Nf&W$7a=gd1AmZll8matV5*7ZCbIfj}Y_s6#MRTUN ze|3F~?4JVBuWAkVwc#`N=|xVG!pmCw!w0if3ev?|5=#H{pquhKF~-0?x|BraU7cQ% zHhD3kZP7$)X=(0u_u*kvB9u5y*Gvo89DRL%KU40oywLWk@}C|s6z=@Q-;NEp{VOU?y(few(XadP1j>Hc zo|(2v3`I-gVV+fBZ(;XbB2c}1ym5R9(tbp{qT6CXs8)qi;D7k^0WPZ|DZ=;&C-8=@-9v=pC4GrJ&_-;N8p18&sC zD?e;BxjXf*IBJ2zyFn){Gu!5^0i#`K8HrcLG+iq`0(gVjJKb1$QYR2Lx~d9Uq`s)vb|IPH+CY$q6!P{ z-$AE|20sh_>D;VE~f;v&MN z7eCSKN2yYN&b?-6+Whu`ukdnH8AJ%jw#dzSrM^$&n>X|fZ1uXQI}L1p#GqJu zJzslRcx%`NjZKu&?cy#{qED{3i2AkI3#qb_b0e8X6duoVH;I=QuZBC|kV@Mcyyu)G@@1jbFPD z*0N)}U#rVtMJp;}5yezc=PZ0S$W3}?VypY7w`r0mSN#)kWdaNS~A|V9SmMRAI;ocZIueF`<_x=dYyqz zL*(8r6@5KkpRGu88$0Yqqt@=uAwu%o6+9a(&I->f;F+zEV=_nFMEMO;b|w?bj%10S zyL$$8GLX5Kh#zswv%~4AckQTI41uhk3m|z3uuoK7QG%oq5N8iQ{7@N2C3L z-1mf|lycR-!z4yL~fO_LoH$zG@a|jew{{zbuphQ^4oRXjetY%y4DBZ4aPc zIwUg@Z+Efmp>w^FG(j%5{cBz|pa??sI%(2g{W?J;X6m(eza*8aT=m`lSo3Z99q#F+ zVTF->2#5dXmqRx;pose;{lzl$)IOo{az*G&5M*+r;;2bxj25lSBHidvQBGhlyJ9O# z@wv5$-Tf5Vtf_*3Y^P23BXt9{HNp%V6dO6p@)P_!H3rH!|3nzj6MXl2h#-UmYC%No z!8J3b$2LS*3qTtk9$Wv;XR}?nM zn`#Y`Yy9Z_9rxV-4QRPZs?atS9;wC>Cr^hElsTbxW+c;9ktSC>Q1aq%+q@PCNq~4b zJjMQo9#~P-tKI~)29GXkk}SE=z&3P8M)%Nj#M@N@ieeZR5Wj!19Z0jcCgUaL$9iCb zdqtK=oNX~;-%;>Q#_A;~b;tP=aQc&2#QkN>mxMp6lk&>)A(iOfv#u;$PvM?w4Y?OskPZ%T>TMJp*qYidN@NTwtdZUGL{n15C;?4 zxTYKwdFmnwYMdIJz-Ae_0RbN;g?;u@-1^zuFt`u zyXlnod#Y!TZXDJe3kqe3rl-NHb}}Y`RP5qOdRbmLcZPK zszIgh8bsun`Fw)EU4?m(KE*WozzuW@G1%8y%HcY7^>E;90|n7rNOa-mf-sRT1Vi^b zFk0yNVFq;Sa{mvV{|~Phl7B|&5xqLqY6QXdXQnP*zqjC2Z|m-mFNgG12$4J1k96_ZRIM9?XL(*UCi%4~NyC$*z!&8yKj`jB11C-+mUT zUgs1OIc^g_F20Blwf5V9#&?4_5xrzn_lLea9Mq(ut=h*f@1 zBk{J@{Merx7!|Yeydb*?>&4x`e7)=(?na;?qJ1B`8s9U7yg#v0BC$N%0-O0+-(z$5 z_!9EbW;Qx8DG-`W!Da592Qx|$urIgH7pDjFsmu?HEN^jGvl_c76pubot!u2cSh_(5 zZZsSp-JY|+xEnC9UH3(M9wQwN{fDVRt%pAp@5UFHn~oA}svXhqD2=Os6NvaPda4%Am(PrICwO)genJ^Ev z!4`J=&bKmsu%|u4;)Ybol(=VF&_axjt@A$#yok`(W9jl;RR*m2nRw;@BI+%;+TfyX z(cly*?poa4iaQjS;98vG?(Po7io09!;uM$S?vy}rcS~NrbKkl54`gIy@60u2t+kJI zTX5M^&0YP&=^c91y`L|-b;)jP%>ja{Mb`RAid?WJO z89%!3-PQR2P~H{%MZEnW+WkxVG2c?!0f*mBRwrZJ5`U{Lnm#HqbZ34P)$w0}sLLh^ zj58)Fr!G%*xsD9YyeJL+hvI#|yy~_UD>zkRS5H-bZp?7aVAFVAbA%*9rCvXShn*4m5ifC;}8L60H) zMeZNO*zLSkMy4T`4pPJryGI!Hg}Wa#O&DhpPcAia>zkJ{;PN6pQ~hUYnnYy9 zt7NT6wJPy{El~;0AErJg{EqyD)71{L;&Nxvljt!tbG485wG928pgOzU6>VsZVcq>4 zfSQr_@*Q%YQviOYU5c3#V?AGczNHSx?VUh*6%(*pL7sG6AD;MJa=)zqj?-HcG(e)d z^*bvG!#Sw#d3)o@k6qbvjp1FBbwvBBf6S=c;f(NNnv^zbGRdC=oLR%a&6UiTk8U4~ zr9M-7B#$>nxFVlRT)_45;HSzU;-aKUUF70`I2=iJv96ZJ$P!+JvG2S?X*>y2c;XM) zoXlp#Dn9$!$_Vr|;F<$D;aYUD@%k5{FjHw#8D(lT`$5E_;@;l^jjN{OB>3o(tsYv$ zu_^$N3*`A)pstU!J)vfp9BCsM%apoZq{BlLPCPC}#q;y1t5bCp8BrX^5Z7yIP+OgR zIcM$h_=AE=3BiSu!*|Q}MN5XW_7dh(iwFBd89P*sll5UvgHzlsL76TWn?kcTKb?lN zjb7ft!921~O{RyllYD3OpE=;)oAJ>toQ%25Z*%&BY? zpL>ZbE@Di+YCuxEda*gdzLf0XJz?4~X2H$vfubwUK||0RQ+$wIDFKZjUD zJ7M2d$AbRj-~R*HRDkZnD>b!-deoEF)J-6*i|`t?MRkl)CFI3W?S894+D3TW^{uNXX>+rtTw}~9l%B8$+J#S)Fg`FVKZUc_FO?xyG>vOGv=^_lXS#`)d7l&hV zWHB!#57qCs6SW?0t;&MgUi*2xl6sdnvQ%mb&h#3S_H%N`(?gk+n{9Hn1M=>&WM5YE z&e`KO%`r^4@}oH1A_zBhP{oyO5$&pyzn^+I!k$?_*OZeauhVLDnSUBZvAm8?_I2OL z@M*2C)5`x3+mB5v&-XRPqAI7|w3LTC-8NRQ(FqX^!WorbtJjhBFQC@ei1jPyYri6| z_`cL$jW0rWerJ3A7zujyyj_xBzZ&+0oG7gRo}YTpSwuGROIVwS%Pa>cz8b~HQyCL~ zDFd2fB?vyDw<4O5Sxozacd)_O-UwHSyFDl-sXaNo!X*1UfXjpxAz~-F|9g_5(g5$j zrdL%vX!mHOUO6Upx%*|@E`DNh_W`6UQqnd+=KXa++vPwCE;|dN2M0#*rsDkPpra`S)%;J()Sa$g}fYvu#(`9QbLGr?i2ee|b*di-`6v zO&c4=zc^XLhx1sDbMJXJj{0$mbq^Fh?8$kb%dHdES+wpc>aJj(fm~lQs;#!TB22%4 z5>Dx>exw0E7hD={dcD<)bvicpc+_q~Ox~UKEDw*q`+oJ7^VT@e0B=pp_)YA??X;g@ ze~UJsbYDF2CQ1A|9rVq529MgXsjZ)~gauxjR&cFqxk#G;9&flh4pVJU?v9jmw4i?w zr67s=ItW#`%DF}u)l3=nnP4~l`bBd078ZjZ0{FjWG6rxJ8j3D;Uy~|k4`inJ<8fyp zF7XMCn1>s7k%`%Q`MB%_@S>P9_Z8i_D~O7Ubwv)?CPrY8EzoGxi5&@+Km}lauH&a;Mso^`y|Aodcwie)E+g7$O_-lm`Ii2n zGXrh+7rAxM`QYSjo(R8~%c%#&2jY7tdhXO+`7qPU)aF5!2e0N@R|2Oe8S#@tKV7qj zpFC$499=&ux~Bgv-)<0o7Ma|?$JaC(StmFk6!GlIesl3`n<7VxMIu~bd9Xdz%H0S^srC&Oi~8R3qAI{Yi(@v&wL}E_T}1aoGm_N zd5YS5W!$+}*>N||_1i%{cOwv8Z6cz#91G8f1iZrlO}-u9a3XVJB-Qg;bM6(o-gh)Q+6Ipylcda@QPO-J- zSs7mD&(ysO{_QJj?34T85t~6$dMdSkm}G}Uq>y%mGTCC69m`@?(*Av?MRit_xQHF} zHz)J@edYe=fyQ4iF+PdRuCVlky4qT;BNXvk%D3c2bv#425uW&;H`bpKGjzjO` zKK-D>1ZI--n52Zu?T1{s(~lX>q6QWZrtRhjcD+m_PMu0Ry$^B4PpiH{29B@6u-!LQ zylW~-<-wW`yNKw*KoKk#8D}Xig5h|5>iMcBdZ3G-W;TKr*WYJ~Sv7bQyq#Z9`B9f2 zBrFLedhc-|^P`Zx1v#y8him7*3s@!albL1-&k9K0c2We*RZCxxONNX2)`< zzhYR>hd39f2Fvx=SEZe;0zSAgx;eaJ^W(#>cYEV(%f0Ze+U|OZYQaCD^XUFh<)me% z@#Ga_$)EH6y6pDptM{8E313PF*gQL|uL=$;82fHiw%=E}^uBtzY~tjhHHc&w1O_EX z6tHrbvC>EGu39%+fj{HIv@sgO`_r-^J<;zbpcEinWJq24s>#E#BZ5i2l`SyGTl+0x z!^Vlk{`dCoKBIn#G=c)(vVekYKOKPE| z%KiWd5T8H3_6~wL|AM|Cq<@D zpZ7+Y-Nk&EGdFwV@H{`|G#j0{YCA)UJ-RKn^rwkl(Hm-&HIUJY<)k_x63GvfA*yg& z*PNc3xt&3Zn{9JQD)5eo_(SI;?9o&7BE`{==l)moy~|+-GBH$tnLxXdl>b{k{_{MM zCEI$sbkFp>-5z7jjV*F}Qt9GdY)%d0*OLp?>C>4>)fD@mc>%N=+h0bDEh`fQiV34m zRyoYO^2^<>0a=nHBQ9(HkaNMd+hYnAvG;?_x3>bwtJ48&Ae)8{2aSh`#jUCQm0<&` z$fJqHDZ5xDprH>)HeRLEV297SHcMZTj5EfNjYm_Hj4jWI92-(OFNG&Tl_X>vnNhNm z`(&)Ye!>_#QU|U@4m_JMfvXlDzGf%^Zt`epRx~=0{iSY~v+%gTG^AC1zXQG4CkWkI zAf26hd~E!)OJ(1DU)Y@e+BE8FvT^!+vN3sg*^#s&+>)p%$LB0tCYjUFud&==eZ7#l z@GIb&bMrx!#Cr{|Zx3CF&v|_xh5Xug4RQCvigI(TDuIP|VbqFVN`{`1ugzJ~0j}aD zv~k7s?%9(~LjeEDso%g%l3iN;^)&=(FC!}m-hG5>k-*Gtf;*Vo{HwV6?_Ih6bXZjy z>*xRFxlnc_k6B{9yGqb;e5Tr&NwLtw->9<*j5NEX;z6s5$Iv{|zlw(s{^!+|(J-QT zSgzk1NBHf)MYheM)NUO5y9 z#^oxz$tcA8Vac%72tZe4J<5_~Nf)e5fe8wkS1n5?=zJR8Gt=CR9Qr&@ShVuhCvh6- z4l=@Od8gws~s?Is{f99+p6)`fdOjqV6kD#JGi+&J*P7<@&p~{`gK-d_; z|DppW767|tH@-d4^m>|}qL(g@J>Td^|7ZJn0n>B6@q7ntV9&(CB)2IffC0tPc{-4Y_M;c%LE&+%Wg#fPWW{ zKI`445V-ud=6?F>F?HHU2}RXXSi`H2>1UG4%Gxv(h%GSZ3^L({+;t|u6QYBFD?3V; zNzw0%Za8tUT#Cpx+lrG3_#u=4bn!h6fGq$W%OA)RiZI{}GxZSS5fV#GM=C{|vot>O z^Qqn6t5eBz$*zxu#PMzHD`S#(In~VXKbIt{EQ}d@vmEdC&Vs8TebPuhdn7$<#Asr} z1Qq!ry{Ui;4RY1P${)m^yAsTaPd|&Gjp?)VRXmO}xvWPd;P3!EirYwq3&tTVpC}P> ziQBJ*$OPB|&xS|$ditG$kwW}}qiC@U{?~H(uL_EXYO{#l;=N1M`PLO%d$8(7RBy$- zbse(|=SNU-KpkY*jqWjl0{;l;`q$pi?1bVs8Lkg=y1tuA=Up96A=C7E>kC;u^GoDV2lAL+TUxDjPzIOwTDb1H!< z+{7F+{}t^vVeipt?rqoOFOY{Qf+S&`RCkWKJtF99wg!{ZLK59dR z8f&mwZ7N*Do@!h4S?mvNLyDG_@#vb&38|+?R0d}P?l6=OxHcxg(u!D5VairFRDpp% zy$}cXpBOq4*%tLl*{3wUwkmPD+5&tBxA-CFPH|6SI_m%01C;U_1tU00< z<(=hW#WAk5OaX+62CoiEvUL9;Xd+WL=`Z*vU&D$2Nj>D+0nl6Lk2Usr0;Hr_o(9-&5+VFQ7>1aYT{ZrY1!fU_*$F^IkPW2%@Bl=8OiJks@K? zxUkt_B=@62lacUVRUZpXX`7@C7*QO;l@hOA-AKL$>N^rb&}`SuQ^0h_NO5$u^UPyk zoB1IKqxQybX?@O>a+;vbQIuQ&a@us9fx*~MB34=MIQ9&)#SkY>z@Py@DU?YwB;De7 zVd^W1rB^TAfx8#iT=0Ns{tIHOjFPnkG@4?@!R#Sx%7#qU1|Jh)A*5R&22;pAks!B@ zWf{?hD7dG(vS0$Ss*3gTQohCMVg@sWq7=tQic{`}rE#Wlk(U7rTkRmjt5R6D507N| z2mjZUGF8d_F+>ZgMl}I%+d;x`XR`=-@yDQxRoAt2wC_Y`-03cVbbquk$*0V)g2| zGN3tiBKL>g<&DNOAL)vW)}u??} z##|p>vsm9vDEs(GK@iZy%Z1W0DYbt2NP807v`7-GjI0IOg4#7H=2Ek=9M7e=<-N)# zh>7YgJ8=?DL)_}6D_XYsE2u=xOhzG@ajyT5ASqrsJb-!O08lh?{D$oV4OY0QK;pOB zF$kfR%)#=k(=^CfII(70G`KuKTHKV#;?#O-P*qw+?gv}L#|GE_f5Ep{Z#44-|0hf% zkIDCRT*NrkS<2L;dpTpj{bHLAzc~##Wo_q9a^_w z`@C@cJmR8O10R?->jYJ|_Jk^BQ*v|fgQ%m5Uk3rL_?(ds2ys|$(Wh9y1wQgcH{n8m z=nxJYjusyg*wVOjcQ&Fzo?of{)-$3jpkL&VkSh`czU}w8RG`Ci2PVv_Tpon`SZ8M_ zr{Sk#nSvkY7&cah?c!lK*%IHZA?a^^afLaS>Z~8DIl9VRF77*V;jlM_L=kAoiQKTc zwvr98*i=t0LShb|z>YKwN+}oRzIY>n0Cn`fmNxV>0q$VISr*0+`E0#ioZS zce>Q~d27+zER62k?@7)xQaK&xgZOt$@K9kA_++yIBJP%NZ>5D?-j^ z5SvRA&o6B~LgyhE)%)@x2Qgpg zD8piu2Kuu}m_D2`o4i_n_PalbkIc@il&6>gNcJ%~6y~{1^zr8nG<;5&hj3rt>au22 zy=Oi3B@ zVGHZ!(aY#;jJ5ng*uk6;bMk1WhP)FWlPlv3i>hI$dZTR_2xH2LE3aCiW)Y954A`_zzA&>luMqZ8#4^g#Pt%#1X z$(Y|mr3}@V;f-gMbXPw4MSg6U0;~@P`P#5>aZKIpS=yxW&Q_{7q+Ol1hT+2j)BkWQ zzv~Q7?#mObLv6?yLaE0aUhiYHvLd6jC@(lksJ;y5>I~pM4~QH0dYoc~tuzx(dWC>U za@y*89`|L-fIfT(!Pa&@PS4?jIJAOwO)Px8r;^988(4CWM*T74{^Yb2nJ@yJ$DV2$ z;>L55xs1uNMsFU~5&nu6ChFAD>Umu7X>`v8QK_xI3wCb;C&-lQUVs>?``;~tL7SZ7 zrC90kV-~qYYB-glX_&GSh!V2F*aM}MO9Fm{MO5eHS=-4_Z}dSjH)+wzfqMA1_2Qq*(k@luO>n5Fsauv10O&$4MeQ#mqm zA9_}`vWVR0(ryI0%^>tAeLNJVP*UuJd;Vj1Y4YSU6`y&eV+qhDU3q4QW#ut?<>k7a z92)9FCT@Mzgy*SKCkTeM;k$toFFASx>Ht)8N)>agf=;AIf*J?K+;Y^WsS$^eYNhpH z*K^UE8YwZ`-xmNh(!6--RPtCU#ABt!c$Cx%2AdNO$X_v-sAChufVkg61*091_vEO8 zk!SIqN|_>4_>Hhs-k#!A%!AzKvwa#HJVV^3K)=5SkMC-a9?PCtdXIJd zd2-1=r*2KC;GtgRZUmy;`GbDlgLDs9H%)kk;ETI0FQqFs8au60y*@>L>Y!ACqT|$R`u84zDoLBG=F01Pue->$#eIOGvB^vQl z>lfmsFB8;$rtZ=1_2T8LiKk^|SP}+oq36IzNv50%QRqeWhbM`2LxHJQV9F_(ZQcEe zmJjj~F!qg=td{+4%bz|V!1j$buvPNNODVwG|B%mDo3uHz5IZ5Y%`?9W?U5EG_cn5BzRg1K)glJ3U!jm>iES1vkg$^=FUaT~yL$-WCr8HMX-Hu- zrSm0Q*k@U%;l?6LuzTjzWPIWNh}vax(nl~?BJ=ZmMy4789)Y~wJ_e?&86c1b--eh5 zAI@EaTB;w`MjhCR6&Y;QPpKB0QC45f%MnQ9iy52Tj^7UC+$IsNHdj*X0t*#0Pj~6_ z?Yso$i8wV=%&6Rpk+y;bd6$)&Wt!%CQ*s{6`(uzclM=9V>Ts3cbPuEB7Zl#CaV|=Z zgg2QGy_<(p?BfLHabf5{25z~;Q4(m$S?BE5n={j6KNkWC!e6ta{`=>9f3g8od$yzK zk|0!RFeaICs`BX!d1yXUUZJuUsKT%(%791Nd@joxI&UWW-t))?ixy8{Mx;ZU{}y41 zuih<6EuJp<$?JF0{huR`?TG_7dM$kzRh1dg8uxHdWo#K9GO75|Cu<97Rfs9nM!;%v zAS-nn{#DQ;$7Im2T;?)wYsepQ4VA0VP)?Ubw)K@SUjI!mZlo6`;al4I#V>Nl#xVOv z96KrEC6s&DnCq<#7sE{Z#xN+@^K76`Q?fwExiCM#q+>6|aMq$%h%!^{uXl~%ZdhBf z2&cx3?OPF3^EH#khovguELK-CrKkL6#0V=?r$&3X>8jnTc`rOIJ2vv!w0p4k@1BhO zJ?0kRJS9hb==V-m0OaP8NHPHtMres+Eg=;4q^O%LmaC?_=YCL&hYE5noQh|H5JROG zb8MV4KDiG7Zx^{>TeA|k4#gwkq({~Fir$6qgdF#dJU$U?Yobq zUU4m~tYJx+uARQnJ7Gfv6vIAJ!Hu#NvgYf=e6dF$gqgSoWh_T)&Rsg!1D{IbpJs9t z#H4&;$Go@=XmR4`rmm}pjj^a38G)K;SLU3%!QsIfK3ofkncR+bRN~Cf7<)NGk38Hk z-&y`o(Vtyg`&-6k#1mS6-I6?Ib=8dq-A6oZxCa?vZ_sQ0C*lgO z!LX!}^*cqK^uH~Pt;9(UMsm9=KD)gIOCdojvY(;yPc99hX87~TBQ84Ya}(E)krgkZN~1GWid)82Bdn2&?gIHk4}iw{WS2J$-V9W-Jls z^B(iHAhA;7MNILdMDP&(f_tw#-A-gREt>z^2@SNRij-YOFf&OR+1ii@E}5|^{|8IPo}|zB&9wWnr}9qDcn?SM?|7X)hRVJdl36`wvTdJ`icu7G zKWUzv5f$wq`U+DqtD_X6iVI~AQOMVPWAnUnT7C)p#+3L(U>2%sNVTi95?{$}`BdRa zE;YV36kxI+)P@v1&4{ct46#NPvT-9vPnP|{h)uc9gRNBb9dRBxzqsC%6evO&HRh-l ziAg3mjMu_cjE%4%11eDU>nXQdRlhC95j6(4&%|x5kY2=HQ7H8UDKRN4X*Y9TJ0+En zDF&Ch-1T9lzQ+8x!+_~BH#5k)2h@ zm{}te4-y^;>o51-%r?fJ;tCPhI`=nk#<(f?*3r=nrVq_0dHf&~Nh@~$MM1E)@S zM<3bs#}>lAHkWW0B`B49bcUnvCQN2FcpoM~_Sh}Q9~^2#1x3MgujJcPjr8n8oY2j{ z_xgDoPGG#Rg_|y~7!1nso5-8VXm0;m281x;(t>_SiG57zQx*1vdzMYOo%p7Ed>(vP zRay#*^piG(q0&{#!`l(1%?Lv-V{IPaPme~fHPmstY0dlBlgH;i(Tzq{=tFn|V1Om= zUhH|Fpt@j!;Ch}YHXx4ifwi2EQ`X0uKhVLoI$db$EVwPP(vTAE!yDqV({AUsv9Z(C zIg~Vx;|i6xo&QXMRNX;vJ!S2Nj-y?nRfnso-LeD#?HMpbyPqFQ+nr-F!}TNR7~Ym) z-^v91JiE)x>RqDux3NF`w-CuE@|+U31rDo1FNl-xeFmL;O!^6wQjxTvq!Mo9r;7@|cJ&5#A|LEr{Syld2C@R+y zB#RVWl4aWF*mYt|N8cuMWkb8Zl(7i$6^@+Z%981S?_ZeGR1gkCyfVi!6}^_z7e>~f zaVX1VERLr_)@JRcFr&sQ{6y9I z*tf`nauZg*+Mp|m-A99o zy8pc7-F9|>JFCHMmZ8qfHxhV@xO0n*E=(-qR7)oF!BviE21TW}gj4l1Bf^Rr<|=z~ ztjcs*=)pcHn6Gd^d#V{9SV~3pijCQnjoKCdxV-77%X(l(B1yoH-WNNDhlCw~mqyW-L1$7Q1O$hu#0~8qW>tKN7cgVOT8WsDs|I zAOU5meFuHjLY&jCt+~Y$DB*mIo+IIKv+kP@4a_R9Ug{p=+?>ygNlJ-#Wc214TcXHnfNLM8Ml(Ar+4nv*s#hOD-!7-bX*BYAnhOrPIyD zX6seTUL#O5QJ%=2qi6x+@oHtetZNAyQ(n8R2E+wNYrbv2sptKAP`t4>mKWfBW*>qT zPZeiFFowMwk@ldzvLL-@ZvOp6-{+LnD zAA{X9Nq#gZ!ux%^aFk0Ljvf#n1swfz5Thn*gERGk4C?K|8ntmkfi%M)}Y(-k0(CW zZ14r?7bL%6^}11nA3za}aQi}rZq7!Lm%x^OF*ta)=c}<$NNSJ$t7=2q| z-aBv{{(zkpQ8)pxVLV4#oi|rd{*Q`UWZrZEvG~>T>Lp<7FWW@w_t^;f!Gk7)8jio$i)arZ%3_{1Y~7> zqfN_kP_$3X)T~aZT~JcEmtXLr9Im%tj;TYt@t3eGuG+ ze*58_<}{wU(u9j)v)u~5)8R$MjMiO?Az#opHXW95z9+pN?VesB`A+4Gf;2PqYq7(_ z^dIXt-Na>?`SGo6%LFtjS=uvrP9?GPgYf+VJ+MKYP@A<XBPp2!-cP_^}4!G6jf+t#Zouz*UCFo=Ri>p+@d0yLagbUi12@grC zQ=+7DsS3+$MNxbmpj{J)<*xv!o#{PI+>ANihy;*&ZIh^yZ?#>6Bzj&jZtHHv?ZA(; zh~0m2PBNHTR-)h75znPtdi2&l*$|g;#}eA{eaos?tGuUh#N}HlSDSTzaVmeu$vUkH zB?iis3kCrE>bk|-ybx}8ZYvx(vGJHW4hjIq1H@Et}n&2NRpKb)DRU|y{ zzTK`mOV2KeM_IN zM^Js+?`+t|XEnY~ZSa5JQ1rYY|2rf4Allo;Ic2xed4!H)n62Nh?G)}Ln56k&XFxV8 zGJ`?fOa^%k4k95W6lia73VFV7xC8^Pn06a8xPA49T*w3ObSij=TN~g;58Y(0yLlvb zap1w1%OtJLArwN1kB?uEb_z)IpvnxkU!ut2_ueG5r8L)^H0fqcO{uWhPLx0Wlco)I z`V=?kFE}+)_Ti_Cb8aP==JUL}T7gKVMzTKRyk4u^Z#0+z%U{Y|G;P;kGSrUrq*x#a>XwX@@#^_4<(yESd@u>F}Xv<;pXoB`Q9jw@>`jmqy1m!84- z9lZq(mt4klK~032^B3oLEC#HKsy^2y4koYt?a(o!v;0$`X3dvJg5!dBa8A8ig>aQ3 zZ(1rYeu!rnKJWuA)gzINP>DmEPg-s9@hURM1#Ok`-lY;5>o~rlF$E3rJ0=t}MW2H`{^K2M)H4ve(Sr8p=uNPPS0I2h zC<4Ux+oeLu=_kJZPhH6%&aY43eg+jM?RerH9qvEf(j|pfb-X?0M_BjpW&X_N`@_QV|UEP0Wm6Lh*UJglgbYR7*24{{myw#DB&(LNd* zew>``@UxXqyEP*SLGN3-?_sIlcoz>`__7sc&{pQv!2)07Kr@o-x_IY`lQMQ zq6(Z!3`9u5<-;zhUxcIpoKWyKfkPvp03U32Sv-7>nh9>roXXOk&$c_I$zzv=2Nnto zNAFas%2lK=-V}_tr<@*@b2UXxjP2qQrQ%1u9&39ejw+^1{F6V7^Uf0Pfg8ovTJXtbIQ`7la$>=byfCCEU$Re4S+7erpDtEO6l21B2C!@ux8 zXS+wS0CWca&hOtgk8bSy90jTFTV!&qKFgzlDZhWzVETw9g7&;kbC2!t;VMzhf;%zi zVICIxC-1Kf*fT*h243M5Dw8IEW8Q4(rsyd)hC8eaB$u3a5n+1PsJ?n($dVcdUUZ;} zc^z1P;2G_lD*2T^c-eF6nnsmW*OQ5Udf84*T~=WJY`&ZFdAWJSWs}0hbM2Diks!!} z7Nd@&O#AWkD=k5j$K-luSgpnqIw1d$Z-hQFNL3oYLC*ul!67gF>tc-fkm=B_FPl-` zR`<(WyQk>G)BBFU`*}c?YzcU4Q0XO(@{-`MYcem@UaOVf#NGXD!wOn1cOpJ(Z z=iLxofa)xG<+@wi%^5hnt~!F)^*`wAFHf)`rgNmXxCw_H>Si+r?WIKa6f*N ztM2vR-94yEANfG+VZVzLDIvW_iZpudtiedi9s%+ugl0{^cf?eXI(`>4QgV+}D$1Lt zg@eXVOV?PTzUP%hZ_rMQX!}@GIEvN`_g+F0#_X(P5Nm}je;)0|^7zn&gI_{Jt7rXn z29RxqGZRp_%r@5Mm2bNAUFA@`Xm&vk+D$E{0d0xxIvG0JEy5gF>)F@oyO^BEF;-dn z=CnJ>8T|lruHGfag7y4pRsl);@zySP4hCq6P1v?G0v9;3)XQT;)m!?~-`brim-Ol& zEi!6r1s`@{!0fHdcdD%FpCf3l<2HPB8h1>25C0hS|@w`l{I)o%$2S#jV)bX9+3g`1*VZTx`lZw3i z*ob?5k2&^s;c2paoUvELot>eej;Fl0IV84{yM)u{VOG0m-$O@H=;NQiA3hPXC+wCP zdR`LlUv!a|8l$eZfd7(F`+2@IUiIj;f|a|4(-i_9``#Z_+27eA_nMoxV=C}ppC@R~ zR(nCvVfJniE%WIsBv2(QOX&Qe(@V%8#7M1LUQb*Nb2gfmj!7Pk4qK)KTbU)MF_?^( z6Ooq>8?Qu{O2)AIuI!x6{;OX{SNoL10(4CM@p070>Y}6B&5HnDI_S}-XWH&kMa1po z_Ss)-XC^8#vNmTXi5yDOk4`s^zmdH~oQ~AFcVf+jHl-cc;D*oo)d1PPD#yE=ak5WB z`!5rsC^|;bVIe{@Fjq6{Z2=w2H`}fqt40h7nk)y`@2=j243ne-bSaabDz0a%QBiUa z4&48m*l~UC39LKfdZFtJGeHZS;DxT+7z0_93RsM+<+ejNQd?#Zvs8xw>sbt|?_^dZ z6c{kc^8DmEj>rCC=OcsunsXNGoi3mcxw@gQUt!Pv_T5sg81PIj!@8I{oUWPrY_Qw#@-1sinZk#TOi_7NN2J3{#2%{#h+1$DFq<>}xi&X1faG)D=` zPF{P1G!|5%r6I0YolPC5@l<9OeOb%VLz$tZyfdwKdP)^)xiR6n=ke%KUUJBazGfwD zx9KfaDSO4^miW2j>rOfSwh18_*i?klyRz~Z<4LgAj&_byFA(3v#YZzxi4_>Df|U-F z_W>qi2;MMRHW@8hvQ#FSrV#5|xlD}Q7v{&wuV_43unf5V;duoPytMs&oT+co2_~7* zqW|xAfM(7666L7;aG&Ip(svkjC$ZanWGu|aH%*2z1hPtj&T+2 zIQE%PviOx5?2JxG zCqp-ueq<#_4#yTgTbT>tF{+Wn8ReTu`ed?(TQEfS?$F}>WTyI{28BHmWVey{dAuIC!bHu#M={ibt+o+osAvjxFJnjMhF z-igIfdpc#7jKanaql4QLb{H^{sdHt6o^&EE7WBbR*7Vu01B~Ie{P+F}+F6Z_Sc!T* zu1v^pb`*j8`4YRCGoBkP*+GB4 zDr=W;m@ZEP8btYv`vJO%GV7*&QmsG^&sKB=Q25~`b}<7QYgSCtNEyBynI;~ z;jJQj<4b9?g^)F83&@sbV}uzm24!KPj*MZ_%D&JEJ59Uz<-2XJu5hh)%@+W3t7#ib z~0$PYEUJF+yI>G*LiL~DK4{e37P04*YRXoW(Mm|2$mX!K^E z_6fW69~g|}HL?2?^7bbd!%VnGf~v=0V9 zxqp;JV<>YEhp((lP9Vw%S_HD-!zrTuG_rbui&Ew>wLIqE^`!YOW)d%rC`)z}<{K`q ze2@sYNnuyd=z$E!`>xV}%2Nr0tKR>0W$cx?P>eif*&6-Gk-OZF74c5UYD2{Ag`OYo zRXI)u_eiciCg{f!guynM|Ml1lI&+`_U|J&XODqDRVR3MSll%KJY-$kR9mAdDa{BVd zPV0!d6=RZZ53*@}&$BLGsAo9vKul@`k!`FDJGa>bxa^S*Uz2%+l_&qpN zgQ9Q06VHg54OdWXzjm2^raP!CcP;@UF3MqMQJ?BSdh~mt8&?Bz@6Wg1dqKvof2@12 zo@dsD9+Cd!^!;EZ$+vK}5o-|s3%@CJLFs+$^5nJkMQ!5yjKgl8lTc>ar0V{DrpXXE z;MMzR+oaL)Ttuo&16*MD8=`mEy)5dm^lbfh772OTH+ehQQ0aa-QB`N?+Jroj+uLdI z9*vmmX5dxx4ZhL?KseNjA(50jxDH1lyRAtv4qrTyUVM(7tWHOQ4&lme{ zn#XBZJ3HWY8C55}b~9(2ozsxRrQDx$3OwitAphZxf(YxpnJQ-0xV&~x4{L}_!`o!v z+YDqAsTDvcVV+x-5b*11kB4>$T zX$*HolJKvg36lDkMhTm0{-dwLfe9u7)+nX5fwX;jaFCJQ1qA{mJ+_y00G^{7<%dSI z*kW2mB#BxjgJ-Sw6Rjj7DZ`@>VZNj?2fAz4PPS?w8kxLEpX z>cK2ueo~Rhb$=TW7hs-BOxQE=jzELF)l4K^%t)P|`o0QD!UC(U9MLIRiLdFcLvrU^FOR;=dX2#^9^ZPbCZ)mQQ`>lFgPN;|=DTX(#4#)u9RGR*?1O zT_I<8Rncw`ijsmIds&)d@bKPUa~b3dX7Vm4_s)0dzdb^2lVUktD&$IUczCJc6n z+8=iIx#4G|D-fGiTY>3-KjQ5(-=eruv!kFO3A`KyKbt?CKRWF}7d7!`Gzr{{fjS<0 z4PxH^@x!mN2wo9hW8*5KyYsbk?snpiq6)i0zLA@_38BQfOSSa?Crs=UOZrsW+sL>p zDl+qg+FG}QE}gW&r}U!5+Ic>7r~DXAPLxp&HH@0w{kL=aI8UOy0jG!SZG%{-iP)nq zON*F9)wXi_s8Az(rbL%zSCGxRuG2Kp^0YzhdZ?syJg|1xp@)T-(a$Ygy(96R(PytV7`U)8kYe?c13xBd3U9_fLm>`zQ zRKaGtz577OnWz?1N?IFz-qt9l=Ohg?NkSWn2Gx22qVYsm_=^}##N1a7DY{tlKAKktlhD<@WBR^#R5C!|dWY7UAt zLZkVi9uP+nMam6cZ&zF;yWKqB6P5^>KFaYPXy_)1{`EeKu} z_zP{K@Cgk9HKIdMCQ48`%;+R?uxOeJCA?R>b!7C`?>6dZn(QzQ2@sW)mm}aZX29f_ z0rxwM`B59tWlZk6Bl7ch^Xp3yQeebPQpU_As$@QUA~G>A)oB@s5&}^Mr&h*p9Yj7{ z+Z(J7QRRl&iM9H?w`POJiwkFe7bF?{b2hC?0BibtY z=0ylSG3VwJh9E1LB_FvKl_J-?%5_MamcQxG56gb8!SkiS>=zb1tJ4t)EoVi*4l`&_ zl}nrXZ57jI9ZWUS6{ZmJC}ksZ4)A}ne)X4t@2KUghW-G@*s9}?Kfe8@oA2O@U$~lu z3zsu{_CmHk{S=;8X7K6F(A|ZI@WlQuc3Ih4XYR8XW|9UYSCvK&%kwg7e>ada*e1sZEy70z7f6Iq1vATMhd&{Gw9@|FXI_!?O;{W1C{_XSE#@9Xi=oi-Q z+jp^qgx_;=KO0x2egBboR93wCy{aRK)BCmmqa1&PYd`+(wyoQD{QS-*pFV}+=*Y~a zd}h4p2msrS^~93t*E+E{qBV(3BdL}SEZb(RfA8dFAP7jecH+hpRX|^H=NHk_0%B!Z zq?+4Ew{KJaNF| z+V`~qOx2OdG@aJi(R-yGkE1M`WOF-#XN+3R{>rpg_N^)YX5oFeSA{fKw6yqGj!XFw*??c2jX&clgrU|jqw73OG$ zeWfB7Hxuu@CR#4q``&640j*}To;HL)M+CHb5qa)JWXacn)XHn4Ks5^JgNTcM1w`0& zs){NCoW03eZS{B6g8yU$+&dAuab-qaGC+ISY={1c+F{&)i_$c04+lu_pJDYq+TR?# z;8wP6q2}7**AP0j3V<2#KQmr9GQDyE4bP`&8%-)gvQ-i^G7*){3IqC+HC2CV&H-gw zV8oD(+s!q~H)LhPkaeSxYXcEd&X0VKiWWNRpQq~d(DF5SKEU%Af$u)=;5qQ;RdweA z1ZFc>R=B=ZO}d0ihQJFSS41LoBlkls;T<$=ZMX)wMAomq9=I9U@jJl5C5j=anD-hJ2&X)Mb=aGszPmgCO5 z=%f?fPnFB;{qap~$_;VKn_kDd&4XmJX)L9%tZ3z5VLLYa`}%qK{zoYm#u&-<3vh4b z)7Jv*-@n_+q_g37TOeA%nvCGC%!fn-9R!q1B?@+){6v~d-gf!hzI5$pR`>58_|Y>t z75$(*#n7(O=Wp9KmTg!3jHVcCROUTaq`e^#Z(zZ^7Fk8Y*o<~#9hm!}hRnD@oc@lSvE-XmXs<@+8i#8Y>9L2zGNrs>gznU+WI z+p&HoB5`K?;R%35rs;i|_MWEDEG~iL#z{7{qJx0K=y3H!u9)%3VE`u48ryM6wRe+j zYC%~J<%uzhqr-o);9mri*(NN;{|t^yBKx>S_%1@D&fFRoSIyj9;) z+g86_qFxWrlmv)ObgMGh2oP6wdU9*4=JALVeq|!xY$o#Q$kGsr%d2PDCDT;;qmzG$ zI5Ah&qeg>UUFRsNQTaSO@;Y7PJy14e#Au{_Vbp;9kqBu~h*S{08X!@dh7deU&|lpz z=G@Q`a9>LR)NUVLXMLt90A}R>GvfsU{?y3+B|-#Nt|?xPQDx;ld(FR#4Y^p)@573m zzvG4gh#T|LROCFVRnho0z~73jN7StJz?OjLA3R_Byn|=0V?>E?F`Ff@!X$&B1QJYM zCbc%L4bjamlh!&@g$<4&Z;k>!2<(^jtDiP1rF~}UGvsfDWDOz;jWRH-map1(*u^i~ zIyDINdwoB6btcnnEu4QOw(a8kK5o+GRTupg_uX|DKmOgFT>8WiF)PR2dJBFkO?Ufj zv}n9iIgDx69z(gkG&X0f*$oNnvnQU2yKXHz%gu~=0~AZ)+|G3z0%H(wJ2sZG80;Tn z?c?j|+q0jBWQsKp-6C2CTO(dA6#~E?9UpRY!#SE;TR;?A36@l1_*8XXq>Wi%5crhJ z1;$24=$+NmaQQp_=41c*$xr;o5YdOZ+w}pHcHi@G9A_%CHfc&Q-MLLFm1WVwqhGsW z(<2m%h3Aw6u(V{d4{RoI;$VlTcud)RF@F!||Mg#RXIl&E{`--wTOF&TW6|1DY0<~~ z`rfkN_r8)3=%>Tjl{QOnt zENb4eWzp_J;qAW|8Rf?P+qRzBJ@=N!M{_?Jm>5}Wj_a9w>&$pz34nMi+nVj@`75^} zg${gT4QbM?ohYU7iUqXq*MQMO1AixxAk*4KBGXts=@HH7{yl%fn>#ebO*XaF2mh8u zJ~v1_mBn^kCWiKg+eImwdgfM*5c4C02gv_LAfC#Yn{DMWjins&qeD-asv=E2^U|?o z`p3OT9Y0%H7RjbIoOlAiR0vxQ)MWR%4t(0?9-%BZeq7*rzo}i{+E}>g|IfNuR6Z}w zi0Tp{1*$2`qsJnw>^FhLjO4#Pl=kCS%>2R$p4e6Mzp(1hwBWyL@)!L(q5z0Ke?UtB z_1nNBB$gaBMm?Mdswr*ZW&$G>7lBEmKQ%@2U-`fB3J^6J0VxVm3MJ;;QZhLw6#`Lc zWqSETkHG2_FpH2k?EncvRX|AzWdR>WT#3>s(TMhyvO*?6p_QoS`~;;7-ys7(|4$`{ z5&id!L1)yM&v*rR=4NWwamROSs_Lg~fO=|fnf4U!% zPGy&8GEM*Id0x7^YYy2=GrozX%8m8Y);WiN|H8+ym9SvZQ9QVRCzfT=({T)$R3m{7 z1B|w9-^Bcd3mDGz@voo$Dr?tm;P$V4k;eNUAn?nen}`)P8=rcB?w&a;S-ybz3+FSE z8)4h}&FtK6tLFwO2-b5>?fW`kV>V(O=?Zf zbwW$2uvcG;6*}_!9)(hYZQFKm&MVJYcKR82Ty@9ocV2b4w-OPt>Jb2vNE~o7sY9OQ znsmC6C5w)I?S@T{HWZ8bw;99R=K%EB3D=34zb#_Q;YX!MdEI5N=c>yuWBmOeL~Y&x zwuJ%~#T;&!H`lphtA6i;v)%VzvTzv>uDyR?!;USt`{6P4tHWrQ7;F09J4rZm@r~jj zt{gs*znO3S?0QbP=~oo*x(lUXemcn+nGF9>mie#UHhlRpC!T)!%0-L4r?zj}x@p4` zn>X&*vIh9NX$_niGvoOs01}zTD^snVSm;_i=q;)0M!WpU#1DiMN7G6=jfxjoxawoR(JjpAsI ziQ#?#8asP&6G=pLL=|x0HnJUe%8Vi?m&0hr{KS0#sh0L^s-^wLo~6g05zjOdYeDGOl(UB*|x5e26t>efB>ikh0*`VyMl(oxZNSuUdyWEp(P>} z)4v9U_Ryp*%(<_|`i1`{4iEh68eo4gF8~hO5^x~cuQm9q^@!8e+nGcrUPSx+s}mSy z)}>bRuO`y~RHao$RVQzPnH-7IN=YTtS0R=*%!B#R@RTw*1!#_~TP-%IytneEh3w(d_@x#BoSZ3cJYRm`D1AZjySARe)Usbo) zJP3j>&F(!S?Km;C4yxc^YoEXmD2(JtnDit!nIV&IVqjno>o+_?B9Ub7>_y}!MmYJD z6S)5R@1ZP3WBPCifCE6V7Qy#@Y$t>oW8*opndU>y z2~2x}CY{c5>{J)n{JGbDi38_SfWWNms`sl_}h11&M9+yDUJ?P@)Wx!I#A-$oyu`X-z?r6%kXda z-bKs8MeaYo^<9gHn>!ajxp(Jzpa10hPTIR|<11$F2s7h(B>*hPO}dHX-z73lN`e48 z79-oDDfDPYe70OXDNhu>?*mPGNNTPkLi3 zWsz>}q?{jTVrYO=OB=Cdit&Mcj1Pv2w3gllc%>r4d$xl>x~+?3Q){@rlwy2vAI3=N zfY0|zg^*YQ{9=L9#2ATeQ>ky`6SrpCyRt34NBn%&QOBRIEQ@4g3)#+DVJTz(Zc5`L zD5V(PzlYX2M=-j759zk9Fs%S-srP%P1A?!5tF}r-)nY0v>F_uc9Xj~qgg0ohfo4H6 z27GG+`gQ0Hppzmb5bXNkUmrs9ucx~FPuns;jRD|+5rI?jztj}}BOo8Dj{Q-dTU4a? zKT_$Rl>D1@P?mX}Rc-ZDD)PO`5<~}K+164@X-lwtCHN9{7FZ}81P4V-AcLr~QsRM1 z0gZwbmEfb4BO>uIdq69t?276jK#?t%b?b%img3qczZPt{b$X)bxjQ#h9oB^)GT~>M zoNjv>!XPRQj`rPCN7irGO!ley4yi)~P$T`Vt%%oqP7cwMFy)|op{nVX?};b@)M0Fg zDcfVF@;@_PAn;F})}d&tP(w|>f3r!k=!~RmWNTW5+&UycE%{ezQHq|&z5)ANOeAN& zS+7Kd5G+N$rxa=N@#~`65IkQv1w4xif&SruXCZuy$++2P0G{p0wee8k`F!AqvVQdk z4*<_1x1;#5VYVyI2a{?ABs4Uv^u|xgSFtEM7I)lrA1`~!QDhwZ`8=djz$L&OS-<+t zYWb?#3iHKnZQW;C$|gTCMl7C~Y;{!@oo&6w@m{bji(R|7;N^2%^Ea1sMk3DeuW#l{ z!#=+r86eX#n@2X}7@x=!1d3x`auWX&Pw>m!Fjus zjkXk8!d8GnA4SOZ!#i9`d-mmPP~#*L5Onj0Cs6u9g6*ynQ^l->Tx!mSi%ce4DX zSFmr#CO+ESg?H<%jNiY8U*4JIaR&IcdoMvcLHi!~bGL<+)>)h zMthL1Ajzv@4whBqZ`@P(+<#riJMX-KnC??yRmmP zcFoCF`l#c{3`vt=@8!o$#oj_h(>{MG;{*GqAQ#aA@pL1NU9-aqwM_cq3W1!9RdBsFW^BM;JvUX%G*vB(w#Nn_m8mAX#JZ zXSR@tsrDyDNP@OG7=S-0_&WE9|3 zB0w9D0BzI&l{i4l%=biz5|mgzN~^G4K$L(s2>>8CqKJjnf8~NC1xm&gFohy3P%_4V zjzC-~l%N5-5*KWVwpt5C8Q*g26@!1s^Cr?V5UomWcYGQnBlx$-Yq6JYJ(UwsH2pWy0?W$>C zxm>1LDzJTPA8&o@+uwN4-4A@XSem%w&~scJ)H|w!Ai(oH5{^TuSmY%qoy{Zn-$F}M zXPtYHO{rL<6qFh4+eb%xFSc#t*e=VL9k*cf(`#?s-@p64z;~YI{=Tw%@lmI(IO}zE zrrVkG$PRw8b`7VT_EP*iR&(2(Huu{7tUf|>&e*Vpro;icp)kBj0b@ppSR^S-8qbnPAH%I+4v^R)Gk z1y5fvb4!>R&vsacm=LC$y61ebp{Ye7g6+B>8q2m(N>Lme4grg3TIVc6SvG~STnJo@ z!C&j#MYPObP>q;VmW@}KpnuDH#`^b=YV9z#-aI(u8Dy?e2;ZPKkB1m!Ze8>d{DAh&17lViX{3OQd7W{$weanMwjSkMc-F_&6Mxclj~G> z{dEm_QC)w_C?YIG0+7HwuBPfiQG&RJOmPs2OV|NuA(8}1h0miD*ocaOxS%T)HGq^~ zR;?Fa8N}<6KQ9)*TC-@SRG^gdl~SHrD&~9nnuLJLQZe@$HUExH^Z)2$<26fd^k7LT zRZ>co%{usI3CudaXe;K?ZCOKX=$c;t7xnL$8GrI5z;s~StBL-^NORXR8R;d5An2%3 z5Y>8Y!Vp3XG}W{oG@AESyh-ZKzkY`>P#5269m?X%UI>hRKcWDr z>EMxCgWKmFJXe2_$kKM2|e}RS0yt%AAHXc8=8T9o)3KV8t%J)4I`st-1w{8 zcw)ycMgxtw4!F+qX%2lM@UqDNV~*>tRKV-s`VMB#UqbhsrD%O1v0_;kgG2qqQVlHG zxB-9fUQ{9h3S6;hRt-G0{t@!yV&cM)a3WW)5$3a<^TD)jQV_R$2*OgM&0WUcWJAo-9X}c%A`qVdb z%$j{H`RcDo-|++;fV=%^@=tDIFxJGcW{q;*xtHO4Wf~e>R=o5WR$Tlx9`LuIfaOjb zHx0oJTb6Ri{-v}gS~<17Tf^F`7gPU`8VFjOI;gT{TtTZpX1)n zanh%q#2aL))+@P%jl{5-uNv7*z<+3q&#jO1^!i@T%`80M5Sue&W<0BL zPz8XKNWQaq_QGz_M&{(iXlQJy#`%f4$+XT}L_C>cc=y(j0Mwdn=PXh!?TFS>4DUwz zc9I_+K-o6FS0>ri3QAEJ89pfR7lcHniBxktxjoy_<}>YB4DI`MFFIbiOg{8EwT*$YTy8mD*!jPBoERa?~KMKT>d2r#^RE1*L1LxfmExDOT(Tor7V|3r11I-&vn}O}R6i0Jp+PYD;bHJBQSN$(4$snp-!fJE859LlOYX4&(il22p~t zl@ePd>_=5qmjH2$GoV7SP5z*xAT3ZvNgyG65Rw2&2ZHiLV?q>)mi&au9sTm{{ZHII zS8DhDbLj=}e1qDV9`$Fv-DbxBCqve+?gfqqP8N}4M9VDEIwM|S`T0V*G%}I*hR4TB zBjfx0@xnU4Sh`QV;9=3SckyRF^FkaemCAo2BKNOV07T{g%Z=e(*1X59@f4{i`PX%P zE-D@$c|#%$8@d0W`FqIxn={L3jR!!f#v4RW=bNEco}HJ+e)CgA{<-LeY-YIiS$#-qFgF6GCssx-f;#0cI_wG|HR`Q zk!-+HkSoS0lpSU@b@1D5Yx(lk|48@jCD>LY$yA0?af~HPkKedu^P_Ltzi;QtVe&R` z=X3F6^7+x7=~UC>Z7toWkBknGOlDym+?Y!&7Dp*DZ2-~5ME8lNR4$UwkFj${KNntf z(W`&-!yDVRl==@!It0P6h^||t3W9*)!9g4=#@?M<7#tWTmMmywI*$=?ZGMR=9J>B!Ij`rD!u32*~8yMJoNlQ!n{hK$g`+m7x z`kpyA4_ffd>O}A2@7zhz5(3*o97V=&=idGv3Ob+=Ot9kEGx7a0sZ@%y&OII5wkdcX z_c%Wyj>ArSjP@gsHh#hR89y{Eno>6*vw zH+_TK^dKFZe3iucWFG(QnY-7_cuolb%d)fCj-J1dCo@V1J_?1URM?MR=|LBvb?yY6RfzdK&A@Nk^0H^!G?VCanYgu^3JgMe(Y&T})|6_HW?ZX>SL#ByLdlz;r z&cL>fpcL88Sy;AH?VYbTVht%`4N3C3K}z{?0U=&HPUZ6m&+TYFR3+!tNi`i_lT1lr4?vFkuoK2M?qjD|8bB;5mWt_Pyrx_ z5846AiqH_EkZZz!#au2vAQN=|zbFn9?3F#V-J+qy$jaZPt_fS4@}H0S1Ah zh)DjWY6KXzY?@wwseH1D1vIjMrA$93dNK*Xh(ZOim53Xr09eLbL0qLQlS!`w!pD_> zZQkY}SYg`%E{Y^#9P1SUD7)e`Xxt11Ncv^fHs|O$BTw8-DGK;sEGmGRF*9by?*;l@ z;EllLzzGH0go7|XI4$qmvmyN3^c;tS}&BAIGpcd3Y-ZU8iU#*=uyBHP+chstr+ z9lyr1Ze~{Z5m;E1ig^m9v3O7K{C)fP?fl_$eX@+_bKlIQnqSu1+~W=n_tDickFn9w z&<{YVkOZhG0z{*=U|E9J0f8SdF)>cxp8cG9#>$SVdo0-ooAyRwV<%j_?RUg8t!N#POk}z9w(IHp*-v=497VHA zv3q=o{~3B5w`Uglv2o5m_cD9ky4zp&&i8!uW#7K`lOJg*H{|*y-=C*&jdA9$9UU!J zvPZ?@h)k-DyQG7MN8=QAnQnx|E%PXN9!D%*V6YDC?b}V4PEbm~?I(Azc=1a}#FLDS z>}Fj{D?4ufE$vqFvVNWav^oEy!%yZ)EdAmyn6P~Om`k(vd3^su^8Fo10H?(>48~nt zFQBER84+Q4Y=lf+5Xa(yB@MiE_HwiccDj=f{MCDTbZnR%-~9X;o1T2+a^OE^?q)ON zIU@kuDaJl=vS^Eigq9Fs0hBYkK;hNfcmI0Z{4v zpHu==$$%;S{>r%fV~BuAv1dvWK;=1IApu081uP2@N0crpvBbR41 z;XKodND^G5!Z1cvA?;9!E)bNjz*36VlF!fyX9W8mxZRdR9RvU00H*`}2cCUdbEeWh zGyX8({{-MmMn-B)cRx^;jdB%A#X}cs$3i(amSZV3Y`gwMVR=yUmW$Sx0b4g*b=CKQ z>z7=8^~UFk1keU->quOsUjwu&7hlInr}r5WpesTIsDt=j)T#iArqVwcsrZlAX%iYZ zgh1ZB$BU$Y=)*G36dpq4u)uS;$keL6$l-xs+h*r*j_ZGRGq>D&7yEYiVHb+T49G2t zU}aMryv^#03P+TD3D65!-1$IY?lh&+7rKLDqIYM&%3#H0b6P48GdwRsE67tQBQ zuRI;QWIPkKKoDR9vre4I=+iw;6PVAy^b`gn;B*Dufk`9hx2@f_o$ z+ByHc^WS#&-S>UV_lpNRu%7aRve@-Jj)l^ zbhO)?e(XzFb6bvEpWHzrmY|>uoRVweBIhV#u?ZG54)Cg!=44sQ+jp*`A=AR{9UJIL zcJsT>f1OV!&gnj3nbXzWZ7=!io((Vm@{^BVQYRsyE2|Q=31G&-=K9jZct`iL^88bH z=#HCMao-?E-9MW(XD&jtFq|7@=e9jOa{YIC8@=47cF^8?9*z|%Ge`FA;X`kDJCD8k zFSzb=ADrF4Y3-YV|EjG;I?73F*9qI8QN)!^9|7NO+(dl;IB(hTQtm%ZQ?Q{>D6wxK z$Iq_&cUFzHvc}p;Q^)a?%S952B>BD_yz$4M=af@k!TDeKw*9MzANu+auKUc%ecLv_ zTZihSnK3hdF9N{Hbj-RUmPjhC{jkcM%uvdY;U*d;!M%y=z!=aao7<`p9#oC*6vKPA zQ!Y$Qnx_OFw(Am4WkdOY#Qk4%KrEG^v1>L?EFPMcm>ZhyxOk-^1Dl>e2f-o1e|}_$ z!dUL$egB3K5E06SF-rMSEZd@R;vQI=nCzOPSC1Cd4D3D^oS#2 zUQyPV|7AiVK%8(1rvqUepkz#6dY$=KRPJ8`@J)~ZLBW2tWkuHk{xvND)b>su7y~G^ z&i|;%iJ6(KO=$^GCgP7t2(Tl{fCkeV zFb3>3uWvVP0`@`7E~EcP2!HRMD+&w=`zdlEdq3{=N~;MuI6 zr6w!=(fj6MfPd}StX{L0fBDo`@OSTLK`O=KR2r4eOs(pQuw%_S{`&7f!Ohoy^{?M6N^8h_Vh$(NWNuPV$%MpM`TU4=Amntg(R3h6J6<7IE^5Fu}0o z`RvV&uzOb@+js2d-bdHbKa@jzK8|hEm`Tyxn5D5POJgcYPg^sK=Je8(Ngr%iB$U)I z0*MHX*%o}?k0f3%grdXO_ z&YXqu1xuFB`S7Q&-EiLN3#+}XZ+g=e@nkkVXWQ0IC){)QP4h~Hi6en|K(kV6*tXr9 zgTVW|h#XAz?v?%0M}~9zPHJ!IO=)8cS(uo>bzKt4Bn095Xo7GaY*}biobtR9qa!)? z?B36+GtXL?PJL=wZlt*WAm6vu^UIQmCsk#;`CgeLmL0>9$F9N)0`C6rYq>&}GrMh! zl}EZHm(0UDVi73C(j%8}%ahyaoVNsd`f1L!7m#Wg5+ zaSlf>S;!kMemj5m>Nj)UwIAnO|9w5LX?YuKc5LU){yx-W>$$kl&4}&s*nFF_o4Y8L z3XD#SuwZN-uekNwEIVNpE57u7e(=-pfBS~-T-#dq%Ab#3KWr=q(~VgcpU;)<L_O8!{pGu7?r<~X_aXq4WgXevGxr!B_|>=> zI~K3_16x#P09q7aNN=BM}*tNLuBB(VJxj~BKBP5&Jh$WJT zYz=VZ4LI=z^0^_#`uB$5KL{eJ2M|wXNVj)aZz{1=ChYZ&Y|l!fLVjeJ(S5t7H@z|7 ze`0X|^z8v!(==-yiFB6zo7dr&O9uu2%CgAq*^cGL2|N$maVh7=&_QrO?^mS)yx{C_ zsGgIrQ-!ihB6J9nK$LA}Dn4QLKM9gR$Oy!YIv@sOo9cf?kOq@?G;PIR>UlODkO-h_ z9@htcPA!=*#c+?BmVkPgOGh46HO2rDa-iz^Z%Bg(5g=+(xfzlIR<$;d3K{wEIX$%{ zKxq|Xc!elYDy-xO3hjY~h_aQck}H+A1xp~Ipa9B6#6eLCdkb(w6$Tj9K;@VdqaZ** z%jlTOn!eXRMv$)#0^HRh0DZj}Jaw2r|4>AN9LD1ZlPgE#`>5kuK0^-7j9Ty?GobvE z!$|>}dVf%$Y-}s^xUt-j1h8F)l511SjT7Wc=s+uwq{&%78@P4DRabp@$<tsjT5h@Xdl~#dL z<>qmy^U{FlcO4WwSJwEMwk_Hgk8Iq^`>y&Fi?z_)l&w0}=sJLRK`O-^yZaa%9j7;) zd`4fTj(g<|^59Jg;EO2Q!mXsLuKy@#Z*6|&egz_-8KT+1^BS|vYii__W0sqQ1VMs; zg6C84d`g~25Cqstk&MO2#@u?}8BM&&dA@hh;*sOHq|=Sn%d(|l&iti(Ys(sbX>VXp zevH=US;X7~>1>8XB0+9=m_mMnzW(hrH@EWf&wZ__w|DlhHg4QF@To6-Z|AMQ`suFH zM80=--?l}K`FQ5&<-NS+&0k~o>|Wa2+Yy0v>o;)CHJ>^8iN_y(wTPU>!K=Raj!g{z zAd_x>N6c+dm4d|R$Ow+(;JPuiGKDY+EC0%}(4z5upWNs$`}_BETxxOZqaXXo3GaK~ z`wm6`Y$%rUI+JR)KnQ$~B}bpYvK6Nih_LzL-}3U|7J3>zmh}`#WV6uNg!_tD;NN#2 zrC6NV3s#b!80Uh~cG9lLadXCKnUz8H%);vEz)qz&31Q>fy)4;Q;4EhaOXiM{Xh{=f zn^7$-(B96a7hKTtvwQA26ZmOl{W`m?EP-e~Eq8O$8{f%sK?^^;{>xna=kLHPm$>Z8 zf8nWfUdxw1ekDi!*5)jC5iPMr?2e7|AMq!6-T5D(T=H>aaejNp|MI=wSrps^o#hc` zZT}rdyy9$5dD)p)f9;DO8(aUxgWsr}aW={hFJ79@IS+8orT@gb`+mb)|MESYa_*mT z>Y12WA7|Vfa^GvvB?bW z<>)QznAMeCIdg}b8NW9HkZ$chuc5Kc(m|!4JgjiXGmVHoJR)DTFgDN^wgyDNsZth! zS0>%o2^jf*sYpDXrFqu8&}78`{GlD2nHcV;W5Kd8X2pR2+A4Sm)2pw=7!cE@E`wZi-_g^_37Jw9Q`Kc5h3h_WJxFQPaQZA=v{B}!~1#865j;-SP6!Bq+eQ7)KfH-(F+ zI7(syafR|ge83izqe9n((63Rd^g$pZqLfMp0j=jLNCBdPp{0CD4$e|t+kpmpgXGnqnZ^3`u$Wz~Ns05(tZxbQ-C+^}} z7M5*e#T=}dgK}(2Lu2?81#}Qpj>MSBjDPuttFHP6aP^X_uO57s-!0}mkDBv&rt)5? z_?IGH0F~!*rurW@>*LgM|JOC!q@E%uh@=bzCIujE5(d^s%>KM-S`w^CTfiaD!9#*) zOFcsmbTd~`ifh0AeNOb!w8k44Dizu9kAof1o`_@B+~Gz%kDi5d>1t`Lg6=wF+I^~y zf93aO&COd;>SNgIWmr}UMPxoE&(%#JOcubeu6t4`k}(%z?%{mGy^+87mdeE`^S#=_ zQ|;wi3uH4b9JS&UCi0^!@I!S*CY!~wEGEV$m>3_WuYVhO!@2 z>9Y2-60!DoCK4}s)?6EM0jz*Z=V4tUC4hm+s%c z`@Pc`&rOyqbZ|{>r2m4>_Bq|r>2q#)n3mQy1aJuF`dWn^0KTyj&gF*KwrvwnuIsgz zELnP19eI0nZ1KF}0MLa9&23#QTX`y8xr}4k3~gA;O6N$rQiG&p8tr+gT#n**zl(Fk z5j^_jW~^8v-MJ#O{S=G325D`zk!&NXsfqZT-h>JQI{x=3KV&3o^{R~D=OAA4sWCr4T5|M&CM(Ra_COftDc2m}a+1OkWE9_bQg8kUG<0Vdav%vDjw^-3cFsoA}XsOC`bgk&k#srGP$q0XL@G(tmAope^hl( zO;68cf}psYdZk}IsqX5k>aOGYe7>LW=X2)!Xv%irIu&|{dRTXG3rmha4p&MvV4rv* z&YgGSn>MCtE;w?RJ2L&D1b|4jw!bd8$xK}Al;;v}?Krf&ObC?gQp^of%neQfry7lE z+d&S!5EOHRWaoB~Zkro`b}1?5hUnk11v3^W+1!R<#~IqwJz04m1lso*8wwostCf4V zTx>XKiSElxz5UX#h^5lO-QICfzK8NWM*9vBOQwluTaa?LV<$~K+f1gt6Cn-C`B5r` zF`Pmkw^GJVrf8nO1g#Z?p+54%{k894I)gsLvdMIGGQ4LyzVA&1|5_srlh(yYQ5fnE ze*9wnUtgtMfAZ-g_NXi1-d>QR|m{Q^g?QKoK`+%2iz541;0zX`N z%{9-|zP*|T5R1t06LpWOEI%2h0d$67-K@J#)F%K$!G1kKPyzM=JL|jvstEv5AAo4p z-#L`~|1$^AhyTs>j*Zi^Z66=)JQg7YR?J4EQ#>%Zk6-QI%-ocPEhk8TEsn$I{_bs< zzM3s~p1RsoF1k-|yz_FTJQpe60-PJFDa_}|DWZVy*T#WT?ktxI%5`1CFeHXy(lNJ_ zp8fk~Xgw8pp2NZ3J!qxqoVS>`9e8Jr=0@r3-;1v+eEgH2;>vgaHMjlpRzCE>_w)77 zeU6vhcQ0d4{+@qt>!5Z1QS=OY?Ct46$iRF%`g0GC6zMtG&oRfJBl_>U;jO?mA+a>w zw4+cQ{aT?k_VH9AYg8})zVDMCA0yk;jOPb@ng|uYzETL+p4#c;yM8;y&57d*wTKYR@ zJFPD|kEP2`;HYokff9nFtvPJ}`J;TZ`CoX)-+YjKejL|zIRBzovi7V?8R#3JR4S7n zAH(xpT*qbW?bq?mB}*v-(y|cgG@_{qZ_gfxS(HoTO;K2p6t?`evz3ms&S6n{F4^DQ z$`#qweC4B`M0h?gz3fel=7!M-F1+}4oN?yM7#Bw~W1b`6YtaMxF@%4G9S}W{i`Vh@)0^g}n9?y{< z>Th_V^c{y(%bd^*#V6A-55u%-`RoU`JVkkIB#ax>B(g0G?d_f-lXuHS#)tYRV%4Sq zc?0Du^7%0;r9xO~4c=?V6U1V1Y&(dO(Gk-e<-3%|a#-;M@pKbbEP;?B=!^1a-^M7U zB%W?U`96btx>24NDyjpZ7f)wtUAT<=@BsOtUUcYbFq5x=G%XA}#>l}vp_$^;)C4=8 zB-z@*(C%$0rDg^GrD4#weG~C?aLw}F3eBAhQNG8>{#`dWS|(cgEfz!uXbt84)q1^G z?futUCj=xy(?5e+Mm>p8Dr(MT{5N?FHeIj3ng#e*b&7$ywgMdi{aVj}+omf5OyI>3 zSw#{8BGrB(v3^1YY5<`k)&FS4KWqmOQ9l4(H3}3$$j|~xn;IktDYVua5fegJ&?2S< zmB5BjSmA)!*JvdW4k9R*Xb9#1T7ys`a4|H4FH~rt$#Zqvd9To8cl{&)jL&uTzX8yv z!Ju6<0PE3*Y%p)S_s<0UwEg2(8Q+xd*sXMk7njB3V>@AX1!FeEZ& zVM~cLjWBLkQW81b@e&X1-px_%?R2D4IKD4|qk(S&=WMi4g_=9*_>T2%$;Oha<1 zI+Z|AxZX@Cmsa6*P)&3Gs|dg^*17suKl4CnEEom<(a1li&h$^srvLxB2hRf6_3(TZ zI4EkLY*UtaD#hhZCvbf8Tt2&TJ&T%bq!2tYI?8L`{#w?pIT6a0nZWb+4!P#lFD?VO z1GnqV>z4uNgl!^cg}w}bN;2Rf;I|W1bF~B5IyySIs;Q}+_kHYBjE=h8e)IR(yK`&9 zB9IW!y?rBRFImKz)hBWD<4-W^yI9I#U|>IH%;3lW{Rrw$6OQ=x>dV4ZJB4&m1ix zg|Sk(Oe|3$X2DJ@mct+N(>iQd+leUy|UW zGcRH3Esvnb%a{ffmEzLmG2HWm-|)fBkMqG#eG}V`Q7jaxl#2Mii&F`LM?6uzZ7scAe)hXqbklwK(jc!Yyf=9^ zKmEj)`Ot4}<-H&I0?pYL`uqEFD@9zVj3Ff=p5&$*KFJi7<_=u?7%v}tN?#g4@S=_25kOQCV0#I)linwqg< ziH80M4KKJ#Q5qetG4(>q$!Nkf>D#^u<#~q${u4JPAEz)rt(4y|tziET>*_;tp zrK?6wajmr-k^vLrI8B}OzrK%OO+ysuS%UxiXh2nK{b+=hw4MzKQ0@H}p}*cl3xEz= z>I0xJCKLgp-u*w)`(JGVsLJu9uh;&Mn2-}_iN*{a{6x5eafJ3lR@g;rUkeff91vP- z?FewgwgoF}{Wn5PC`E7px#1_qd|$L=y7a+n1>m`80cg;-KT~zS9^lKvBmnB)R}b{3 zQviq=4}zINfBiwGW&XP@4xSszTw_~2Od0fTc1+>KLL2xvj+aF zXh+I0PAqVAv0^qx%)+#S`_4+t~ma9DxODJMSL5uc*%tFNCOdIM|=TLC(NmhhbSBi9PT<#&g~QX%5(KOT|@ zqapCG{++K|uOCS%h@QvK=sbGXz_Zr0H)YARWf>}#XtCqCj!QhHaeR-ZtsPv}bu72` zZDd>u*1h5-y!Y*|n+g0Ao^y8}*8Z$ow=+~y{HNZ$ej#uH@Ot1Bf=Z_RBc398;5}m1 zy6E-P2fnlaz|PM!W!uE|t=sWc4CTA^1v8{HaGeTc<0C9vynyRI_E9nqJ;=NJ7xUIf zwsXIkr%)c_Lm#}B_W8%KV{eYpkwGfsBb@N-U!&bJd;KK8$sb_doTc>k^fITj4dn-i zjPI*Ss#T>FJqLO*OtWfWZO>vK`%2})SM!D3wb^v5S#50)Kz@82v(-W(@I4VeZ@&_(GFU1O*S@^`THe3kjtX+Hn|KyO!U4{W?0kUcg;_-K@#m zc*Q(cE{C=(a2$-57H+%ajxumZbi=akbJOQv@i)wUau=!1`%snzD10r+`-&IEmU7(F zgM9oo7qaHB-pPy4xr}%sfn6wKnhry`9CzRFS#HXhER5OsMnHHHiy>?qq=a%AH=QOw zG7?ou=*Rs7`W2UagtqPjB)SixV-`wFMtqMeQpYp?*a%;`^u>q^&f&s~Urk$PE{SxS zk+A|d{qXaAwbIA&=?uOI3rL{?pmO7lsNrD@rLdDp<9Vd0IWqk@5&-c`%S)wc;#JC1 zK z1|3eh&=CAfX;2u?VGs54!J`-PlC|fOGEK_9htd=E)Sz{)9YaWj6pU9K9_Z=i2TyNd zL&>9g;c}AcY>+Y#0&UMJGuD4FAObQ?Sn*`dtnZM6q-mz|crHM2@-Xgmhww2_zK2uH z&sy>?LgJ+`JV2tU4UMK!7^7>|DcH#jJzE}sN-H&^aZ^R;nAWriL|oVMdr)W{N-%X? z2QL4i@gK1e@P}rAm|;D<&W(REKB?URqwf9ahKhihy#mxBOaOHi{mhsIFtxo~M|%IO zHh>}o>l0CcB2qinI_mx}CrE&*5JYtqbTXU97BEj5jf@a&|tW_)d++BC^(c5pwSBjUPZ~{(1vda+k{c`Ko zSHE%PHP<|Sm|Im%04RpXryTQ#L3gYV&umtBA?l@A4;|F#Z1AMXC_1FqMb*Z&uAY-k*L5wHemevUy+ z3AjqETK8Ck*S=ON7v8XE@3z%H|L^NCEt5*668KbwCq}7U;K0FMTy*KH*t4^n#kNE0 z+RsrbmvB^q)lNHiIs1@?Bo<54H&_gk37T6lVsUx~2QgZk*irB)CJYjZ6nl2=CpSEf zMv+X$=~_6SIdj`<1+{_xLCR%^{@&eatw(`V3 zAwYPy7h!uMXp~aqa^qsoypA)0FU+uxM~dbA-ee-Pd^9%@noDX-A=s|-luv4AWaADp zW|r1Ofp2GWda zw!0qWq>_yq%^{SJC}!FA@|W|CPkri};kjF#-f__dZ+T(DRm{I@Bc5#qqg4bld@d

    $ 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%0DxD_{VYG+f0?szS)DJk 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 kPx# literal 0 HcmV?d00001 diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt new file mode 100644 index 000000000..440b9bb2c --- /dev/null +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt @@ -0,0 +1,64 @@ +package com.esotericsoftware.spine + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.ui.Modifier +import com.esotericsoftware.spine.ui.theme.SpineAndroidExamplesTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.viewinterop.AndroidView +import com.esotericsoftware.spine.android.SpineView + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + AppContent() + } + } +} + +@Composable +fun AppContent() { + SpineAndroidExamplesTheme { + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + Box { + BackgroundImage() + SpineViewComposable() + } + } + } +} + +@Composable +fun SpineViewComposable(modifier: Modifier = Modifier.fillMaxSize()) { + val context = LocalContext.current + AndroidView( + factory = { ctx -> + SpineView(ctx).apply { + } + }, + modifier = modifier + ) +} + +@Composable +fun BackgroundImage() { + val image: Painter = painterResource(id = com.esotericsoftware.spine.R.drawable.img) // Replace with your image resource + Image( + painter = image, + contentDescription = null, + modifier = Modifier.fillMaxSize() + ) +} diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Color.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Color.kt new file mode 100644 index 000000000..9e8e25d6c --- /dev/null +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package com.esotericsoftware.spine.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Theme.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Theme.kt new file mode 100644 index 000000000..a40d4c82c --- /dev/null +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Theme.kt @@ -0,0 +1,70 @@ +package com.esotericsoftware.spine.ui.theme + +import android.app.Activity +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalView +import androidx.core.view.WindowCompat + +private val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +private val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun SpineAndroidExamplesTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + val view = LocalView.current + if (!view.isInEditMode) { + SideEffect { + val window = (view.context as Activity).window + window.statusBarColor = colorScheme.primary.toArgb() + WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme + } + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Type.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Type.kt new file mode 100644 index 000000000..26034fc05 --- /dev/null +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package com.esotericsoftware.spine.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) \ No newline at end of file diff --git a/spine-android/app/src/main/res/drawable/ic_launcher_background.xml b/spine-android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 000000000..07d5da9cb --- /dev/null +++ b/spine-android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spine-android/app/src/main/res/drawable/ic_launcher_foreground.xml b/spine-android/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 000000000..2b068d114 --- /dev/null +++ b/spine-android/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/spine-android/app/src/main/res/drawable/img.png b/spine-android/app/src/main/res/drawable/img.png new file mode 100644 index 0000000000000000000000000000000000000000..1033d1ed8eed2885b03ebb98bb46ff940010e92b GIT binary patch literal 652621 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 (t7KW&Ye>uM?UsSP`Z*mJ?(k+0<0 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≶1S3S5>j(fC1jyQoKy&*F*m+7II$RDp$y%sB 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≪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%0AeGJ#!*s+p2EMKrAryKyIkL<3aekJYR=rfM=m>w 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 COs-GM3i{kCi2xJZErCL6;l8gkR1e`75!k#Lk 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 A5&!@I literal 0 HcmV?d00001 diff --git a/spine-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/spine-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..6f3b755bf --- /dev/null +++ b/spine-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/spine-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/spine-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 000000000..6f3b755bf --- /dev/null +++ b/spine-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/spine-android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/spine-android/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..c209e78ecd372343283f4157dcfd918ec5165bb3 GIT binary patch literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG literal 0 HcmV?d00001 diff --git a/spine-android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/spine-android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9 GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/spine-android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/spine-android/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..4f0f1d64e58ba64d180ce43ee13bf9a17835fbca GIT binary patch literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

    C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

    FJ$wK}0tWNB{uH;AM~i literal 0 HcmV?d00001 diff --git a/spine-android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/spine-android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..948a3070fe34c611c42c0d3ad3013a0dce358be0 GIT binary patch literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? literal 0 HcmV?d00001 diff --git a/spine-android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/spine-android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f GIT binary patch literal 3918 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} 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

    UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s literal 0 HcmV?d00001 diff --git a/spine-android/app/src/main/res/values/colors.xml b/spine-android/app/src/main/res/values/colors.xml new file mode 100644 index 000000000..f8c6127d3 --- /dev/null +++ b/spine-android/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/spine-android/app/src/main/res/values/strings.xml b/spine-android/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..4c4059fd2 --- /dev/null +++ b/spine-android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Spine Android Examples + \ No newline at end of file diff --git a/spine-android/app/src/main/res/values/themes.xml b/spine-android/app/src/main/res/values/themes.xml new file mode 100644 index 000000000..bbe8ed79b --- /dev/null +++ b/spine-android/app/src/main/res/values/themes.xml @@ -0,0 +1,5 @@ + + + + + + + +

    Animation State Events

    +

    Open the console in the developer tools to view events logs.

    + + + + + + \ No newline at end of file diff --git a/spine-ts/spine-canvaskit/example/assets/mix-and-match-pro.skel b/spine-ts/spine-canvaskit/example/assets/mix-and-match-pro.skel new file mode 100644 index 0000000000000000000000000000000000000000..afe6d4738131a62223089f0004bbc0bad83606f1 GIT binary patch literal 259912 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
    }l^IMY6QYYcyYFSje_ahf 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 literal 0 HcmV?d00001 diff --git a/spine-ts/spine-canvaskit/example/assets/mix-and-match.atlas b/spine-ts/spine-canvaskit/example/assets/mix-and-match.atlas new file mode 100644 index 000000000..b8047722c --- /dev/null +++ b/spine-ts/spine-canvaskit/example/assets/mix-and-match.atlas @@ -0,0 +1,358 @@ +mix-and-match.png + size: 1024, 512 + filter: Linear, Linear + scale: 0.5 +base-head + bounds: 118, 70, 95, 73 +boy/arm-front + bounds: 831, 311, 36, 115 + rotate: 90 +boy/backpack + bounds: 249, 357, 119, 153 +boy/backpack-pocket + bounds: 628, 193, 34, 62 + rotate: 90 +boy/backpack-strap-front + bounds: 330, 263, 38, 88 + rotate: 90 +boy/backpack-up + bounds: 482, 171, 21, 70 +boy/body + bounds: 845, 413, 97, 132 + rotate: 90 +boy/boot-ribbon-front + bounds: 234, 304, 9, 11 +boy/collar + bounds: 471, 243, 73, 29 + rotate: 90 +boy/ear + bounds: 991, 352, 19, 23 + rotate: 90 +boy/eye-back-low-eyelid + bounds: 66, 72, 17, 6 +boy/eye-back-pupil + bounds: 694, 279, 8, 9 + rotate: 90 +boy/eye-back-up-eyelid + bounds: 460, 101, 23, 5 + rotate: 90 +boy/eye-back-up-eyelid-back + bounds: 979, 414, 19, 10 + rotate: 90 +boy/eye-front-low-eyelid + bounds: 1015, 203, 22, 7 + rotate: 90 +boy/eye-front-pupil + bounds: 309, 50, 9, 9 +boy/eye-front-up-eyelid + bounds: 991, 373, 31, 6 +boy/eye-front-up-eyelid-back + bounds: 107, 76, 26, 9 + rotate: 90 +boy/eye-iris-back + bounds: 810, 260, 17, 17 +boy/eye-iris-front + bounds: 902, 230, 18, 18 +boy/eye-white-back + bounds: 599, 179, 20, 12 +boy/eye-white-front + bounds: 544, 183, 27, 13 +boy/eyebrow-back + bounds: 1002, 225, 20, 11 + rotate: 90 +boy/eyebrow-front + bounds: 975, 234, 25, 11 +boy/hair-back + bounds: 629, 289, 122, 81 + rotate: 90 +boy/hair-bangs + bounds: 505, 180, 70, 37 + rotate: 90 +boy/hair-side + bounds: 979, 435, 25, 43 + rotate: 90 +boy/hand-backfingers + bounds: 858, 183, 19, 21 +boy/hand-front-fingers + bounds: 879, 183, 19, 21 +boy/hat + bounds: 218, 121, 93, 56 +boy/leg-front + bounds: 85, 104, 31, 158 +boy/mouth-close + bounds: 467, 100, 21, 5 +girl-blue-cape/mouth-close + bounds: 467, 100, 21, 5 +girl-spring-dress/mouth-close + bounds: 467, 100, 21, 5 +girl/mouth-close + bounds: 467, 100, 21, 5 +boy/mouth-smile + bounds: 1015, 258, 29, 7 + rotate: 90 +boy/nose + bounds: 323, 79, 17, 10 +boy/pompom + bounds: 979, 462, 48, 43 + rotate: 90 +boy/zip + bounds: 922, 231, 14, 23 + rotate: 90 +girl-blue-cape/back-eyebrow + bounds: 527, 106, 18, 12 + rotate: 90 +girl-blue-cape/body-dress + bounds: 2, 264, 109, 246 +girl-blue-cape/body-ribbon + bounds: 576, 193, 50, 38 +girl-blue-cape/cape-back + bounds: 113, 317, 134, 193 +girl-blue-cape/cape-back-up + bounds: 504, 305, 123, 106 +girl-blue-cape/cape-ribbon + bounds: 396, 118, 50, 18 + rotate: 90 +girl-blue-cape/cape-shoulder-back + bounds: 420, 243, 49, 59 +girl-blue-cape/cape-shoulder-front + bounds: 2, 2, 62, 76 +girl-blue-cape/cape-up-front + bounds: 118, 145, 98, 117 +girl-blue-cape/ear + bounds: 837, 181, 19, 23 +girl-spring-dress/ear + bounds: 837, 181, 19, 23 +girl/ear + bounds: 837, 181, 19, 23 +girl-blue-cape/eye-back-low-eyelid + bounds: 810, 252, 17, 6 +girl-spring-dress/eye-back-low-eyelid + bounds: 810, 252, 17, 6 +girl/eye-back-low-eyelid + bounds: 810, 252, 17, 6 +girl-blue-cape/eye-back-pupil + bounds: 309, 40, 8, 9 + rotate: 90 +girl-spring-dress/eye-back-pupil + bounds: 309, 40, 8, 9 + rotate: 90 +girl/eye-back-pupil + bounds: 309, 40, 8, 9 + rotate: 90 +girl-blue-cape/eye-back-up-eyelid + bounds: 573, 179, 24, 12 +girl-spring-dress/eye-back-up-eyelid + bounds: 573, 179, 24, 12 +girl/eye-back-up-eyelid + bounds: 573, 179, 24, 12 +girl-blue-cape/eye-back-up-eyelid-back + bounds: 380, 105, 17, 11 + rotate: 90 +girl-spring-dress/eye-back-up-eyelid-back + bounds: 380, 105, 17, 11 + rotate: 90 +girl/eye-back-up-eyelid-back + bounds: 380, 105, 17, 11 + rotate: 90 +girl-blue-cape/eye-front-low-eyelid + bounds: 1016, 353, 18, 6 + rotate: 90 +girl-spring-dress/eye-front-low-eyelid + bounds: 1016, 353, 18, 6 + rotate: 90 +girl/eye-front-low-eyelid + bounds: 1016, 353, 18, 6 + rotate: 90 +girl-blue-cape/eye-front-pupil + bounds: 363, 94, 9, 9 +girl-spring-dress/eye-front-pupil + bounds: 363, 94, 9, 9 +girl/eye-front-pupil + bounds: 363, 94, 9, 9 +girl-blue-cape/eye-front-up-eyelid + bounds: 679, 413, 30, 14 + rotate: 90 +girl-spring-dress/eye-front-up-eyelid + bounds: 679, 413, 30, 14 + rotate: 90 +girl/eye-front-up-eyelid + bounds: 679, 413, 30, 14 + rotate: 90 +girl-blue-cape/eye-front-up-eyelid-back + bounds: 947, 234, 26, 11 +girl-spring-dress/eye-front-up-eyelid-back + bounds: 947, 234, 26, 11 +girl/eye-front-up-eyelid-back + bounds: 947, 234, 26, 11 +girl-blue-cape/eye-iris-back + bounds: 323, 105, 17, 17 +girl-blue-cape/eye-iris-front + bounds: 467, 107, 18, 18 +girl-blue-cape/eye-white-back + bounds: 621, 175, 20, 16 +girl-spring-dress/eye-white-back + bounds: 621, 175, 20, 16 +girl-blue-cape/eye-white-front + bounds: 643, 175, 20, 16 +girl-spring-dress/eye-white-front + bounds: 643, 175, 20, 16 +girl/eye-white-front + bounds: 643, 175, 20, 16 +girl-blue-cape/front-eyebrow + bounds: 309, 101, 18, 12 + rotate: 90 +girl-blue-cape/hair-back + bounds: 712, 317, 117, 98 +girl-blue-cape/hair-bangs + bounds: 313, 170, 91, 40 + rotate: 90 +girl-blue-cape/hair-head-side-back + bounds: 544, 198, 30, 52 +girl-blue-cape/hair-head-side-front + bounds: 466, 127, 41, 42 +girl-blue-cape/hair-side + bounds: 175, 2, 36, 71 + rotate: 90 +girl-blue-cape/hand-front-fingers + bounds: 902, 207, 19, 21 +girl-spring-dress/hand-front-fingers + bounds: 902, 207, 19, 21 +girl-blue-cape/leg-front + bounds: 519, 413, 30, 158 + rotate: 90 +girl-blue-cape/mouth-smile + bounds: 1015, 227, 29, 7 + rotate: 90 +girl-spring-dress/mouth-smile + bounds: 1015, 227, 29, 7 + rotate: 90 +girl/mouth-smile + bounds: 1015, 227, 29, 7 + rotate: 90 +girl-blue-cape/nose + bounds: 342, 82, 11, 7 +girl-spring-dress/nose + bounds: 342, 82, 11, 7 +girl/nose + bounds: 342, 82, 11, 7 +girl-blue-cape/sleeve-back + bounds: 416, 95, 42, 29 +girl-blue-cape/sleeve-front + bounds: 249, 303, 52, 119 + rotate: 90 +girl-spring-dress/arm-front + bounds: 829, 292, 17, 111 + rotate: 90 +girl-spring-dress/back-eyebrow + bounds: 309, 81, 18, 12 + rotate: 90 +girl-spring-dress/body-up + bounds: 66, 2, 64, 66 +girl-spring-dress/cloak-down + bounds: 758, 227, 50, 50 +girl-spring-dress/cloak-up + bounds: 628, 229, 64, 58 +girl-spring-dress/eye-iris-back + bounds: 342, 105, 17, 17 +girl-spring-dress/eye-iris-front + bounds: 487, 107, 18, 18 +girl-spring-dress/front-eyebrow + bounds: 323, 91, 18, 12 +girl-spring-dress/hair-back + bounds: 370, 417, 147, 93 +girl-spring-dress/hair-bangs + bounds: 829, 250, 91, 40 +girl-spring-dress/hair-head-side-back + bounds: 509, 126, 30, 52 +girl-spring-dress/hair-head-side-front + bounds: 816, 206, 41, 42 +girl-spring-dress/hair-side + bounds: 248, 2, 36, 71 + rotate: 90 +girl-spring-dress/leg-front + bounds: 831, 381, 30, 158 + rotate: 90 +girl-spring-dress/neck + bounds: 85, 70, 20, 32 +girl-spring-dress/shoulder-ribbon + bounds: 175, 44, 36, 24 +girl-spring-dress/skirt + bounds: 2, 80, 182, 81 + rotate: 90 +girl-spring-dress/underskirt + bounds: 519, 445, 175, 65 +girl/arm-front + bounds: 712, 279, 36, 115 + rotate: 90 +girl/back-eyebrow + bounds: 309, 61, 18, 12 + rotate: 90 +girl/bag-base + bounds: 694, 219, 62, 58 +girl/bag-strap-front + bounds: 370, 304, 12, 96 + rotate: 90 +girl/bag-top + bounds: 765, 175, 49, 50 +girl/body + bounds: 370, 318, 97, 132 + rotate: 90 +girl/boot-ribbon-front + bounds: 323, 64, 13, 13 +girl/eye-iris-back + bounds: 361, 105, 17, 17 +girl/eye-iris-front + bounds: 507, 106, 18, 18 +girl/eye-white-back + bounds: 665, 175, 20, 16 +girl/front-eyebrow + bounds: 343, 91, 18, 12 +girl/hair-back + bounds: 696, 417, 147, 93 +girl/hair-bangs + bounds: 922, 247, 91, 40 +girl/hair-flap-down-front + bounds: 415, 171, 70, 65 + rotate: 90 +girl/hair-head-side-back + bounds: 991, 381, 30, 52 +girl/hair-head-side-front + bounds: 859, 206, 41, 42 +girl/hair-patch + bounds: 132, 2, 66, 41 + rotate: 90 +girl/hair-side + bounds: 692, 181, 36, 71 + rotate: 90 +girl/hair-strand-back-1 + bounds: 948, 289, 58, 74 + rotate: 90 +girl/hair-strand-back-2 + bounds: 355, 170, 91, 58 + rotate: 90 +girl/hair-strand-back-3 + bounds: 215, 40, 92, 79 +girl/hair-strand-front-1 + bounds: 234, 263, 38, 94 + rotate: 90 +girl/hair-strand-front-2 + bounds: 576, 233, 70, 50 + rotate: 90 +girl/hair-strand-front-3 + bounds: 313, 124, 44, 81 + rotate: 90 +girl/hand-front-fingers + bounds: 923, 208, 19, 21 +girl/hat + bounds: 218, 179, 93, 82 +girl/leg-front + bounds: 831, 349, 30, 158 + rotate: 90 +girl/pompom + bounds: 416, 126, 48, 43 +girl/scarf + bounds: 113, 264, 119, 51 +girl/scarf-back + bounds: 502, 252, 72, 51 +girl/zip + bounds: 816, 179, 19, 25 diff --git a/spine-ts/spine-canvaskit/example/assets/mix-and-match.png b/spine-ts/spine-canvaskit/example/assets/mix-and-match.png new file mode 100644 index 0000000000000000000000000000000000000000..634a1e230b81d96c469c3ad7800c9a49f2849ac9 GIT binary patch literal 349518 zcmZsCcR1Vs*M1gai@isvReNhggP`^dYS(O)QdO%)VsABK6;)azXpL&CicnjNTD3}4 zRclmiZH-?(-{;fs^ZfC({R%O004S}t0+qV07Cv1 z1b|YKfAD_bZv{}G*$hxx)}g@7F6vw-@369sqd!LhhlOSzo{l4iRTTJdLKHY-{p7!D zmr*D^xf!0kAPT%=&>c_rM81SVq@=^(HZ6!&HhwH98&?gETYgCpy3>$GP;(uw7|N3x zv@yW9uD|!*K8+5!*8S3BICzj7@jaTKxBt%n?-@qT?Ju+gut-_@sRupp1!^Mo!^D^ou1T*ZFSrzq@$iE1M>2<5WjQTvyM&QAi5Ok4GZc6%e z4IgtK=83$D;BUQfTHuSc_se;&WH`oiQjBu0+bE;t@vd=pC^{yP3uV-;y@A8r zJwo44^e3PIScWQsQ2iy@-1Y(_4G)JmLMfqGS#W2IU!Yp=zY$QJ!#sjL*m#*hm?Hea z)?%9M>2;w^MpVYP?_7DBFALw?>K^qbVEW2v+>msxYIE$~<=i%ah zpReFvh%3|YPtJn!87ZP?9)XBg}0G&flmZ)%_i(`IiGm@4tE*4i6 zqL>`zl)hh>R=8F>zhf``L&QK*5Xp0Vm)OZ?Evi0jtxOw18wxhtb|!Me)MNJ2$fx+4 z_n4LBL$JC)2X=4UwFtIw$@%1kyj$mnQ(7>#EmhpvV{H!k`Dy+0 zA95Hdn_I@UVHvk(T5ocUevEhwIAIIm>kF-=`W>6tCz>71T#E!BBS@>UL%`C$h%TyU z0B5QQ$oHlPhwL=1@t>U#dH_^`pV9<4Cr8C}q7uXS9^e8x`=jMq)Qm!3p*fKl{h12i z-B1&2@w}l!ee6ekhh)F1v$SXXzBcq${=q~^rd+8YO&NwHPHX*;?{s>E>Pw+s8|7Eb zuxh4nXMTP``sZ3ha?A-(HX+yV_ib;ay!~}b5qM3&45F(AT)wkqiVxW=O?tTXqw_`_KlKH1UwVmrE%|zi(ZVuVCckh}YcZ?Dhuc8$RGOlc+KcNAwNxVH_3uIcNe9eC>?5h00L+46!*{kpM zZ2_9`;yq<$2n|@qdzD|)Bg?@TO*OEizWlRMU|ASXn=KbHoS2E3LNfmrwUY3ByGlFc zp$(=Pnqa}&3omDUUfB|9;U^XP<-AiR{tL~B71Vp?_dSPv;3JRrSJ3-mjJQ~Ru@RNz9SE;6xw9^n1J!46Ob z8uf+-cD=>Q?IUvC)1b{C@-mD^Mbd+L*erp2IaPnwtSvQtKd!k3_G6`h7H!jy z)8&hn%gVPn!dD$B%>bUJlbmNi6OY!v8#hakw#Y2G^ug#KI=O{41KWbtb8T!Ttn6A} zZ+a?fR&{eOAKuq%nM-;|ctsA9PM*KKUfR7zcdhgGErw%3QZ!H(TO8N16!N*(`O_O( zx$BfBS}Y@Vl~hzs4Rt_CqJ&_81=~;Y>+}4x@q2bV$>%x@5vwlcbCHa~rN5%d)#&#D z85R?g)HhmPq60x;G_)zO;R;lPah2Kzr=6QMwMQ9a!)tZxme zl}z!@>iHM11cc_+=*5=WlxnkLB}Y+cdHDNne8HKU{2pmC_sYZ#5kmLXUjpq3Q!9Bq zYKrWDgjOEH_2IDu8j==K6;mvUdYte4# z2Cg=?L)AHk!}B9VX?2syRRp{W3BOc^v4CP}Zw2U6w}6-%zsC9#v7=G3BQwVQS+?M% zFSDnj0gpM|ZRi<}xt4U))zKGL{&=KNOk8w>L}XN8@Z+Y;+$F(MuKc`wX0ipUObH#M zj@6PK-gb+hHm2tN6fZfnSfwW%4{f9AF8TdZs@gs%E@EG6B-a%z7JRJMKnK-u|GqT@G5UrR;rUf9i7#$a zY7F|qx>_Cmzcjk5ZbD{@(+k8sWM-vg{FF{1_LZZ|Z2ajAr_%B!3zq7xxv^lAAWgaX z)$5+%;I%GHB|q+>?cJ}JuiQ)(^QY+ORs1gR7`H3bQ-B7aMv0Ov(BHJt7NtW;a^x=} zp8ToA|Ebl%``8Niv!X67_cS?M8(c(gR>Q2NAUg?@X-hZwVpXxYv{p@7ey!%8+6jyj zu%rE&28*t4Bf2yOnkR&(aI#v5J*!-o=H9ZiKoCuxL|)1b^T;e|4xu!H@eZo>51&(`D1H?j!Xx z1U_AI)_br)nBt!?gsPisN$0wBJZRi{m5RS@N6wM!{UavIr3nOYwl}|N!(<-~KCmDD zVOcik`xL`IEjv1T<{Hv$<^P87}&{~<>bxiLLMYz$5>Mytn_Bh&3`Ku4G7b2?shi-K5>0mOb z+Gqm?rNsLoG}!nIDjMe+K5rfblJegkW|TP#_(${p1-Y-;nvQ{(0KBTa3a zCmxrG)=(oha7~r_Z>9QDqd_j=EuMYof{?ID{)MJURG=&701s4@rhdF&S`BV!Ev}r1g zpR@4GnZBs`RZJ(4lB_yHIU4w1bCa-u8^AX5pU1IeO7ve1dqGZvzZVj7Rd~D>f`d1^ z3YuwdRM6my+1=wl4vOlFa#v>qqQP`zqz+_UH3F20VBi=in5;?;sOCiz{r{%Ph>m8} zKQTm$?WB@X!B&0#RHuCE|CX+Wzle0gT(++BAu$3(SsgZZh*TR&MJSx&p4_|9Bn;07 z9o-5R_!K0bO=IO;oYX5_`K(o-FsJKEsMXisn&ewX5B09yk*JK?QYL*Tk zl-!aZ|T!SI_Xke_(LXLyVfEJe8pdCT{jxdC*YDfFy+u{?Se9~Q(0M*ywW{YtNIFW-y` z+7^b6+e~q}(g(0G**%3Li9EtdJvZ%l()O>_=HKR;3pn_ewRLodfsBSHrkC&#^9pPW zVuwbWojkMrD$6CAof?5c;wHS(*P9owES-!UgLUX)j$^PTEu9eEgsDmeuTDs;~~LKE6Zt9=3WL6m&*fE#8p^p zMO+bv^P7JYkxa;z>}39`*dc+kcu_9vx1~8Abt4F2FF)p8Cpj7qm`L~1A$YLgtC)^K zE8Lrt54tNWDlrnHp*G?SMQj~yQd+t28^_+J-uOpCQ z30fT!7>=qAVg4CTlneQ(uAOaqVz zMBwX$7Ca5VIdGc#DpRQCNTPFyy1QXK5?QV6#=wjJy)|afPpiOE|q{O^@ebr>GFbP*g_9A-ZUy)Wz_2u(+HyX1fOt3!h(X#ht9C zR)l&~syN*Go#^Ft61LjZh%d(5@ZM^k01B60dCu#GtEe;l*`)i+qg=BjZRGc#J~1Vd zaV3*(wWOIBO3ktUsew-zcq9|iC&2uX3zySV((M}==9qv7527ZWzBq?cAEH@$vB zUIVMa(cP(&WaYA}*F=bgGGA(2HFA~rmpFlCS^o3WB*M{g7vCQ!Vz2UC^Tl!{EvXNNTY04TsIYYD#=>LoNlW7I{DUZ>2%`YxX zKxtf2N_1(1an20^4X!k;7-OPP_X^D{U=(_^{jg8*n+aKj(%*i_tC{vMu@>t`eEWx2 zPYJ5ni%O=P;YZOFZL}QaLnxamiho>FllBYu`DAcMDr! zdt}c7Cy^4}?u3dONF|UDz%xD!WScxjyGx1Hieu9gX|PGwcF~p7`Aorn$aYP^T$Co_ ze-1%6E?n&Tc@|f&hEm^*Z|tOf8q|Vl5F$TJL3=+YKJr3&n%NDyvNDWhrd7cw2f|U@ zq>q-RA>q2|1X-VYy7C9Gja?*Bq9`eBl9;Mvwt3j(R<*B&sOyBN!}sa`bIiJsFFgvH zpT7{ZF12{2wWL6gOT~T-csu*ce3$Wtf*D~*Eg+h|N*w1#DeU?fkc)ZuSK5d5tX->% zo|@LmJ!gD98O;2x^S*}D^EZI>_`7f?I~l8`{*-816eM=jYgZ633luZ ze{$k9iS)MBxGA>D$McEy8-0RaTt6p_!Pr=|riFcJdQTsR%?dnbLXoQ zy5v4}$@AwSh!JqBunkVK#sBt#&GzoyAWK>PG61I_B!!?*#&La2vB^>TB8CEbS_)%i z(rUox1`3_7@}A<}zTcKMAJT`w%Z4oQ#ne_U?5dv|AK5p@Lh0_UN~|fq-;j_qAF+}` zd87eoXsUOEB4BlBYc0s~HF9~I0iMy0hl=jh51O5-o@pP_K6plso~lZ0%Wcq>V4p*DU!b zr~Y5U38N(INVZ&AaQ8M z`3{#m{mKQ$CIdm}?$U^78{_dSIafX>LItWhJ1+Une&8k7PoMWS4uA*)^mCRh?lsKW z`u10h4CwiWZ0D2I_X*EV_^2p7gU8Bsh zBKrE1{((NQlC4STlk*!0I(0kDLqYSgJhZcn2LE2Soo^z;3gHfL%h>yM>-h-Ksl)rt z?e>+i4f~RPL)d@b0%wlWj*F4Zf|(-$?hx33S40fq0X1SM{(+%{&UYRZfP%tWeMRAM zfBdkd9mOb%_R>2}{wngt4a8nPsnJCN-2V16h?TwfWZ&#sPHy~mG#~ji%Ba^e2o&d_ zUJIleei|Io3A}WTX_b?roHb9S3qT{z#FHULi4VDwwk47hpxW@L>WvLscc2VGkzZw1 z-Um&yk*7arx?U1HQPN)F-ZkD)T3zs=9FO1=?hb9qE00_5e%AA~8<~?UW|gaL?dlrk zQdzZN6-wH8HTT=NJ<`=p!G3&R_#pUU){h?<$o`;J-^239DV2FS7PVh(_w&8BH6{&t zwrB!$dPx^2@^V{ib{6WuQS`^|BMPTeORc=eI7a`ARpc)eL}{$#KW`W0+0Wyio(tOk9(o_|Y%AQI!v)jx z_GZ!T-IkbfZOGLkYeq47#!NnsAh%qfv1Cay>4(M-@E4Z&yN%G?vlCJhnU+o4EN+a zs|K37XnN(!m_j`eU>dT-5tnuD3+OKuHvVJ}6`5Xl2`s;i;rT^D0a_YE4~^ zh!F9Yo7DULcYf#WKf}NaA<7GXD48f&2gDj02C2Ow)E-d0vw)8+gcKw@{4~&FAx>Nl zzFo9hlLwBaslU-s=OdkIfgXxi*bAqUSW7K1W_lJjs=WH8sY?z0@Tb6|P2S>C8`yGa za*MHQ5p{|{JwH>6BqCMGq_E~gc8|Q4t>$LfM6ZSCuLtzQ@ixEkXcfoFl6R73m3Z-? zoKRf8EF_EdHS~2+>ulGLR_O64e*I3~K>8yqq7^}!*Nn}&i%fQ8qvJw9RM<*6>Wm0u zO`6zGBwV>u%(xWP40;5*y{v{W!;?*p6ny!RQAU!S!$trxfQ@y0@{H+N?Ej$BN>7M) zmT@1pmD0hj;l%Y#MiO^$63PAYde=Q;D^OaP4D26TvX4#>HR1m?*E#cK&KKUqa?C6i z!bap8J&qD$DJv$-u?q9IukuHXiVf+V#i%-2(B&U;>P`qNlEve9yCVBkm=>y_dU{;M zq<%2I{(VyiolTeu-ca7wRck52u$4JVQ=xWor|4w(Y~^0-Q`@&vx0p(eQQsx*Stad~ z3C04g0PZbz83FYW`XwndyfzQ|2lx`j9jKaHSA1= z@}H5~BOpW9ghf2IMEn|`bWb!3;ur#Fm872Q;2ZD^@el+BP^v+eRywl+qI8=ymbX0{ z`tl>C9`5W_9LF$JGqB3M2*o3=AAzFYQb8e-kD^G9@yMfZ^R=eN+D&n)+nVskL09 zjPRZRN|O7pl2JemlBxSXwwK1@$7-ss)v|9gh4Ym^oxdi)0;`HtR|eS*1XyUzJh6)m zj^HCM|!8S!n5+F~Mf*w?b2&GW=ipN65 z?uLGm6LwGhA;RaA&OL3f)WYl}C+iTtCAq>ToSqY>FIqL<#+cbxBGM?z5v*Vou2ZML z0oNA0eK*uC*S?t?+2|6lAfH?j6FE1gxRra^1$wnuC~I?=;VMLKBHV1{NVtMa7HT@>jti@C178HuY7xI7#E(so3jk-*vp}6VG~PNnmQ#= zk*5#ml%rqXseVS#z2!TWm$iVC-L8(<=1uO>Nwr4$+BX8nL~(Ur zaZ4vnzAwVd+{*`x4Ne~(um*4TB{c3jwNu~cxBzt)yk1HPvfEFozsib6Ka9(96zrE%^efO5Gwp843 zSk@wHkd33x_`gD6jn3>q)B4>Ft>AipL}_A51-LExRYnj>HaV zyU=wfL*#}mBm(?lma)(ouad;h-O)>Xdm8t6#Q5Tt7RVDBmpwX3O0c8&SQer7@z9Pn zZqZQosUvJ@uK^zyh5VkFyQiBFPSqv(<-YS7n^EBEE5~AK=Vp6Je`g-b*wr-qRqJFj z9>81D)Apu)_QQ{Ngspj+IpyC^dZ`C|h2ak*GgA_VuE}x)0|Y{OMmL#>_9MkS)(6@n z3avYL^)cyC7vz(!)Iy|W_drnW_UDfL?Zubl~DOWqTj^A)o zo1YWy*Z3%zCJHt5aHzYnB??1g-cW_GUKa(dqG-e$RH^O>&^@WA%#7Gdv|m!Rq=+CU zkfSFO>upOZN#m^a+*b*mA?7CTakskr_&uaL&?E4l%t2pZ@giwFs$iAp8fD}NS~X@p zt`3wT2bfcP5bljQ$55Qs)f#g+k7rmeCyNJ%wLKn6Doqh0{%EHsso(vL>9n4r@h)6A zZY>f$te8?e{lJhWTn?4x2PH$Ps@50wpWpwLSkgA3L3Vo#e0T^Y1S*W#KjW&nweRGF zax}8iED||X#omEgIHMrs`cQL^3=AuIj(4@c${~Hy2mG4l7(hxUYajjp4kg4Nu}A~h zm+y;q`Y@qKE}1R6qV{l>Td#EP@lx?Lu2MM+~OKfZ-JbZCV&RE<{nng}NJW#41J z%Pl)&%aSR8^P6NH>Ed~N2&wuYyjAY2K^pYHCTI4yRDCclOvr#muc{Av`au7}&2H+t zz-QHx8mqTyW)b3PqsC*lKZIDks#%97i|+MR_CING6Re}pRKd`aA5Ms5Jhv;@dl5(2 z20S84DMs(;A2Qx|K0jcKb)vPULuAuk)u-oH_#A#BB4^em@x z+I}jJ03#X^Y*jLS1=i?}2N-X^^p}=74|lN*zV2dssH3r3ot=*0e>y~)0mVFclDAVs zS&?JnwIM%^M^CW_K#rM7I5JTGrkPsCUC<*ICz>8-);MQT$Z8#n>(Iu^`PQF%i|PkQ zyaQ66-cfwmz%+_CZgx)K3d9Hv;z4W{bP&1H1!IU@5i{@(dQ*?*C)JWQ&u^Y@BVY&; z8OB_j*H|OZs*6%{7W+Yppgq9^cEq8FkM|)hUi71T-*+QGqgA;V&HbkzrxxeadiymC z6Iuu|r9SEb)ZYF6)$301-7D(DQTM-4xks}*p8q&?S6pc|CVlLBc2Z8uaWHgJ3bGI- zfX!FKgk5#N_ekVSu_ub+7w)>ocwN@(vY(o)+X*siE2kxxk(Ck$R0?)Z4ydskRaX-#-ioD1@!5Fo|7OUcb7;FL+BF%FsvZolaAg+$ma?(#k3J?CpFZ9}#?4nr+wO^w9T4K>Vht+-8Xm~FHn5hs zI8*UmO#1g?+Sq4butk=m_)p102DoYt-I1KNT6euOZxyv(yW}2wQc#%KDpA7!wl{_>CG9 zkc)1pQBaYM*D$7fYDSDkz_dl{L4<{<&r!9%sA<-mmWCCTifkE zroW-D#!`n}eRXGY(H3K8`UEM1Mc?E6KzK}NN7e*&&#;V1F(CGtoWxj|sAXmJZ^6Wl zj%Lpl5#2(_;!F3n%13unBoj1UpG!uaZ%kiR>de-{<%4u#aTTZ=`~`IxrvYkA%g}(G z7oK@5)$5($v!do(90B!7X@LxpVS^6rRmrEJK3nq`;HaXr5YM>n`=)?0lswP4!_b%e zlGYg-+ym`;^3#vY;5~Ev)mLnWtWkFXKRn&R^rszoVadCB>jdG`N zX?9XTf(Q55Ia3^c(t5!8Eo8hqtGEbx$_%Gng@9-$fOR)8RAdZkHix^e#>GkKcl=T0 zJ6~&aw+8Y<7F);=enzNLUIo@pdxcTM;`(ctgVz+`pzjexPeP{JM+YM!R(OMJyhXSAGcc_+R$vFc{HkkFzj#?@nQAb2%w|5L@$HkIZ+&n=lh?SqBWm%mI#HGDLjR&lr~cWFuqPzs9}eUOgm zCg@|H1ty5g36}RIh3Z|kN|gt}XRI6X2>fS*8dVnilDOc0OaDHMPd1*WY>YVx=z`NA zFc9YnPK1G%gV+Dgri!h;+$|SP$r`hzSf(@3{*EH{jx`I|oI!(KD6&B~PMK=$YQ$|V z+HWmFF9b0lNzzqH{t>v=P?rDFNRRZW#k6lOw@>~r*! zDX-L$!>WaAu0-Xo80H^Iesw%|ty>nQrx0Z_e+Tjwb_^4HBX9!<^Zw+3SpwcB^0uu{ zKQ{q8=r4Bss@3-@x)_{k+|kNX^(kaL$nX38_7A3Rdfr8DRU74o;Y;sWYFfBcT_Z=! z9snm*;nQEP)s<&Uu46fc?O-Sz3IZMnpwP7hGxRT+0I`ODHm6i%k6`o^5Le>b2BTajj&2p)4G}|_r@Ob)o;8lmF&SBq+xt0QR!mkHX60n&>DQW zU>}s7DIP@t&?8y#1T(e{+6C&(ITiJVzQ6lc6Y!Jnf4m!_chQqQjJXq2cS8epcQPwk_){EuUyo*J@neYIQ^AL9Z$J6K0DT4Qd`phh zJEl6l4NS+6B{g(-rY(8bWmM*+`Jako*I15)>P>0Ut3SjIg&fLi?H+&hkyE~$Ue4)W zu%wFmPGxLURZv{0jS5xKqdWZ^Y1cBzeQ*84rB&_ZXOeKf@kgJb_}KA;m0j~=Ea==h(SFHiqrkhyg)8&}fv?4^%Ots%pAASD)> z1Oy^nX}*K##(;E8V44Mn7Z@t61LhHMimY_2LScVopWE5a>P1kIV6=Fl1@C}@)(F8avK;$X-(cTG5b5_8{t~ri@RMWUdj>Qu4}D+ z7osPF85a+w7JNX-+kAz#l{Ng5AVLd3QAaqFLS*;$ndqJU)VJPVQI0CImLpaabAs~UkkY!!5n_1e!>@B6Vy!xm13CXpPNONFt!(aL z&++&rjx32%Z=>^NT4h&`hE#XWHuChH3PqrC1*p+E0uep(Q-ep#0qzYLf7voxLps_JUPjCB>@Y#FkY}8P)7`#IZ`c)Tz%of*DhI2@c#ZIaO<>7 zM;Qeo(h|hT>B@T7>pkEe*7AUqn*^ho1=VZw+_FN&dDUta_as3_pDg;wSv`E3E6ePu z!0Ap-ThoQ>m6}Fv6MCou+S;M4K?}+^e|FLyTT123*1Ki#CGq9|~Y z&#jbhF8;yTC3%1aZ5DkR_Q9I?&rznQ~9_ed-b zsTVPNyvi$ncl;4AF^B4$_Q+HA>&3{2Hw?Iz)o3_-<0Q6abGQsLv zlA!ku(=3o!#27d?lnHjTW}Ok!xjMKLj&8R@{a1$ZdOzO_!%$U+Rz7YtY2eYuuJAm( zni60i$v5~zIpXD-bWgS$6>ZQfVm0>@_X0Y(jk{$8S8xU%3ydqN1JGC*%skMQn^ZAt z*m~HR@~$FhW8e87yeM?#?(3mQ{DO_RQKXKSfeUC+gPy74sYBPz(*P23yMq~4i2QnF1vZ;pO7M_R<7n8_835;$KemQ?Q6^E?H6lQUQg4DhT&Dh6usM`axdzO@CUR$s`<6e}&u-uXk9E&bT?+zB*$0H0ECo z#2XXA?+S1ccF<`719SVoUi78;eX~X=x!g^yBAn0m#UpwVA(lNkqxCWnNL&!ZRzT@6Nfp2u zKzUhW%tN%8tGmw@~h^aZKk&c)s%=>H`Lod?T6YQY{B7oFjs z_9S+T!%IoMuJWNMPPDlzoEneF#Q=s(vk1SX7D{y{%kIP`pPwmPrjPzD-WQ z{hB^%h7aDY?TMAnaVV7iAPi4}PI;Bo{JQzl*w6FNf{2ZDn+YVHt&D=Rtha(Gi-vTw zlvmbz3Sy>J8}ucTz(%OSkp8d;(ihXbWjVeOFfUnhoR7YAhmPT%8ub9E8w??_ImiAz z-tq{3bIO-H6sdqju^c)R7;Rc(VJMS%}nfEQCrr-fQ4@IuhoF z1iouGLJO3vw-@?e`k$nHGq&j6b1MVXkteGtZ-1^qlWQyd^%*JXhDR z#I6Ow4|{BPjpz*TZb!x0%#_di{6j`IoPn~iOzR-EpRllqWo-R9a6$Ak>HD_Cs5@cRJ!2ZT`PrGU^w?l^?2)igDw_^-2e}=1>uC11Ycdx);{K-iTvdK{DD_X4jJt}%k zKXC??u(Ihou(qS03RXmp!kEN~dVRp|al$r3fbV}0bzE67#wIaMeuV2gb2 zp)va*S44j$>0A|Ca8CHhSt=`tY0BY#{g=_z$uL-hp({SA_iKO~SdQKAQU#0b)*3H= zz&4q{sXPsJlzPAT$Z98n&euptGY+Sav(%mvzwy&%r=49Ja&nO*OD1pW(ui~Vw~~0} zlW&LFCbB;uXowbCeN6f%zu;Aor1GS#yH-g^TYZi~4{o&QN{@zXnfx_prteguDR~9` zLhz&Nb$tx&?5k30UfP8&e&%gbh*D|Fs(L-l zF8Q&Luk|Q5_nkDa&;#=%dPkQ3ljyml;35ng%&Ztve=2LErj)}pS@p)YHOoChf^MXlHLn^`*xy~Xix>r=iS2|Ua#R$Yu5b`+ zuxCRhRw~Uw7G;gx49w{^v2l+Cm&FDu6+9-mEVYWnQwpB5HmdZ6MokvTtihNGEt?(Z zfDy1Wp(6*92MlRQY*H_^kjU9he{RHaF9Ewvku3NiBf@#3-rOf$PflG~xAh~Ei50zc z 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 zƒ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›W-ExhrncL>qW!K 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 fs.readFileSync(path)); @@ -47,6 +46,9 @@ async function main() { const imageInfo = { width: 600, height: 400, colorType: ck.ColorType.RGBA_8888, alphaType: ck.AlphaType.Unpremul, colorSpace: ck.ColorSpace.SRGB }; const pixelArray = ck.Malloc(Uint8Array, imageInfo.width * imageInfo.height * 4); for (let time = 0; time <= animationDuration; time += deltaTime) { + // Get the canvas object to render to the surface to + const canvas = surface.getCanvas(); + // Clear the canvas canvas.clear(ck.WHITE); diff --git a/spine-ts/spine-canvaskit/example/mix-and-match.html b/spine-ts/spine-canvaskit/example/mix-and-match.html new file mode 100644 index 000000000..5aa4aeed5 --- /dev/null +++ b/spine-ts/spine-canvaskit/example/mix-and-match.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + +

    Skins Mix & Match Example

    + + + + + + \ No newline at end of file diff --git a/spine-ts/spine-canvaskit/src/index.ts b/spine-ts/spine-canvaskit/src/index.ts index f05f77168..988facf85 100644 --- a/spine-ts/spine-canvaskit/src/index.ts +++ b/spine-ts/spine-canvaskit/src/index.ts @@ -51,7 +51,7 @@ class CanvasKitTexture extends Texture { this._image = null; } - static async fromFile(ck: CanvasKit, path: string, readFile: (path: string) => Promise): Promise { + static async fromFile(ck: CanvasKit, path: string, readFile: (path: string) => Promise): Promise { const imgData = await readFile(path); if (!imgData) throw new Error(`Could not load image ${path}`); const image = ck.MakeImageFromEncoded(imgData); From 8c6e82581d0687a0bb6f25dad005ce339cc3adda Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 8 Jul 2024 17:15:05 +0200 Subject: [PATCH 022/215] [canvaskit] Add IK following example. --- spine-ts/index.html | 1 + .../spine-canvaskit/example/ik-following.html | 100 ++++++++++++++++++ .../example/mix-and-match.html | 2 +- 3 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 spine-ts/spine-canvaskit/example/ik-following.html diff --git a/spine-ts/index.html b/spine-ts/index.html index 1aa0a2cd2..96ec01a2d 100644 --- a/spine-ts/index.html +++ b/spine-ts/index.html @@ -25,6 +25,7 @@

    cqX*8r8*2;~}4r z*K9*@6-|85hxjai%wj&X|4Nf7AjMG4Jph@rUqkgWJJ#uU9=T-ZNO(|^ z|L;}qW+vUG&BP$OPonN7bO{cS08Mla$u3WB^nMG%Va1?F1|$mym@e7(MzeJ<1g9k= z@O5>kcV2A0P*@Y>Ju4+4MAnj{+QEfE?R)^_lhJsbb3HL@By}Wa z-QvAp(uSsR3pKUzp)GpO^_%jOOFNYxPqwyPt(dK>bahQUwfL%5hKCHG`wr11%2U@- z8KOwQ=U9ib?K#fg7BK1R{(vYVJQW~A%Gh;$i^((4*GCjFk+FRE#(FB&1Og>R%76hf zzA;2kHU{Ehdue4N7RC6=%l1N6a}o>UNNv$9lgdvph%pYRizI~B&w>zHE3eHS)3`30 z2yYE=)7)&~boyUa_oX+;v}_sACKU44dN&@*VI;VfY8^F>b^7G*k41fG=ch^ZAA8=` zn2_|n;_qL$q#!{Nb7|-FHkQ6!DpsYnF*M>!xaMm4&%TS?Z;8z`VrbEMkuWKbp@wnw z-ve=u&rGszI#WfXF}Gp^e1?QTEQ`Vf_IXA8@aS-WttIe@q;Kwg&bfBG@PX$2_!31{ z%c<@4Z#|ZF{#zY5<@a=0YI;_>Tm3?;WLRf8pOtX{y4W z11XGv^eBUn@noqf!A2HvLjOTo0;3DX;bQ0we2*O)D)-h1;~WY&eMi9<7>G!SHiXNT z>rOW5@<;5UZ(s`?`r7z>??FgaXi|$5M-*#JsQe%yfJ#I!n4U%cDUzB1O0|y;b_Jmf zp(x1^QT^bs5%KVbRwY&)HC(KUi4s6XBCYY=*=Aqc0$4{;iWn&OTOuOB z5+PSkdx9yj>sfuc)zTd?S=8t}?lQ!@S?v zVJSptppfu zX{@0Fprt0)Z?O5s`*-K%<7NichgAYsb9E=RWb7UfyYIWDo_TGh1O30BYaYC57JCXu zD%+j(n|vnO{up%+#aa_BOu1PPA|vGgzD<6CAH>(x5*!+?L&PLb{9le zMc%P~A=FibjUoKwQ=YCy2qw_`xbV14=uM3In;)`U7qm`c$(m|CtI_>2>3UcT$eKV= zgyuoGjlUSpAn=X8+*vQ;jQG;NDr|8^@EG+}j7>_Fj=IKMRtueRq~A;Un}=iJcgFyK z(CPh)TG@XuzWL&I@1@2D*6cVwjbZ2tKP0U;*_V!p_SL?}Lq};m zZRElfiiWfI;D2k=ulBkS$NwFks$cKJ^bjG@1Q13`Dk0DfSQFxyevgceOUj0s>Y}e6 zL2h8W5zoWv5=q=I8%<82bJG&W#d3)-$sktXzyNrS}wbRKla=rQvqTW%OZAfptVp8E3a!4&Ob%l?hem@zvnjLzC@pTm*&*}r=rKxn z&NI&{u7lsd$|H(7fEi+~-B?Fi=9_&(-T!&wydvuu7NxgEc{4Ii*Cm)Qdw6PMYst039N3|&k*2Z6j9hSb~Hf+pOE1hB(nL} zw5ytwOEfD(MuZttKTo6v`#JYd@zB>tJYrUno@JC1yNxcm9v={LYvUKJhNY9yo!GCk zjl}fD&H5QP(kUVRZ*~)>Gq1yE_n9T_YvY=DlDH65d3RHXl>!zkgZ$ULcFvQdFLtvH zBh~vP*Mc#BKx5PSqM2}1hj)NXdpNKV^sY>*{t)>E5oIZl7!;) zmv6=KW9dt}>7;qRUvcKEVo6-O4SJE6$C_4!Sa!WHefG$nb^Tc$IC%D-0=xyrozYSW z8#Uiq`P~}bp($rG?PI?l(%X$*oz+D)TQv>j%Z;%z&A(OB_!Jb}$a1>9_e+T>S=Hic z^P2!CcHe&m_~odfW2VNz`ACi=Xddnd`k;&pJN!Cy9O@^DE05xT-`$Kt@Y|?w_y2z+ zBFHVjQ>Sdp|L!iYqP!9tm)>AeX-xgNDpCl#g!cHQm2j6*h%#r{_hu40!J63n%8f4l z3oyLrSn%C%F`dq*#qd{Vm`sz^d=BvI>4J^lCCA~+5i@#&k8h8Cunkd7`vV!A98PyS zkA;i6Yb7diZ|C0Ias^2$B70JYZIj{ZTfLU+=d*I~WUK=@K*VZ4n%jxiu>_k+2?EA> z?OL9PT{u=2J@)a*Xd!W=Koca;541v6oxpf=wuZ4M(9JqS;FDVg2j=v+McrK4E*#we z6!a=8sNQUX5T3Z_@EkKwKRwn+6&_ADBf}_{i|#3d(Hn*kD*zv$xTywQ!O=BdWS*54 zU+m-y8JQBa>g+}oJC738pFYkLGa@Z~grboCfB@M%3&ihb)WUuG>9HiRt5Ai&;=v0g zQloTP&e5Pnwl>1CxSiNy)>r~rZ7p*-@VYT>gx;<%-w^#@8SOb+pG{s3TGp)yt18yx z0exYQgI{|ZwZg~X)R;P%jf=ZT3&?uc#LVb=@<6v8H>-qmaxIPgzFa{O9SvW^2)e8T zfHs10sB*BhIkvV{)!+N0(9_5}Q3IY3b!^iQ+}^tn%WD4`uPa_NO#fV?Hh&3f6#){= zE|%es{}R)vq^%)0((t!|?kkv>ulVB85z4qH`isLue{Z){V56}v@x#Ba#lPKjw=->N zzgvdice64ppm=!S9A5a*eBBBa0Ro0l5T5}-!YbrDDcUVOx{vb9yO{_@hUlD};}dVJ zA^kWL{QY@kSs4pWp7}TPC#(!`n#AooXHCgNT?(j7+RP|FEYhG5c4AK@?`Vzn9-9H8 zPtIp0m^CTjFL+Nnv2xUH7q&4J{pjsjF0IU-trNSeuFH0@F8b}XaEt!C0C%Qo zycUDayXocKnT3xB4#Fpn!T*E`OWrzs2rUhWOc#XUx?I6KM|cMEcY^u z8YIqE&Kv3K@?I1rj1&&Y=Nmzn?PBd2Ar)KjI0Y*a>qc@eO{EuQ{8>C0Z;PvwZS6^< zFU%`(tg4u8Wx$zI=|al{W8kZ`Tp$l)7)jzp&5(~#-g`*)t6B2nKgF+41$s}y$DZu{GlJ>pV z?5SH3ma47~p=oZ1XJh>F`SO9TPfoR&fCEZ~0jF)dQtr!3NT;R>t(_8MM)RlOg%dCU zPD~4boOY9|CuGI;_e1nIC=opt^YGUL_}|2De!bfGOz2%Xy7oqcV=@O>ksN!AlET?v zO<<*ChK;7K06->UYl=rlf1R^<4|9qe{W?kwy8I|!5t=8oz0dKPJ2umyB_3)6hBdV` z($7_X18+>U8W`M!&q{zPj!~Y#Y;x@-gH9!usP4+jEPQEDt9BDqv)rCttC@EzcqU5+ z)-p1bap(BmSte~ujUU2bIhY(u!+x@cP9uK;FM3<7Fm8{z{j=zUb)}04I>UE28u4tu zdRS-ef9C(BZ?I2P)&=TReTh#K)zpy;82Xd4%oERE(|Q~RJoNsX%pqg!LE$z7a7&-X zh}mh77_FU?Kw^fC_YnZ4-OP@UCK{aD7l^uc$~3Kxf=Ni>vI4sV)OZXA7q%uP{Q1a*q< zHnDDq;GdXWC8Gp;?AFP__wiNH(q}u7Qq2Ew)gykLb>7CY#9)B-6V35lR zyduu8*Ds4F*CyiRj>nWAj=n`V2;6&4GZ97K9?JJDx!+7Z!UGN;ixjEIkaL8dqexv! zlGmq&HT`ruRZITF(1f%S%$T*(@rfgskbo&=V#Vy?*F1p?@j4zb3QJJI;%WTZ;8&Xb z6@jO5@JE#~v{XR!)6$BQ+&XLaNPTCwo}D`7P+q{Fi>sC{ATqV`6b;lV#NmB`D|I5a z$7aou$ZvO|J$U6*2YW=JQ`13UeQ#E$j5uyl(Q-dLJC9WV~cLbWK1U`upK(RKMS2qrAr z6+Mh+4_HYN} zdsAWtZ7NzSS~xNtynq?CL<*W_59NxV{4oiU(ZY)1)6@8Q#rL!Oy7Th=_#JEh?d9=; z#KpPdS`pCe+@XiK_ww%KjB(o@{(VOk(p@#P#3^|C(Q2hdO6@(wFk^yCtKFVUFFV~` zp()36gwgj4p|6c*cxF8bOU*Mcw&L5@5)3(cpTB(D6JhMiat%Zh&Y0LQBc|P48W)?SHk=Ghx$wJH+vmCUTt)-# z_2XZ^4a@EI_}R@&=BTw-wUyE~cgue!3Qmhi6r~;W#+;cR3wX)Ax+9nr)p@!E*{(-S z?&B}wrj>)~ThN?PYP>%SI5*CC!rbdta1SZRaFva{F;l57kqu!gxEbOO}&yUzXoeG(gv(W$1q zzNsd;@q{q`IU@9`SKic#h@LoU~@pgj= zrK~~lKi#xKI)+re+&EYHB@ye%{6B z!n`KgNFSpnuxun)!=(T{0J1O#Hnzu0SG1s$bX@O^?y*0(^Rk z7_E24v9Jqlf?m3QG9+MiN7FGtW3gOP&Vi^7G{lY6-4w0V1M7MRyAA&B-ShHb+pKOi zZgyY@^c8XN#VZ(~z*5jVhl3pDp{WkgXazTQvy z>9syk7Aodt&*I{Eh~nf>#gJXQx1IQoy2U;4gOIGWE2)g`$k?yr!RA`=$K9k4KvD)CFJ zKa$;(4M9hT(jN%z64k~7Z?2XO7?s8j$ou+Z+AIUKu|h|OE9P^aV?;H)b)2sjYJXE3 zH6O$@9pi(a5BW1}5}XQ~@{z%|VaVatjnJi*IQ znrGArVQ5H@UU}9#Z7NB}Ep$1@JI8k*y{g``USupg+P$g|4w^NvQ}oXbcdrP#`PaX6 zO}J4zBbY-$jKML%pijXd`sr)&lI$L7J;bnKKYgal&zC8h9E6e4VjS&@f6&xrj{9ED zvi&!l$bcanS8zX$I(^36_vzBAVdmK*=eGu3HwzQ+(q$F>(gWfOUIEf~e4eYktKLLk zsO`d*Ga99O)^A>VnSV~pWHwzq>EEZJ+qfqVas>#sGQYL$wRbD@%gNONV`GnQ_oI>) zvOT@UcQcu3dj5d&=cbyuvHc;lPW+PW^e2u!aT}y9bTMEdT0WlDCyaALp3CmJ*Vbfl(hg zFg4>-B1)#Y|5|4BmkGP&rvDfjLLo<~7clT`NRoTvCuC*j6!ZcHC+m37s8CFZ?MyRF zwtrZ619`*lUiK!P*snrtJqfDt33p0FVu}vE-88x=HGN0GMj1sh{4rF*O?2#gOkWHX z!VoeQ?%GU5${LL-MJb&7soVEi^Ma=5VIOJ4cF9OJW8y=WknQsXA~O@{=bY7bgrwj? zu`@h^;WHK12LZl~EQ_C#xsqP93fIIc^G8yY8)D_oPm2-tgEb1+G5fe~M=Sj!ehFUP z7KDl^$I~1PaHu-jsVZS7PpM_|zoeIp?RlKnDqkbNG50XMwj`&S;OjW{V%YIv<0DoJ zFFlY^j5sFG`aNv)3G3EuB&KSV@<+gCA=UB&h$N{#GtIx<8r;JrntVK}u^GRB!X!9w zcJg`B!2Ys;?Dx%fVwK%SyzSkgr9m`N>ja{Ikpv$+gS17yey(vRY>l?*#?)G_`!50rMMGCUq zH$(HM;XOg-lvB0;y1&>|*HS{rxRrDCS?@16(Br@DuX_F;9t&1ah>jLNAFI+HJ4%P5E}SbkL^wbfm(b z+1YF`YTRhV1mJo7ce+Gy$n2qT!Xa$_Nl~fS3*Oh-RB_XD**3~=LsMSy1)axEG%#n9 zgq%+Di)>^Fi>BV#SrpK)4Tt({NVvdDy<6%C9MGO25?HIP${+UoJ_%YD6HMJm$difP z#}O2=X4($iYkaMkW;bPIAYEH%EKSH2z#KqD+Ukx$HEaO_wmbvyohSV^jb`lW!rh+Z0NujOc z16SM%MND&bY4I)%DT`lqX(v=ivTCBVN(aMLBUcBco;pxLp-mIN+#^IL9iZD}=hRHj z`yE+&3n}&&zV1)c#N1;1y>I99^5b2L(j=$Lt6&$wGc>QYVt}HxSxZ1S%cM%`Sw(d0 zap%AY4{)kYs(3Xw&fO_9*l2?p?Vnwc6(@hd420YTe}OV`_STt}U19ohl4Zg(sKDewJT+o-MO5H?oj!jlj!a z2eU$08zl84Eag66FygK9_%s!=-)@f@G)bnM>w1d0xa6KOZp22Y#0C}|fRCbyS&Gn| z=QD7O=BFnMV&&FU4&Ls%z!;|cG*ZM-ggmbIK8pJ_wBF|V?^f+po7@erf8$~bj*$`m zg7gl~g5$yU?wvpS1V1+NB$`M;={V)PoFtvyFc!#7)rX=|-lT5RL<4prsDHPJYqmL0$qVALr+>x82Ez|pdVbVbI=}m;03C5t*{8kJ`#^y6gKjS)PsMD1B3`{#E?7s* znZ>$DBBhm-+MGWBv@MxoWg@sPts^n}&UYZ=)@a~RZKNCVQxXq<%8TFqn9C`q%xIRh z?@iTKNb}TLFd6KGWQLPwp(Q=PLT_7ee5uJD77P2<)QlUU%=Rs`=o{sm4__>d&1@7; zERGldibfyt>Af>0Py**Dy zV`LEYysE!Fpa0%SKZvdf&7IXKFtfzg605ZvjFUNTPf&gL80LS{pHJcT_kBj=ZlG)Y zMP{+~_R>@M)!u)AskPU&|D9_;@8wI= zkgijqtRkY~SI_sgfIU^hlGc*UxlDyfq{)kJ8#NV3lMzDJ6mIn~%dGm|d&aP_B(}+k zmBzZ9us1)>hKzfW@GWb`U*?XJpv8+t8$k%xYstXjf*ld*H>6CetaWS}oD&XW#6P+n zwUFKpn~amF1T%&#BV=Wm0o@QF9}18;bt;TmWSa(6q2{6Hffu;nQN36;Vnh5b3Rws+ z-m@mqI_ak2W!Z<@X16r7i;n=}D~&YaogBs^KYzQa&FAK+s>$O~n?{7NJ$YW|$T^kx zhZYy?Gm{8IBc|xb9{Mz0B_tM7=39?9Uz;XXMTa77(o5A6_dn}&yvZ)+qEt-aokzSc zaBl$``Wr-X9MMoz7$N@t9Quj6)G8r~;ChA()nIbipWjZDTWiO805KAt3}k zY_F_MKg4Y0Y~=jaG3TgUSviNYTVmZi2REv0 z{jA7lme*n+(Hpw#++4k6Va+6-iA%u@Z-rW-U=(0Q&{RYAZ|`k|%F)W9M07W_UCD<> zn!%fZnTpr3uVQYST5lRYeQK|QA8wD|D7x*Bbt>JN3-_ZcIJ?ac?&^&8h^Q}zBN z(fx+su%ji<9<*+@?ik_U|7;%4YW4JEXbJCQ#F85NZkXEt!?JRY-Pe~;crYqK_C<-_ ze&b6L$wFWBm*KsEaSNZ{S4qg^$rESDXItvZemY75a(gLTQY#BRmuG^B|Hc z`P?lxQ7>`5L23#98w8GK1sc0ovT49!*XMhbMX>z^E)dn%EAcLqDl=z5^t#GHZ?Z!` z`w1RRR)AwD1+3&xh%Q7VunUJ@6&FYZ+We=w92Y1>CXWY6#0)GX-*pa4GJ8g^!%|!3&o%0HdZDfl#D?7uitk$RsH$K zSTe1Ge)IvzJOmftQd$NKz7M``jK~O4Kvx;Q5cU`}^A@7~o^L!2G|&qaTZX zZuk2npp;PFUvc5pwMzp>cYHOD&w7WO&j>?nTS*2w3F9DV}9_qBX64Iu6G%+jJRx!zzVjF zOEs4=Gz)Il08TnX9ZppM8*g0QW}aly9APWy;iI$EZJq6+CwQTxHyDt49RxOoTxUpz z+kLWdGCUWKd|KRGe1v;_-wnt*Oa^Iy_8?)}GSLwFI?vLfUBtDw(aedWrxb=Ih?g84 zgtXel`#m#A0Fn>oQ}|ha8BdUdq{l(%3PpxqXk2z}+)wX;NFtZS@@XL{!B&Xj@f72be zwz*Q7kOaOt%m~6Lzr)f*=<(B3S^u{R#4Z2?@*4p}K=X_- ze+LZ-XUnYCNYY{Kn@<{^J7**(6LQ!3i}IICEIbwZZP}GHY{oH$SvW~$ zV{4+Cwm1pGS3IVZ>6W~d79IJV3zDa=zSi^6&dz7+PS`eVxOR(59_*rya}- zVvgi^(xboqa!p$cmya9^rnjw!)$5smPzU=)Xd{rQ$_cBAU~NvyJ(t)?k9%*Qc145G zA@U$K*kwEBw^rUA1+O&}gpH;1nnoJ1?`dR-WmS1zl{5f*^oR#{LkVX|h1%qsmYZKS zHl_WdxvzQ6pe>M_sme@OMwb_0%l>*|*BI!g`hEYrRMm-}lvDg8a>=Yx!Pe4mWci0K z$ED8?m{H2OZM3(9w7zlo4?Wi_eRy}zOM@tyFN+9)e?tTfj4|g((Yh?dEmt(7Q7Z}2 zYABP6^Jf}Wwoq+)3u((&L8k4$B-WP5{*2naar_;Gbz;Dp)2a1g>*?W}dzNrj$2Y@` zFb?NBjpdnTC84J91;CYtQf~i1#g0f2MPgKGEoE7b%SFm1hoEAFJ+S^X^RNU(jdP?- z@a(M^Yi_$1zs6f5(k2^s!-z!FgK9OqVfJvChmCudhlVz$q!omhLLa4UdiE;|;UE?u)Ud@$o5YfVt45QmRh-ky0v1Hh>U z(8e#?x6Qks>^{#y7J=-8SD4+j8!;Odj72IXji#|@F_|>(e;WkPrRMJDAl4yMpePUu zn|65cV$;H%nh9A$NDyP5as(u$l9OwaqD4E6z_x_q(!c&Fa!1!O7zcicvLUqLh|nz{ zSsFg}_v$$Xu~s%Kn9y1f(|XK7O(z?=v;eoqB>R8m+FBwYAgu~Nnp6&!r2EbGM{F7y z3RKIySR;mY>!kTb$|o-h)*wkx_(_%XJ@yLvmkiQk02}-vpW0CH$C0Om5FX&E=;8A$ zU_7V+hi|16%_Z>msk*v8RC%JulKr@pxOfjBT0-VEeY^6yH;LRe;AG769|6E z1$eoa*JeUxX+f_%rKDUi&!`LDMc5pcdJ+()B<8h+vp>Xo#9Hri@z4h^WnYV+l$CR2H3sh@Sy9hwNXn>uRI%AaiR;6e5=up( zDTCw#^}ye1xa0)6{eA{l@+q`2*e?Xxxh$3qst`R`jGq*W&WM(dsq&i8_*aL{e~$JI zt@T~3?d{EFVoiSqU^!d5r{4?&w$Ts`z}_$7l@el+BN!;Z!nl2TQ}g{_)kyg%0OQ9a zX((y}RNi>7TS}f)-`}?zNnHr{XXJmn+aAlWl5kBrx0696MxPSs?xHQHuc6bvcN@w# zJH86*NzrFn+}S^6oxDiYje(TKQ%Y;{LEC1+QcsC))28Rym)>36P`tm z6rzK)&im04BeL~KV}EHTjfuo3e3F2VruNmrpNZ+8*{BDgg?cR9wM+2`a|RK^BJ(gG z77VAF+WhRD^cRPN2gv0}C?31hva^))JD$wvzWd!Bm-hO=oSc1{1 z7&BmDG+m92a+W;rR6TQkL~S}5s~Rl?k&G!2Lfja^8A3_I-gTnbh)ozAR`u#>sg7ft z++`F^1=?mipm^Uvzs(t2r{OD%Bl#AW%y7_s;?Iw(px4L-N)akYmfs>xtX$cjM^KUIq&5(M?H6X=|j%UHYyt<#)2zJ*hQb~7r@n- zIb0)=3pep~oi+{WX_R6Z@{1Yy=#%YseQ{W~;*;dFv%7yl|7A40|@Eha@>Lg)1ensr2s)0ERrJ}}6IPaLvMoT8m(7NphJJR{Pc<>}z zB8tQpWEiUToDZsW^15~7a+^A{BfbVCaJ(mG*1uNQ3Qiy^qlJtw<4?Cm{;u#E%#-DphW+XQFtF3ae))pbMqa-B*ctUXGT_bT00$?;^9rju zGBz^>y;J9^Yeso7r7~td^_@S$VGh#+wT^*y@LF#CoC6JD4$rcF35tXy_*8*lGb%x ze^B*wp((H{FdNAa5NspneX*|;w@0X$j$qYX|NFr2pB;<@Yw5lU`@gF;c&Eb@c0+pPr6s*kREFXaf?prU$)L&-#7@oD&R>3~Ov+8arYSQ@*-WJG-^QmhlW0K}L zhX!^w=KDr~Te8*lEna7c0e%ebOa5VK@YVs|D+=TP{PXI#h_{-kMS1`_-B_wY{`z|T zV{YJ*ZNBkM7#c14^;2W{=C^@F~2Z={j`yuqL{?SfdSFlr4}8U z4)yPbpRTPoT%>JmPT;Uu|Hjwrs?@kWlG|lj%TB6%XKai=mPX19(TxxW9Hvtka&bnI zP;T=!)#Y>yzS^)L`)sWaGG{NnU7yiNF&Y6aS6kg`+WgeMDJ3|PZQ`f{`)j+Q;GA4FXGp7)~qlp`53l3*UceX>2cM# zaFkq~%MKfTRnBpm0jd=Cd}TZ#I`3@J>U(z$kK@D@U3zUX>*eI`xX$B<+V6Pro~B3; zeP;6b=y;!{Ota^aJY$l2`EE&Z)Gl5|d#yF6?(S%)Ub3A^zb9Zw&!QvG+f`%xW8>eR zmH$((>ESBbi7ck|Bi%OFA5;U~@VY2_y-2QnUGi|2(oz z$qVq=P*EXznCQqds7uIKAW50A>%!&}!w4A$d#*m!I7waLAW9qqL2R-1;n*&6IXL}N zpE8&TAFUM9v+pVOv|WaHTb}6n`Cyh4sq_Ep537=05bPE~MZqQ6@8o}VLEsK8-uQe@cSR5XLyu#qYmt<~36s zI{hgr7pWEQVI#SQXudm~PJ#w70?#q&>!^RcJ^xQAlkuB|)wXH&(Da3L)R?c~oRwSz zJZC6+n5ay=H06XKyyk*f;~}A}X114{IZ=N+jkXO3=POx8tRUXwUmi=jn9y6(+$l~h z`M`n6I}{f-7szRZJ6S;kZ&GYPi*)V^94aq5<7YCZWxUSz-s`JwA@C058ulf zRDuYwb5$2-&kiJsU3v|->zp)Q!zIa~{rmX{ zqil-Pm#Wi%mx$`>bxHSp$xzo4W=rZ* z$pG*7kZ!<7o_DoPs>hO*AH`^YX~}cv#M-}}7J51xvygQ_4a9m~@js-Kzv@I!dy9K! z8}iLQo=V%8Zb+YqPyn?umg6)I0{fyD1!f@`T<#IcPgm1_Uj6k4u*v_@b;YmT}U&W2T&I0+N%1AvG(#?@2IQ|wBCsG-ftbX2mXQ4Ylnt}I}~_0WG+`^RXaY?$c6hOEMlh?`Go7Q38zd) zI&a@UH5~kk`zy{kJN@)@dka4A{{|*=bOK1Jqaa~>J67j6R3gh_p-9pp;?Kuqq@j&) zSiw+y)Wzy=Z$5`9Nw@>U-vQOwrq<>Fxm-;rE9ETjf{dI@G%74Lum%Jb z$fE&xC>aovO$ZlIr&>WlpuF_B8n=_8S$}7IUd2rpMm7BJRAls_JjxYCd9p4rQD{6& z3`l0uy{?$`KZR^W9Lr~KS1U4pJ&kJ%bjX@#e}_5k{kiDa#>@Q z*(0*RUY^R~7minV7>@`gJ=e*4#z8W3|G&05?&t*|0C2$=UL|bhY;);q|Byc?2!Ezy za_SKGaTuZ9*;OY1MBq>csY&)cdo8^j_wrD{Xo|aO$Bn)nI1KYT&mNsYs+)GYu~|L9 z8amHDJ@(Lu&L(&3oH5F>@Uk`4B|jx9CM{MVp*8lmY=iX`K;y{uIn%PNtjUjUvGRo! zy5uL96FbBqej$7KP4D-mqsJeG!LWf&4HB{W*3cXz8kTRN{D-uZ)%dTE*zDac?6p<` zFW!EZh z_X~Xa$*L*o)z7OzCixX1x|VQCrG!JP;%crN*y*n@oi<`zcE2q~-=TF!E`Evy!>)d< z-d0Gga97^YRb!K$VA7!*T=e)Y8ohu{&cr)5vc(*Fptnol)$98!740=DOGptLl-@as zKT=I3TGm1=IB!4uz_4TO*x%&|1XVE;YI;9jkIn^*Q=gSAWdXj|{+3nHq#QNSeglDj zj;e@sS@O#*a!&yx_r2aB9_CI?vEbR=34&khkBaa2;zc0gYqn{>3W>VX<-uvw0Kp7U zpn&PAObpMf<;DhR4hJn0V=vONiG!xCh?4_x9=b+a?)+-T`_Te7--dcF;4%YbJ;(NT zRz2}cD+Ly|HuGvL?_U!=FX75qJu>1Xw}Eomi+B8gUOvw1e|Fnk3{Gy0Fp5hhdOD@I zba&<#uHqqAd3|*LjP5ApX$xK2%NA~~Rk_6Nmhi8g8LSQ<1m!%@`Q5z`K$*w2|tT$c2O#IU0m%Sb$fDV4=gr z2ECFYB7@|h0WqmcJffGGqXv3U#i1yJKVi(OsEcGhClIQK zqa|4OF&o@3-ut5g8P%+hSADNfy&2{I|8f4OMtPUGQac_5l77mL* zbn0IT;qgA#Tb%n=oq6giBH*x%Oq5mx^>z*Tom1lu zCyhwF5V3qR7pX5o1k!F>3QCmqA96T$mgsjGPocTC8wYM0PiuVjl~dj9*b=cJVjC)6 zp}>qrAK-0_5V;7$HCETrXc&VE)_b?p*<(hNj<0=sp638DA^@bF%^>{j!6mfOpPRVN zHP%&41Y|JV3V_~9OsZivGU#Tw);X)S>K7EgeQ{GkLOdoUltw?hgalJR2^|<~J(Im# z!s00l5-pq7!yoB6k(;F!H7PKt3ia2r&CcP_tog{0hNGAE z*^*p*pUl$YIdZF?0VT3G3{_jgmUojJO=TTc9k{ri4WC34wrSuBDA~#u=pW7mic27t zi=>NYz?122KElaLbHkV*vjG3W$Cn_#oNW+EuI#aRCx-!12r$6h8ZPecQFp5L&Z{s* zH`qP|ZHh#yQF$3rla1@(DzRsM*Qe`Bk_?2rs&4{}dROKar#@v$JzY2kt1g&+mfj8wl-N1Xi}+2h?tE}0Z{rJ; zSKwB&B+>`obIwb(HxcO;4jQbAFf6jmu%vBbB?mKjXrzTy_u5#}>V%iwXJiCbS=$f4 znKZV-*RxR&2-`;RYkU-By6E0++Nelk9|XOOXkFT3JSqn?-v4m%()MvPYOJH#vHdi0 z<*oU(<5w;&CRCj7UZ-8>3LOur3lwG$a7Qg{Vdp%g}y7MIJ^%1?hxnBBg|YL`XzrfFhIa_EWECpBgAKcZek9 zqxfWm*!BAmC2hgd`Ev%g~R(AjrKoj&33B% zdQQ+pPuL5Nf7&7jvc?<7+&D43L`8a2%?Wd28l8Pi^ldFoN`P}&GS#>O5h^1 zUQ&$zArSe~FMi-sVof9d%ZKA15mqGl8~XQAvC1Ua(L*%^EhGP$e=c^!>KZV@NC^0X zL84wswBSqpktLgjm9t~N4wF;Annl}L4eZWb`{$1rZol|6GaxJG zbW~K4nAmL%oKhaYk3uko?qZeef_wVjd;%NEzpnz9!q~_u(tub=+t%;@IJ(YgI2$Iq z4I6b=7k!l=(R;Mjg$SZV^iK2^B}jJlE;`XAdI_QhVf9{8^xh*v^cLiM-tUKV96vbE zdgji|otb+xC+Zq&g_S07;wfAGX!*DrD{K0!rnCHVOtr`fd`&ZlT+`WUKdlau0O`YKOYj463A zLR~i{*wXek(#?-wsK9o7$SR6kUn^dnBNE1;-+jV=l*RN?I%yEjs{$o6Wg=8KAWBgdPm@9AHrC36h*5VmU> z01DKUeNG2Zz*b4({M@A?>GzCucJ-*(SxdN6ZcpiWz?RLj(tx?^0YgD4%=C&qv{vxvjHv92XXdeRULn>+1>Q-#1c~p-=gR0 zxKVA7ux4m1B@1Sbfp`fTOskR_n4d9SW_7K`-V+%svw>Js?u})T%kBCmgzD|hP(wGC zq#K$sSQGzc_7)K4Z;3qYXBz&Xl{@mxtr^P()E>&IsY>LRq-xN=wf_M?5cUrw1OqYz z2QtzE6pN@TUyEa{iT9+z=bz;tOuSQ*W2)K- zZ|0bS0*MoU4y;+VxBqKDtLrB9SeCLWe{K6s_SME)qd$?X4R#;vo|eU{6iFXwM*Y!9 z-1g^a|3d+ZEPtgDLGP21N?Y+ zDtEnvd36Uz?(uvtEG$L|-XF%fEU4fsBX!U|_!)6@c9-LCwmJZX;pM*yl{F@ah~5DI z4zj{D?EuWj{9mV{zOWppyNLdSk4f!XqgSVuF7u-_+c&}cOR_L`lZZYSso8_IS9+;3 zfGNAWn^uyhlUR-8rTQ!KM|yzpKb0OgqoIncJYV@xN1eQy+xLBh08RrJ!oVOKSxTb4 z`>6wP(6;%x_$AZ3@DBYI?fQy}Cs>C?L$0hMZxb-Lo@S{p_|~=15ZYc@b zA3X8#hk`enJ4DWd)a(V5C6D6w#nY22!|uxXJddDb@e8}*rVF+HKOO_VMUp@pnRE>PTj5HD@P8j)9IgrXDfec4D2JH9t_hochBol*H8a~-e1UJeRz2{w zEm$QE*A8{QV%{&wid$t|4eBmxA7WQ0`7Yb=j=s~I!(@p?YV)oq)}T|gh*f>P!E**a zSzAhFNuB=4Hk#%X=rjrYj{Q6M?BRP`%bA?9LJ`pP^wij>`w!!@_led*mO=r_zBlns zx&Kz&{u;b-PTap(^<+*AaCF*U>XsT=oJc(jxerS_DHdMU9Da7t6qT}&%uqP%4FdZ3F9M+waqxzVN?!qC=Gx~t)R1#KRUulyQ>0ux{d z@BQ83fjeY%zseW7liJ-ES=0U{>$J6%JJvszXY3xJ1aTBA@Ij!zoE$RwokX(Dhz+fU zaO^W8O|8@~zpuf4Xrk&jJ8cht=J}R)f95T$`l-m|!jy)wJt12c_P|6@zM4jVQ!jr@ zvB=sku-W4vcbZZyipcibX6tTp zGgX(p1@`i1FY?P4&)q&8AG$=|B@H#EWwSSVp;wg)x!$@aYL{9M_I>l`n&{v9U-LUj zv&%(dFDupDcCWIH5rd3pMZSVpeKGDss1xZ$we_6)3dqlmXR9CiR+l#+I!I?TL7fzt z&@Zq7JO-RKKbWf;((s=X;db7fa*rmbQ&E0!lm$Jl0TvzDsIoGY6*xb=9oM=D&vxv+gGAHi6P(|)sQ_2>5? zH!RZ&1)igf^Oy?EFjfo)b^SqKo!!}yvGWiQS4JJ4E$8guvrkv@E2@ZtQxy@6Lxkg3 z1efOzbs*5Q!}*RTPBHw9GV0RSh(y$i(rp>|fQmz#$YNIGseCDRuCg2=ay-|9Azp## zn5}xgZ3w+Whp}}~urWIZ*u5WRer}mv+TUIn-(6T`+`RYfO_BZH6O(>SLnN>qQ!gU+ zskMqxoV;`H?F89j5HqqfGQZ78=Y?SZV}=-`;pH+ORIr4?_>>sQ_gPsM{Ds%sqeQ|C z3~bsjI{}lXh?~S6mwWT`;UrMBN1Mc9;i}DFALv~Oe&mGKuV40;IIZHxW;Mu*+U7Bg zv$44Gn~SF0ByNhjqU|RmhlIxrBw@FO)K>aX+Ur9vhxP!;%(N$W|J6mmv_Embt_34W zBv~8Y5d;&>Y#N|=bt1zABuG@`LC@r=!arD|sT=#hrolPW6gN+Vt;0%U8Je92y~^6F zc%Ne}BLl$~4{8XT0|1b4!cL;gt6v-73OuOu@i-)F?`+3X>&O2hE3jR|ThH;^|Hd+( zK1#((@N<>-ZQjyF%FW5NEDOpPtmsdX$zn76YwyDiCNV^v7P!CNh8JRZ0yg?h;+X|8 z{bs;wIn{ycSvP|VHO9E;>Fj;5HXG5LiR@Gh&wKeRYsyrjc( zz3wq*`nx&yhgXh1kuOx$FXF1<+ga_z7;&gMl!h8MU5!sfAbzw?qQe`B%@ogFMm%ZFCUjWlk?#Lj39GE^75;FX^FPvr-Cj!?e3s#+=* z(gN_A0Xb2S7+vT|=+vMuaYS@spydqOYp=L?A|GNRr|4&qSeF{&;L#sWP@Eq7d9wWV zUJOtCCP6xpiK~)!#Rp+@tU^>44Lb`STUFOm}R)d2gpP>x$k_X}ImS zFie}o3(nw@UhH=c#%a6HS%e4f6E8&5ma7-GCyxHR(T+TjYIsHTv5H6y{F!kSww8aF zp}Z*O zWIvRw2dj$3W03w5&0_^xC5f`Qq0G!Rg=NB`m19*OxUnQI2%Q~#Uu03yX{C24%A1@V zf8_@RC=JvLc?m)+-~1#h4%pmk1k>a(+<$28T@ZQCafil{RVY72p4p#9)0dxZvL+^v zkA9>@Nit8ymMyc5{9(2g42>zKO|fMa-(ZHJS*g1Q%p${Ucu5@x7|k|G{yKk7_j~O$ zb9gc5-BR@FnIb(6TM3i`1FwPlxdMM%3&IcC#XdkxO^y@(e1l}k-5>NWNuD*d^snyL zaf@kY3X*xjbp6OQV}F!d3V#!nnYVb7@_K7`Qr>}CAU=xD%-rlj7ac{!L5c0|^A;=N z`$SoEPt9-{okf(}N|AkR5(ac)&9LLOc$Uz_D;qtrv&A|QK2KA5c=wdp#rS&6~LwawAtTGx=`LBB4_rL9w+Aua6#P!2Px z2XSgstbkR3X&$%Di%**CMSiUW7N!fpgtwU+qra(Egrf=>f>);6 zlLzINn~5o2;82@POA9u*@t9Yf`z1g|>s2`#7WmG)4o zECg%!REUB|P{jU)pZWvb{E=9mh+rP#7}X0k+o4&_o>%fn3a0!0C}QDP=n*vx(@x!Ll${dy4$rl2 zx7P2t`MXH};P3XsN@~Z484Y_<2`U6ZXCgy{^!`6JPplr-T58U<#7D8 zpZSo&)Ub{C2i?301)&aFYJb1QIp>)(w_GODi_k9}9Nd`KwuN)BR;5cwuil~I|408> zS5DbnjD-vk!Np@ZdkPW{u6#qTcL!r&A@fn&L2r_JJ!5s4W|;#IO0ed~BxO*Anq3Gb zQJimdOnqV85G`6>KvETr)Zq|NIn!pL!ncIgQyP*jbjbs-P^<3N?8)iQEI@ieexPYq zD*zWC_s+4!)liM{Zhba&5t5KgSl7@P@Gzx&{#5DtllZ%DrKk1BJxjY3B^; zqRx5qx5+tqa<4V6{0jF8m)vG$i4Yt0&RKpK@3rYRRq1svE&b(2>l698wSRV_8W1k+ z4gq-6@f<#g2^c4RM35#Ds`BCOD~Jl&%(0iOWbgo}!HTkJNpkM6mn?643=0oBc-$5& z!Nos+_4i>{JF#SldRg0nQjZ`luADrfAFv%2Q7-D8nW*DOb{c7nZ`pm@ixMdhR+Dm{ z$`R*xUSZ)Du7htp6;DbRw)ythqm2RWPleRhc=$Co@0Y@4uu+>KYi(g?E9$3N1z;pi!(B7=n7J6s8Idxqwc9M8Gf5yT9zY-4q*!?Xg+cZ?oN`uP=XI40dbl z$G_U`IsWPJdn++d=0)E1;?USxcsv{d&4r9r+<{A=6Y?$(>AyrCH+=6S?J^wRCI3nE zAVFq1KkHqKbLmubJnOHA#1BSn9c&A{Pwo6XhO5~Rx&Rch_rz>D95Z9jzmf${5z}ui zqz{Un7b9NdnV1?&iI3{2eu;NvrO6;LDO-sYY_soiUlR8b5kzWlHrQytzPtwX53}lU z)GHTvdkHekMKv+Y;RgJfA}y%%%BT>N+M)JW(BUt`VkeFFo>s$~pyqh-czjSFkcOQ& zugex_9vyhmS4)?d3{B+hBH_)>PgN8bh{dgv$4P_YuWgXiNAYZjTrb1t~?&m(>ciCl6 zCH)j{?P~br_SB%zSRs=#lMqKZ!Zi!1Kt3CFN}@=S49=dWrk#$(5MXDgSUX@JkTUMN}J1~R?EqJ+7` zH90}Z+eoBj5ArVGnAZ9aeh}2R*Ssr(uuc^(?5p|mrJv6qP%b8`WK-Z$m?Cr51E4br zPgb_|#ZDgJYF~e;vf_yLqi4VGe7n`{%|D+=-7gIeEN%30rBN*%mo5&$3gW`hU<4Q+ zN_YYmv|uaWy=wFo-Md<6BMH*XG456SuOS*hR?e+JY|*mXAO?aBXdEs`G>usGtz#!% zIra~@7lnd)d0qZEq{!4Zf>;i8AT6I;Q^>ustQrlqq|SKyUYbat!*R|cpOjWRXw~De zFmkvZf{n;?I+*^mkRycR#kJat^DaJ?%X~k|r%jOkq=TY|hWvh3{SM8z&uRNac$B2z z%A=L}h6XR@bwnm>U|;0*4ANtZn3?OnmzAOZ5_c?4crobOroS4{@EkGxurLgOMJdF< zkmFqUUL22fkT#t`s-h-l%sY+wqoEcmdGog=lukcMt8{37GunN;C1;j#@e3W&fUhxo zSk?{>#ccDY#1F>#KTD`os8aS9)e6m>AQx76BZP9+v~7Or6q8qHfR_f{=6(7g0(X)G z>|XyVd%8j!MMbt$v3Wc=QG#9k3z?fCNSL6>P8 z$$w;wfO|#wJGV7gk$*kWYQ3BN6wJoKgI+p1=vleoT7`+sqV>Tl?`hGArm~RyswSC# z_40Wg=Tn)!wak1Tw8Rg<;rP@t`_e+ma_HH7j|{a~89iQ`r#1VJHWKp`t!ON1CxQ>E zIarNnRU0&jo9}EIh9=9S`ULyJEeS7lD?e-)o4LA*)ds1uC=_$%XR%?H+-+gaM1JD# zi6&nC?|)kt?>6ILD<&3|xJ)=otq94DZ&FbXQIW55gok3dxXL5d0K?FI*y{!XxNuu| zX0_MD15?!v$}q!HN4&e(1U}-fd;W}*e8Rw60_0py3%372;?!Qv%a;U7v2g&crC z?t@t+!ph*9bRMeh#~&<4Sbi9t2~>A)naioa9YSH0{r_n`TlMF26$y@B@gt2y*acqi z%U&<(Ax>g17ozO;qUq`-X(D$rjUE^v0`WHr?m8gw z4_B!Y>yA0SH<-mMm13WjvUbh0SARQR^YOXadwyNbewQcgUfhS@*Xxlf)P>ZgBe)vb zNG^V&(Dctk69L#sq{e(ZLN6UW2K;lB& z84N4@#REgr1N?`uJK4n3XL9##Qaxr=3| z9j1vvTT7yht@N#^(pMOQACRU=n6#4I=YX|MMPPxREKlUsieO26Rgd8&30;9q=2U;K zo0{1ElX9d7pdY1T(F@cD35Q}ph9(1bKv4`VofEY-!t-v%X_L4{$mD;~whceZ?5~Gi zkP9#jfYKqGX!05~Lk*fA0X2CLM2U}AR+F`r*O8$v(;&%uu}6NI3t}S3{aBILfbHHe z4OS}n$y)SjPMZ|q)@f+TK425k{MsL)nL)Yka@wZWJDYG_-t0R+Ku|`cs&Zk8zQMt5 z?fbH!;Sd%J^QuhZX=x)>PGVu4y<>_w6reDCqIhB|)V(%?bo(|X3O4^#A`M)f57Rq- z{OC6O=j8MKTkB7I0PvtVW(fz_)AB0c4qCB)j{14{2ECEsEpXH1)R?9xVichQ9u6w{ z{Yi01vVto?JJpvQOpe{m%A$7>f-9~>#H2{J#qWe$W2g$qI}WcY*m`T>Lj~KB2YS|0 zZ%mqUnzs*_*YVfs6yFG-DjoOh6GVUi@(S(iP4l>pq3cq{k%w8RJs`ilp1@LmCe1}s zav%-U8hwwO;+d+M#NO6Q>RjpmpnW|tF*Ky)MyX# zad&O8S8Jf z{0@$U-JPTA{d4y=N-og)igPJggMkx#4uV!CMfDBP3qW-B!1~q&FJweqFpHWiaD!Az z0k1~`%zi*nL>oFkOD1gE59$X~V8!xXEfK|j&`CaXa654iM%M`<28Kr%7CAkkN;F!R@DIk+ zq{I1jIegXVLY8FikSN@aDVa3hp53X7GD9QSQWEI9?$~Q~#i;};D=O(x>Nr)=B9(xl zGVuiI0_=KaEQ=%@`U}N&9{4T^t>Rfz`RCFYodT!h*3|}TU}`e@gyQg z9b~X~u(uYGnA))reO+OFVh)>$gChi=^gC)z%&K zByPG|#+MYphrkpB*ZWL9i%m(nFQw2_;`h`CXDPU)Ur;`ILKzn(&`9H{Fhd?;Mxb&o z?+S--vHULjT?C@&kyQ1H}J<1p}q^x-d zZYci^+9zly`(0X*SJW2em`-T%yidq`%uQ}J`?lR$r-I@1j}pv;KyL5TXVip+SiU>xZ&oqVsHn*Qw9l}q9@aigEI(ymTENzVO-#9)RcBb7*Ys-oQc z6MnS@7>Hc0NnYZ<z*;{fl?Ym1`u13nXPxK=-_zp5 zhsE@LU@e&XQXA2eXet$%6h$peo=j8X>E4~bbQ;gC2~UNJ69S~e;}0jf4N}0>98`s` z(ffek4laz%1F3XI(NSy#@TutgUds10@r30LpZAmC7n$Fg$T4=49jUF#Gd&twBw=DHGH;4*ExPkHq)zv%tUtR*_ zs1a!}z-h+e@gTz(uL$-lGM`E6(DF*7@an*@+)*#EwkqMP~ejQIaMOIse z?iH0Om9-Q;n^I-UF&+lD^sE}LRNz|U6cddY^x5?gI5;8K1ffX-`-T?7OQkZOOXd|} z^j(QsP75iFJFT9CC+`7C|I0~nw1{M~;FDf%w8)kG+kjtsnHc}6E#qJ5` z%nd#vnJN~L!h<&eRp@EP8C=Sd>d>e45^F@sk)%rq*W_OaBl)z5`@CoH%p>D*W}5}% z0B=PhpEh#N`K`O>`%FMHb)7@Ek4l+lLwEb${nGY}u<=$#NgIiE;x{yZKm^cnKM_(hzYB+Y$Q8IO@t zb9tfP(fUkJw8v3F-xxsUR$#sn))w!W&al#i3o~>9AsvF;znr26GuGcZSO+`fBy z$-$3bk=C9v+fvT`-axUE7Y)bW16ZuTj*vjoLT0kp=iU?M36)&YPh|XIxjb%tcP%&j z(w6Q`i-pH0f-=C;06SOqU!(5@t|6rD#Hw|s?K(ZGbRg8eS;p}KxjdC^z(4QJE34}t z*1rm&F>A`7SLF3lr%TZO_?#!0Xgt^fSQKSh^RVBgW1C}Mzp3xg_nrww0?%7~CRn=} z5VVX0UuV0haC?O97&@LFhUrJoNcaY}R7}<*rsCC5Zg~Q1mhVF~W{&tWqZz z4`3MftX5o+wcA>Ekx|W@Q;kw({CmIE?p+D-pa>U03qrtij>{j}x-e042H#`<6)T`a z!?Ce~V81_i+SAy`yZrhGRicCf^x!K1R^wmC?chj@Oywt6T{YmX<~E5TsbplcrPn91 z4?-`(0;sts|4a6@=p6L5)OKEqG2&F4^vjYn?z&|9YwFo&KW{3kOAo!&TNcRP7rL99 zn0aIQ7;IDwZH zBRYW&L2!i~DM`?bpe-v8nbpwI>x75GNin!rVWWVUK~gUx{W}R*ajrOjxOC+R>~ zX}q4TK)D4BLSHCBtDwYiW|UAzw`!KsF)1t5l=<2-s#|R(1TL%{Z~KvW0&-2&{PNKN zY5c=Az19Wr2uuuWKMC^&(y4qHo8Zdp72@e*RBaukk~vAdGWOe}_kz_S7ozP+W>Vi=8}3$E+AqXn_|SOvr9BLxqip z+YrM)J|d0;6g1w&+wSi87sw0q<~*kl4MN|&5IuMUgrcoK$t2%*4D)l1-d0(U=<``A z*)61$-c4*(r))~VN?qk2vPh~FS;-@yRK1r%X(uEM6KoY>mm=Y(*gNT7W#ig4a zmii_#zG2^G;Y(WSiZ<^48t1*Sl^v2%y6Fti#RiZ?->kW0ydU+2rXN$^A>DiPDk?|L z-$=CPyigBV8PN0$&GcMLz&D&WPUfZ0a2ry8rSir8vFq(yum_313$;WUJt4$QnbLqp zA)@3i>sx2eACvTT^vpAF&y0OkHGAT~GB|~m@RqCRIVYb!;n5gY3lxte8&$CB2?=Q}d*7L^j`~*rj3Y9|wK_hS|1TsVk0GvjeZ40Ac!baj z6(x6=!lap8eaA-~yTj;9{qHCo`N{}OeY?K&G*T4BS3}oKebEg(87sl8GIRDnqI>-} zHkY>R+;5g)KSCKE6ozkn8tvTLb)>M=661{D0at?^fz1cIpZA1AKVc$B$TP)#YABmY zholnjcMT~q%PlOGL!Pf_#H7soGkz!OhYVApj`<{JhvS+V992SJ?k!&XoKiEeUH8v) zDw#&yq99d+^-EvuRQVlX5<#`LRBjgG?n3Sl1*k6^KzM(+`J-Q#7KY-CNb%Xa=4_(> zxH&z7@VU>UHg_4oz;G}M90CU8L)b7}Z(&m)I*Z-4coNx&SzsB$3TJ`FU~zC3LUybu zaC>D0%ucphT6-)XAfT@>#T=|Jmatn6pTIm=EC%u@pJ*niLeJ=yS$mHhN)0$Dlwiw5 z!E~Tifiia+#DRpm{?`lE+D@9BP@|aev^Q)D=IgF^(<@=fGxtKK?vlL0D|2be(uTsJ z)G7lScNn*@kp9~MM6$WIe{j@R+Od!ztu^9a@cQP8k|$E|L#uD0m<<`f+2i_rawGvv zD2n>s^ul|~M)9(r({oj~8Eic%gG5J|1ju*ncTk99X~C$(p@aSYOsDPVem%zZs?1V5mW#%lMqvA88PFqnbmaA_*Fi)k_m8n-|-)r{kPNyxk7^@ z&?BCfxedEcyk}5Ye*NYV+Jr{$h0{-)phdgCKf9s=u>=FexEbs<$@OPW z3!;d@>vD}PI?E@@9@SpAACQzPGTNJQrPhXxJ|!JiiW+^QYtTQLi}m%nP!ZKEdx#v= zi&h9w{XPvR=j~5LIBa1ksBQT}=gZG+us(ciGk*)n?X((GqKNtU6O4ahI zc#neiE%zqwyK*VkTFB}0W7;1I(Fp{7TJHQ+qTa5l)?AJFdgQheR%N9eh$^yg31ieM z;0i@JKevyUyt8RZ9^KD()yzxotNH(V0qBgcMs)azJ^$yN>=9}{Z7AE1tTu`SZF8CM z3Cu?7eO584@Wz|s18+@nJvtNYa5UmOFvr#6&=xX);Fb;0tD2D}9*=$YZ;N_(Zv9ei zr^uT2==1llTo_LQxI)c+de`>bf~Ae)s)8s951ZbKrIS1VzkIFJHg3olDWeLc1joBE%*i^jk=l4 z+rc{er93yvu(?;lucm=~hStF9QX89D$c-RmVb|Y8ImO;wYYQ@%#KWguo$KQ=o$=M6 zY&6`a3@?AM0-wLBg@^#11hWJ+Em6-!36Od!p$1Sb=zVOsanZLUQr*3$ccekF_)KMY z{KP-HOFlMIaH(|PIEKIZZPF?eOUC7{9?#tAgjD_c%2LXTxSX)O=YBL07i$m8pI4x` zRCCRg8FfE`fj4q_Ie?r*59{+jZq(qWAt3 z;Yq@;SQ6_LvNIy0XhlRy@nG7waihV;8CshJ;~##vMS0773ahpkBR@I$dWPd^VKVP8 zgK8Cu__D`0D+Q!(;}bS=5CV%P5dthko6iUC;10A1;VWDzb_EhdK|p0_@eBq5L*f4{ zf)L{Bvp?1c>5R6-{#p9Jb=|37%lHUNfSw;aG6|SbeY9EtF$%sw+zq|{rxXkB@14W+ ziMIN^-g&n&+fhYCpX)|^l{7mc90><}HSp^pWMDaHZq*$%ubG{Hjq1Q!SitFG!bjmh zInv=rZM3CFuh{FeMLlZLhhVb}Bra35UeiD?R5I#nG&h1RBY1_eI@6tDths5tcjs@g zPs7#cIn^y!ps#->x4Q&zUnb>!57G=jc+MxJHx|Io*M<_t$9v)54Z7gK;U2b$)C1|W=@zP=d(S6FCB zD++0ADn6v2S({o668k8$e1P9Wb~&?2;q|O-;+>vc_H&o!PknVsY=&`3cuX*+O6oO( z1_^p#AX29D%AW-2)6O8`o*6PnGn2c;Pjb$wD7SV|DZid-eTDMY^_W|qWP3}K*2xb{ve6Yfp`^ z#Eb$I73+!?PPa+jmh2BPJ{${jux9SEG*}&=!5SlLyO({#lf~;9vPdqZ)*pIT&yH2! zGgpA=VJDvYe~sE8=CSPVGFr9^f(90F{9yI~@`oq>z>S3`fmX&AgYQ+*?^OcuPCG2B z+Vq5@b!T@61^)(=XT$;AC{h%De+=8&#C&a((y?R16d6Vo=ZguLud>T6kmAI(J!Y*48{~<4}^%6cpv`?jyxhGgy#d44g~Un&f~^ z+&E)@Aj`d9ef-%XNzsK2Jv?sg0$sqsvVPC`&!9N!9K@WrSpVaQdi1Lu^Z}U9N-hIu z*`JX9{dW5F3uph|nUFWPYkB?=833kmt;k#CUs)Dk7gEr<@7OGB)F`5zOj zRC{|a?26QHE@4bm%zarC3;em#LX;I0JzqMF_kBK(2%S>gz*`9dGKR4vS~#>5Crrrk zPtrTzSK&3o=0GZ3!360jMP9l8=xfTMs8f|FJR0H*k*!yIKAM%`DnaKbq?h5_`KUIy zG{Vz?LrAts?o)2HUYainGj3olu=2muara@s>C$Q3o(dOi%*fe4TwG9bKxc+s`{>3) z@x5gHsy1Bjvz@i|#126_dJ(mWioc3rHuI|nmt(;H)lc*e|HcWJ8yHU0M!#+mVcfta z;PBf|^v%n~!OPbaaCkE(Bqhz0oH(PLk!>XXa5I)!j5Hkg=i1@6gFE{khmh8z&Rpo9^!khMv zZOP$9e)m-~z8DlsDOV&t7b>awgMrvny$PWn5o<|FJv{?q>lfUj-`{*2e40r;;JPGc zKcs!UrC{}-FnGW-@n(Pb^Y((**s=6~`sEPdj`9?xVbQj15HVw-?Hsr~+~j>(?~`2S z2GVb{S-30;ql>E)#k)iEkxR4xFHP%3ep0ZXa#>6&4IYa8ZRC016^#K|i=&l)?}_mB z$=2ex!yf!s@1zVHj}!djWDmp13B&cZghh%z&6?7`gJ$2wvMYSHKfo~JC~!A8MGaIPLvOX4;oSwZ zpv$&_mMWRq6{3z?;I5RBLRH|EyX0ER^t#k$^s!3n%|++-oZ{{h!2*f&5ctZM?)R3H zHHiS@fj=}@bv`7^;pUX6r#za5^!DK5-`4ARy5Y3(MIqax!V1j4#0>G~(*n`Uk+iLN z3R%G~BkY9Mcfk@L_m_Oevgc9^(gYg_t9EP#S^=)d{kZ6eNd?F4##L`3YOQx2mD*}- zJTH_C1BAV{o4X75$%qzCVrX73+jeb#IqC_r)NtGEyX>$XY5Ir~t3+s%5}Y#h+8d;0 zw;dcg9LJFriPC7|2KbA$%rBN&TJV6KOd47Av}N z=KKaVp3gw1+}5@UuB0 zoEMJJf~00omrU-Lglh-z@k_ej2k7y!0&&nq{xig1i_-|s;^-$#^|gE0xVUtKz!C|E zF&Mcp_V95!WG3G9T~vnHI!1qs0r2wHzY*rikWaQ{s|t(VLb!S)FA zY^5Bw$J+?x8F^>SU*b1^{Cm_1cb1xCOvz-DmDNDj?<%LfD9Z$d2sZ@fc`8(%h^?2r zR@1iq2ZP1JS$3ox}5w+ zSV6St5c}bm#I-@C{Gl)%Zgr+fgaGK5Nc?vh1;HdmcKpz_fY$3SrQ+Y&iCP9`{$}?C z?sR|FDQ^;LZRq{u=lFim)vfbvOP=NVY(nSslLCt#7Ov?0hh$X#2Y#aW@-aGRQKU@uF*V0uWl9 z#rwC_eJNsYFT6DAvqJ3ObPP^?oI{3vDbVz_3qodN*@Kat&^nyTip~mnrHljlJYKNr znYkKB07A3>hPcnWRJ5|^}nN_%pUHUX00*7`n1IT@>WgFIA zHH~C?Sxq=Xm@7af>e-rzHR0OBgKvj}V4Ar5KL%*e1PHgi z6-@k}ei<7En`5wco?6gATjla@9N-wy6mj|QnW6!51d4Fzz zM#)_vThD0NquuU4kJH_B;KaCv@@7iQz4&FJ$XW7em2M?jbjXtw_qdyOB_TIs=H+&_ z$wMCty7Hk!6zaFSZL|HUoiv+?;43(uV1nXc~%H7O0P4nt17NQSAS*MF@=67q_(IRzZ5nn_Td|Af2ow+<74b2fcfIa zsR7#JO29f5a%CEqCwqGEo;!Ztsa@;|q#d{^fFofc2}Gz-XNTl{xxM_qWjPzZMQA{5 zIu@fZV5PH%=Yy@U_|BN`#;l z&po{3F;-YELBDDO`!&-&2iLEe!V+oQBdsIvMGN#nkzM&T>z9CVLYBd@mi_v1{<|if zDbRR>q)Zm@zC1eb!LUYV!ybde!S)aiGy@k1l214QA;Ex#T{xe$UVqk-B^CH1$cx|i zPGTFR8xo&;>>?)BbE=X%tjr!xjN|8n;8Ai#S$N~CE22SRee5EfE1?fk3?n5GXF9hD zRDQ*jLb7mv3bLoWjW#|Dr)n1Dx7pi^aer z6IN=bzAa|kt=I9^yZv!reAim&A5)enSL&gH;^c~;_ zAmYEQWAATc$P(w5PJiIebC0Sy{=8AW-`@;miy+EoD3|x;1XTiE68&L9I#r7Rr$qjP z(8EQ{fzbUG?f^*(Q*Q4*+yRdxC_S!m;Yu#Y(q2mt~u|L6BM z5Q0Z-@1|-*b9@KyyeGIYzZpq^)UgIx26bBZ6U#e zCN+cxQuz6K^|U0910PYdOO3%xQIOkET36^u)UB28GP$j&5U^Ed1ig4>yaY@BY{q=^%6H7#?xN6RCrIFQZQ{eI0wJ z!gHCHlMl9YvJ`KlN2dEE+!@`4wR_Cpb}Ifr_-qe|dw)MRVaq(Ng2lb)iZ^rSR8oxa zgFuo_kjRPx;a}MnlffsY-}fX)5C)KWObMnB$jPTCU!C*Fpv!oT5E{OypKBalIv<9T zLl4`+`ZC^7ve7Q9N{1M!*41T4N8L-T?gnS9%XmF zdNeH7$;)VbegJ@KVg!`(C&5NKZ{EBz^9W!Jk0@pf)LT(_c|st4n+{R2w86)RO&}w# zQ0@@I3qoaNimCuRfgnMbEa8TluZuwTZ9r?&Er;HYPeKTBU`d}m! zl{>a19W0m+;R)tfU{C{5|HPjH4P&TqpU}HWk&#VhKz!vv7QzJT%q@k)He)S?0=2ox zC2s+lW1spLi=XD9Y@Yv4Ni>$n{|m4P@GxezExhynXFEpC^QtQ5lO^4y%Vf!P*DV*T zp$%nwXai2WVXWu=&^I=@fR|XmL0VGUuSEAwf(Zl4FkJjzxGQppgb?ty{BvQ-rVvfs z{_Wyw+WhOqvZ*vEaOIxHo0ql4o57<8bz*~8|K28}eYVkin^AYkTgGK<#xO0_;q$12 zHpnJal-}t5{Ju$I%pH2nak_-UQlX>=9Y}gB1zFqGd`R(HZ1L-^v>L4IsN6q@J&Fu1n|VT3OR8&Yfir!DAhm z@P@U$?%`4`R~itEHdBo)SNzf`FJ~uMk3a$?)voet%p>H)2bE#9e;9v^cQ|U(J&`P? z#b)caH#9_5&9;fUYs4M#pL~7XZB0nQsdviXzMq|}>APG51=&V zHZ@~;dBt!YkUSVUU}8sdKzRU}Al<+M7Q9b@?cYA|eJq)?S`qIXuU8w=rJ*8u$7==}UqKMmUH=e;{8Hz={v>d4pb0(mM zHoSaE)Od_<_xCa0Yj~jRqaJ=gyj3pU%_z{n=!`c^m+eGq#9Y0bifvsmN5)bsD<-Me ztB6q5B}D7ktJ^FcR|(n=UCp!cQWPI4p+VMY7&62wO~C%nC)S)eZkM?qBU>enEycWh zlIu~U-Y0dZvwdUEJn8OFg3z%Ds3(dN-h()UW1p}PiGat!9Ry~eZyKn(m-oE_PB*(T ztx7iU6xS)9FgT3eHP$TngViKhDadf-cHVUvw4qU+H!SkG$B>fv*HrM9D9zQ(61{@vtPnx3^${EAh z#(NU}bb78}odX5GUy2iT9$wpH%s29n7ZSkBrj3F7kfq=<1;|Bmh>ktA|DeX-ze__* z>86WRTND$2yXW~T_@V+%QsevscN+TxeD{7CV4cz>(f|@CYSaO z5ek9eLWd6$EFdFH1cnMtQv-1@be{B}%y@n1LbaA@{%GW}7+$;huZnaXcO%JYPl-F> zC*L)FhSQlJwVLQ*+=<*ZOcx=;Ss5I$peY`9IYH-qU!NDqq1t|s@h5+3R~OXNQPB1z z*Z6lJSsqil(ivu)xV;lwdX~c0E8L|kWqi3wB&Bx6^em1}U4CR;o3L`d{iT%9;w2i^ zZn}FR6eOT=LBC=jlI-yrC_pL7J=yWf1MRw>Wcl*lKk$q5?v&h2sVfm^M*%ub}cw_X;cRnY&oeCT}RBzGzUi z7(OrbVY(5~Xa|4yO)2Mjg*pa>W@@HrZUAsg{IB5rJ#Y$tl*5*2=zHzdd*87UnkZM5 zH$PErO0oYqa#hFERD5Kwy-O1*R#Y_&Q$y9RQ~ufBdClNCSAQe{d^O0qgr1yfeO zW5MhUl!jb&Z6n|uK|^E0@adwHAX8Z-(wzc=2!eF?hIE6Jg0yruQlk~6 zyGyzTNZ0qg-*xc=u5J8ycGtP%927~kl&PjvF(niU8I%I3G2m#)X&m%)ei5QXT}CR; z$<{M#H|DW6 zXjz!kXl3wiIPGXXGvnXpcE_rYHqe!X^CuVww`#AYO{Qpqjym-##5Th1VAF5W1dy2V zbInE00=1{(CQo`*EWZUdO3G|qoay<)gp;2o8M@%(?TXYXy^{`rZaJY3Bv!Rar(9&##kZ|5kYd(%ao z$AIe7;DlV2EK66kfzgrJjceoA6S3{UX<~PBxh@A0RrM@SOKCZCD#Myav7078eXrio z6ct+FBY-DDli5nutKu9355kg~Z6u))eco$hJabP2w+wacNWpM^FyQu^Ni2{MgM#tP5q z%HLSy@m!dBI%3(2CI$2#R?U`sx!>ZT64;WiZhpzBNw3I>J;z2JIt;ZX{0c+H+a>$_ z>r(B3t`a6D-ObkvCVh%ZVpj@d>#pPZHYwGKuh)F~mm!(?KWeIw?XTkJCx;c^a`-J2 zD>gL#bpiialR~h+^*(t`(c3Kxi$EdeQz~EB@qz7FQR{>eJwZ&B*7Ssul}hvmAiY4k zN}NN@4t@vP?0hw1u?D9t_*EbK$=ey0WF;FdNP zES^L?T{0-Ni}EE>OwXkhVwj_pawtP*i2f0{9HO>=@qFrxLcp9x11*psX4By{5%lTH z2m!I$^KS+E$9bCu`)*nWQda9`5O0j;AApZiV9JQ%==o^lmm3uQVmPME-tn4up5*8k zDe$VVJwxc_;xnR)!?D%$GsIr&QGUVT=3qZGI7fZf@MX&uz#x_PCeuTQ!fp=Ye`jwm z>9B1iMrTH6p$|K`Q9Ccv0M7VTGu>PLc#zjW@BHXDzBbf?U&7EA`||vjh8U;!Nz8FD z1QY9a>agdl0AJg59n#3loH=zS{m|{XCN5qL!4nDJ96ZT}@f-g5sI~ioVu{_*mRG&6 zCKtXnynU9J!@QfKms(6A*jUsqVkBJJ-GRD_p3fLuzh*5Bs?_pNtZwB`sY?`|bEn_a z1wVa>CodxlH3x-It^)3dQ;$ZqioW_5fYDe&Jdrz_%~GxHH>do_l}HqJGGyiQPjBKU z(GRbJ2BSZxH;=>z-Nx+y+5)S0biCaqU(UOp7bUu);u~81edMR#0&Lel^z2Iet}Lzm z<4kU90WcsSt@lYlQ(`0b;Z)eAvzWUQ9j5vU0haek>4$#gkj>;f>10R*lTNqc)_#Wv z|1hn;w(s1jpYvy^rf&A0J8g+W6VkhS&R6w^;@VKJt(q;^ya9UHF%cYevruQbooz<7 z0Sd`NojXZ?S*~xG5bQQmq2)!91FaMW)GOQb7{Y*!rLDnzUezeY1M3ifxXDd+yp3Jw zO~PwZDwro|=B*L_9i}tBgwZAY$4`_6nv@w52u$PFYX!F=5?gfENp`ii$S+}x7NL5Irq64|eGW@{m|X`G>19-$ z;*Kj8Up;eebNfSd!?N+8Ut&H#9Cq4$^#V2x(XoHxb7PUJ37y2`+v$gW8rtcGI`s;6 z&+Dc}H7i+5gt?+THz6I3-}!Ov;2HMG89un`96Zl)6d?C-Mnr*ZYw?lk%4e+y$Wc1K z1HCf^>KW2G83rD~DkU;vp)ef(0@_c`T24@X-YdoeuoFbNMdcL(ERMP|Lb@yvMhi@o zRZb(2Lp|dX0DHkM2CJ`D#dHl=SJ+qjRFxx zY-!QAxVqFz{MH@A)}c}l1`CAObEAOFe8bR02IS}5y#$TG8;s+p6x{Tme^opDjxH8| z{aPimZ=D%8>74-8S88hhemLh_(nMt&c5d#1;^v6FbxZ#drl-)4hMkEEodImICNmt( zM9n2byE9^yBYS}!RjO*zzO^Ke7z)c2mN!fMJD+RC_%YCOWIkZo6d zN4~e1UZVI#Z8q>R`vFOTXemuDPQsjg2@<6*v_L1)3~h$wL9s9}v%1)Gh|Zv-L?|L4 z@nHeNFY-tN3&ByW1B~ZDRid9`qa5P8$nakoT7>q<$#@LnsaOAQ?lLYncC_pdtq11= z6N0as^Z;^)hT=UHF$3hCY_|L-0u#oP@Nk52L#z5kD;!JD^}?}++&W2l+;^e z;_h9J3*rlyg$ej0uY3UeLD>599csLn3=vkm{0Ym=Os$8*-z8a(($F5O|La(;gVe|# zU{@6Ak3aV0Kd4%Ku$dhHS`#{>`gASeuTwu6k@3wRtg>vU8r);!FVVOw=Id8@0eo!F z?&0y^3AkMj<_=*@lmzdKpp)?Sx=Qg1Q`4Wn?W`bOqs>OcPA*QSL-bQvie8j-}m~M z_4)PZ7!tJNeZ2eQ)C%0I(eR%_P;r2nQJD>JuVJjFcKz~Rn^DB?Ds?Rxs8{2oo!b;$pimiP|phHXaqSdC;|7hahxRJn(d} zQI|D_7_w6C;U9_y)TkWJLmYjfCnMRqEI#|Q+3B#X{a>dQ4ns%5r;OLPZ_!ws2fL!E z)}k{!?RBJn;=Y4_wo4`*Xa?G)G~h{yjSC*^EpYc6Q6266Ek($UtX%({TvEK z0L~UXY8(n8q9RH*WR%hhA!o`U+5!N za`V&p{OP17a!vV{AVOz2$%QsRlFJ?(OrpoX3O&h0K$vwWK}HrIGbWa3y^sPbQV!JX za$$>t7Q=1RhEsl$o21Cc^n$!93ROY3q^*7vLQB|lHp z>OVTv6Rezrx>nF0ZWkt50v3^s_ZQ`ybKIb%6sMh6jP9T!UK6RN&uDyl&7@b#1@(+cv)oV>zO-e~- z2tgO7&w3d{gz3NUbN$7t13`g3JMuwH={;J5H>p2i!A@Hrs!kRW>^GO6~nxy7$ns*-0% zWo5+LLTtUJ9j^X8zRQdINSo+1GsSboSY?&!jEkCMK##mKP|_n2+cad688m+IIdfdF ze?!+?t?2U=a0pR+Z&QYgUvB-$F*LeyK!>wh{klu=ylr-_XBJ_dDN+C_8|*rbLH#=- zc+*kGbEt{gRyTdZjA@aIqFde0U4Pi^9h?nGk}cQMrhI|0MGz`%qGoEXe&K{hU<-lZgrTS0C~uPg(nOt8sbX%uUZ-yoQ88>k0~qF>QE zL!1d%atA^jUxuWyTOfx1d1n~unMDs=wDKmgiDK0SKqJsX;R8|%G7w-L<|!W>Z9YwY zc20_JHC3K{;K|f~s0eR|Q0UD{wa{+{*As;%mOhb}OHA2rcPU>5e8%{4$VJs+3Y4BT zzn5t<_faJw?=Pa?^8P}$6VY?lr%B#b44m;~@u1tw%yQWt|8!_MPkZBC_|*9f060!t zp#Nr6DKOFz_DdDk)T?D)lTRNFhUXHeSgxG{1NT51$!L}#Wcy#2nvTrKSVB}%MYC2t z{zOI--t}|n43_@(zQm_!86UKq&|V>z?DWq#@~%vb>({NpGW$Dvl9svXcOMkMr)8EH zlY3x=r?GtLztwt{dZlG?U-s-vX12$9eZf=3uo>r`F=$v$TzSYlCQMX_4G`F>l)?6q7$i8Uf8Rvv<<( zvExNWAMZ}r|F-3#Me2&_V~-{fUiU}GK07uAnQG-ryngyeh;r2>bRs;Bj3VeESO;Gz z!X`xeql4v#d&k!#{FM?u>{&2^u!zyG!@E`Hvnhm`vG8!jmj;60;B*#B3mBi^t`9n{ zqV5-x&n~p1v>}rXMTTSFYL*i9&=PePg;VZvR^Aw??BlG?y7VQP={$p_N}>g{KeS8_O@&BK>`-Uo?BEAK^y9v#xc zDoFtplmnn3EWjPKS1I7&BZyQJGvhj0NWN(b+b6_lICFLGuRX`O7e`p>m+8Jp5YB-N zt9v|KAqXM_u}2KI0B|T7Ds3sCWICI;wZ4-MT4WgY0Ml!jCrHKqs&t^GU)7T&ibTm)#?(OCAx;Y z(pq6waTEQKQnX{sJDF}l+Tx!g{%g|%pZb?dGLG~*hWFD+()f`ReR|ei6-WxA_-6cXkkf~Saeeo} zS(yLUMvzXXu7sINh`-4TNg9!tq;H9_+k%-{zc5QxLpqDGNaC6L;Wi)y`?@vbDy`E` ztX|6k?OofY!owD6iSv)gH$w}O`?M}h%Jkp^kRAN#v&J7^dMs}Kg=S-P6egZ22A(H% z*G7lsiV}#B_@uy< z6cG@DjntkF3H?ETSd#Uh{=mk{D^){WG`RL&zWDgn$tU4+QN3k;SH3BhP*FXCe%_g5 z_t@Q!RWcaqX8VS~FhPY9?+!*u#~{FdWWSTF`;Kf98w+Sw3YXzM^zSe{B*@3eu{eet zAAj5|sdWD-^|VYYQ1+?m8b7ER`wFxQc9B6yps@Iky;7gW!54U2b|hfeESf|6L~nWZ zmK!CQepq|iEln?#)F?8e$5b57PWCf6pBFvY8+xkP4CUBsyy)CxB0=gbN4%${sl0va zy3o2CH1|sV?toONkXDeidy8ANkMv6Z(8rWj-v84O#(Z6)mJXNK!ZN;tWCSHWw6dbi z1SJaegg3y_pk?$BBxb7oU6uh6V3GgX-O>NYAw398ttYGjO}S+{-U zfBQcXGNhd9p^|Nsgo`cZ8_Oe0Rr)Ls-}m49Y$)RK^om`mKy~L-pnxQ$ZkKW1M{-hA zq6DW83Oyi-kY@I76=rs^L(-V-F*Zed@`=>OVOt=>mtfMFl&Bppv0yV`U?mW*5$JXN zn6*PP2nF19Giyc*NSeLLl-RsIey;sabP<~C_2xy!*5h!AM?10^D0LTnLXEolEb7o6 z^QXv`L+@3bOKHm_U`O*)gV{gE^>gS%>lA;DD+%IDY34ik<#fM0J=0MaR9@NmFSjr6 z#UAV(eXkY$6{GbD7ShxmQEh3^`lh8-vd9)|(RjZ(_7h-O1dI5l<*V4D0JAAd&w{_2 zzbu(Y!pF9a^T>_;JL7MP=ZCKP!cct>#SD9@h;!%w-f9Liat{Tw%!&`UBs#UjCVLJ! z3$pPE?%9c>ns^3H1@-tmVU+a}j|YA4!`4k{VuFo*l)Ab8JRi*X|RUTZfMN3HLlUT zJ*QCwq8VezpG3g~Q(T7=mP0Gc0Mnwa;$N_laOUNMT(R&0nCz4|`#-a4wweS|33@Rk zYHk3Ga|K72MWW$ZAi{tL3sx%83B|d1ul5?-<>)ck%XZi9?b-tbsD zom%5ft#HXOX;oD%z}r+@O%}`Yw*}f9;je&U`6BSF9!b`^{pI36+@FWNn+jJScq?Z3 zwGleh&a9N0Z)m2h6{Y^?D(=Bu$ z95B`pxq~g`?X-F?YbSSgCqBibwnz%E^Mv8BOc6&S{uPub14J=IQu_;1@?Lh|eS`%4 zIp_&(fy%STY1NFul{doMe`*H_zah@J1K#?b+S^DLQQq9Lz{h0L7B3wgM8^2$1F#SL0;@fbThi=|DGE+F9Hg z=KPEgi;{p8tpW+6$9M;RS}g-D&>-`Lv*wUp30ITPHk)b1Sph+IAJ~l-da}kqp~%#@ z{Ls3rW!~H$f61k>vnL?hj)}ufxjDj4M2&^7Q2F`t@Q!7FIGSulhquK$MhhU~_;BO+ zBB6oaA=fR%#VShjM6&Fm)P`ossK`Lp)`x5a4sVDn)Rj@PiF>2=p;4r0uC`(!g|%-U zd2uBRb7rj$yEmk@UC3;fn5wDU-!or4wKzf(F*kab2k+RM{Sx)Hu|7j{E!b^@54#KH zD?iJm`u%59eUg(y-+Q-JTH-UUeHk*nXm2_*3H9AP`lVl*yPlCpCg8e{Mf=HEug ze6Q_iROQbezTm2F*6_q0vF$f*uiMgk6FQI3YCHh-C|qtEwrXJc?*0D#z6UZ!YaKtz zjjxxgF<_rxJ7`{QDttJ{b(*U9*qcT8_3qzX_h$=hZx8+889ohbAdFX(J!9X@`$&&ZROU&NNOhfquInz6yeiZe@)4g6mZ;P!njEbB2HR7~D;{2kL?v zS1%eauO=PZc>e!pwXe<5)qQMLtR_DbD$ry4H%uq45fy9I%J69Z&Q^gW!q-6P>PGWl z*7p$BA?kD4NRBl9+0$#JtZ}*=!J-Y9#uH#BDu{-?{Q=&9x+@G!G z>f>M<)Y?oZ4k1@S;e{lwm!mPsCr%9OE_)Q7K1;#&1rhE*q)ZlSIR4U`y7qMjn0{O4 zN3|ERVvNwm`=)jf;k{JCz<-mYpTTFm-0)H9gRde9%V&&y(Ksyd49(cphD~G&`MA?y zWN&!tD%LI+8!U2+CC1E~>iTf$;HHaH`Thfip+bc^)Dc|@t=vL7RetAVwy+E}B~%sS zi2@S9@@RpVzX3>r9}D6Q-*B*uV^g-EL%p@&)BOG#L`|Or(v?AoCZK0!Zzz+XM61!g zeQT!P(0cWnx*rX>AVFhRTphG7q#05Hxu6soD%9iLClb;2y_?a;?BnCivx7Q~_pG0P z3Cv-ufL@Z|vwz0P%L$H+P1WU}Cx56g`#{6>(9metu2{9$_?0ngYCSl%xLGS2FCtOi z6Kn4B9c$f)gy6_S=Gkq)F&9+Gn3y;Q#(CTX0@ltBWoU@d_TYkWWtrffLU04^7KpGf zSez7>8BVO2DP95Mv{2*ZD}K+sTgIi3<;{xFA!F*`35{SA6dEsK4}vE^X;HQYGkcwf zM`jIiE4Apd5N|P*{%Wj@c2@~8V={iyKM5V8L}R21v_rTby2kH_Ql-u61CPpc4h zZ1ig~$>wX&M(bj%JLL<%Odap!>%)@2Gke3F@_kWYeF&l3ohKNlIa8qsTL_xOZIaS; zf^&r-i_1?)A&zlI=6U#JCcG)`C!(v3ZfC^4#qK+)I3DMaj`$zMgK4q=aj~UBGsYF8 zl9$}-N!U~Wy-Mf1Re)fx)6e0sfGXA{k4RUHbED?G=tUGs&ow(8?p@213XV)yp_D`| zoL0}b(F&8C5y8Pwu$hEnc`mH8lAQN*mj)}*3g!ytHhmOQOg)(=?Wfd@Xr(E*i2gNc zulG>KGhv=>!Vvq8i~Ha*U3+LMnit4?lX({a)1Dp`5A1{1WAZF>Zf9uY*AE8k5m#!u z1Y6Fz`Il~ldC0#_&w8nTPmn6vDGD+MQ-3(zGd}e4s*1Y${zWF8k2QkkrB9$sseiuo z@170xts)ZBS;OBk@8G<_^l(eEn=%ITqbF}|YCe7|MVIm|tBv12YKNS0CVsmf;<^3s zx^Kg#VbV(PxHg-kmhwG+4CU>}F!ThrLQ{}wV%QJOfYRo*rT1CP#aFS3 z1$$?8pXZyUEVTq+#ab5EP$A)6ke(TzdS#Tc1>)g;VkGhH5V4-}y&_9{V*!%O4`Uh*I-*3Xe&9{QL_0jwu zbVX4!={fffylbnSlD&mq%Zfedg0?}oExm>BoDJjBm>AQu-cPUad~deuJ#O8E^^5#_ zr#Y;2Zt~_$S=I58+4-?VUAqkI6}SrY@Tmxk*H=F}wK5Uk>rGj-**TRK=}EvGYQvtE z*O^OV7utcIS%ITBRb7&+|8>uvX+==JG+D(uEUdr#wJ;9f-F^PmtfMr0@I!_aQL$GW?j5*K(gpmvk3#9PMqBjD@ zq^O(X+u#V+WP5G;5>byep(#*`70w=93?lE%;VjnI)GQ-+#v#*EBT27~pd`7Rs?uOq zW#tQWSQK#?Iol^r`nn=Nnjlb9NV@JfD@(>p76H*}j8TT_`VK^TO}=I0jJbCw+zi+l zPU+VE&PGwZF3*le2k=qIEiILuX1>D>(YIhh*~sJvpT%%6Z}3Zhix94VKCR4+QgsmL zP{c#n5W(c3OtQ8-rBNPn?5^^|EwVKS{kSYIw73^Ob{IyL^W^su2|&naaTdY;WV1C! zE_ZaswO3m{$e`SL?kt1M`zC{FjPnNmzOHWCcZ`93nzUIzi7={5A2A96d3hD}ttCP; ziPZM9T;$ae1Nr0Sjj9K7K>;rdotlvw zCSglVCSeU;#Yk_4U6yLZBxjMgRb{Lv$EYUZN6|e5p)Z* z2M%^0O6?zt87evN#9`eZQxB}-nJkG$dQ^%cgr5^l&TO!JPB+B!f124tjw62!sWfI7 zq(Bj4Cq2<2f~iMfg-ZJUI$n&$_O~2TV=hu>vHb|L$Hw*X^*q9LGW6Ttk!Mlm&_!G~ z89v!!-rF<27g^7Uk6=5QaQqRR!}QCI1*--B{@`x)TTZbt+vh5&@LvYsVyS;mxG$de zE;#k1N~RGq9EP`DFQQF?tErb&NXshoH<=Bi?&2XU(R5189Jt3`vVTI73HcogGCa0; zD9fHriYQb;zb7|e0zT7ojiB5~jl@@ixN z5)*N5uhjG+E5EXGihs4oyOz`KeVNF1K1IIrraa~O?Cmd)&9SFPSSNpZH5((@%zH!x z#UJkcC+@<0*yD75tqPvV@cK!45;jr_?ABhZnz=kPlY?7|X(ZN5%9ad#i-MU;f6b8jr^;F@OT zs{;8vI|&%NJe2S!8YbcxbO|N|&6$*ooBg9{QNJw&2NAf2$`r|}GBQ1js-DBCB!z7b zhHO}KVzRLx(=gHUkPuLejpio0X>~ACi?K15>g`XK%8AOWEmBYzz0@lAwd^hBWRIe! zkFrp;fOc&YS;;enUtwgD$jfx;@nB(D5K9rCAvuW8G>d@WJA6yvIl>iYoYghc^$phh zcRxauRVz;{9fbQ;F!~E1ZL0L^J`wy_Ie8YO&}1f#aO`lb9CrE$;RrMuVCm#6W~I|S z+-Zec4>LN~n-QQW$@tM~KqiV!j`aj7jKm2Qhm}A((!NfQlV(iMQ!-ofOE3Xw6u7pJ z1!2K0pt`x#Myxn2Pv}PG#v+4<(m3b%YD;ZZ=`rr`uJD{^-hb~s{=yRNl!d++DKOW2 zr@j67LxLoGlBifmlnE1`K|>o%`>`}MkrMmY$>3tZ;x}KhzFOU;psRhKlXfU7e1E#C z?bC*PF3KZRL< z;x>KJ=t63CYk4ZXR@x>s8n-t^(o_M*RR$>%Z+WY)xZ)s6hOp1f&SK82C`Wp93m!eP zsG>KbT)q?M6f>EgFKu3zlf@C0G7Z+WR;|@=iReF1TtI-$5F{!Y$G{!K!L+iZtbnq#rfPd)sCf;VwhUTnMiJ8>XqWbcOj9QGh4p*9s= zmmVjP0-kZ6#`4*0adaN_DoK;!y`Op>;2WQNe_BBcD-Pp_lYcqApb6h>5!kCco{+Zs zi@Cr9hxXf>)Fd=o+vK_oFenBzwr}5(HWB0}W=#cLmc~k0x1gw2M{Ej-mmj6=1#)$= zoCb$aYL)`<^kqS~?DUYtU^IUjINhoha;S-OP`Ua~HP%&}tb@JyT6^H~%9;;+_96r^6r9tHC_d*t zW2ICb+ZL1)G6laTXG`Zy9N5mNp@co(Qt@}y=mJPzqRJ1<6`4vjN%dW2$Xn8+5@Q3Cq{>}VLTK#F+c^SJi<>zwEqu;JDo*Mx0b zpR+cv($g;&sqX$4lj6E58w`wiab$Bp*i1asZ)0CcYWi(uDpK2#6mu56e)r_|_N*5z zUKw9G37gRVzp#{R7&kj5IQ*)Sn8Qww1C0jJY5d~HePGrn;K?h8@J2YL7Hx@Sv^?!3 zRTEcF-l8?Bym!o<&p=xvL_7sQMkO|34wcLN#A z?_j`Fa6R54%9w?#b258A)|x&$s-sne2|sIXHLw=z)|0|$#%{)$#mu}-iGaXIfS}a# zW@cVNW#(00{@CO7RPSzHl=w2T z)|%jCp9FYAC^^YlL_=X@!%R*eQRlNrWeo2xlrMFNrJwW^K=?37up;RBHDZpLvS6B@ zioiHn#US?1*IL|zCz=FWS%t+mT7=Ae%v+O*nE|On<^sI4k8`(!bFG&QS*Fl7*cE3d z0$mm#WrMthk8$`Yf(EEn;#XJ+MxXIo#4a4FVf)^1nsF#1UfN4~P?ys**w zvpv^wjeT@?P?g^hfHOCyb^3OPs!uK*&mFYjJs6c<06&JPWGaw0MCry7ok=9g zxGuD}UZEuIIe$yLD__KxrB2giqLLrJS*3KmVd5yF&Jgqa0noEy@RDzQu;W?lg-+!H zf=fNkcEH}Ao-=_2q4XE#X@N+26D~6W?9xnjE4;$OFut^W)Q)259CtBef6j2ySN?C; zXInSh@hO`fm?8>U&QmxVQi0J^oNOc2;`h15W|FSk>L0FqCKBt{T3m_wuX%8(TK$@u zwckyNAKs2LnKelB9v*vRzqEpg(81zJwaUnIkyYYLh(pzW3B9be@vMOiV;aM{piyj6 zgaBP;+TVm%a z3l?|6IEr>RdmT}|xXlX$e=N2hk|v&;rayX%?EFJH=LitPScW_nrOjSlrk1fFym%=d zuJynFe5-~OLeo0a#T#VkeoKG?0&C7*PVSQudnF9dQF^{7qCc^Xr$uKlAI8K3oK&pF zvjrQ-iv~{wAfd9w(;Sed7gLH>e|h|T-3p(R^h7w9US++VPB!+uR7IV|qSXtr?q+Js zF&=GXy0(?;tn}V=LCC;O+R}te8!UUfu)6)Z+`b902}-E7Opz-743G zXHI63tWT8K;HRpu{S@Cc@NN_J!_|O#sJ_hpyvXI|t8?=#zx#l`)8LC?g#dMqzBLUs zf!hs=3BL(6yZ}F3%m-_pl;T@~!)bT8T1$!4qq(oNnX(+#Q{#OO|VBGB8}zw*0u$xU-6) z3QvU%{0=!Q`~Njykd4U zH)KqwVbWr~3*Xb&RBpy6cNpYYX9yF-oI1ypO;T*#yosfQng=6eG3T_H`g1)^Jpye1 zc;)kk!iL;uS-g7dpR6_-y+rMm-1hT33~|g{VJ%_4rjHY7eYItp`QX! zsv27&s4ByhLs?e`O;QAkkj4W|X;e4x5#y=r%S!?ZuNZaa71w^e$3N2;q?&rbH=Ffu zZ}=DYUV3lk7`A8J7A1$?Pd!Fb>tf9@S>aOsayJmIb-!S@!IN5jWfuS8uM2rBg#JcvP`~nTr=e-z#3W!eQ#Ai%!-g%}0 zr~2QBQ(cX+@ZMl9I^=}qqyLnt)0I-j9Z(X1T*M2dtTFD5!>MeWfdz=mB z`9f;=TPqTdRr2Lq!PXzhCI?VCoHE1KhqbJDDkc&P+WwWxR9M?G(;O^%jXEyYn)rqH z|H%r#%pWZ|51okF`9SYtLHe^2^^Woi8wIM~Brkj6GnPp1rp>OTO^Tw%OQ98~ z?jyy&$A9rE-ldNZn;85_0uwg`03*m1@Mr&#GaIjZAy4(Jck;lsww@TUkze*&fNoUG zCrPBDVUA{K(@M^&W$&lF6zxb_YJ~Fu5=XaI+Hd>p;oTis?enfW6ka zFG1%wKMbt`aux(E;Hfz5L~eW{gz88g((ezayOD@TZ*SUSbaJrtmQfpjiXC*haM)#Q z-;7JptOjeJbmeUJs&_*`T&iE8sx>pL@O{)Z?ShC?H)W5H$}?nyCP(Vd+>aEyKvff= zq=81Ku@eUxYeo}Gi(7U4DP=rg#FB)yf+`+rxO8d|GsxM&b@=+p2YE0MDoF=$--#|eW z9Xjio{+Db2_#=I`@%-JGgl(E$s`^yY!YT~1`cQ;k&`L_q((EZs-e(`FvcCEGk5a(6 zvUK5u9$r;A*LvhR{3xJBQl*{sR#`4=0i&Ofk5H7*aDbzBy5{YdHDSmj95t|!QvEM9 z+^f$<=w0ydE%n6V8zBV0sEnT27e>9Ljsc^J*vuC#*hCj`6j#Gr_l?9Ur)2wh3FuNC z(rL>0qnqJ;+^UvDl9QR$-ZJ0}Jz)>$2={@5aOg3pmgBcDwUFQp zG4OBdZC1nxO=8nz0i@2^Ot5q?GOFB4!k~eX(gLg5T<=(Zb1xvEC8y*WLk-fIQ>;j6 zvR~}+ANliRs(c&z5$DFHW+Xp!B3mV&Q7_~^ShwriwL2vk9JEih^K+dcsO&v{jN<=CdI#_H}%c!2BG7k z+0vXK5#B%iPzE9IgcFM>EL;RBUq|<6CAc4=LWVE_?PAfg;pbT|js`1O2hQva8^z^@ z&VvZk2~&cbg7`|DF@nYeKYrQEXXjxtXlCe@aU!9{vcKll2Gg=ZV0n8 ziE}9DxT(3-@YgAr2Aic}Q88zyiaHt0w(|F=wmA)#UTKZmEx|k@F)~S~Np`gYH)I5o zy-Ie(lkoe}x!-EZTDA)i|^_!){yX5)amS-o^s zbZhW;h9*dZ1OL>S6qinzydQbrW&bRQ^k|CmPO1N!*8d8g3S zc+QOfl%I)f%j*Tc;oQV5Nq&kF+N8)dK3wvyW@j9lm}e#XysL|^)hnnKx>(4gJJ635 zQ)N`IZU5$N!WAe!^jY^M)SyC}iZ)MNB8Dd|QbaiM>s+LBUdWy;xd#F77v?GcP;V0& zR#=g^gsk<9BPZIY;)dde$*BU(5$pUQ3x6Ug9pSjaZ`xHKR^lvQ)GM|w3EevzE*^| z9#}%XrXeoZI_wfeShA;7W~cH(v429O{3#*pcM{i|0^dh#ov-g))so(=Zs=;EE4=hc za$T24lDtH8$$n||yi}5Y!AGiJQ2_x+@|S;1*8tahCMi|VD4tO?uP2(01==cA`6wyX z{ZR(y*OV~DQrKgCQ+84VjyDn?NeFksHN9As@4B0K06$7jn3Na}R0%T1guwubJ&f7k zI!D#=X})(tM8mgZX%X20{Bz!4S!o#IkZv7$m;XQqXoe<{D?sDV zZXFF!j77_GxNpAx3+G>rY{*~mFxptu;JW#0H|6nZ|`)J>V2*rTN8xwYH@E@Qa|MyDElu@xW4rY!nP4U)v$srp=m z94Bks{4{5(tXD~BLDdWmVm-=Lm~^_H{WqVE`$?E@%2BsZvO@DM;GTxM zR|EayF!GC-E!H&|&Ys@)-J!E_$!tS|)Ml?=!24(Z`(UOOm#DqYkl>4&Vb^INUhBbs zyYg>;ay>JS;z^mSv;OS3So8UyBjDMLw5{UB;Y9bWsA9dHJTT@euAl6+(plJR+ZEi~ zJfJ!spG{B3e0nJO=()h!QF51Qo&xO+oo>?8A`uMspsgCqiY)e;kYUv3;Yok7bT)~t z#K2fk=t*Q>+*4J?W?QTzFOvc!fYSVY(#s>Z!R@i1j9D-9BfQ;67$K#ZL>}+9hFPb? zo_u~q-%qsZO6qw~Fu4*B3}z`AB<)$JZWOmWf`aV-$msEN} z1vP0$Qke1_u4QZYFEB;lKzo5OaxVw$2!QwiWX*Z!)d0sV=IrM98=V8!+mvVbhJ(UZ z5Djshs8H*$Y@BikIami1*IFdu`0{v3WL3C`Sg2_Ik6m%(44b9UcT3=pbsD+x%U2k5 zr51WH88KBbm=pzt=8_r#O$_g5CtX6-~?At|LjXV4KWB>~32r*D@_jA3(7JhbvB zOC13~%!%i?*nN(v3z0MAMTCCqFIp{)dvr&@g@JZiaVV# zCLS#L3#DXSGV!9Ae2mcqrDyx%2=6H1t3shVMd~#9k({c!vN8xTGWer*QGD*=GSFnl zr_Ck@{C4$(GkO4w2&Tu3x;ZtE!umK z4%|})PK3%_mrr=buU^uRPX=(Ze=DD!nqoF#6D~y8GS}48BweB0rivs~|I3mwq=$*A zB*}Dz+#}19@QV2&zdjrgiG+MrwwsTpYo*i_INqevS zmda|~%TM#!HVsrXmO&zbwK?_?Tkpq^Z|u6CakLx)DqwLhQw-fmYPMK`VWPN_sQ7D9 zsh1w^G3?oBuxbLRCH{HAdr#uY>0mbr3dZ2HSF5EAeOYv`CEIfbKTE{_{i{FzO^`p5 zQbVHAK{l3%>Pjt$unx$2=fr-;Px(oJ94ard_O#`O<`E{(~eXrw1VqcCU(~2=y$2S8^NT9FT+7 zVd|^e2rdP~9o-4E>!gcql{J!2b8WJVSj3c{oO%m`>7R2v5y6j4cb_bTfS4G+q*nny z*LER#1vYIKeymYruSytu`d$OQP=81EgqlDp#%#BH~%lWNZFv?np8UPM{9`?+_M zSCAmlI{eF$wz0enpPTQUXu+hU##C+^<8veN1U$g*nHX=;cjq8}*&qW21uO*b%G;Lg z4WR3BWP)Bv0SoFnP}Ej_s<&y|Jz7&{lQ|(ybL9~wkXmJ!Ka{2BTg z^Jlunmi4fBU0Bd=lS~J9k3qMHas*net|Vd1Vns|)S)ip`jNfDnFfCx!?=$r>prvr3 ziW5@D%rwcIM2eB`kjSOGH?Q|s+A{%$M%-siNjK48NlyLnB(!f0;SOL|Y=EOAc!%|L zdnJp}V`w~5Y4@87<(#b(&JExCEv=8hl6s;El~g5j`ja$jGDR4v5$?#_ zo+WV<-|wZ|=(`h2mo>PRO(#)FXIv%(QDGVDKICS!!!k%%B>kUfI;1J*E{ zkh>xY#0wYED}ZpU1*U#F3OpY&@eO*)`JyaRrc|E7rCN=%RLeQ#dTKlA_2>AkPkBFn z5~0{>Mh7lIQ9PZPl=Jtl-|6q~TJupvhDuj!xg2E z{0bQiyob>S2R}Vvd}iCeafu zu_Gt&h^;he0xVu_)mSVyvi9p{M|-W_8(zBA6nnI%6MmC1NLk;8CJ|*}Z8hs{ylksU z-q-$=5h#kIJ4?m|uk+o_v$Vr65KdN8q<2h{zTE_m|O@(`}}C zs^&<axBKHK~&fXIxHpeCHlsmB@t5Rf9 zEB^j9y;k%Gag}~$_QT+HdN!m?f@!IWp=YcpD+s*n!{tG7Tnwa(QPK?;Hk+v@JQ>!D zRvipGriohIM-S(6?vFQ6kph;%uVp!Zq81U|(&XTucFjTHklCzF(V+2W%G@Mc#JlKcTl=n@k5^_5c1Zwsnrz zO<`L&`LO(XzkeIm%US#?z=3OML9^HF2kk@;G@o0W0!NpWUs>y^G1aOM))4UQv!nwf zk+e~%0kIQjqXoq-B4|EDBi36;k#sK)El7$!fCdfxRsvfNEyIixiC|>L9>vlF=GQX) zho!Xxc_^(@d}4U^=~h*c<>jzPG!cJ~!qT%sim;s!n5+U$}JGJWr)( zG`U}qYpW5%;>?Z4M>+)<^;kIkLm(II2*b*M`g(@jFfYs;Wv68qKt0tHcl^;R-K}hGD zPWo@y#*Jk`ZN9|*r==v_Nojqv^+%$McWNihulx>@aAKX{UpTst@8udIL~m zH~-zq9@3~9!X;p_2t&lMF2?)^_{66*8T7sG+f{clugvjtYyD$ZU%UGU>{5L2+Fml# zuY87@=vr0SD~1fBku>y1V_W|I;-71^ztx&fB6~Q5mglHZ!CxR^rs7#iNk;Px;}7Qt zfWY``0D(QjK;56Moxyg}{g>@Ge;*mLwf%M0-gf^c(<>aJvb`7O`!X{<8^H{z`bd6M zEz;`t!TFxH{sjfQouODQOdS@#iInlcDn?Gu{A{)PVzB!)yUh|q!(UX9&d)vmiXUTe zrB;j@eZ}W!wVZTBCk6WZ9n&kod=9^we`5JUQ)^Yu&re1q`l#lz8=?5 zg{($Hd3QssW~7Us-%LT`KK}g(E^_V}h$=e_91Aq)4>(ZO3K(wvp-=r(I#0Xz$T-TY z9O6zI&gVp;Rkc{>F5*+>luD_J;@90sS2&sS>Id#2n8>*O07hWb2p+SA=LA>f^)AdW(RRdGS&f%hbeOe`N7UEG(#M z-ZajRNgvCb{VoN2=IxWR*3;uR*U?2BW>tH=z#+@25|}&h9Q2u>U5@kjIK$oC!Q)np z7em?x6o*_98#kp?FJ)bs2(oQ|clpc#dQ6D%ORQGzqJ&{{3*vyBXIW7O`lW9h+@mYD z{f8?S2~7+W`)F)N3^I^r`c#xnZ<3Qd9xm*Ape3y7kDc}&(B;v8BFcWC1a`u5QHCH4 z;W$coA_y#MGRFJ|P!e!3(8%KtB6ahV3hj2)>%b0)aFN>pFa;eOaiWoj7H-o6DYU+8F2j6BhuxMF@;zz7T+-|l z+R@KhG&?DFo>~hHE@45U#T9Y`!yJ_Xxr&B?0%g2c*%N_Iel@<<3}m{4AT2}LBm>=N z5vuXrCdjDl-FMtp3ovO98m|0C{~l9xluklW)eF9ozNfm06(sog>xr=y#dH)wK3`<9 z<4>i!guZTJO|7mRiPbt_^o#YZ5-7M+uls|7B|{)<*Vik*L@#dFBu!3+?kO|>VCm$t z^F6*B+}gi(w>`woU`IJ zsfJN2DUH~tdz7S5`aEp*vFfY!XC-?YOLZeNep+IElBSr?>ct(4a1+KAa^Q4++hBRp5zxH&?KQvaupJnei z8sEIW69^T_#Mgg_?vlhBuOJMM5Juoj;hKPhrX9r6e+I#Wcaa2th@8?VF z5vuiap3Du3CPxZ@q9c~Vg?fy%6rU)34of8zc|prNR!w#=!MVoS)7|; z=Rt+uK^LKF&W5`QCL;+Y@uRap8n`EW&wR#XMQ?4*g^9nKjyZ<8wr32U26_)Fv*aE{ zkmDiXNnzdw{zv&~ob0pfUZ!<%!GnU9;fpE5J$GUQ1G;-s>ah1qr$D~)SZY96Jkz3M z8{E9nap0^J3pg=wCc1NZ5C{f7)J*N~;Nc}r)akf@oV=u()9|dvsZT6q->?I}ODC-aGW()@IMpNvKEDV+8k>iH`Lyv4juDX)SW;^6@vq%zYM+KR0M<%T(b3uM_Mv`j z*?;zXZt#*%GGg7sCqPG5{2_T(bQopFk({}ZzW`8~oQ!^+`STzu>hIr%#r2D-k=7Pu zlo`fBlo|ft7HEs>%{Ll$MZYJ*gm!WwOkI&wsreb?K6Z*J&0S&z8 zN&^EfF_51+iKT?!unx+V8N_tht)fi=4nuBs&uIoTKesZ!^Swo&F^4CtWj^1i3Ym%J z5>>;u2f4rgY%Gkyr4&qN+23dW`4v*F1CL+h)+A3dO9%)7YwCy18UZMkH~f|LiMLPu zV%O6=V5kiMw_hQPi<4scp7x)1SKiD!rwS3D_g4b$cG>!z@cXo#?{1CfGb;?%dWzIy>lr-ZSO1J zU4Gh4_7KHgM7Zd|Yb6CcT$X#0>d*gQ9v|^>0^&3}(mTY?HZ4n~1U>@_Mn1^imXLjj z24S!~1hs2ctPujtq&RS5h&2{z4V;2@Wk33g)HzuXUjj^DO`Zl?hC^w=e(rh?v%|Ca zshg;p&J!5<(d1}QkEA(g0QIc@mr?L%{PF(|M>G4*2u(^E-bV|G|Maob_vPOPS68q_ z@oMXpbBw0g8G4}8CA3M37=G>`;t-8T@?v|0%|iNvS7oPSxm=@rqqR53kJ$h(^ZHK? zM6o`;+a6ldj1v&nJjB;nuMm{ZXjFD>St=5Hir|>}_%lKou962H+#W*aWbhQ@kXFzbRXAx+v)JL&L^+aKxCy!f|;K`YF#?!gg%7$DShB>ySAvFM& z4i68OkDSBWl2hv;zT^A_SEJhA zBBSKdBbraQ!_p??lpMi+TxTo3pm(1;jm7-R`)6nUG%o9NHeTOW$O?aS?~8WYixE_@ zRkCHqUn2Q^vSd#D4NH@GTUcH}1puTS5Dn-vRuB}bqr_6lVNc^PbdMT&)$BpQd8!z0 zU-!iAf_4iZznmnV?0sr&DyQ=!=SR#ib?5|h{`+(S$TsC*^?wBcD^E`OS|Kt-7|L`L z3(>7|3s+&?!FAG(G--EOdROPYKxz(KKn51EDWLF5zfSz_-*M{u`6f*NA{hPq#cJEE z=k+f5hpT}8nOrrMi?o2DYklN%ir#>{*Z@Yw=R}u`p%QWF6EvsCpwQ1&`1}MQCup$c%iiXB47c)4FV1xb{^VyJ9J?hk^ddrjP8FK3MRaQ z@Yv&IkqcOng%fQjoBkVHDx6kD=qW2tP-XgfB$)XsZ%~JIV${x z8iomqNV65#8#iqb+A#4Pjc%CSjRknU?bM*5GOGXA-M#vHVxwv|*7cZbG|PTRzx2FI`S1~rLXP*sOI8G;}3jrE@*b(xFOHeyOkjz#FY zBXV%u+`=CnMDKW}pprDSrx+OXg+*eY>nl+?@n01`k8asM{ZdX&8M_%o4IR&TD&~`}oxP(_UcakK;r*K9s*XftfSu6QNO%*=!BYujU61%U?koXUdw^vpkbQf{gbSEChmr>Q8|-x*9X?Fy(`C-de-G`VS%b^X<~x1?qlAdt{F6nxwQI&m z@QKfok{i?(@b@=VeZD$S&-a(#xFP2pMMFJi>mO1x2m*L*H+X$MG10 zz-;K+@v{g=pj+-Qp9lRwZJ-zPi`ClGMx^_e(YMLFFLQPEYi;iL@k zs81%_EvQ=d9KK%$YZ+8lls|Rq2(B?%7EYrSw7~dV1y*gQ`C{UW@9IZr?*^j8Grr8h zt3VH#+t-J#GMlzyCHh2pgh-Zf0cZQ5^66681uGgm5@E`?ab{QNxa=#4|ChXpk}Vgj z;Ui{;&CIGczN#@>yQK7yCWG^%stm7`^thLS3$|v0mV{vEM?(e=H2JGC5T_8~FeQ*B zC5DQ%S28beHh*?4lZUHkM!zm@(ez3oH0`=eEpaJ;RP+Z4SyzqFPg06bPYHYmfXqWF5j34_d{CKBE8#6iFRQ3cS2wf|w6! zBh&ARk@d`BF(QbhgG1KrDIg!PEr6WB7}pr22GoQjxBuf#MJ_i<;n|U)Ie0?z5$Piz zO_!cduc(++7ple5_NeLi;eZx6;uKS_^LwUANp1JUbrf~G8;l4mjMld5UM3-UCwe6T zZ*0`;B6zYtW|^o6j((ooJ8~0nWdsjoedi7jNIB(ZnVRBtOXu$we>~)qVBfT!5b6-c zx9ZQn=lo|!m;WEMH0zZMuKfz7ZjvGnTX=5F|KdM7#Z;yY;ci_|+gH5=^^VD2^&iF7 zm9o@$o4Hfi>m}%MEhPvwS+az6|D(W@M;_%9j!WnAp_suVG~?&nz75-r2XadcS-g$0 z$Hg;1YZli{s)(S#{UeA5=6-n7|5`kA&giJ^Hv5ZgHqw@GSrh(owpS@G*0ZJEtY^># zG2um=P9%*1<15C240X_otg+a{rDb{vo=*rzyaRJ7QX1vpqIxNkr~e$X@ucgzbnz@SP~R<9u~9T0F_i~D!S`S~=CH(C{ALa% z$#AV{x;=*0IW=z7z*5_bU6M85LaOKZPwb(iJ?j32GSU)6(^# z8MRqBx~064_sse@?J%?JL=}`2b3LIQ>P@P@x>&JL?Dp+$T4WC&>imL`+oQ-}x0Svr zgJ!-pL<9{+V@<(x1}@vsvtL>d$uaK{bJ$)6wiF_j%G6djW@dt>VF8Q+TAm3hcDg&0 z^CwcBpVsihRe2QtfrBT?fXZAO(i;2t{y=h4N^EGl5?f=X?p^P5s6DO+*YTM6UX}UV zImv2%@9Spl54~pYFI{7|UOZy>%#75wKAktq2?)Y-lc=qK_^LR}t^Z|a0pKjAI{#g9 zq`9I?I`MgGo=)CY_E)F^T8Sl8Ac_{dAK}dmMqwC$IK>vnK$`CS>AQKAcZC|XWc7^{ z{1!lRqOMo@9R_>mFhJs3uQEBSa>F5r?;`!GpG;drhi+cetbzq$#So z)v{QWD%nKg`K|X!oU+bVKs*$-D%wkHoksB!*A-V_jbi}tcRjU_EnsFgWf|R$*`^t+ z-WBP&-%*r2Esip%`~%*>G7k)!3B&4KOR@Jf4h|Ne2ppHzO2uM*!lp%+k?HxAV(OPq zv6l0TIC7>U;^Km@uHHo5G@3=Xdq+} z8qv3Sq#orP)KzSp>tuCrWtBtqGrZSRWO&2ZJnJ=sAFESCW8=1xp%ion3#9#wUh`oT z=@czvSD!G@$zBjW+V;92a2cnM6)=Cx7GWz&B}{#U&HmK^F3mgWnCIkqy%l_|`nuKK zX*ur&Iuuh$UpX5HN_oBK^1I_u|BmyN+PLBU_Xv;2v4w>f#3XlPa;RE|-!6A`|8-i1 z^_&`n%Cno9Jf8E{c2pF=yOxgB9NskSZfNnX?f`V<)xWscQ=B$qgmhev{i6oTO-q-N zg6_FLBMrAQ*ij75z0S;r^A8vnif)$;yE!p#=slz{;d?0@SKPmkxZU)~bGeS(_#idZ zO;|!`dCaV!hB3M2DaFCAP8}K-jswxb??*hPx6_mgJQ98K`tMTPFV_S>ugJ*O-LOn? z;v;PY{c=R7KoJPj!g)BBf_x|HT-qi;Rofu*gU|FkqtSm+MGVF;Q#@2h#^LWvbXKMDbbNzBG(aOWfD! zz*YQ@Q$;N!T?I&P?<#17Y}euv}vXGv&&6+U|Ho6}w>)e@z_vH+X20 zhACR}zhd+a(z`FZH_FMgkSE#yz~T4jMheojN||MXwqk=_Su_ujH8IrGHu}G#n7CEm z`fJm;bJ3}5e*Mwd$-6?PFJ{X#wy?<&boTb-N#fG+9lY`l-(=jBg348%OnXa1Ft61C zQ=_xEc>W2L4ma}Z?Eu^fuMtHyL?gfeCaeaNi50!n&s&49Q2|LsX-q~mC9nanWh0dsDql73VP&wKJ-(Xy}6JB71hG8Rjl_6{wrf#JN- z9w{zjYJ3h!<#b7>kE_1pKrNPv4!YCVcFtgIhOrgKA2lX0^^^p$%C1Z7baZykbBwN) zkun1t-G3x>wu)jV8R%@b^Fx(z^x}*kf3T`gs%g*Z$1sbUGoi(8dm*;OoWlrSE)jA4 zd`p)A1U88``18lBUs1mQRU_VFg{Q-uD3$9X$LFd(tO>fGAs%{=)TDBmN~{Sl<3(_eEe=7;MK669fxc~KN?j=fp?H zeY}AZ-y1~&v$KWK+r-(?g60GJLb4r(;rA+m(@BBex9E!?Jd*cC^+9J3(4E!PRr|(& zj#+Dg^Pe;_yK=0BaU^JqBVE?Xd~t=p$0lg}dwv#7qg{w(^LBJniH`@%p*hfv0WA;+ zl|}{EdWx!v;m$iq>A18ZV=-*`)S%dHY$A7#%r-Z{Q9NdErfG_2@yB=Da3|~VZ+e9- z{!AyEIGHkJLb<9y29kkG1X(nLPGD1JhXLHLx>6a_!=lgtvY)Pbv$kP~TT{L!|Cgvg zogE(f7S#r_u#Z?xq)lFhGs2e7X5TzIUzwa&;LnsfmgekadwNoUJ9fGp)$?(TRQSkk zC+^puKwjmc-0zlE2ib$sf+JG3og)7^G-{0wZ$08ic(LX}g7-A56ok}wvmfAGxNm&@ z8`ziq+a3(C)Y{=Uj;Q@gaa|ouzot5IjaoTK5-fQN4t6(JM67~CX}FKeXy@&LSdD5&nD6C&A{*(;sU>e=CRdunD6jO zfXe*aB8x{^&SFY~U{7HtCEfqlvRUCtQa~aC9gxrk>aMnDn}`i|w_FD9N&p~ipnsiP zfc|K7xMfY9=teN!R+Iq?p`4MR`%V{uzd;Vg(*W?A?5R*iyZMGS1cA^8^|0qflp8z^R>6r z%O~zCuV=;e?ZB*=j^~Q?Rzaa5Ff@poc7q_q5({8UE?6-BNG-;VY0shTxWMxzadzr7 zH^j0+j*w4zPZ7dvQIDymlaDOiVm^?CW+ISo?&ub5q>tc3oCAg=39jE{g6p~H<<{C) zTi*t63}#v8m`|GF80HRh5S;uLYk;z`VghOHK5+L=&>RDVMnv?^Mq>kJhX}*KrHqr# zUbH3R%zyqgN{!FZB9j%o9$4nv#Ln{4y+?^oE0)(%A})sY;XBo`gM}#mbWgP~R2VOJ zz!k$)Dqr-r&naX_iifo5mK#Rbc3_h1I!zp@o3tQ z;ri2MrAEvknZOoWAwnQH;$p^A!a}mIl`Yg}zG9!HnN|+9)=iwC%`CJVm0x;qHlk}O zpjzbwwVAVMbEW>WRkl4ZmC&V_v|w6LB@oMJ3?yi2adr=%_7u(V_FoKDT6C2WWWIef z)wui9|Iy1x6|dZ9#J3#BF$qScfopH9Dl29#w0E*@90`mmrKnZaZ?>L0IF5k0wAwzt z4g3_*83H94q4-BzEI-&p&^5CYwyH(uxnkWf9J8?d0ay}-~G#m>NpGjktr5o1;`J9){)PU z_MJbp;TmU?m#DJY%M#uWZ>b3iZJ037bJsKt`dx;i>fwb39?j(6&i0#hqHFJv%nK3A zfiOEApa?~4bCI9%8?Dn9tAi~eQ_A$|XByN{St(k7q^FgOXKvlZM)0@;h#vkg;)i_B zt?c*vdC1ck6c{W(NIXnh{^Ys*X11toz{`sw=pgU4X-ckCt%8DxuANU^)zuemW7XN~ zT*dE{I+%ZaYAZ4;(B>|z-)K?L91!$S5a8uBoKz{?UTa)+u&F$m!0N;a!Ok<-z3~Ii zd4=w^nCCLulBx>3!-)5s1EvZHf`UIrrEM({&+&(&9YcO;w!7Qikzd*}5j<RDEN<>_+!M12Iehc#jmB>Xh$StnA|w|9keLEnHRlh@ zu!Uh1zKOeN0iY=3T1Ws8&@wv8IbpP6X{-wXb0#AT5RtKvp=rvmcd{O1oY7c>sAsg$ zhK3KOb+igu#hw8lV*VZkM1b9PK98t*CTjT8WE=_{!+xkooc8>DMNEpM^&p{8rW`lb z{AMlBPEh9c#0LH7!i`4zCCJb1TT719F*O4s)F<8eT|AlbuOXYt?h2ru=d=|I4CF!!|(ncLFezThn?g?lfq+=n_s zsMHfw7GqU^Pq2zbV8CpJ#&puK0sotg>h_XiH_PwOlkud)Rq{FLi?iWo0{Sbp6oP~? zEiDik8OY+#e{EPh(WND22MTZz(Ks2vVOrOprgRtwlo7bBbhe{APPHz$T3he6cW}X( z>wPu(j5>hqvNFM_bL@TG;DwlPD~_enPX(=S1-N}D2C+Ya)JWH}>Ml!se={*99e$Q2 zoq81@!m-b*1fjwhW}`WaJyVZ&@a{I#BTMXUDC-{6e?*-sOl~09^@MqE;H#S0`>v_6izaT4gH`P zgQ{${FmbbA3|_oU?F^=wViRqewh3X2NCevjt7gcHJg;0j_FHbZ@?U-%2d z1@KK)9CM+oQM)s#W=WqbIkgNa?AWnXkT#aqz+G>qyX`>T7?h#xCZ(51PMq|x|K5#R z{#Mdod*1AaK!+qrTRXrxBy$1D#$US29e_&K<2~n@NCvRt3s8hMME~p+eY?B+tNSB8 zlWY9aC03Gk@jscY7PiajeL6)xyO zR2owu_X@WP2h0}U8rh#wHJzdV_*jfk(S=VjSXLmhcIM$&hUpJyD)aJ!SFx3I(&{-q zBla)f_Hkes1{{d%vGL1D9~92AsOV&|_LBje`}|7e>MTHYvg$&#x=gh)g~e1=JjZD3 zsR_WhA;|r1T&1&?7%t9NB#btGt_<}+^H4p{xJf(h2gL){<9G(3kEh7ICG;b zPxIDD8568``jNk`)Xn3tCm;jq+@Pf6$;5UCHa#r)v7s9Uv@F8X(n}8q8zQAlpSJxh zVz;MI5M{7lp(S*ej+xYGnhq$*!I2!DT#N1|WG)0g}H+xebs)pd?> zh_l}>=`&Z0xVk~km`(Ed12AHRRR_xp&Nv7P1h54O z`+)m|8CwaC1N3Cs;-cUc$Bq=TvBC_|uZ_BxMJwO?E{ zPjd4?TM*FP{V~)g^_Uv?&ze_D0b`E0zv!Kd*^0C&r zD3&yq*9tq-;cOGltWW?TjAYf3i8Oons?qLH+tK-Z$sJ$E9?>8(4cY*yQiiQ;kw&?Z zu6)AT1!Z*RzjuQ=>i~tz0F?mwnk`hCbRPfq9Ee`9+m2<(Vq;N9s7VlxA##W*3%r5;!u44Gkqtji4_#PvP7{eIEL zAG}=pMizN4l~eAAa35B#oza zVa?{FF8jdzJ74-Q8G*nfH_An#{Pz(vBa^D3u8U&0hQH*Mp_5I8c*$W4y?MpPm%bT# z9c~W`MYN_BkFIiwL zUu7iPG8!sNi=%41PC_PVr|K>S=arlfs=*b;L`T1jO9G(tUOVFVXMlVp+pQae>Y?wP z8RS2NgpH3!_pq$pQj?Z4ddxbwxSMx%>~XOPq%P{Q1eqaNqyP zoNr@FGy`5lkxzL0$m33>qE-6M{_OOtH%CQz2oDWH%fo%?MHnnA7AOq5?>nwsp9y(` zbDvSf4dHfFaDXPPlWnWXR|uAV)Ep*N$7}rrR3GhC+++s6kJUV5DRe7_g*?tVxBNo? z(*|i8D#$=fyAqyKjPo#J;t`5Ux*$AYD1}}}&o2jj!1k7n8F9*u`!{vUF$sg#l|Ko^(QFH6ur3^2bOk6VN}x$$Vp;*@ThK5LbK+wh z#bd;W(i>dEqE^u;?_r7<2SHr7#D0UnECEmZ9jC=KwNuc=TPPQL*Ffd@S z8emJF1tbDWxPP2UvkE3?Qu0B9afO}!xwVb)%Hv&ufQ-SjY<=+RhZtC93^2hIfE3`} zv^aRk>eCHL;`n}5UZTbhmqPbCWUrl}%SbKN$4R9XKg>JyL9yQF4KZDyT#M}d4-k+v zqFsbf)rD6okdS%sttTLK+Wwt}jYEt5=LAQ7;xixO>h{Aa_m(cWd*zgI_*F(c4>JiR z87|KBJHsrtMgQXc(C6_F$p+pVI;y-}b*o`f$OGqxKjwbCsdL5rKCma#cMkVoHWSX2 zTp`DU)k)e$^inNbV#2CfENHcLCF$4WO|)5}Y9&WbhKl}(t}Ssy8q9P<7{%DQFTd~T z=(siL%5NFGwricST>c{GAonPE^p!gceFP?O^5rSS@OBnR_1bBb;8X@(5P?LXYXH!8 z{9yPD&jE(CxTcl0(gSr9ust<@@5~RA1l-dZDn5H5i_^N47*e_64df^TDB1*GB zQLPt~v~KN`rE`$)65bLZK5*NSG9m)ES$2)> zy*$t6oro0f&g~MGm46YFAOvYEwQ7!{fp?04LPF|2u#aD}S;&f;ryj|F<9a2yUAOc2 z1*Vb4TdFi0phlFn8|N%X$J*b{!pw&0!ZIws9x_e6@Bw6rG;OS(qn-)`*RjB7CI}j(V*`R{|tYvEczW<8P ztexNzef+Mf`e@D`jqSNKfkFowdR(C)A@472^X9{+2T zOABroL&{jx;zG(vSpNB~e79QklRxLAoQ-d8R@S0sUzZiVGOA(Ke*(n??#nYntwxV+ z(>M{vBSwCX8$NQ4ac{BMLZ8s!4a_5RgD+i%KU`PSnMh0SX7yln3XZ2Bc=WSTwI)Nl zcEy04?qJawD)7ObX91xR8avCdnXc)Vk;A8*CPOtuXOm*n^R+_o^U6tLT5F5%M<6Tg zzjsCs*`lMGJzM*dnY*EYuXqVI3kIQz=v?FY(Ox5p?*mRifG8nAUl2YaTuz5{8apr# zl7b-D0jtBI+#pOIjRnkq0>0r`Juzhk+-3NNa9u;42`CuM3_(Dc88{{2 z8qxD)!YsB=d-0-UgcM1V`D_YgTn)OFI9#hpC{k;h88{zX7qD_Zwk-hvTUaF?v)VA) zc}FLZ(X&WA`NG`KYy`)dMx4k0-M}w!ZACB^X*|4B#p$1Q_@oKV|nmZg`vkBFH zB6a0q!nApPg3v<$Jo>_(<^P`8KEqvtH45Qh#klkvYoa#DV`>grZM7<5Y()B6Pb+!m zT^5Pus>lT%hDLeQJ!g(b_D{Nt?4Q(EF2g&EnP<&nzM)@|dKqegj$iGGSZDu>;R~>p z`ZXVgF8Sme+f5scC|XWVjxR;j0C<_#1K$JR>GJ`g5!8M?M7u2w*81Fxz$aFPOpxbp zlq1hAR{ZF+C{uR6!+!<*_|e2S5$Vq!uXR43@|i$qA8AZH=r)BI`;J}w&Cb-7S33BDhV>e zm@c_F{wdqm(&9kSIdVXvDIxe;ZwDr?_Qrr05Adt%YOS)g-JaN2!ZJ{#0;D)~wIVZb zZk|O&p48JC=pHGimeqbNE5tUC=3#AOw+ZP{`SB4Nl2kD6`6>ECme{|oJ^uvMhW|ew z7buhriPj6;)Qu#4Q0o#fdPL7N(ovh~T+U8o^@EqDT<^_q&mZ4)m2e2ar^%dpKN~;$ zczo!8F7PA_D|_eV;@;ln-fD35-BNmoZp;12gAHl6WaLe{`Bkx@)?0MU8&I_JmY`xu zc^TsL?3pMBeM0#mgY9P5a?u+HvJaE2NDw7uUo^!>0~Tc}CAbklrqbtgRw0Xnz|=4)7jaRR4Su z?ESQ-;8(I63)5P=7pl#8@!{Uqdh?XJ_UmPRfG(`SJ$ zQn~{dUF~F>9CuH%DA)a(kscY>}>!xXlsh-<-5 zJ|_G8>tphJ2UwI42&ppTGGa@tpr)k~%~SCajjPOJSjkwV#7ih*ugKO{O}CrwVlyvr zHNcJ_d<2*KLxJ}v`n#6%fzrpX0iiz@4&Y@2fCDxF5_m${#OGzad3lV6xReHgnUJt! zF(~}s; zmp%^E63{`N$2ch@6sEu4>*-O3lD&A}H)EDY$9BMa>W)?gaA9#m_zUAwQMO|RzN7`eFht3&Tlqf4ZeWJ4)iTGH zA+PPrG`xHw&j`8&S$kDqz}4s@^5qnP8x0I3acdh*GY^zIR*MkWsrUP}-dt?ex~6HP zFHGv$?Me5p!f2>}_+{D}FO@}QWC>jW>1-bAK z5u+8M_xW5Zo!199b@^So@j4<;av+81x8VDG-qJm(vji*$ip53rMI&V?zhx}fMqkSM zmsvPi6elm^D0y=9=UFrUr}NV4fvor*u|JoY*lfb3{~0+DUosxcg@PM-3(?$88Cj7d zQHZDLbrJ2aZEV1`-BNJv}pL?>w1n^d|rcI7k1T zdR}1RG>%G8|5S!ZUUsaWkXIv10d&luUCW|MW}-x9xEs(RkAaJimn?mCw6d;zmL2ffQJ#WD zOhp2l3Ea^c%X@ErqhQ2Cfol>lOGCt7MsC@+92hPS%c>f-?EE zPM0V_mcIbu6&~g(B=+;;=Xs?`y>4TQ&`mFlgr&+zWgFw=D*P)BGW7VxoP?$4m2E!t z(`_jMyRw7j=YeN{znCwHFkY$pddlBgLbdH*&Zt64Tw1%q{^9ujqr&qUW9EJ@lQ)!l zOc9ehq$t=JZNL9vK}#^Hyc%3l_n0v&ZczJ>RlyV7U;sW+q>2X}0V&9jd>ab}yR*R4 zg9FMEO^&i^Y#d3ECqL$*jCe2ABgDpN%Q<`d>l%`-)U*F1opZmyPDTCNV~UQudN%P{ zSloZ1dtvRoy4fU?ezzcUoCgDw*Q5*H6uuo4l4gr9O3d->KOFvazj9!u5j8y1B+s-Z z@B%g=kTE@8aOQ-(V0h2Ylg^(#QndQI@}}_poATYHBG4rT=23Pyc119@K{9sZx!&9F zMP=s?fY$Z^k&=}HaNaHKSc-&bku|eAH^y3L=b4`|ZJrE|7-ck(ryh*DK47n8{-k zG5_80y!K|sqg4HT)Mf#K$jKj%^v`QPBbO6pwA)!k<2f%|_T69FfH)k#>s&*HvN5xh z5^ip){v_<4^Jt6SxO%McCuVhe25>}D-`alr_Oq#Qz1j|z)!f9s?eh98XX6)jd1MF=;`;WR6Hj7r@q#FipDzm*YWmNG?n1{S zO;NEiZmlepSL3cYTXd{s5%GzJb+Ui={tlBeni|tFFbv_U6rinWr|x~H<9;GL$v#fJhc$62Tw@q_t)%I6oZqk^ScST! z1zQgza(1w-KmrEmdAZ%;XJuJ_(u(C!VLZdWc`^zrVH*MpY9U=<5w-zQP=92OnupkV zJtJeD{rANRT*v>r@(~Cxi(w+}37v_BF+$s?N{@6|a8f9QjmX%_rl@o6&M_ss=ltHQ zL?PvAO)+r7eX6zp#niyf%i~lAMCT~(VMZWK%u;&2JpezE>uPB}Sr1A>g9kipi?Hm#dgFu^`tC;V0& zWDnTi7YI(s-w?N&Z@(sA{d`}CSNlGAic8O4uxe!3ELu&-arh?dJ#PNu!@7ZCN2L4? z!Q46DYneCSuh9uD{O?w7Mlw42ka@#zWLeJRX!0pTdUQz9 zB_oyJrcEn3oJrYOHs;ItJhnTZx-hQz+pw{ic#Y_8l)e!E=$d&VGmN@mNag#ZODDHr8sQut-L~W&IR9n7^s~f~l%zsi8Bw%w0+3 z8yO9F9u!LTF(7@4blj+|?hFeN_`%KheK&|wS_OY$@-?j zubj;Cix{E-?ZLOhkN_G$(0IAYkm3oPGZMuU#Y4ZWV*@tqr~Rvp_9o;o0{3?<(=vts zxU6u~;bA(Y8O(^lK1Fu{KTU|t7~r5P0uCw*Dibu~z{arH5UKrlkcJ4#>fcRgDrav( zur8}6s}`Ic^aCYb>g0`Hq<8vO>?meL-!j>{Qe0f9pe`71^fZk-#7lA`TfV!0kC%E~ z6T~Ilel>N9dBkjD)U* zBrJ~e$tJPwu?l3xbB8?^1Z96Nfi`__%2oMI3ErQSVtsW3IqBD%pvn&`KT zGU#c%+SdJ>_RTVbzK8lP51lIl*?(Q6PCNEJ9AY5uCnPrYbc+fl_9U!4qhU86s3s&y zygIeg)E?wZ8>~J!WUfh^b&M6?8Q9=pV5Iw6bYex}2CJ3WRNsDX6!(eRxVWe>Klscw z=SnTntP#YPT!x_p9Om^XW_|I&@z>1G6Nk47jp38VH4~$0c-}VGqdr9RO#%`f&)-_` zmAdP>|Mq&j=I~Y>ni-mS@2!hK`?HkWZ*zxcP^OQt`Ek5oziMc3?>=>eY)K>SaD!b@ zuFup~EoT>@b|HFtXG`ww9$fFE8KVp}CCm~{UfS{y57Xl}W&gPOX_-ARdLeOew|U$0 ztS|%j4h7so5`Z8aUp|GRVLCZ6zI+-g8jeT`8VuodHP10Rbd3&4Z+e^X^O}S+OuZzU zz{OCoS$cNELiRzG9xJuq@N(TJ$(-k0Eiw6!JMpHLH)oved9wxHC@h01Q{iWk9-vKT))mV6bQ#&%MG*i%NoG^UB%<(6(w;De zvzBY&w`9m$fyCQC^?7#E`{_;3me@N6rM;F?&zTwGCZYR5YFheaK94#`862=AN zS)DtO`@Izsxr+%3`BY7&wKL=QEKbf2gsOH~C|&({IfdK(>F%LrV*Sc-%F=GoKIBzb z2T>G7dD|)311=QyWdRx+0RfxXaw*`1;(xrQ;@qGRAjfjUW@G8nq{Rr#0&p1U4llD@ zsL1bdKl5bV*s;fDI`YN1?01`2Ws>lIoLA(eq7?gQF{(4B7#=|Msvy>~JGt*n126Qz zWe`h{KGG7Dr@{{h5mx}Tv^U^mT;S)*-=qPWso-fk9p{&p3DjOJ2<1X1a+Oi->EOSasFOiZd|cAd?_HpmZhngSH`E|m=Lt17(>o3 za?Juza5Fg(+SiH(oA? z84|D;I_6L=vh5$E))G5^(rh-B@#<{_A9rua@d`Z}oG5Np|G~2hNaWySzj0#Ves|}4 z`#b3KuVJDo?p9iWeWj8wAwaXvN=E*Z>(8>M8P3$uf-K>ihxO~S9bpiF!#rFh@xsEf z5cbTr{nvIz2=hn3WLHXL6|9IfpH*kP@Bu4zkcNy!%e1@A=u_lpDDU9!AeJA}%D=y# zT&&(4zF^M+Ep`VCd51r~zDyjv_~Ep=RE66{^2&MVR@*d_ z%A13E{;XoM+*oMXu_5LRoo!*1UO=*hP!jznak`n`uz|wnNu(x=DwOrv$Yb}=ci0;3 zKE2wT@wu@(0(T11>r)-H@2;U}hE48D%3U={gptlYxQO)oeJ)i<(n`D-%LFVTi;vhJ z!?TX>tkcGF(PBl!R>UasOx#UmP!>?~($>a9FC*Vc85CJnQs;>$?sF-j1KpF|*1 z*30(h?_y+{iioW6QDpP=jYlAbL znPTrZp0LF1F0ZlaUcvl$-^88#U0lB#jmkD?5dkq-`xTPPw=k{y^G}=YH6QDk4DG_D zOo_2lv>Yye6%$~CV_TpuSR$%tWCR##u_?wF65dd!c=|x=5o#?14zF%U7KV6+ojix%W=ag3kQQgS6#ss1!;nfyEEamqB9kO%JiQnn10?2` z>gn%19ynpRpDj&o&4ba>rhOSIsHFQjM9<$f@&Z_8D)=0n*!yXxDi0Sm1Ll}cQ@KqK zvT;`Y72*ox)J<5nxhJQZ92t+5KiPGBFnzjh2=kfy64=pL+J$OWW(ac=zP41<>Z(p@ zl^!p7riyFogf~n-&8N-dDv2yK2hG6P3#Tu4zdK`!i8?Okgp|WwKF9c)X`EEyYp94% z4${_Gn%a+suD!6&s(AUU@@Giz=dXGWCtoVLV1!k<6c(J+(I`h-%hBuvd4BhdN4PhP z#~r!fnV^TMlR~>4x5xl89BOcIAs)@<16~%e8_!J)9G|!WhNp~_I01ouLGxpxHG0o> zPIbEc0UeHV@SQj=(iOM<^6C0{U)T~3;W#y+8T@O5!_#}`N!@q0OD%;ZG5!LdUOe$T zp&zFYxuM^G8u<4(c3Jby_Owv8bcxEg3?HdY%ZS_2iw}*W)BMrAsg)h}r0nclzlK9z z7Lq7;DJ_Ni_RXM3a@9D#VR=Ei2$!2jc2!@F17<}GKt;O3KJbOvx+4j1PFN#YRFm}{ zK`D}@lb$mbX3dShaGIm(e@mgK=3X}@}9(5chp?l^T2u(-en135`_NCDd&c3E zA1O>!f|Rx%@UdKvjJ&tIk|MvxnZJE~#C4dhaU{%{b`>SN8t*pmZL;P>G41-gC-#5Mcvf>VeUmFqHE zYk=+ITy@i9@$MD!ELR|B;$F6BWDo|v$KVLs3^1D?-WajGz` zF3GjfQE+NSYdu76n5WWJ68X$6=5*G(!oT7o2IeRLcr%sCe-)1NQ;YTHmkpfs2>@B$ z#jtGEE}870<@K6e98aY??DSF{}epUXUZvXayjpexRZI2+ousKn7L3 zp?GmJYKH?B!2e1Jja%-1;(0oP-BgUGL-7r!5~%Ot zW6Mk2uOqht)$9mNR>zN1D-j$}T;ALv*Pfv=rXPvb^Yd)8q4>DfE!@2;HhN^I^gN{w z4N!qcIl{lr`N9Vu?5*HFnf~V+N~6Pd?1ga%SrA+OUS&~PYCIslaTUJIwZ^`ZTsoxU z^?;dhP+{mBpna$kjn$vo0cJ1j<~7`vrqFHbJuagCHqkrE`h5te{v}*`HhoSfer2qU5ey1m+^>HwP5&u zsvXnn2k$`L+|gMMuCgq5uSimOq;j2LUD<{vKCB!I~CoOX<0MXSqONC}Wo zYcpgsPVuImtkIX$`}aVqjSPdQLoguK5bnzg_Z`pbgEC{^nrYr#fO7hz)>BUjP zWAVjvdR|!?l>LzukL8*npN>Wp%1~fOWi@?z(EXRb^^>0nxDL7k**tzY^@U{VDyF9< zqwMC_K!r?q@2fFvoA!YrlIQmpe0hGg2po+JYlCoaNC)A*FKTh_fRHm{hdlp1XhpS2 zZe{)V=}+m{9@b z@-cHxd=!;6bJp@Sj{B#Y)Nku}o7~clabP;0iSk@otP`~l-93rj?XOP+q4SOu9gUa% zfKy`jQm=EQ_bj@aFx0PEY{hS4F(JTTo?GkQVzz<3;7UkZF9lo!9pms(!RW0sQib%# zrT_rsV64xgrSWcVb)0WL94WVJzROo;cdHVP^UqIRv)Fa3ay_Z395eP>Qas4}yYZ)| zEhL>=CgdEH1fqr#AEUkO#V7EQC{i01g_0FL2l)C!!E>cE8lz~FN)Dz5w5pN4MR7=m z_J=;2Z73012Vz(#!EX*RPRbbqvNdcFHC^j~2l^6D1M#E;ytl@qSm2Dv~LC8yY^AFrs#7t0W$dhENHY zb^>tmlT}k`n>T{KQ(|k2)@fK<^u=S6OLo{~!&rTu?pbx2)4rNQVy{Bt zj+lpxudDEkp*ju^L@Uo&)q_aCjKkX}cgdzZ$Wh6S*Ee(BL)!Q~3FqZcx!>U!YFaCk^&(memvDZ^^=uF|uP_HOJoDsxa;xp=z3$v(N{ZAIa)N4; zwpGM2Ve03@>a?<>x}uFYf$$mXc6(F)$0HKt8xm}AtW5l0PhX6I_8=)74H>D9gnNol zLK!UUFzYmi_iPv<`Rb@jgw!M8V`kIAPrYl?T*fp|JLU_a`5F8f>+6}nFscJ>PX_0z z9;f@kCncbyDyAfR3`+U{$xkeg$w~wAnJ=uMj3pwFm>eg~WxNQ$Yss)KPyB!nandpj zP@PSWWkmv3WV}P@&J#ZCw#XO6)$%?}e}+?OUOpyL8bycfQROD#3G|XECssv}(oqSr z@LSR>H6VNXVkthAAuklzVV7%*M4@+fM?8ZwGE}Na%3LnR!1{TZ*8zZzVyB&%c537a z;n-FhSv->ZI`?7wmx&~8$m4L^`1yuf%o_r^W{GMGuP}4LFCK=)vubYo?YV*)!9;mH z9;!hZPp|MG$*>khcEWS74fM}_R=@dAJWcP92~wY+jtl+}3&+}SrTpnx!oEMVUb^2n z)?sio9%krG6wuY)MU!?aOOBPHCs{_vy{N2^5uZ_QF$s|JAi}o#ptSO&6?T1cUJ&MVoM^ndquy*wh}CzK z@w(YkkDbyp)*c>I8L18tNW9X*nt#U|2x7*4Uh_2jG&~DfB%#1Ww#?$WJbK;LX}T|* z$B`euGxEym+h;!z__yDcg-JXl*i)9yFHw3df7rfdheJ*?PqLFF-SNd6IgNvPdu07J^68SJ@4AUD^7BRtCV zQ?dq%e`ehabI+QR`x(k`p1y}vJPlQI3c(X)nC&waNHSoYgbMt^Z?!7DUaZb+v=@?j zJu0Rmv-9P+KKz7t{4wy{)X;8h6oIB_gE;e^~46hqIA55v(4IX@>`5 z)NKqDhzSgGA@GODXBb|G>R6|pZc7`vet+e_bh$j|_ID)jSLa{GU)?(orIs-=4LnZU zZR~Nl*pdnbr_GxseMG&Ny8tX%CLwg2n#PNG>cwW>`h=TSM&mxMwuZ?OKxC;3 z#3KKQT4*Bn4m&C2${qb>f$9#o4AP79RN^EP`AL#045bC!b5cM(0#Rt*w|y4nT^p5P zh}92#xopFeaKFFc>5x7e0~)hj>DM=#!?0xHB>2TSDGBj7h0!dX2NlrQqw z`-tjxvuf$yMrTYi2)-Hyb+gb!#EumJ?!U!dn`a}1lgo$!5IB8^=YN#)Rs=dZe& z#z3U-H|cS;Nkc%P^rY_}bLv*A9DV;qugT>4R5knFE0n!v1Ag&M=BXM!tdM~f!1vZf z*0fP7I1k=yNzvT1og19|zEt6*5XH5Ue*=-WZSHSVi7*Ep~4SpZG8D-n_r)HEO^?9f)rO23Rf3#}c3ZtNP<9i=Y6K<1na zCYqf2Ws~gLuVk$f(+eWa6_zNzsu6>teDlajKAV{eSQ3jgs1a)>hh=~jeZ`&$t44^TV^KLsXf&*-b{i+eoD zSMEICPJMYi1nuZgDrePPYxj@`Y#nn1*dDjsE*0jq;rwnX;yr9rfKhZZngRlcD_4*5t z$D!-NN7xT3CKY7q(Y|Jw%Pk*K)<9UR=I0_TvJgU+&022(xyq2)vc@DG)ltmtXmSuyIvn zddpv+FTt)gO9^FdFjpKZ>`V;M0c4NySbK$dn45}QFC?fx4G zqy#w*&lKFr94|3A1StXEy$)rUvhCo~StQ1O4aN0IZvXP`_Ihoi8{L=FHNLVMOpUu5 zEJ+e>m3hPR>^tLIdZ|m5U?I~6(J!|THJ0w>3;GyUNb+)Rl(xg=nA(7IuX-}1<+nR8 ze7>g8?Ton>dwM87W}=`|!(EA_L^v3AA3+`Ce^?$}s-9jm-)!XqFl?!wlpGMz#7q&A zp3i%dnu6s;EEHE&x*lvIJ}_jpHEuBW~yUlX>7tr zDk1&W(;ZCu!GkEl$%_@ZGQOfc>)V&z7*P#I#(6VRLo<(#z?A=2Y6ZWmz4#*y#}6hZCUYs6CPR^j^8h@4i&Gw-FZs0=obmV)s zN3}nnY|PI5Ec(9K9MJ#htKMfPvuYj|zSj__4#JliPgX~VYna3T@!>}JUH(o-Jzfk8 zp02rC@!8AOzG}xvG2&34E?=mKHHHDn7qy_mS%}8LFxmIwyf0XV(o;y=T~Zw*kV)&e z1<%e&D4$;tZ9zOs*;3!`of=GwyjP&bxv%c28&xE#b&LQHoMG>kn>PeZtW5TwxNZ|% zc$+-gqG{en>g$h=f82h94g^DauGc8jc3{aDe2_{Okq1to!6I^2YhP?6jArLJ_x`W! zyC19F7M|s0>gKG33oUik$GsD)trv|2PhePiWOTGRN(9XKabD?3H|}8W?my zOuqOepb$g{vQDZzUst#lXP$;+$Cx3knY%(Jq>3jW?-kWOS5C+xX&N0j|E-<+29!v#EUjw#7<_?=+KewpbFN^yTfCTU(Jm4GCYVhfU}Mh zk*9%2O4$v1U>d;6w}y#Yb_0vDu|?fvQ>J9$*$|s3htU=Mnf=RZ%BLzcL13Qs>={t3 zu2oxGO@{~v-@)Lq1`=DSEY)63Zr#004+T-C!Ot|V3n5cnpSrIpxJdi9^t0WrQtx>$ z^jtM_50Lxw5M~@~gIjOIIxNdeRIoymfI>yFJEo5`Za7$QTfJagjuF9L_mw;*5J}K` z1^4#jh+VHG(dZE7A7xupcCL%>!d2#+k4krpS9B)G)Th)%1uw8Tw6J`F@tAwkT#3rV zd506v9G^F5h!C3)k7N|SsMd_8-lUKEm9Sdu^^@!EmhQMx37+GG60+!5pOBcTY(Cr` zd`wecELE<~UlaNn_P60h|(qsa98|AAONYlqnd)8-g9f*_U|Fb(U8IlK5{QUU6d-cjTCHq96V^`o{X1Pzg`}aiC1A!9L19Al1+ooF zkI8js3n8;d5Zaqc_OF~&%qzNR9WJHgp7Zdcc`In}KyN5phE>9baraQ7Dd+zN$%m&r zL8N`ujE)J~Sfmu5Xiw65b)MjYz>AVAMhzw}A3NC*(hsV=%jGXQKr}DPaIM}5~Looe(v0Q;#X_Zx6Q(P4`K@C*O*Q~T47v%hHVr&w^EPtA@B*8sf!yPtKlz)03H;Kr*naKMllgS3yld*MLxGu322#G2 zwXoujTYG>Vf1mJ^oBm%=y^jZIXI|K1+rrpEPs|}?ph*)G`3}|w_Mu8Ke?WobBflo& zn+PR!;vrx+fkbJs_{YMbe_=OSDl|0ehJ3U_Ia29mai=1bSkDp?{JsykPRs5fg>BeS z!7arMvJ;>-xJCnLEe?ib$!dO0$JO5y#@f<1)%glh!#q90l@$>sSImIh= zBGv4agN&72P4NLKt!R!ZJyrj*Z?jEk}^%45{eyVjAGrp6ol~<76+B-fR*K)cba)g!8f-(>?3gt5bm6{d z0ZDSCd`Nj&gxR6UYxZsi z9xk1_x;lEJ6RYP6Ig_fC7GKVl`)tFkYU3ZV{bF4&U}Vz5j)L;PVcVWF*S8a*97{ydB#<QlaDw_1e z?{R*nhk#54f-IqfP%ti>e>qQZtm2w^G%nUtQ z;nw~8OHVH}0|hcqyNy^Sa@G5Gv;ltogXeOmtd#PN6$S%~m~>_$VMp(1H2rWE`MtPU|hvv$D{& zx<@pN(Hfvx`WX9di09-|CWr*WQt>8*g{6jvyQ-44s+N_9A9^Iqu_FG#ft~K%wt-m_XB!` zFg(!q+~)(2AoW;?%%Sd43~<(XNQsJMGB(gxDOd%e8ud@_2UQ_ z_vX+iV~cl(G<1p2iIYa+4YHw66a8I{Tz}?2p}!8oKQ32EYnHkxY4=CV+Ug!Ca_)c> zOdxma_Fa;1-FW$%m}P@mr}+6rRw6HM-hu`VvwC{Jhd8m|S|t|#KJR#CP2IX2m8m}v zs62ofSgOdrem*U}3;VXr6T`;ih}9=DFFq1Br>N?qtsL2blNES~mwPvkJ>6n1%Bo{! zLIDeE$46+$MJK57P-RK%+CQ|mOoz@ve6(XDt9WG3OX`~>slTYQYo0I&r8YOE`t!N) zGi_lA!E_;4FHy1i%u2QIyH3dTj5=LN_0UsjpvpOYUp5B8?)Ed!a=Go&{^&@t~?eYa+K9y0ux3?5?3c7G%_gJ9gp<*TmjtkSf;YhcD6^NQgZQJ{F}A@8%7 zr))3oJd~QkT`I%Xj=|k*g%HCeoN2GtX97vPvYc8B!Y0s}90AG>BA}Xvab7EQbaj3D zgRdl7N0}lsu7?Z1N)xjh7S?;BNWB|>^hb7UWiY{AsW z{U_jOlx}UUdr?jEr~Aa$fvy)DTg&47Xz}P_u(0;*7}_o!bz%Mb z)j|9zVbGRJwm2=>Y&Ob2#j=){guSD%?p2uqPVPoJ(7nTHV*VpEPNfMk5#{joxyAcG z^Kbjj0Ta4OIc!0|HViAM5D4H8J;X*WVGaLEq*pdP{YLdR;Em}-DZ54w7K_Gg@{opC zSaWK4_qtqb{gF$AWKT)kll2`tyWaBq;V}>N%cj~wu$-{t2v47~gQC5NEd?C1o~7Nh zbpoushX_xT@wB1je9P4Am;G5>!D^IoJ2NgQ&bELUWJjCW&5tLi6T~lAv|^D6ypbl@ z9C!-Q#{tc4^$Z)7SPTxHN2qmI{dacf4=~IKIQ(S-XlVm$^`mF{uy&HP)rIS}vqM~98dqpjo z+~}j|<3%Xg*fx7mlZ9!zC%yv$IH`=wS|{cFezsYnwed|8UQzSnstLY>k2-i0To#_6 zm!Bk9=sf<4!VOY9_F+)GMW~CVY z>kF-hA3%Zx2B$^GM!=sv4*`4*t<0!8|Vu?iEG-qG#FI%6O z+ul9tx=v9&SE7xv!dRp2+GH6Ye=F4;L`jm^Q~`98?JrsC;S{JVF@78sQ-VHIHw{9J zj0D@SL&hXZNMU%3Yi{rK{b_lmeAcgQVB!ad0PC+fP<;mR4ZMED|61mB7Rso#85I)v zZ1K!GTa*X)Eew(&A$fe3n3odGr&;o5I}bE|5*P3A$VV7^N5KS~Ob9Wmsg-({_aT!4 zzv{sFK+*W{=RG8u2;r}%Q7!eWEp-77qsrj$eFFB=FKzdIm#@3E%A9%kpe9_MixDsi z_-9JR)w?(JKfbR_V81KS{2uS|yl%BuU0SIhJr1tB+a$SM`rTbBV%sNMuaf^RgzyqQ z|3k)D`Huv5!3Q|X^_%JF8J&msqZat3kZ**>s}Gt)u@C-kD11qS_n&!?V&x_;DX3hK zya&iwkN{C?6trP z#eu)<2jR2$eYs`6b;5~*D)@cR%l*nDpj1iaH=@r256Sj;i`p2Q+NB>lo4x|KK97gj ztPU@a{!MqBYMb{z!8Vt&Q?UqVr%0zhV=cXonz}QN8$06t7Fb;Jp*ML~)c*6)cb(mg ziS;~JkFYrD&PLjew6K~6hckFbAmN7{e`ZIFx2r=u%P{$yti2y^ew# zIR&h%9n|M>d>r(9x`4rLbsuLo;-b&VX;a#}OhQa8cMJ)0Bx-TZ8+N#deKh=YrT4OF zY0`|4hn#~@XLdFvUy3GBQzAXB_l7I!4|Qz@3Ky#!VkFwwYl`Xw;QHmw_sBszPXn(MGxpqxIoA82uOzZhn4?X0g1@2 zl{j%9-{ohksg@!UR)>CQaDAyPLy^O1E0_pKlN8;}oL=dA3cpmUFPhQYC0i@6x;n{o zavIL}N-TRE0hk8Z2}H}Nu<{squBbPkVU~o-dbikgJr+%| zB-V)%j8rGwJngIEMCMrX2iwwD12vfK^UkD#Km!

  2. Example
  3. Animation State Events
  4. Skins Mix & Match
  5. +
  6. IK Following
  7. Pixi
    • diff --git a/spine-ts/spine-canvaskit/example/ik-following.html b/spine-ts/spine-canvaskit/example/ik-following.html new file mode 100644 index 000000000..d1c8ee4b2 --- /dev/null +++ b/spine-ts/spine-canvaskit/example/ik-following.html @@ -0,0 +1,100 @@ + + + + + + + + + + + + + +

      IK Following

      +

      Click/touch to set the aim

      + + + + + + \ No newline at end of file diff --git a/spine-ts/spine-canvaskit/example/mix-and-match.html b/spine-ts/spine-canvaskit/example/mix-and-match.html index 5aa4aeed5..b1f0b7f9e 100644 --- a/spine-ts/spine-canvaskit/example/mix-and-match.html +++ b/spine-ts/spine-canvaskit/example/mix-and-match.html @@ -56,7 +56,7 @@ // Set the skin and the skeleton to the setup pose drawable.skeleton.setSkin(skin); - drawable.skeleton.setToSetupPose(); + drawable.skeleton.setSlotsToSetupPose(); const renderer = new spine.SkeletonRenderer(ck); let lastTime = performance.now(); From 8c69162e2fb5e2d8ba707e6ba101e2e88ee19975 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 8 Jul 2024 17:40:51 +0200 Subject: [PATCH 023/215] [canvaskit] Add micro benchmark, delete Skia vertices after drawVertices --- spine-ts/index.html | 1 + .../example/micro-benchmark.html | 72 +++++++++++++++++++ spine-ts/spine-canvaskit/src/index.ts | 4 +- 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 spine-ts/spine-canvaskit/example/micro-benchmark.html diff --git a/spine-ts/index.html b/spine-ts/index.html index 96ec01a2d..9af3d4ba6 100644 --- a/spine-ts/index.html +++ b/spine-ts/index.html @@ -26,6 +26,7 @@
    • Animation State Events
    • Skins Mix & Match
    • IK Following
    • +
    • Micro Benchmark
  8. Pixi
  9. Pixi
  10. diff --git a/spine-ts/spine-canvaskit/example/animation-state-events.html b/spine-ts/spine-canvaskit/example/animation-state-events.html index 9c6f06ed5..cbbc21018 100644 --- a/spine-ts/spine-canvaskit/example/animation-state-events.html +++ b/spine-ts/spine-canvaskit/example/animation-state-events.html @@ -18,7 +18,7 @@

    Animation State Events

    Open the console in the developer tools to view events logs.

    - + + + + + + +

    IK Following

    +

    Drag anywhere

    + + + + + + \ No newline at end of file diff --git a/spine-ts/spine-canvaskit/src/index.ts b/spine-ts/spine-canvaskit/src/index.ts index c020ad52b..86e3d3aa7 100644 --- a/spine-ts/spine-canvaskit/src/index.ts +++ b/spine-ts/spine-canvaskit/src/index.ts @@ -12,7 +12,7 @@ function toCkBlendMode(ck: CanvasKit, blendMode: BlendMode) { switch(blendMode) { case BlendMode.Normal: return ck.BlendMode.SrcOver; case BlendMode.Additive: return ck.BlendMode.Plus; - case BlendMode.Multiply: return ck.BlendMode.Modulate; + case BlendMode.Multiply: return ck.BlendMode.SrcOver; case BlendMode.Screen: return ck.BlendMode.Screen; default: return ck.BlendMode.SrcOver; } @@ -92,7 +92,11 @@ export async function loadTextureAtlas(ck: CanvasKit, atlasFile: string, readFil export async function loadSkeletonData(skeletonFile: string, atlas: TextureAtlas, readFile: (path: string) => Promise): Promise { const attachmentLoader = new AtlasAttachmentLoader(atlas); const loader = skeletonFile.endsWith(".json") ? new SkeletonJson(attachmentLoader) : new SkeletonBinary(attachmentLoader); - const skeletonData = loader.readSkeletonData(await readFile(skeletonFile)); + let data = await readFile(skeletonFile); + if (skeletonFile.endsWith(".json")) { + data = bufferToUtf8String(data); + } + const skeletonData = loader.readSkeletonData(data); return skeletonData; } From 1b1e358f85ec445880f40f9f1724bd509f68c13d Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 9 Jul 2024 11:42:55 +0200 Subject: [PATCH 029/215] [ts] Release 4.2.55 --- spine-ts/package-lock.json | 38 +++++++++++++-------------- spine-ts/package.json | 2 +- spine-ts/spine-canvas/package.json | 4 +-- spine-ts/spine-canvaskit/package.json | 4 +-- spine-ts/spine-core/package.json | 2 +- spine-ts/spine-phaser/package.json | 8 +++--- spine-ts/spine-pixi/package.json | 4 +-- spine-ts/spine-player/package.json | 4 +-- spine-ts/spine-threejs/package.json | 4 +-- spine-ts/spine-webgl/package.json | 4 +-- 10 files changed, 37 insertions(+), 37 deletions(-) diff --git a/spine-ts/package-lock.json b/spine-ts/package-lock.json index fee8475ba..3ce6c233e 100644 --- a/spine-ts/package-lock.json +++ b/spine-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.54", + "version": "4.2.55", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@esotericsoftware/spine-ts", - "version": "4.2.54", + "version": "4.2.55", "license": "LicenseRef-LICENSE", "workspaces": [ "spine-core", @@ -3031,18 +3031,18 @@ }, "spine-canvas": { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.54", + "version": "4.2.55", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.54" + "@esotericsoftware/spine-core": "4.2.55" } }, "spine-canvaskit": { "name": "@esotericsoftware/spine-canvaskit", - "version": "4.2.54", + "version": "4.2.55", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.54", + "@esotericsoftware/spine-core": "4.2.55", "canvaskit-wasm": "0.39.1" }, "devDependencies": { @@ -3052,25 +3052,25 @@ }, "spine-core": { "name": "@esotericsoftware/spine-core", - "version": "4.2.54", + "version": "4.2.55", "license": "LicenseRef-LICENSE" }, "spine-phaser": { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.54", + "version": "4.2.55", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-canvas": "4.2.54", - "@esotericsoftware/spine-core": "4.2.54", - "@esotericsoftware/spine-webgl": "4.2.54" + "@esotericsoftware/spine-canvas": "4.2.55", + "@esotericsoftware/spine-core": "4.2.55", + "@esotericsoftware/spine-webgl": "4.2.55" } }, "spine-pixi": { "name": "@esotericsoftware/spine-pixi", - "version": "4.2.54", + "version": "4.2.55", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.54" + "@esotericsoftware/spine-core": "4.2.55" }, "peerDependencies": { "@pixi/assets": "^7.2.4", @@ -3083,26 +3083,26 @@ }, "spine-player": { "name": "@esotericsoftware/spine-player", - "version": "4.2.54", + "version": "4.2.55", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.54" + "@esotericsoftware/spine-webgl": "4.2.55" } }, "spine-threejs": { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.54", + "version": "4.2.55", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.54" + "@esotericsoftware/spine-core": "4.2.55" } }, "spine-webgl": { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.54", + "version": "4.2.55", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.54" + "@esotericsoftware/spine-core": "4.2.55" } } } diff --git a/spine-ts/package.json b/spine-ts/package.json index da7d7b636..6cc818ea9 100644 --- a/spine-ts/package.json +++ b/spine-ts/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.54", + "version": "4.2.55", "description": "The official Spine Runtimes for the web.", "type": "module", "files": [ diff --git a/spine-ts/spine-canvas/package.json b/spine-ts/spine-canvas/package.json index 6d4dcad56..648118511 100644 --- a/spine-ts/spine-canvas/package.json +++ b/spine-ts/spine-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.54", + "version": "4.2.55", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.54" + "@esotericsoftware/spine-core": "4.2.55" } } \ No newline at end of file diff --git a/spine-ts/spine-canvaskit/package.json b/spine-ts/spine-canvaskit/package.json index c25d8d5e5..8dfbccd5f 100644 --- a/spine-ts/spine-canvaskit/package.json +++ b/spine-ts/spine-canvaskit/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-canvaskit", - "version": "4.2.54", + "version": "4.2.55", "description": "The official Spine Runtimes for CanvasKit for NodeJS", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.54", + "@esotericsoftware/spine-core": "4.2.55", "canvaskit-wasm": "0.39.1" }, "devDependencies": { diff --git a/spine-ts/spine-core/package.json b/spine-ts/spine-core/package.json index 36cc908aa..096be294d 100644 --- a/spine-ts/spine-core/package.json +++ b/spine-ts/spine-core/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-core", - "version": "4.2.54", + "version": "4.2.55", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/spine-ts/spine-phaser/package.json b/spine-ts/spine-phaser/package.json index f47a099c3..2cad8c848 100644 --- a/spine-ts/spine-phaser/package.json +++ b/spine-ts/spine-phaser/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.54", + "version": "4.2.55", "description": "The official Spine Runtimes for the Phaser.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,8 +31,8 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.54", - "@esotericsoftware/spine-webgl": "4.2.54", - "@esotericsoftware/spine-canvas": "4.2.54" + "@esotericsoftware/spine-core": "4.2.55", + "@esotericsoftware/spine-webgl": "4.2.55", + "@esotericsoftware/spine-canvas": "4.2.55" } } \ No newline at end of file diff --git a/spine-ts/spine-pixi/package.json b/spine-ts/spine-pixi/package.json index bb01b0be4..8d909a647 100644 --- a/spine-ts/spine-pixi/package.json +++ b/spine-ts/spine-pixi/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-pixi", - "version": "4.2.54", + "version": "4.2.55", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.54" + "@esotericsoftware/spine-core": "4.2.55" }, "peerDependencies": { "@pixi/core": "^7.2.4", diff --git a/spine-ts/spine-player/package.json b/spine-ts/spine-player/package.json index 04d5c35b3..b8a4a91c5 100644 --- a/spine-ts/spine-player/package.json +++ b/spine-ts/spine-player/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-player", - "version": "4.2.54", + "version": "4.2.55", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.54" + "@esotericsoftware/spine-webgl": "4.2.55" } } \ No newline at end of file diff --git a/spine-ts/spine-threejs/package.json b/spine-ts/spine-threejs/package.json index b18499163..fbd1fbae8 100644 --- a/spine-ts/spine-threejs/package.json +++ b/spine-ts/spine-threejs/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.54", + "version": "4.2.55", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.54" + "@esotericsoftware/spine-core": "4.2.55" } } \ No newline at end of file diff --git a/spine-ts/spine-webgl/package.json b/spine-ts/spine-webgl/package.json index c874e30ca..562009510 100644 --- a/spine-ts/spine-webgl/package.json +++ b/spine-ts/spine-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.54", + "version": "4.2.55", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.54" + "@esotericsoftware/spine-core": "4.2.55" } } \ No newline at end of file From e9bcaa7a9bfaabf4f1a1dd58989b636863673a55 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 9 Jul 2024 14:22:11 +0200 Subject: [PATCH 030/215] [canvaskit] Fix JSON loading. --- spine-ts/spine-canvaskit/example/index.html | 1 - spine-ts/spine-canvaskit/src/index.ts | 401 +++++++++++------- spine-ts/spine-core/src/SkeletonBinary.ts | 2 +- .../SpinePlugin/Private/SpineAtlasAsset.cpp | 2 +- .../SpineSkeletonRendererComponent.cpp | 2 +- 5 files changed, 253 insertions(+), 155 deletions(-) diff --git a/spine-ts/spine-canvaskit/example/index.html b/spine-ts/spine-canvaskit/example/index.html index c17155589..16f03d7f1 100644 --- a/spine-ts/spine-canvaskit/example/index.html +++ b/spine-ts/spine-canvaskit/example/index.html @@ -34,7 +34,6 @@ canvasElement.width = canvasElement.clientWidth * dpr; canvasElement.height = canvasElement.clientHeight * dpr; - // Initialize CanvasKit and create a surface from the Canvas element to draw to const ck = await CanvasKitInit(); const surface = ck.MakeCanvasSurface('foo'); diff --git a/spine-ts/spine-canvaskit/src/index.ts b/spine-ts/spine-canvaskit/src/index.ts index 86e3d3aa7..12d760be8 100644 --- a/spine-ts/spine-canvaskit/src/index.ts +++ b/spine-ts/spine-canvaskit/src/index.ts @@ -1,103 +1,170 @@ export * from "@esotericsoftware/spine-core"; -import { AnimationState, AnimationStateData, AtlasAttachmentLoader, BlendMode, ClippingAttachment, Color, MeshAttachment, NumberArrayLike, Physics, RegionAttachment, Skeleton, SkeletonBinary, SkeletonClipping, SkeletonData, SkeletonJson, Texture, TextureAtlas, TextureFilter, TextureWrap, Utils } from "@esotericsoftware/spine-core"; -import { Canvas, Surface, CanvasKit, Image, Paint, Shader, BlendMode as CanvasKitBlendMode } from "canvaskit-wasm"; +import { + AnimationState, + AnimationStateData, + AtlasAttachmentLoader, + BlendMode, + ClippingAttachment, + Color, + MeshAttachment, + NumberArrayLike, + Physics, + RegionAttachment, + Skeleton, + SkeletonBinary, + SkeletonClipping, + SkeletonData, + SkeletonJson, + Texture, + TextureAtlas, + TextureFilter, + TextureWrap, + Utils, +} from "@esotericsoftware/spine-core"; +import { + Canvas, + Surface, + CanvasKit, + Image, + Paint, + Shader, + BlendMode as CanvasKitBlendMode, +} from "canvaskit-wasm"; Skeleton.yDown = true; -type CanvasKitImage = { shaders: Shader[], paintPerBlendMode: Map, image: Image }; +type CanvasKitImage = { + shaders: Shader[]; + paintPerBlendMode: Map; + image: Image; +}; // CanvasKit blend modes for premultiplied alpha -function toCkBlendMode(ck: CanvasKit, blendMode: BlendMode) { - switch(blendMode) { - case BlendMode.Normal: return ck.BlendMode.SrcOver; - case BlendMode.Additive: return ck.BlendMode.Plus; - case BlendMode.Multiply: return ck.BlendMode.SrcOver; - case BlendMode.Screen: return ck.BlendMode.Screen; - default: return ck.BlendMode.SrcOver; - } +function toCkBlendMode (ck: CanvasKit, blendMode: BlendMode) { + switch (blendMode) { + case BlendMode.Normal: + return ck.BlendMode.SrcOver; + case BlendMode.Additive: + return ck.BlendMode.Plus; + case BlendMode.Multiply: + return ck.BlendMode.SrcOver; + case BlendMode.Screen: + return ck.BlendMode.Screen; + default: + return ck.BlendMode.SrcOver; + } } -function bufferToUtf8String(buffer: any) { - if (typeof Buffer !== 'undefined') { - return buffer.toString('utf-8'); - } else if (typeof TextDecoder !== 'undefined') { - return new TextDecoder('utf-8').decode(buffer); - } else { - throw new Error('Unsupported environment'); - } +function bufferToUtf8String (buffer: any) { + if (typeof Buffer !== "undefined") { + return buffer.toString("utf-8"); + } else if (typeof TextDecoder !== "undefined") { + return new TextDecoder("utf-8").decode(buffer); + } else { + throw new Error("Unsupported environment"); + } } class CanvasKitTexture extends Texture { - getImage(): CanvasKitImage { - return this._image; - } + getImage (): CanvasKitImage { + return this._image; + } - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void { - } + setFilters (minFilter: TextureFilter, magFilter: TextureFilter): void { } - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void { - } + setWraps (uWrap: TextureWrap, vWrap: TextureWrap): void { } - dispose(): void { - const data: CanvasKitImage = this._image; - for (const paint of data.paintPerBlendMode.values()) { - paint.delete(); - } - for (const shader of data.shaders) { - shader.delete(); - } - data.image.delete(); - this._image = null; - } + dispose (): void { + const data: CanvasKitImage = this._image; + for (const paint of data.paintPerBlendMode.values()) { + paint.delete(); + } + for (const shader of data.shaders) { + shader.delete(); + } + data.image.delete(); + this._image = null; + } - static async fromFile(ck: CanvasKit, path: string, readFile: (path: string) => Promise): Promise { - const imgData = await readFile(path); - if (!imgData) throw new Error(`Could not load image ${path}`); - const image = ck.MakeImageFromEncoded(imgData); - if (!image) throw new Error(`Could not load image ${path}`); - const paintPerBlendMode = new Map(); - const shaders: Shader[] = []; - for (const blendMode of [BlendMode.Normal, BlendMode.Additive, BlendMode.Multiply, BlendMode.Screen]) { - const paint = new ck.Paint(); - const shader = image.makeShaderOptions(ck.TileMode.Clamp, ck.TileMode.Clamp, ck.FilterMode.Linear, ck.MipmapMode.Linear); - paint.setShader(shader); - paint.setBlendMode(toCkBlendMode(ck, blendMode)); - paintPerBlendMode.set(blendMode, paint); - shaders.push(shader); - } - return new CanvasKitTexture({ shaders, paintPerBlendMode, image }); - } + static async fromFile ( + ck: CanvasKit, + path: string, + readFile: (path: string) => Promise + ): Promise { + const imgData = await readFile(path); + if (!imgData) throw new Error(`Could not load image ${path}`); + const image = ck.MakeImageFromEncoded(imgData); + if (!image) throw new Error(`Could not load image ${path}`); + const paintPerBlendMode = new Map(); + const shaders: Shader[] = []; + for (const blendMode of [ + BlendMode.Normal, + BlendMode.Additive, + BlendMode.Multiply, + BlendMode.Screen, + ]) { + const paint = new ck.Paint(); + const shader = image.makeShaderOptions( + ck.TileMode.Clamp, + ck.TileMode.Clamp, + ck.FilterMode.Linear, + ck.MipmapMode.Linear + ); + paint.setShader(shader); + paint.setBlendMode(toCkBlendMode(ck, blendMode)); + paintPerBlendMode.set(blendMode, paint); + shaders.push(shader); + } + return new CanvasKitTexture({ shaders, paintPerBlendMode, image }); + } } /** * Loads a {@link TextureAtlas} and its atlas page images from the given file path using the `readFile(path: string): Promise` function. * Throws an `Error` if the file or one of the atlas page images could not be loaded. */ -export async function loadTextureAtlas(ck: CanvasKit, atlasFile: string, readFile: (path: string) => Promise): Promise { - const atlas = new TextureAtlas(bufferToUtf8String(await readFile(atlasFile))); - const slashIndex = atlasFile.lastIndexOf("/"); - const parentDir = slashIndex >= 0 ? atlasFile.substring(0, slashIndex + 1) + "/" : ""; - for (const page of atlas.pages) { - const texture = await CanvasKitTexture.fromFile(ck, parentDir + page.name, readFile); - page.setTexture(texture); - } - return atlas; +export async function loadTextureAtlas ( + ck: CanvasKit, + atlasFile: string, + readFile: (path: string) => Promise +): Promise { + const atlas = new TextureAtlas(bufferToUtf8String(await readFile(atlasFile))); + const slashIndex = atlasFile.lastIndexOf("/"); + const parentDir = + slashIndex >= 0 ? atlasFile.substring(0, slashIndex + 1) + "/" : ""; + for (const page of atlas.pages) { + const texture = await CanvasKitTexture.fromFile( + ck, + parentDir + page.name, + readFile + ); + page.setTexture(texture); + } + return atlas; } /** * Loads a {@link SkeletonData} from the given file path (`.json` or `.skel`) using the `readFile(path: string): Promise` function. * Attachments will be looked up in the provided atlas. */ -export async function loadSkeletonData(skeletonFile: string, atlas: TextureAtlas, readFile: (path: string) => Promise): Promise { - const attachmentLoader = new AtlasAttachmentLoader(atlas); - const loader = skeletonFile.endsWith(".json") ? new SkeletonJson(attachmentLoader) : new SkeletonBinary(attachmentLoader); - let data = await readFile(skeletonFile); - if (skeletonFile.endsWith(".json")) { - data = bufferToUtf8String(data); - } - const skeletonData = loader.readSkeletonData(data); - return skeletonData; +export async function loadSkeletonData ( + skeletonFile: string, + atlas: TextureAtlas, + readFile: (path: string) => Promise, + scale = 1 +): Promise { + const attachmentLoader = new AtlasAttachmentLoader(atlas); + const loader = skeletonFile.endsWith(".json") + ? new SkeletonJson(attachmentLoader) + : new SkeletonBinary(attachmentLoader); + loader.scale = scale; + let data = await readFile(skeletonFile); + if (skeletonFile.endsWith(".json")) { + data = bufferToUtf8String(data); + } + const skeletonData = loader.readSkeletonData(data); + return skeletonData; } /** @@ -105,58 +172,60 @@ export async function loadSkeletonData(skeletonFile: string, atlas: TextureAtlas * be shared by any number of drawables. */ export class SkeletonDrawable { - public readonly skeleton: Skeleton; - public readonly animationState: AnimationState; + public readonly skeleton: Skeleton; + public readonly animationState: AnimationState; - /** - * Constructs a new drawble from the skeleton data. - */ - constructor(skeletonData: SkeletonData) { - this.skeleton = new Skeleton(skeletonData); - this.animationState = new AnimationState(new AnimationStateData(skeletonData)); - } + /** + * Constructs a new drawble from the skeleton data. + */ + constructor (skeletonData: SkeletonData) { + this.skeleton = new Skeleton(skeletonData); + this.animationState = new AnimationState( + new AnimationStateData(skeletonData) + ); + } - /** - * Updates the animation state and skeleton time by the delta time. Applies the - * animations to the skeleton and calculates the final pose of the skeleton. - * - * @param deltaTime the time since the last update in seconds - * @param physicsUpdate optional {@link Physics} update mode. - */ - update(deltaTime: number, physicsUpdate: Physics = Physics.update) { - this.animationState.update(deltaTime); - this.skeleton.update(deltaTime); - this.animationState.apply(this.skeleton); - this.skeleton.updateWorldTransform(physicsUpdate); - } + /** + * Updates the animation state and skeleton time by the delta time. Applies the + * animations to the skeleton and calculates the final pose of the skeleton. + * + * @param deltaTime the time since the last update in seconds + * @param physicsUpdate optional {@link Physics} update mode. + */ + update (deltaTime: number, physicsUpdate: Physics = Physics.update) { + this.animationState.update(deltaTime); + this.skeleton.update(deltaTime); + this.animationState.apply(this.skeleton); + this.skeleton.updateWorldTransform(physicsUpdate); + } } /** * Renders a {@link Skeleton} or {@link SkeletonDrawable} to a CanvasKit {@link Canvas}. */ export class SkeletonRenderer { - private clipper = new SkeletonClipping(); - private tempColor = new Color(); - private tempColor2 = new Color(); - private static QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - private scratchPositions = Utils.newFloatArray(100); - private scratchColors = Utils.newFloatArray(100); - private scratchUVs = Utils.newFloatArray(100); + private clipper = new SkeletonClipping(); + private tempColor = new Color(); + private tempColor2 = new Color(); + private static QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + private scratchPositions = Utils.newFloatArray(100); + private scratchColors = Utils.newFloatArray(100); + private scratchUVs = Utils.newFloatArray(100); - /** - * Creates a new skeleton renderer. - * @param ck the {@link CanvasKit} instance returned by `CanvasKitInit()`. - */ - constructor(private ck: CanvasKit) {} + /** + * Creates a new skeleton renderer. + * @param ck the {@link CanvasKit} instance returned by `CanvasKitInit()`. + */ + constructor (private ck: CanvasKit) { } - /** - * Renders a skeleton or skeleton drawable in its current pose to the canvas. - * @param canvas the canvas to render to. - * @param skeleton the skeleton or drawable to render. - */ - render(canvas: Canvas, skeleton: Skeleton | SkeletonDrawable) { - if (skeleton instanceof SkeletonDrawable) skeleton = skeleton.skeleton; - let clipper = this.clipper; + /** + * Renders a skeleton or skeleton drawable in its current pose to the canvas. + * @param canvas the canvas to render to. + * @param skeleton the skeleton or drawable to render. + */ + render (canvas: Canvas, skeleton: Skeleton | SkeletonDrawable) { + if (skeleton instanceof SkeletonDrawable) skeleton = skeleton.skeleton; + let clipper = this.clipper; let drawOrder = skeleton.drawOrder; let skeletonColor = skeleton.color; @@ -165,20 +234,20 @@ export class SkeletonRenderer { if (!slot.bone.active) { clipper.clipEndWithSlot(slot); continue; - } + } let attachment = slot.getAttachment(); - let positions = this.scratchPositions; - let colors = this.scratchColors; - let uvs: NumberArrayLike; + let positions = this.scratchPositions; + let colors = this.scratchColors; + let uvs: NumberArrayLike; let texture: CanvasKitTexture; - let triangles: Array; - let attachmentColor: Color; - let numVertices = 0; + let triangles: Array; + let attachmentColor: Color; + let numVertices = 0; if (attachment instanceof RegionAttachment) { let region = attachment as RegionAttachment; - positions = positions.length < 8 ? Utils.newFloatArray(8) : positions; - numVertices = 4; + positions = positions.length < 8 ? Utils.newFloatArray(8) : positions; + numVertices = 4; region.computeWorldVertices(slot, positions, 0, 2); triangles = SkeletonRenderer.QUAD_TRIANGLES; uvs = region.uvs as Float32Array; @@ -186,9 +255,19 @@ export class SkeletonRenderer { attachmentColor = region.color; } else if (attachment instanceof MeshAttachment) { let mesh = attachment as MeshAttachment; - positions = positions.length < mesh.worldVerticesLength ? Utils.newFloatArray(mesh.worldVerticesLength) : positions; - numVertices = mesh.worldVerticesLength >> 1; - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, positions, 0, 2); + positions = + positions.length < mesh.worldVerticesLength + ? Utils.newFloatArray(mesh.worldVerticesLength) + : positions; + numVertices = mesh.worldVerticesLength >> 1; + mesh.computeWorldVertices( + slot, + 0, + mesh.worldVerticesLength, + positions, + 0, + 2 + ); triangles = mesh.triangles; texture = mesh.region?.texture as CanvasKitTexture; uvs = mesh.uvs as Float32Array; @@ -204,43 +283,63 @@ export class SkeletonRenderer { if (texture) { if (clipper.isClipping()) { - clipper.clipTrianglesUnpacked(positions, triangles, triangles.length, uvs); - positions = clipper.clippedVertices; - uvs = clipper.clippedUVs; - triangles = clipper.clippedTriangles; + clipper.clipTrianglesUnpacked( + positions, + triangles, + triangles.length, + uvs + ); + positions = clipper.clippedVertices; + uvs = clipper.clippedUVs; + triangles = clipper.clippedTriangles; } - let slotColor = slot.color; + let slotColor = slot.color; let finalColor = this.tempColor; finalColor.r = skeletonColor.r * slotColor.r * attachmentColor.r; finalColor.g = skeletonColor.g * slotColor.g * attachmentColor.g; finalColor.b = skeletonColor.b * slotColor.b * attachmentColor.b; finalColor.a = skeletonColor.a * slotColor.a * attachmentColor.a; - if (colors.length / 4 < numVertices) colors = Utils.newFloatArray(numVertices * 4); - for (let i = 0, n = numVertices * 4; i < n; i += 4) { - colors[i] = finalColor.r; - colors[i + 1] = finalColor.g; - colors[i + 2] = finalColor.b; - colors[i + 3] = finalColor.a; - } + if (colors.length / 4 < numVertices) + colors = Utils.newFloatArray(numVertices * 4); + for (let i = 0, n = numVertices * 4; i < n; i += 4) { + colors[i] = finalColor.r; + colors[i + 1] = finalColor.g; + colors[i + 2] = finalColor.b; + colors[i + 3] = finalColor.a; + } - const scaledUvs = this.scratchUVs.length < uvs.length ? Utils.newFloatArray(uvs.length) : this.scratchUVs; - const width = texture.getImage().image.width(); - const height = texture.getImage().image.height(); - for (let i = 0; i < uvs.length; i+=2) { - scaledUvs[i] = uvs[i] * width; - scaledUvs[i + 1] = uvs[i + 1] * height; - } + const scaledUvs = + this.scratchUVs.length < uvs.length + ? Utils.newFloatArray(uvs.length) + : this.scratchUVs; + const width = texture.getImage().image.width(); + const height = texture.getImage().image.height(); + for (let i = 0; i < uvs.length; i += 2) { + scaledUvs[i] = uvs[i] * width; + scaledUvs[i + 1] = uvs[i + 1] * height; + } - const blendMode = slot.data.blendMode; - const vertices = this.ck.MakeVertices(this.ck.VertexMode.Triangles, positions, scaledUvs, colors, triangles, false); - canvas.drawVertices(vertices, this.ck.BlendMode.Modulate, texture.getImage().paintPerBlendMode.get(blendMode)!); - vertices.delete(); + const blendMode = slot.data.blendMode; + const vertices = this.ck.MakeVertices( + this.ck.VertexMode.Triangles, + positions, + scaledUvs, + colors, + triangles, + false + ); + canvas.drawVertices( + vertices, + this.ck.BlendMode.Modulate, + texture.getImage().paintPerBlendMode.get(blendMode)! + ); + vertices.delete(); } clipper.clipEndWithSlot(slot); } clipper.clipEnd(); - } -} \ No newline at end of file + } +} diff --git a/spine-ts/spine-core/src/SkeletonBinary.ts b/spine-ts/spine-core/src/SkeletonBinary.ts index 7e6621a84..518d1ec51 100644 --- a/spine-ts/spine-core/src/SkeletonBinary.ts +++ b/spine-ts/spine-core/src/SkeletonBinary.ts @@ -64,7 +64,7 @@ export class SkeletonBinary { this.attachmentLoader = attachmentLoader; } - readSkeletonData (binary: Uint8Array | ArrayBuffer): SkeletonData { + readSkeletonData (binary: Uint8Array | ArrayBuffer): SkeletonData { let scale = this.scale; let skeletonData = new SkeletonData(); diff --git a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineAtlasAsset.cpp b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineAtlasAsset.cpp index f8bd0f901..8409b6120 100644 --- a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineAtlasAsset.cpp +++ b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineAtlasAsset.cpp @@ -95,7 +95,7 @@ void USpineAtlasAsset::BeginDestroy() { class UETextureLoader : public TextureLoader { void load(AtlasPage &page, const String &path) { - page.texture = (void*)(uintptr_t)page.index; + page.texture = (void *) (uintptr_t) page.index; } void unload(void *texture) { diff --git a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonRendererComponent.cpp b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonRendererComponent.cpp index 6ac48ea76..b317eaf35 100644 --- a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonRendererComponent.cpp +++ b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonRendererComponent.cpp @@ -268,7 +268,7 @@ void USpineSkeletonRendererComponent::UpdateMesh(USpineSkeletonComponent *compon // to the correct skeleton data yet, we won't find any regions. // ignore regions for which we can't find a material UMaterialInstanceDynamic *material = nullptr; - int foundPageIndex = (int)(intptr_t)attachmentAtlasRegion->rendererObject; + int foundPageIndex = (int) (intptr_t) attachmentAtlasRegion->rendererObject; if (foundPageIndex == -1) { clipper.clipEnd(*slot); continue; From 29c87dbb058b7614a9b16cd1e95ccb2f18a85227 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 9 Jul 2024 14:31:32 +0200 Subject: [PATCH 031/215] [ts] Release 4.2.56 --- spine-ts/package-lock.json | 38 +++++++++++++-------------- spine-ts/package.json | 2 +- spine-ts/spine-canvas/package.json | 4 +-- spine-ts/spine-canvaskit/package.json | 4 +-- spine-ts/spine-core/package.json | 2 +- spine-ts/spine-phaser/package.json | 8 +++--- spine-ts/spine-pixi/package.json | 4 +-- spine-ts/spine-player/package.json | 4 +-- spine-ts/spine-threejs/package.json | 4 +-- spine-ts/spine-webgl/package.json | 4 +-- 10 files changed, 37 insertions(+), 37 deletions(-) diff --git a/spine-ts/package-lock.json b/spine-ts/package-lock.json index 3ce6c233e..90c4ff1b3 100644 --- a/spine-ts/package-lock.json +++ b/spine-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.55", + "version": "4.2.56", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@esotericsoftware/spine-ts", - "version": "4.2.55", + "version": "4.2.56", "license": "LicenseRef-LICENSE", "workspaces": [ "spine-core", @@ -3031,18 +3031,18 @@ }, "spine-canvas": { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.55", + "version": "4.2.56", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.55" + "@esotericsoftware/spine-core": "4.2.56" } }, "spine-canvaskit": { "name": "@esotericsoftware/spine-canvaskit", - "version": "4.2.55", + "version": "4.2.56", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.55", + "@esotericsoftware/spine-core": "4.2.56", "canvaskit-wasm": "0.39.1" }, "devDependencies": { @@ -3052,25 +3052,25 @@ }, "spine-core": { "name": "@esotericsoftware/spine-core", - "version": "4.2.55", + "version": "4.2.56", "license": "LicenseRef-LICENSE" }, "spine-phaser": { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.55", + "version": "4.2.56", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-canvas": "4.2.55", - "@esotericsoftware/spine-core": "4.2.55", - "@esotericsoftware/spine-webgl": "4.2.55" + "@esotericsoftware/spine-canvas": "4.2.56", + "@esotericsoftware/spine-core": "4.2.56", + "@esotericsoftware/spine-webgl": "4.2.56" } }, "spine-pixi": { "name": "@esotericsoftware/spine-pixi", - "version": "4.2.55", + "version": "4.2.56", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.55" + "@esotericsoftware/spine-core": "4.2.56" }, "peerDependencies": { "@pixi/assets": "^7.2.4", @@ -3083,26 +3083,26 @@ }, "spine-player": { "name": "@esotericsoftware/spine-player", - "version": "4.2.55", + "version": "4.2.56", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.55" + "@esotericsoftware/spine-webgl": "4.2.56" } }, "spine-threejs": { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.55", + "version": "4.2.56", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.55" + "@esotericsoftware/spine-core": "4.2.56" } }, "spine-webgl": { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.55", + "version": "4.2.56", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.55" + "@esotericsoftware/spine-core": "4.2.56" } } } diff --git a/spine-ts/package.json b/spine-ts/package.json index 6cc818ea9..4db60f3b2 100644 --- a/spine-ts/package.json +++ b/spine-ts/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.55", + "version": "4.2.56", "description": "The official Spine Runtimes for the web.", "type": "module", "files": [ diff --git a/spine-ts/spine-canvas/package.json b/spine-ts/spine-canvas/package.json index 648118511..c618d5d13 100644 --- a/spine-ts/spine-canvas/package.json +++ b/spine-ts/spine-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.55", + "version": "4.2.56", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.55" + "@esotericsoftware/spine-core": "4.2.56" } } \ No newline at end of file diff --git a/spine-ts/spine-canvaskit/package.json b/spine-ts/spine-canvaskit/package.json index 8dfbccd5f..4707ee87b 100644 --- a/spine-ts/spine-canvaskit/package.json +++ b/spine-ts/spine-canvaskit/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-canvaskit", - "version": "4.2.55", + "version": "4.2.56", "description": "The official Spine Runtimes for CanvasKit for NodeJS", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.55", + "@esotericsoftware/spine-core": "4.2.56", "canvaskit-wasm": "0.39.1" }, "devDependencies": { diff --git a/spine-ts/spine-core/package.json b/spine-ts/spine-core/package.json index 096be294d..8dff974ae 100644 --- a/spine-ts/spine-core/package.json +++ b/spine-ts/spine-core/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-core", - "version": "4.2.55", + "version": "4.2.56", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/spine-ts/spine-phaser/package.json b/spine-ts/spine-phaser/package.json index 2cad8c848..41c6d3859 100644 --- a/spine-ts/spine-phaser/package.json +++ b/spine-ts/spine-phaser/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.55", + "version": "4.2.56", "description": "The official Spine Runtimes for the Phaser.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,8 +31,8 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.55", - "@esotericsoftware/spine-webgl": "4.2.55", - "@esotericsoftware/spine-canvas": "4.2.55" + "@esotericsoftware/spine-core": "4.2.56", + "@esotericsoftware/spine-webgl": "4.2.56", + "@esotericsoftware/spine-canvas": "4.2.56" } } \ No newline at end of file diff --git a/spine-ts/spine-pixi/package.json b/spine-ts/spine-pixi/package.json index 8d909a647..33a6bb19c 100644 --- a/spine-ts/spine-pixi/package.json +++ b/spine-ts/spine-pixi/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-pixi", - "version": "4.2.55", + "version": "4.2.56", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.55" + "@esotericsoftware/spine-core": "4.2.56" }, "peerDependencies": { "@pixi/core": "^7.2.4", diff --git a/spine-ts/spine-player/package.json b/spine-ts/spine-player/package.json index b8a4a91c5..8076e14b5 100644 --- a/spine-ts/spine-player/package.json +++ b/spine-ts/spine-player/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-player", - "version": "4.2.55", + "version": "4.2.56", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.55" + "@esotericsoftware/spine-webgl": "4.2.56" } } \ No newline at end of file diff --git a/spine-ts/spine-threejs/package.json b/spine-ts/spine-threejs/package.json index fbd1fbae8..b5d838d3b 100644 --- a/spine-ts/spine-threejs/package.json +++ b/spine-ts/spine-threejs/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.55", + "version": "4.2.56", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.55" + "@esotericsoftware/spine-core": "4.2.56" } } \ No newline at end of file diff --git a/spine-ts/spine-webgl/package.json b/spine-ts/spine-webgl/package.json index 562009510..3d62efb63 100644 --- a/spine-ts/spine-webgl/package.json +++ b/spine-ts/spine-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.55", + "version": "4.2.56", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.55" + "@esotericsoftware/spine-core": "4.2.56" } } \ No newline at end of file From c7d68a2736742e808fdbe635c73646df20c5e99a Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Tue, 9 Jul 2024 15:47:58 +0200 Subject: [PATCH 032/215] [haxe] Add build script and pipeline. --- .github/workflows/spine-haxe.yml | 18 ++++++++++++++++++ spine-haxe/LICENSE | 26 ++++++++++++++++++++++++++ spine-haxe/build.sh | 24 ++++++++++++++++++++++++ spine-haxe/haxelib.json | 2 +- 4 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/spine-haxe.yml create mode 100644 spine-haxe/LICENSE create mode 100755 spine-haxe/build.sh diff --git a/.github/workflows/spine-haxe.yml b/.github/workflows/spine-haxe.yml new file mode 100644 index 000000000..e7fe52755 --- /dev/null +++ b/.github/workflows/spine-haxe.yml @@ -0,0 +1,18 @@ +name: Build spine-haxe + +on: + push: + paths: + - 'spine-haxe/**' + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build spine-haxe + working-directory: spine-haxe + env: + HAXE_UPDATE_URL: ${{secrets.HAXE_UPDATE_URL}} + run: ./build.sh \ No newline at end of file diff --git a/spine-haxe/LICENSE b/spine-haxe/LICENSE new file mode 100644 index 000000000..1d809bd71 --- /dev/null +++ b/spine-haxe/LICENSE @@ -0,0 +1,26 @@ +Spine Runtimes License Agreement +Last updated July 28, 2023. Replaces all prior versions. + +Copyright (c) 2013-2023, Esoteric Software LLC + +Integration of the Spine Runtimes into software or otherwise creating +derivative works of the Spine Runtimes is permitted under the terms and +conditions of Section 2 of the Spine Editor License Agreement: +http://esotericsoftware.com/spine-editor-license + +Otherwise, it is permitted to integrate the Spine Runtimes into software or +otherwise create derivative works of the Spine Runtimes (collectively, +"Products"), provided that each user of the Products must obtain their own +Spine Editor license and redistribution of the Products in any form must +include this license and copyright notice. + +THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, +BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE +SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/spine-haxe/build.sh b/spine-haxe/build.sh new file mode 100755 index 000000000..31dd485ad --- /dev/null +++ b/spine-haxe/build.sh @@ -0,0 +1,24 @@ +#!/bin/sh +set -e + +if [ -z "$GITHUB_REF" ]; +then + BRANCH=$(git symbolic-ref --short -q HEAD) +else + BRANCH=${GITHUB_REF#refs/heads/} +fi + +echo "Building spine-haxe $BRANCH artifacts" + +if ! [ -z "$HAXE_UPDATE_URL" ] && ! [ -z "$BRANCH" ]; +then + echo "Deploying spine-haxe $BRANCH artifacts" + zip -r spine-haxe.zip \ + haxelib.json \ + LICENSE \ + README.md \ + spine-haxe + curl -f -F "file=@spine-haxe.zip" "$HAXE_UPDATE_URL$BRANCH" +else + echo "Not deploying artifacts. HAXE_UPDATE_URL and/or BRANCH not set." +fi diff --git a/spine-haxe/haxelib.json b/spine-haxe/haxelib.json index debac7468..3834f70ca 100644 --- a/spine-haxe/haxelib.json +++ b/spine-haxe/haxelib.json @@ -17,7 +17,7 @@ "cpp" ], "description": "The official Spine Runtime for Haxe", - "version": "4.1.0", + "version": "4.2.0", "releasenote": "Initial release", "contributors": [ "esotericsoftware" From 80a0bbed5dbdd8820f402f00f690681d0b79d2af Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 9 Jul 2024 17:20:09 +0200 Subject: [PATCH 033/215] [unity] `URP/Spine/Skeleton` shader now performs proper alpha-testing when `Depth Write` is enabled. --- CHANGELOG.md | 1 + .../Shaders/Include/Spine-Skeleton-ForwardPass-URP.hlsl | 3 +++ .../Shaders/Spine-Skeleton-URP.shader | 1 + .../com.esotericsoftware.spine.urp-shaders/package.json | 2 +- 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae5df394a..ed1be6312 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -160,6 +160,7 @@ - All Spine Outline shaders, including the URP outline shader, now provide an additional parameter `Width in Screen Space`. Enable it to keep the outline width constant in screen space instead of texture space. Requires more expensive computations, so enable only where necessary. Defaults to `disabled` to maintain existing behaviour. - Added support for BlendModeMaterials at runtime instantiation from files via an additional method `SkeletonDataAsset.SetupRuntimeBlendModeMaterials`. See example scene `Spine Examples/Other Examples/Instantiate from Script` for a usage example. - SkeletonGraphic: You can now offset the skeleton mesh relative to the pivot via a newly added green circle handle. This allows you to e.g. frame only the face of a skeleton inside a masked frame. Previously offsetting the pivot downwards fails when `Layout Scale Mode` scales the mesh smaller and towards the pivot (e.g. the feet) and thus out of the frame. Now you can keep the pivot in the center of the `RectTransform` while offsetting only the mesh downwards, keeping the desired skeleton area (e.g. the face) centered while resizing. Moving the new larger green circle handle moves the mesh offset, while moving the blue pivot circle handle moves the pivot as usual. + - `Universal Render Pipeline/Spine/Skeleton` shader now performs proper alpha-testing when `Depth Write` is enabled, using the existing `Shadow alpha cutoff` parameter. - **Breaking changes** diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Skeleton-ForwardPass-URP.hlsl b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Skeleton-ForwardPass-URP.hlsl index 53ef8be8e..f6f895ac4 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Skeleton-ForwardPass-URP.hlsl +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Skeleton-ForwardPass-URP.hlsl @@ -49,6 +49,9 @@ VertexOutput vert(appdata v) { half4 frag(VertexOutput i) : SV_Target{ float4 texColor = tex2D(_MainTex, i.uv0); +#if defined(_ZWRITE) + clip(texColor.a * i.color.a - _Cutoff); +#endif #if defined(_TINT_BLACK_ON) return fragTintedColor(texColor, i.darkColor, i.color, _Color.a, _Black.a); #else diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Spine-Skeleton-URP.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Spine-Skeleton-URP.shader index 4853d605a..b2d76acfb 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Spine-Skeleton-URP.shader +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Spine-Skeleton-URP.shader @@ -51,6 +51,7 @@ Shader "Universal Render Pipeline/Spine/Skeleton" { // Spine related keywords #pragma shader_feature _ _STRAIGHT_ALPHA_INPUT #pragma shader_feature _TINT_BLACK_ON + #pragma shader_feature _ZWRITE #pragma vertex vert #pragma fragment frag diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json index 9b3bae1f1..561439859 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.urp-shaders", "displayName": "Spine Universal RP Shaders", "description": "This plugin provides universal render pipeline (URP) shaders for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.2.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", - "version": "4.2.33", + "version": "4.2.34", "unity": "2019.3", "author": { "name": "Esoteric Software", From 197cfc3efd61af6809c3f5eebeb98382a2c7e842 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Tue, 9 Jul 2024 17:33:01 +0200 Subject: [PATCH 034/215] [haxe] Publish script. Pipeline reacts only to version commits. --- spine-haxe/build.sh | 40 ++++++++++++++++++++++++---------------- spine-haxe/haxelib.json | 2 +- spine-haxe/publish.sh | 29 +++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 17 deletions(-) create mode 100755 spine-haxe/publish.sh diff --git a/spine-haxe/build.sh b/spine-haxe/build.sh index 31dd485ad..20b2d075e 100755 --- a/spine-haxe/build.sh +++ b/spine-haxe/build.sh @@ -1,24 +1,32 @@ #!/bin/sh set -e -if [ -z "$GITHUB_REF" ]; -then - BRANCH=$(git symbolic-ref --short -q HEAD) +if [ -z "$GITHUB_REF" ]; then + BRANCH=$(git symbolic-ref --short -q HEAD) else - BRANCH=${GITHUB_REF#refs/heads/} + BRANCH=${GITHUB_REF#refs/heads/} fi -echo "Building spine-haxe $BRANCH artifacts" +# Get the latest commit message +COMMIT_MSG=$(git log -1 --pretty=%B) -if ! [ -z "$HAXE_UPDATE_URL" ] && ! [ -z "$BRANCH" ]; -then - echo "Deploying spine-haxe $BRANCH artifacts" - zip -r spine-haxe.zip \ - haxelib.json \ - LICENSE \ - README.md \ - spine-haxe - curl -f -F "file=@spine-haxe.zip" "$HAXE_UPDATE_URL$BRANCH" +# Public only if the commit message is in the correct format +if echo "$COMMIT_MSG" | grep -qE '^\[haxe\] Release [0-9]+\.[0-9]+\.[0-9]+$'; then + VERSION=$(echo "$COMMIT_MSG" | sed -E 's/^\[haxe\] Release ([0-9]+\.[0-9]+\.[0-9]+)$/\1/') + echo "Building spine-haxe $BRANCH artifacts (version $VERSION)" + + if [ ! -z "$HAXE_UPDATE_URL" ] && [ ! -z "$BRANCH" ]; then + echo "Deploying spine-haxe $BRANCH artifacts (version $VERSION)" + zip -r "spine-haxe-$VERSION.zip" \ + haxelib.json \ + LICENSE \ + README.md \ + spine-haxe + curl -f -F "file=@spine-haxe-$VERSION.zip" "$HAXE_UPDATE_URL$BRANCH" + else + echo "Not deploying artifacts. HAXE_UPDATE_URL and/or BRANCH not set." + fi else - echo "Not deploying artifacts. HAXE_UPDATE_URL and/or BRANCH not set." -fi + echo "The commit is not a release - do not publish." + echo "To release the commit has to be in the for: \"[haxe] Release x.y.z\"" +fi \ No newline at end of file diff --git a/spine-haxe/haxelib.json b/spine-haxe/haxelib.json index 3834f70ca..b95426a61 100644 --- a/spine-haxe/haxelib.json +++ b/spine-haxe/haxelib.json @@ -18,7 +18,7 @@ ], "description": "The official Spine Runtime for Haxe", "version": "4.2.0", - "releasenote": "Initial release", + "releasenote": "Update to 4.2.0", "contributors": [ "esotericsoftware" ], diff --git a/spine-haxe/publish.sh b/spine-haxe/publish.sh new file mode 100755 index 000000000..441bb7e0b --- /dev/null +++ b/spine-haxe/publish.sh @@ -0,0 +1,29 @@ +#!/bin/sh +set -e + +currentVersion=$(grep -o '"version": "[^"]*' haxelib.json | grep -o '[^"]*$') + +major=$(echo "$currentVersion" | cut -d. -f1) +minor=$(echo "$currentVersion" | cut -d. -f2) +patch=$(echo "$currentVersion" | cut -d. -f3) +newPatch=$((patch + 1)) +newVersion="$major.$minor.$newPatch" + +echo "current version: $currentVersion" +echo "new version: $newVersion" + +sed -i '' "s/$currentVersion/$newVersion/" haxelib.json + +echo "Write Y if you want to commit and push the new version $newVersion." +echo "This will trigger a pipeline that will publish the new version on esoteric software server." +echo "Do you want to proceed [y/n]?" + +read answer +if [ "$answer" = "Y" ] || [ "$answer" = "y" ]; then + git add haxelib.json + git commit -m "[haxe] Release $newVersion" + git push origin haxe-ci + echo "Changes committed and pushed." +else + echo "Commit and push cancelled, but haxelib.json version updated." +fi \ No newline at end of file From 57479f082c90f519b2cbc003fd4433c903bf1ea2 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Tue, 9 Jul 2024 18:00:04 +0200 Subject: [PATCH 035/215] [haxe] Update README. --- spine-haxe/README.md | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/spine-haxe/README.md b/spine-haxe/README.md index d173639c1..7771d8345 100644 --- a/spine-haxe/README.md +++ b/spine-haxe/README.md @@ -4,6 +4,10 @@ The spine-haxe runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [Haxe](https://haxe.org/) in combination with [OpenFL](https://www.openfl.org/) and [Lime](https://lime.openfl.org/). +For documentation of the core API in `spine-core`, please refer to our [Spine Runtimes Guide](http://esotericsoftware.com/spine-runtimes-guide). + +For documentation of `spine-haxe`, please refer to our [spine-haxe Guide](https://esotericsoftware.com/spine-haxe). + ## Licensing You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge. @@ -21,12 +25,31 @@ spine-haxe works with data exported from Spine 4.2.xx. spine-haxe supports all Spine features except premultiplied alpha atlases and two color tinting. ## Setup +The core module of spine-haxe has zero dependencies. The rendering implementation through Starling has two dependencies: openfl and starling. +To use spine-haxe you have first to install all the necessary dependencies: -TBD +``` +haxelib install openfl +haxelib install starling +``` + +Once you have installed the dependencies, you can [download the latest version of spine-haxe](https://esotericsoftware.com/files/spine-haxe/4.2/spine-haxe-latest.zip) and install it: + +``` +haxelib install spine-haxe-x.y.z.zip +``` + +Notice that the spine-haxe library is not available on [lib.haxe.org](https://lib.haxe.org/). This is why you need to download the library and install it through the zip archive. ## Example -TBD +The `example/` folder contains the spine-haxe examples. They demonstrates the usage of the API. Enter the the `spine-haxe` folder and run the following command: + +``` +lime test html5 +``` + +This will compile the modules and start a server that serves the example pages at http://127.0.0.1:3000. ## Development From 6161636068563719b73d888430fd43317e1ce784 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 9 Jul 2024 18:49:18 +0200 Subject: [PATCH 036/215] [unity] Fixed URP shader issue with bloom and HDR. Closes #2574. --- .../2D/Include/Spine-Sprite-StandardPass-URP-2D.hlsl | 3 ++- .../Shaders/2D/Spine-SkeletonLit-URP-2D.shader | 6 +++--- .../com.esotericsoftware.spine.urp-shaders/package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Include/Spine-Sprite-StandardPass-URP-2D.hlsl b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Include/Spine-Sprite-StandardPass-URP-2D.hlsl index 5d43116ab..878f380b4 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Include/Spine-Sprite-StandardPass-URP-2D.hlsl +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Include/Spine-Sprite-StandardPass-URP-2D.hlsl @@ -109,7 +109,8 @@ half4 CombinedShapeLightFragment(VertexOutputSpriteURP2D input) : SV_Target #endif half4 mask = SAMPLE_TEXTURE2D(_MaskTex, sampler_MaskTex, input.texcoord.xy); - main.rgb = main.a == 0 ? main.rgb : main.rgb / main.a; // un-premultiply for additive lights in CombinedShapeLightShared, reapply afterwards + // un-premultiply for additive lights in CombinedShapeLightShared, reapply afterwards + main.rgb = main.a < 0.001 ? main.rgb : main.rgb / main.a; // < epsilon prevents imprecision issues on some HW. #if UNITY_VERSION < 202120 half4 pixel = half4(CombinedShapeLightShared(half4(main.rgb, 1), mask, input.lightingUV).rgb * main.a, main.a); #else diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Spine-SkeletonLit-URP-2D.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Spine-SkeletonLit-URP-2D.shader index 2d59239bf..a3c0885b1 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Spine-SkeletonLit-URP-2D.shader +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Spine-SkeletonLit-URP-2D.shader @@ -139,7 +139,7 @@ Shader "Universal Render Pipeline/2D/Spine/Skeleton Lit" { return main; #endif // un-premultiply for additive lights in CombinedShapeLightShared, reapply afterwards - main.rgb = main.a == 0 ? main.rgb : main.rgb / main.a; + main.rgb = main.a < 0.001 ? main.rgb : main.rgb / main.a; #else #if !defined(_LIGHT_AFFECTS_ADDITIVE) if (i.color.a == 0) { @@ -149,10 +149,10 @@ Shader "Universal Render Pipeline/2D/Spine/Skeleton Lit" { #if !defined(_STRAIGHT_ALPHA_INPUT) // un-premultiply for additive lights in CombinedShapeLightShared, reapply afterwards - tex.rgb = tex.a == 0 ? tex.rgb : tex.rgb / tex.a; + tex.rgb = tex.a < 0.001 ? tex.rgb : tex.rgb / tex.a; // < epsilon prevents imprecision issues on some HW. #endif half4 main = tex * i.color; - #endif + #endif half4 mask = SAMPLE_TEXTURE2D(_MaskTex, sampler_MaskTex, i.uv); #if UNITY_VERSION < 202120 return half4(CombinedShapeLightShared(half4(main.rgb, 1), mask, i.lightingUV).rgb * main.a, main.a); diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json index 561439859..60dadd51b 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.urp-shaders", "displayName": "Spine Universal RP Shaders", "description": "This plugin provides universal render pipeline (URP) shaders for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.2.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", - "version": "4.2.34", + "version": "4.2.35", "unity": "2019.3", "author": { "name": "Esoteric Software", From c9e1126e5bcff21501827f2354edcbf3f84c3bd7 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 10 Jul 2024 11:00:12 +0200 Subject: [PATCH 037/215] Show dressup view --- .../com/esotericsoftware/spine/DressUp.kt | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt index facb13639..f9b21a884 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt @@ -36,10 +36,12 @@ import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp +import androidx.compose.ui.viewinterop.AndroidView import androidx.navigation.NavHostController import com.esotericsoftware.spine.android.AndroidSkeletonDrawable import com.esotericsoftware.spine.android.SkeletonRenderer import com.esotericsoftware.spine.android.SpineController +import com.esotericsoftware.spine.android.SpineView @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -160,15 +162,14 @@ fun DressUp(nav: NavHostController) { } } } - -// AndroidView( -// factory = { ctx -> -// SpineView(ctx).apply { -// loadFromDrawable(drawable, controller) -// } -// }, -// modifier = Modifier.padding(paddingValues) -// ) + AndroidView( + factory = { ctx -> + SpineView(ctx).apply { + loadFromDrawable(drawable, controller) + } + }, + modifier = Modifier.padding(paddingValues) + ) } } } From 01a6952ff5d70a68b6a964dde8f28d96029131cc Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 10 Jul 2024 11:09:05 +0200 Subject: [PATCH 038/215] Fix title --- .../app/src/main/java/com/esotericsoftware/spine/Physics.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt index 7113047fb..ac48f71f1 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt @@ -66,7 +66,7 @@ fun Physics(nav: NavHostController) { Scaffold( topBar = { TopAppBar( - title = { Text(text = Destination.SimpleAnimation.title) }, + title = { Text(text = Destination.Physics.title) }, navigationIcon = { IconButton({ nav.navigateUp() }) { Icon( From fc4716f7499180774515dd8a5de3096e5886284b Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 10 Jul 2024 11:34:11 +0200 Subject: [PATCH 039/215] Update SpineView & SpineView.Builder API --- .../spine/AnimationStateEvents.kt | 15 +++--- .../esotericsoftware/spine/DebugRendering.kt | 29 +++++------ .../com/esotericsoftware/spine/DressUp.kt | 6 +-- .../com/esotericsoftware/spine/IKFollowing.kt | 15 +++--- .../com/esotericsoftware/spine/Physics.kt | 15 +++--- .../com/esotericsoftware/spine/PlayPause.kt | 10 +--- .../esotericsoftware/spine/SimpleAnimation.kt | 23 ++++----- .../spine/android/SpineView.java | 51 +++++++++++++++---- 8 files changed, 91 insertions(+), 73 deletions(-) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt index 5e0073d73..4dac08834 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt @@ -133,14 +133,13 @@ fun AnimationState(nav: NavHostController) { ) { Text("See output in console!") AndroidView( - factory = { ctx -> - SpineView(ctx).apply { - loadFromAsset( - "spineboy.atlas", - "spineboy-pro.json", - controller - ) - } + factory = { context -> + SpineView.loadFromAssets( + "spineboy.atlas", + "spineboy-pro.json", + context, + controller + ) } ) } diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt index cbd9952b7..4e3ccf30a 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt @@ -42,21 +42,20 @@ fun DebugRendering(nav: NavHostController) { } ) { paddingValues -> AndroidView( - factory = { ctx -> - SpineView(ctx).apply { - loadFromAsset( - "spineboy.atlas", - "spineboy-pro.json", - SpineController.Builder() - .setOnInitialized { - it.animationState.setAnimation(0, "walk", true) - } - .setOnAfterPaint { controller, canvas, commands -> - debugRenderer.render(controller.drawable, canvas, commands) - } - .build() - ) - } + factory = { context -> + SpineView.loadFromAssets( + "spineboy.atlas", + "spineboy-pro.json", + context, + SpineController.Builder() + .setOnInitialized { + it.animationState.setAnimation(0, "walk", true) + } + .setOnAfterPaint { controller, canvas, commands -> + debugRenderer.render(controller.drawable, canvas, commands) + } + .build() + ) }, modifier = Modifier.padding(paddingValues) ) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt index f9b21a884..7d6ec70b0 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt @@ -163,10 +163,8 @@ fun DressUp(nav: NavHostController) { } } AndroidView( - factory = { ctx -> - SpineView(ctx).apply { - loadFromDrawable(drawable, controller) - } + factory = { context -> + SpineView.loadFromDrawable(drawable, context, controller) }, modifier = Modifier.padding(paddingValues) ) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt index 67714fe5a..83c0ed16e 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt @@ -95,14 +95,13 @@ fun IKFollowing(nav: NavHostController) { } ) { AndroidView( - factory = { ctx -> - SpineView(ctx).apply { - loadFromAsset( - "spineboy.atlas", - "spineboy-pro.json", - controller - ) - } + factory = { context -> + SpineView.loadFromAssets( + "spineboy.atlas", + "spineboy-pro.json", + context, + controller + ) } ) } diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt index ac48f71f1..eae1fd4a2 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt @@ -110,14 +110,13 @@ fun Physics(nav: NavHostController) { } ) { AndroidView( - factory = { ctx -> - SpineView(ctx).apply { - loadFromAsset( - "celestial-circus.atlas", - "celestial-circus-pro.skel", - controller - ) - } + factory = { context -> + SpineView.loadFromAssets( + "celestial-circus.atlas", + "celestial-circus-pro.skel", + context, + controller + ) }, modifier = Modifier.padding(paddingValues) ) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt index 9dce90886..c1f99d9f4 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt @@ -62,16 +62,10 @@ fun PlayPause( AndroidView( factory = { ctx -> - SpineView.Builder(ctx) + SpineView.Builder(ctx, controller) + .setLoadFromAssets("dragon.atlas", "dragon-ess.skel") .setBoundsProvider(SkinAndAnimationBounds("flying")) .build() - .apply { - loadFromAsset( - "dragon.atlas", - "dragon-ess.skel", - controller - ) - } }, modifier = Modifier.padding(paddingValues) ) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt index 60ab18427..9bbd34d0c 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt @@ -35,18 +35,17 @@ fun SimpleAnimation(nav: NavHostController) { } ) { paddingValues -> AndroidView( - factory = { ctx -> - SpineView(ctx).apply { - loadFromAsset( - "spineboy.atlas", - "spineboy-pro.json", - SpineController.Builder() - .setOnInitialized { - it.animationState.setAnimation(0, "walk", true) - } - .build() - ) - } + factory = { context -> + SpineView.loadFromAssets( + "spineboy.atlas", + "spineboy-pro.json", + context, + SpineController.Builder() + .setOnInitialized { + it.animationState.setAnimation(0, "walk", true) + } + .build() + ) }, modifier = Modifier.padding(paddingValues) ) diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index 9dc09aa71..6c9ea733e 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -54,11 +54,24 @@ public class SpineView extends View implements Choreographer.FrameCallback { public static class Builder { private final Context context; + private final SpineController controller; + + private String atlasFileName; + + private String skeletonFileName; + private BoundsProvider boundsProvider = new SetupPoseBounds(); private Alignment alignment = Alignment.CENTER; - public Builder(Context context) { + public Builder(Context context, SpineController controller) { this.context = context; + this.controller = controller; + } + + public Builder setLoadFromAssets(String atlasFileName, String skeletonFileName) { + this.atlasFileName = atlasFileName; + this.skeletonFileName = skeletonFileName; + return this; } public Builder setBoundsProvider(BoundsProvider boundsProvider) { @@ -72,9 +85,12 @@ public class SpineView extends View implements Choreographer.FrameCallback { } public SpineView build() { - SpineView spineView = new SpineView(context); + SpineView spineView = new SpineView(context, controller); spineView.boundsProvider = boundsProvider; spineView.alignment = alignment; + if (atlasFileName != null && skeletonFileName != null) { + spineView.loadFromAsset(atlasFileName, skeletonFileName); + } return spineView; } } @@ -97,35 +113,50 @@ public class SpineView extends View implements Choreographer.FrameCallback { Alignment alignment = Alignment.CENTER; - public SpineView (Context context) { + public SpineView (Context context, SpineController controller) { super(context); + this.controller = controller; } public SpineView (Context context, AttributeSet attrs) { super(context, attrs); + this.controller = new SpineController(); } public SpineView (Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); + this.controller = new SpineController(); } - public void loadFromAsset(String atlasFileName, String skeletonFileName, SpineController controller) { + public static SpineView loadFromAssets(String atlasFileName, String skeletonFileName, Context context, SpineController controller) { + SpineView spineView = new SpineView(context, controller); + spineView.loadFromAsset(atlasFileName, skeletonFileName); + return spineView; + } + + public static SpineView loadFromDrawable(AndroidSkeletonDrawable drawable, Context context, SpineController controller) { + SpineView spineView = new SpineView(context, controller); + spineView.loadFromDrawable(drawable); + return spineView; + } + + public void setController(SpineController controller) { this.controller = controller; + } + + public void loadFromAsset(String atlasFileName, String skeletonFileName) { loadFrom(() -> AndroidSkeletonDrawable.fromAsset(atlasFileName, skeletonFileName, getContext())); } - public void loadFromFile(File atlasFile, File skeletonFile, SpineController controller) { - this.controller = controller; + public void loadFromFile(File atlasFile, File skeletonFile) { loadFrom(() -> AndroidSkeletonDrawable.fromFile(atlasFile, skeletonFile)); } - public void loadFromHttp(URL atlasUrl, URL skeletonUrl, SpineController controller) { - this.controller = controller; + public void loadFromHttp(URL atlasUrl, URL skeletonUrl) { loadFrom(() -> AndroidSkeletonDrawable.fromHttp(atlasUrl, skeletonUrl)); } - public void loadFromDrawable(AndroidSkeletonDrawable drawable, SpineController controller) { - this.controller = controller; + public void loadFromDrawable(AndroidSkeletonDrawable drawable) { loadFrom(() -> drawable); } From 77778a0e3a9bd383f93234a8ff5db6c6a16259b3 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 10 Jul 2024 11:53:08 +0200 Subject: [PATCH 040/215] Update SpineController and SpineController.Builder API --- .../spine/AnimationStateEvents.kt | 152 +++++++++--------- .../esotericsoftware/spine/DebugRendering.kt | 15 +- .../com/esotericsoftware/spine/DressUp.kt | 8 +- .../com/esotericsoftware/spine/IKFollowing.kt | 29 ++-- .../com/esotericsoftware/spine/Physics.kt | 45 +++--- .../com/esotericsoftware/spine/PlayPause.kt | 9 +- .../esotericsoftware/spine/SimpleAnimation.kt | 8 +- .../spine/android/SpineController.java | 14 +- .../spine/android/SpineView.java | 6 +- 9 files changed, 138 insertions(+), 148 deletions(-) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt index 4dac08834..946f27c45 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt @@ -29,86 +29,84 @@ fun AnimationState(nav: NavHostController) { val TAG = "AnimationState" val controller = remember { - SpineController.Builder() - .setOnInitialized { controller -> - controller.skeleton.setScaleX(0.5f) - controller.skeleton.setScaleY(0.5f) + SpineController { controller -> + controller.skeleton.setScaleX(0.5f) + controller.skeleton.setScaleY(0.5f) - controller.skeleton.findSlot("gun")?.color = Color(1f, 0f, 0f, 1f) + controller.skeleton.findSlot("gun")?.color = Color(1f, 0f, 0f, 1f) - controller.animationStateData.setDefaultMix(0.2f) - controller.animationState.setAnimation(0, "walk", true).setListener(object : AnimationState.AnimationStateListener { - override fun start(entry: AnimationState.TrackEntry?) { - Log.d(TAG, "Walk animation event start") + controller.animationStateData.setDefaultMix(0.2f) + controller.animationState.setAnimation(0, "walk", true).setListener(object : AnimationState.AnimationStateListener { + override fun start(entry: AnimationState.TrackEntry?) { + Log.d(TAG, "Walk animation event start") + } + + override fun interrupt(entry: AnimationState.TrackEntry?) { + Log.d(TAG, "Walk animation event interrupt") + } + + override fun end(entry: AnimationState.TrackEntry?) { + Log.d(TAG, "Walk animation event end") + } + + override fun dispose(entry: AnimationState.TrackEntry?) { + Log.d(TAG, "Walk animation event dispose") + } + + override fun complete(entry: AnimationState.TrackEntry?) { + Log.d(TAG, "Walk animation event complete") + } + + override fun event(entry: AnimationState.TrackEntry?, event: Event?) { + Log.d(TAG, "Walk animation event event") + } + }) + controller.animationState.addAnimation(0, "jump", false, 2f) + controller.animationState.addAnimation(0, "run", true, 0f).setListener(object : AnimationState.AnimationStateListener { + override fun start(entry: AnimationState.TrackEntry?) { + Log.d(TAG, "Run animation event start") + } + + override fun interrupt(entry: AnimationState.TrackEntry?) { + Log.d(TAG, "Run animation event interrupt") + } + + override fun end(entry: AnimationState.TrackEntry?) { + Log.d(TAG, "Run animation event end") + } + + override fun dispose(entry: AnimationState.TrackEntry?) { + Log.d(TAG, "Run animation event dispose") + } + + override fun complete(entry: AnimationState.TrackEntry?) { + Log.d(TAG, "Run animation event complete") + } + + override fun event(entry: AnimationState.TrackEntry?, event: Event?) { + Log.d(TAG, "Run animation event event") + } + }) + + controller.animationState.addListener(object : AnimationState.AnimationStateListener { + override fun start(entry: AnimationState.TrackEntry?) {} + + override fun interrupt(entry: AnimationState.TrackEntry?) {} + + override fun end(entry: AnimationState.TrackEntry?) {} + + override fun dispose(entry: AnimationState.TrackEntry?) {} + + override fun complete(entry: AnimationState.TrackEntry?) {} + + override fun event(entry: AnimationState.TrackEntry?, event: Event?) { + if (event != null) { + Log.d(TAG, "User event: { name: ${event.data.name}, intValue: ${event.int}, floatValue: ${event.float}, stringValue: ${event.string} }") } - - override fun interrupt(entry: AnimationState.TrackEntry?) { - Log.d(TAG, "Walk animation event interrupt") - } - - override fun end(entry: AnimationState.TrackEntry?) { - Log.d(TAG, "Walk animation event end") - } - - override fun dispose(entry: AnimationState.TrackEntry?) { - Log.d(TAG, "Walk animation event dispose") - } - - override fun complete(entry: AnimationState.TrackEntry?) { - Log.d(TAG, "Walk animation event complete") - } - - override fun event(entry: AnimationState.TrackEntry?, event: Event?) { - Log.d(TAG, "Walk animation event event") - } - }) - controller.animationState.addAnimation(0, "jump", false, 2f) - controller.animationState.addAnimation(0, "run", true, 0f).setListener(object : AnimationState.AnimationStateListener { - override fun start(entry: AnimationState.TrackEntry?) { - Log.d(TAG, "Run animation event start") - } - - override fun interrupt(entry: AnimationState.TrackEntry?) { - Log.d(TAG, "Run animation event interrupt") - } - - override fun end(entry: AnimationState.TrackEntry?) { - Log.d(TAG, "Run animation event end") - } - - override fun dispose(entry: AnimationState.TrackEntry?) { - Log.d(TAG, "Run animation event dispose") - } - - override fun complete(entry: AnimationState.TrackEntry?) { - Log.d(TAG, "Run animation event complete") - } - - override fun event(entry: AnimationState.TrackEntry?, event: Event?) { - Log.d(TAG, "Run animation event event") - } - }) - - controller.animationState.addListener(object : AnimationState.AnimationStateListener { - override fun start(entry: AnimationState.TrackEntry?) {} - - override fun interrupt(entry: AnimationState.TrackEntry?) {} - - override fun end(entry: AnimationState.TrackEntry?) {} - - override fun dispose(entry: AnimationState.TrackEntry?) {} - - override fun complete(entry: AnimationState.TrackEntry?) {} - - override fun event(entry: AnimationState.TrackEntry?, event: Event?) { - if (event != null) { - Log.d(TAG, "User event: { name: ${event.data.name}, intValue: ${event.int}, floatValue: ${event.float}, stringValue: ${event.string} }") - } - } - }) - Log.d(TAG, "Current: ${controller.animationState.getCurrent(0)?.getAnimation()?.getName()}"); - } - .build() + } + }) + Log.d(TAG, "Current: ${controller.animationState.getCurrent(0)?.getAnimation()?.getName()}"); + } } Scaffold( diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt index 4e3ccf30a..3f4d0c32b 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt @@ -47,14 +47,13 @@ fun DebugRendering(nav: NavHostController) { "spineboy.atlas", "spineboy-pro.json", context, - SpineController.Builder() - .setOnInitialized { - it.animationState.setAnimation(0, "walk", true) - } - .setOnAfterPaint { controller, canvas, commands -> - debugRenderer.render(controller.drawable, canvas, commands) - } - .build() + SpineController.Builder { controller -> + controller.animationState.setAnimation(0, "walk", true) + } + .setOnAfterPaint { controller, canvas, commands -> + debugRenderer.render(controller.drawable, canvas, commands) + } + .build() ) }, modifier = Modifier.padding(paddingValues) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt index 7d6ec70b0..0c4c0f41a 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt @@ -75,11 +75,9 @@ fun DressUp(nav: NavHostController) { } val controller = remember { - SpineController.Builder() - .setOnInitialized { - it.animationState.setAnimation(0, "dance", true) - } - .build() + SpineController { controller -> + controller.animationState.setAnimation(0, "dance", true) + } } fun toggleSkin(skinName: String) { diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt index 83c0ed16e..b1810b6d9 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt @@ -35,21 +35,20 @@ fun IKFollowing(nav: NavHostController) { val crossHairPosition = remember { mutableStateOf(null) } val controller = remember { - SpineController.Builder() - .setOnInitialized { - it.animationState.setAnimation(0, "walk", true) - it.animationState.setAnimation(1, "aim", true) - } - .setOnAfterUpdateWorldTransforms { - val worldPosition = crossHairPosition.value ?: return@setOnAfterUpdateWorldTransforms - val skeleton = it.skeleton - val bone = skeleton.findBone("crosshair") ?: return@setOnAfterUpdateWorldTransforms - val parent = bone.parent ?: return@setOnAfterUpdateWorldTransforms - val position = parent.worldToLocal(Vector2(worldPosition.x.toFloat(), worldPosition.y.toFloat())) - bone.x = position.x - bone.y = position.y - } - .build() + SpineController.Builder { controller -> + controller.animationState.setAnimation(0, "walk", true) + controller.animationState.setAnimation(1, "aim", true) + } + .setOnAfterUpdateWorldTransforms { + val worldPosition = crossHairPosition.value ?: return@setOnAfterUpdateWorldTransforms + val skeleton = it.skeleton + val bone = skeleton.findBone("crosshair") ?: return@setOnAfterUpdateWorldTransforms + val parent = bone.parent ?: return@setOnAfterUpdateWorldTransforms + val position = parent.worldToLocal(Vector2(worldPosition.x.toFloat(), worldPosition.y.toFloat())) + bone.x = position.x + bone.y = position.y + } + .build() } Scaffold( diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt index eae1fd4a2..583eb7665 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt @@ -36,31 +36,30 @@ fun Physics(nav: NavHostController) { val lastMousePosition = remember { mutableStateOf(null) } val controller = remember { - SpineController.Builder() - .setOnInitialized { controller -> - controller.animationState.setAnimation(0, "eyeblink-long", true) - controller.animationState.setAnimation(1, "wings-and-feet", true) + SpineController.Builder { controller -> + controller.animationState.setAnimation(0, "eyeblink-long", true) + controller.animationState.setAnimation(1, "wings-and-feet", true) + } + .setOnAfterUpdateWorldTransforms { controller -> + val lastMousePositionValue = lastMousePosition.value + if (lastMousePositionValue == null) { + lastMousePosition.value = mousePosition.value + return@setOnAfterUpdateWorldTransforms } - .setOnAfterUpdateWorldTransforms { controller -> - val lastMousePositionValue = lastMousePosition.value - if (lastMousePositionValue == null) { - lastMousePosition.value = mousePosition.value - return@setOnAfterUpdateWorldTransforms - } - val mousePositionValue = mousePosition.value ?: return@setOnAfterUpdateWorldTransforms + val mousePositionValue = mousePosition.value ?: return@setOnAfterUpdateWorldTransforms - val dx = mousePositionValue.x - lastMousePositionValue.x - val dy = mousePositionValue.y - lastMousePositionValue.y - val position = Point( - controller.skeleton.x.toInt(), - controller.skeleton.y.toInt() - ) - position.x += dx - position.y += dy - controller.skeleton.setPosition(position.x.toFloat(), position.y.toFloat()); - lastMousePosition.value = mousePositionValue - } - .build() + val dx = mousePositionValue.x - lastMousePositionValue.x + val dy = mousePositionValue.y - lastMousePositionValue.y + val position = Point( + controller.skeleton.x.toInt(), + controller.skeleton.y.toInt() + ) + position.x += dx + position.y += dy + controller.skeleton.setPosition(position.x.toFloat(), position.y.toFloat()); + lastMousePosition.value = mousePositionValue + } + .build() } Scaffold( diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt index c1f99d9f4..bd514a42b 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt @@ -26,12 +26,9 @@ fun PlayPause( nav: NavHostController ) { val controller = remember { - SpineController.Builder() - .setOnInitialized { - it.animationState.setAnimation(0, "flying", true) - } - - .build() + SpineController { controller -> + controller.animationState.setAnimation(0, "flying", true) + } } val isPlaying = remember { mutableStateOf(controller.isPlaying) } diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt index 9bbd34d0c..f48d85908 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt @@ -40,11 +40,9 @@ fun SimpleAnimation(nav: NavHostController) { "spineboy.atlas", "spineboy-pro.json", context, - SpineController.Builder() - .setOnInitialized { - it.animationState.setAnimation(0, "walk", true) - } - .build() + SpineController { + it.animationState.setAnimation(0, "walk", true) + } ) }, modifier = Modifier.padding(paddingValues) diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java index b5b05c9b0..48b6efe12 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java @@ -17,15 +17,14 @@ import com.esotericsoftware.spine.android.utils.SpineControllerCallback; public class SpineController { public static class Builder { - private SpineControllerCallback onInitialized; + private final SpineControllerCallback onInitialized; private SpineControllerCallback onBeforeUpdateWorldTransforms; private SpineControllerCallback onAfterUpdateWorldTransforms; private SpineControllerBeforePaintCallback onBeforePaint; private SpineControllerAfterPaintCallback onAfterPaint; - public Builder setOnInitialized(SpineControllerCallback onInitialized) { + public Builder(SpineControllerCallback onInitialized) { this.onInitialized = onInitialized; - return this; } public Builder setOnBeforeUpdateWorldTransforms(SpineControllerCallback onBeforeUpdateWorldTransforms) { @@ -49,8 +48,7 @@ public class SpineController { } public SpineController build() { - SpineController spineController = new SpineController(); - spineController.onInitialized = onInitialized; + SpineController spineController = new SpineController(onInitialized); spineController.onBeforeUpdateWorldTransforms = onBeforeUpdateWorldTransforms; spineController.onAfterUpdateWorldTransforms = onAfterUpdateWorldTransforms; spineController.onBeforePaint = onBeforePaint; @@ -59,7 +57,7 @@ public class SpineController { } } - private @Nullable SpineControllerCallback onInitialized; + private final SpineControllerCallback onInitialized; private @Nullable SpineControllerCallback onBeforeUpdateWorldTransforms; private @Nullable SpineControllerCallback onAfterUpdateWorldTransforms; private @Nullable SpineControllerBeforePaintCallback onBeforePaint; @@ -71,6 +69,10 @@ public class SpineController { private double scaleX = 1; private double scaleY = 1; + public SpineController(SpineControllerCallback onInitialized) { + this.onInitialized = onInitialized; + } + protected void init(AndroidSkeletonDrawable drawable) { this.drawable = drawable; if (onInitialized != null) { diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index 6c9ea733e..a700c2e20 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -120,12 +120,12 @@ public class SpineView extends View implements Choreographer.FrameCallback { public SpineView (Context context, AttributeSet attrs) { super(context, attrs); - this.controller = new SpineController(); + // TODO Load controller & assets fro attrs } - + public SpineView (Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - this.controller = new SpineController(); + // TODO Load controller & assets fro attrs } public static SpineView loadFromAssets(String atlasFileName, String skeletonFileName, Context context, SpineController controller) { From e30dd8956e8170aed732eaf1f8729bedab1a5041 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 10 Jul 2024 13:40:28 +0200 Subject: [PATCH 041/215] Implement `loadFromFile` --- .../spine/android/AndroidTextureAtlas.java | 30 ++++++++++++++++++- .../spine/android/SpineView.java | 22 ++++++++++---- .../android/utils/SkeletonDataUtils.java | 14 +++++++-- 3 files changed, 58 insertions(+), 8 deletions(-) diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java index 618b1b1e0..8979ee179 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java @@ -31,9 +31,12 @@ package com.esotericsoftware.spine.android; import java.io.BufferedInputStream; import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.util.List; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.g2d.TextureAtlas.AtlasRegion; @@ -128,7 +131,32 @@ public class AndroidTextureAtlas { } static public AndroidTextureAtlas fromFile(File atlasFile) { - throw new NotImplementedError("TODO"); + TextureAtlasData data = new TextureAtlasData(); + + try { + FileHandle inputFile = new FileHandle() { + @Override + public InputStream read() { + try { + return new FileInputStream(atlasFile); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + } + }; + data.load(inputFile, new FileHandle(atlasFile).parent(), false); + } catch (Throwable t) { + throw new RuntimeException(t); + } + + return new AndroidTextureAtlas(data, path -> { + File imageFile = new File(path); + try (InputStream in = new BufferedInputStream(new FileInputStream(imageFile))) { + return BitmapFactory.decodeStream(in); + } catch (Throwable t) { + throw new RuntimeException(t); + } + }); } static public AndroidTextureAtlas fromHttp(URL atlasUrl) { diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index a700c2e20..5e8091a7a 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -53,13 +53,11 @@ public class SpineView extends View implements Choreographer.FrameCallback { public static class Builder { private final Context context; - private final SpineController controller; - private String atlasFileName; - private String skeletonFileName; - + private File atlasFile; + private File skeletonFile; private BoundsProvider boundsProvider = new SetupPoseBounds(); private Alignment alignment = Alignment.CENTER; @@ -74,6 +72,12 @@ public class SpineView extends View implements Choreographer.FrameCallback { return this; } + public Builder setLoadFromFile(File atlasFile, File skeletonFile) { + this.atlasFile = atlasFile; + this.skeletonFile = skeletonFile; + return this; + } + public Builder setBoundsProvider(BoundsProvider boundsProvider) { this.boundsProvider = boundsProvider; return this; @@ -90,6 +94,8 @@ public class SpineView extends View implements Choreographer.FrameCallback { spineView.alignment = alignment; if (atlasFileName != null && skeletonFileName != null) { spineView.loadFromAsset(atlasFileName, skeletonFileName); + } else if (atlasFile != null && skeletonFile != null) { + spineView.loadFromFile(atlasFile, skeletonFile); } return spineView; } @@ -134,6 +140,12 @@ public class SpineView extends View implements Choreographer.FrameCallback { return spineView; } + public static SpineView loadFromFile(File atlasFile, File skeletonFile, Context context, SpineController controller) { + SpineView spineView = new SpineView(context, controller); + spineView.loadFromFile(atlasFile, skeletonFile); + return spineView; + } + public static SpineView loadFromDrawable(AndroidSkeletonDrawable drawable, Context context, SpineController controller) { SpineView spineView = new SpineView(context, controller); spineView.loadFromDrawable(drawable); @@ -183,7 +195,7 @@ public class SpineView extends View implements Choreographer.FrameCallback { } if (controller.isPlaying()) { - controller.callOnBeforeUpdateWorldTransforms(); + controller.callOnBeforeUpdateWorldTransforms(); controller.getDrawable().update(delta); controller.callOnAfterUpdateWorldTransforms(); } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java index 6cc18a127..a59b21adc 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java @@ -3,6 +3,7 @@ package com.esotericsoftware.spine.android.utils; import android.content.Context; import android.content.res.AssetManager; +import com.badlogic.gdx.files.FileHandle; import com.esotericsoftware.spine.SkeletonBinary; import com.esotericsoftware.spine.SkeletonData; import com.esotericsoftware.spine.SkeletonJson; @@ -12,6 +13,7 @@ import com.esotericsoftware.spine.android.AndroidTextureAtlas; import java.io.BufferedInputStream; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; @@ -21,7 +23,6 @@ import kotlin.NotImplementedError; public class SkeletonDataUtils { public static SkeletonData fromAsset(AndroidTextureAtlas atlas, String skeletonFileName, Context context) { - AndroidAtlasAttachmentLoader attachmentLoader = new AndroidAtlasAttachmentLoader(atlas); SkeletonLoader skeletonLoader; @@ -42,7 +43,16 @@ public class SkeletonDataUtils { return skeletonData; } public static SkeletonData fromFile(AndroidTextureAtlas atlas, File skeletonFile) { - throw new NotImplementedError("TODO"); + AndroidAtlasAttachmentLoader attachmentLoader = new AndroidAtlasAttachmentLoader(atlas); + + SkeletonLoader skeletonLoader; + if (skeletonFile.getPath().endsWith(".json")) { + skeletonLoader = new SkeletonJson(attachmentLoader); + } else { + skeletonLoader = new SkeletonBinary(attachmentLoader); + } + + return skeletonLoader.readSkeletonData(new FileHandle(skeletonFile)); } public static SkeletonData fromHttp(AndroidTextureAtlas atlas, URL skeletonUrl) { From 6729f8bbce03e15be74a56269cf66d62fe19d545 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 10 Jul 2024 14:31:12 +0200 Subject: [PATCH 042/215] Implement loadFromHttp --- .../app/src/main/AndroidManifest.xml | 2 + .../esotericsoftware/spine/SimpleAnimation.kt | 11 +++ .../src/main/AndroidManifest.xml | 2 +- .../android/AndroidSkeletonDrawable.java | 6 +- .../spine/android/AndroidTextureAtlas.java | 85 ++++++++++++++----- .../spine/android/SpineView.java | 10 ++- .../android/utils/SkeletonDataUtils.java | 5 +- .../spine/android/utils/SpineHttpUtils.java | 80 +++++++++++++++++ 8 files changed, 171 insertions(+), 30 deletions(-) create mode 100644 spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineHttpUtils.java diff --git a/spine-android/app/src/main/AndroidManifest.xml b/spine-android/app/src/main/AndroidManifest.xml index 8e9e41adf..20ac444d9 100644 --- a/spine-android/app/src/main/AndroidManifest.xml +++ b/spine-android/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + - + \ No newline at end of file diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java index 2a53f99bf..3d3138a03 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java @@ -80,9 +80,9 @@ public class AndroidSkeletonDrawable { return new AndroidSkeletonDrawable(atlas, skeletonData); } - public static AndroidSkeletonDrawable fromHttp (URL atlasUrl, URL skeletonUrl) { - AndroidTextureAtlas atlas = AndroidTextureAtlas.fromHttp(atlasUrl); - SkeletonData skeletonData = SkeletonDataUtils.fromHttp(atlas, skeletonUrl); + public static AndroidSkeletonDrawable fromHttp (URL atlasUrl, URL skeletonUrl, File targetDirectory) { + AndroidTextureAtlas atlas = AndroidTextureAtlas.fromHttp(atlasUrl, targetDirectory); + SkeletonData skeletonData = SkeletonDataUtils.fromHttp(atlas, skeletonUrl, targetDirectory); return new AndroidSkeletonDrawable(atlas, skeletonData); } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java index 8979ee179..a9945f243 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java @@ -35,21 +35,22 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.net.MalformedURLException; import java.net.URL; -import java.util.List; +import java.nio.file.Files; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.g2d.TextureAtlas.AtlasRegion; import com.badlogic.gdx.graphics.g2d.TextureAtlas.TextureAtlasData; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Null; +import com.esotericsoftware.spine.android.utils.SpineHttpUtils; import android.content.Context; import android.content.res.AssetManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; - -import kotlin.NotImplementedError; +import android.os.Build; public class AndroidTextureAtlas { private static interface BitmapLoader { @@ -131,27 +132,15 @@ public class AndroidTextureAtlas { } static public AndroidTextureAtlas fromFile(File atlasFile) { - TextureAtlasData data = new TextureAtlasData(); - + TextureAtlasData data; try { - FileHandle inputFile = new FileHandle() { - @Override - public InputStream read() { - try { - return new FileInputStream(atlasFile); - } catch (FileNotFoundException e) { - throw new RuntimeException(e); - } - } - }; - data.load(inputFile, new FileHandle(atlasFile).parent(), false); - } catch (Throwable t) { - throw new RuntimeException(t); + data = loadTextureAtlasData(atlasFile); + } catch (Exception e) { + throw new RuntimeException(e); } - return new AndroidTextureAtlas(data, path -> { File imageFile = new File(path); - try (InputStream in = new BufferedInputStream(new FileInputStream(imageFile))) { + try (InputStream in = new BufferedInputStream(inputStream(imageFile))) { return BitmapFactory.decodeStream(in); } catch (Throwable t) { throw new RuntimeException(t); @@ -159,7 +148,59 @@ public class AndroidTextureAtlas { }); } - static public AndroidTextureAtlas fromHttp(URL atlasUrl) { - throw new NotImplementedError("TODO"); + static public AndroidTextureAtlas fromHttp(URL atlasUrl, File targetDirectory) { + File atlasFile = SpineHttpUtils.downloadFrom(atlasUrl, targetDirectory); + TextureAtlasData data; + try { + data = loadTextureAtlasData(atlasFile); + } catch (Exception e) { + throw new RuntimeException(e); + } + return new AndroidTextureAtlas(data, path -> { + String fileName = path.substring(path.lastIndexOf('/') + 1); + + String atlasUrlPath = atlasUrl.getPath(); + int lastSlashIndex = atlasUrlPath.lastIndexOf('/'); + String imagePath = atlasUrlPath.substring(0, lastSlashIndex + 1) + fileName; + + File imageFile; + try { + URL imageUrl = new URL(atlasUrl.getProtocol(), atlasUrl.getHost(), atlasUrl.getPort(), imagePath); + imageFile = SpineHttpUtils.downloadFrom(imageUrl, targetDirectory); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + + try (InputStream in = new BufferedInputStream(inputStream(imageFile))) { + return BitmapFactory.decodeStream(in); + } catch (Throwable t) { + throw new RuntimeException(t); + } + }); + } + + private static InputStream inputStream(File file) throws Exception { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + return Files.newInputStream(file.toPath()); + } else { + //noinspection IOStreamConstructor + return new FileInputStream(file); + } + } + + static private TextureAtlasData loadTextureAtlasData(File atlasFile) { + TextureAtlasData data = new TextureAtlasData(); + FileHandle inputFile = new FileHandle() { + @Override + public InputStream read() { + try { + return new FileInputStream(atlasFile); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + } + }; + data.load(inputFile, new FileHandle(atlasFile).parent(), false); + return data; } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index 5e8091a7a..db159f223 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -146,6 +146,12 @@ public class SpineView extends View implements Choreographer.FrameCallback { return spineView; } + public static SpineView loadFromHttp(URL atlasUrl, URL skeletonUrl, File targetDirectory, Context context, SpineController controller) { + SpineView spineView = new SpineView(context, controller); + spineView.loadFromHttp(atlasUrl, skeletonUrl, targetDirectory); + return spineView; + } + public static SpineView loadFromDrawable(AndroidSkeletonDrawable drawable, Context context, SpineController controller) { SpineView spineView = new SpineView(context, controller); spineView.loadFromDrawable(drawable); @@ -164,8 +170,8 @@ public class SpineView extends View implements Choreographer.FrameCallback { loadFrom(() -> AndroidSkeletonDrawable.fromFile(atlasFile, skeletonFile)); } - public void loadFromHttp(URL atlasUrl, URL skeletonUrl) { - loadFrom(() -> AndroidSkeletonDrawable.fromHttp(atlasUrl, skeletonUrl)); + public void loadFromHttp(URL atlasUrl, URL skeletonUrl, File targetDirectory) { + loadFrom(() -> AndroidSkeletonDrawable.fromHttp(atlasUrl, skeletonUrl, targetDirectory)); } public void loadFromDrawable(AndroidSkeletonDrawable drawable) { diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java index a59b21adc..5d849d274 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java @@ -55,7 +55,8 @@ public class SkeletonDataUtils { return skeletonLoader.readSkeletonData(new FileHandle(skeletonFile)); } - public static SkeletonData fromHttp(AndroidTextureAtlas atlas, URL skeletonUrl) { - throw new NotImplementedError("TODO"); + public static SkeletonData fromHttp(AndroidTextureAtlas atlas, URL skeletonUrl, File targetDirectory) { + File skeletonFile = SpineHttpUtils.downloadFrom(skeletonUrl, targetDirectory); + return fromFile(atlas, skeletonFile); } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineHttpUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineHttpUtils.java new file mode 100644 index 000000000..0a3eaf99a --- /dev/null +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineHttpUtils.java @@ -0,0 +1,80 @@ +package com.esotericsoftware.spine.android.utils; + +import android.os.Build; + +import com.esotericsoftware.spine.android.AndroidTextureAtlas; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.file.Files; + +public class SpineHttpUtils { + + public static File downloadFrom(URL url, File targetDirectory) throws RuntimeException { + HttpURLConnection urlConnection = null; + InputStream inputStream = null; + OutputStream outputStream = null; + + try { + urlConnection = (HttpURLConnection) url.openConnection(); + urlConnection.connect(); + + if (urlConnection.getResponseCode() != HttpURLConnection.HTTP_OK) { + throw new RuntimeException("Failed to connect: HTTP response code " + urlConnection.getResponseCode()); + } + + inputStream = new BufferedInputStream(urlConnection.getInputStream()); + + String atlasUrlPath = url.getPath(); + String fileName = atlasUrlPath.substring(atlasUrlPath.lastIndexOf('/') + 1); + File file = new File(targetDirectory, fileName); + + // Create an OutputStream to write to the file + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + outputStream = Files.newOutputStream(file.toPath()); + } else { + //noinspection IOStreamConstructor + outputStream = new FileOutputStream(file); + } + + byte[] buffer = new byte[1024]; + int bytesRead; + + // Write the input stream to the output stream + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } + return file; + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + if (outputStream != null) { + try { + outputStream.flush(); + outputStream.close(); + } catch (IOException e) { + // Nothing we can do + } + } + + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + // Nothing we can do + } + } + + if (urlConnection != null) { + urlConnection.disconnect(); + } + } + } +} + From 6a89fd9813a568cb0db5337dec78a28e25f3bb64 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 10 Jul 2024 15:11:59 +0200 Subject: [PATCH 043/215] Add support for `ContentMode`, Update builder API --- .../com/esotericsoftware/spine/IKFollowing.kt | 5 +- .../spine/android/SpineView.java | 88 ++++++++++++++++--- .../spine/android/bounds/ContentMode.java | 6 ++ .../spine/android/utils/SpineHttpUtils.java | 2 - 4 files changed, 85 insertions(+), 16 deletions(-) create mode 100644 spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt index b1810b6d9..0b09b2631 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt @@ -25,6 +25,7 @@ import androidx.navigation.NavHostController import com.badlogic.gdx.math.Vector2 import com.esotericsoftware.spine.android.SpineController import com.esotericsoftware.spine.android.SpineView +import com.esotericsoftware.spine.android.bounds.Alignment @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -100,7 +101,9 @@ fun IKFollowing(nav: NavHostController) { "spineboy-pro.json", context, controller - ) + ).apply { + alignment = Alignment.CENTER_LEFT + } } ) } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index db159f223..77fb0c6ca 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -33,6 +33,7 @@ import com.badlogic.gdx.utils.Array; import com.esotericsoftware.spine.android.bounds.Alignment; import com.esotericsoftware.spine.android.bounds.Bounds; import com.esotericsoftware.spine.android.bounds.BoundsProvider; +import com.esotericsoftware.spine.android.bounds.ContentMode; import com.esotericsoftware.spine.android.bounds.SetupPoseBounds; import com.esotericsoftware.spine.android.utils.AndroidSkeletonDrawableLoader; @@ -58,8 +59,13 @@ public class SpineView extends View implements Choreographer.FrameCallback { private String skeletonFileName; private File atlasFile; private File skeletonFile; + private URL atlasUrl; + private URL skeletonUrl; + private File targetDirectory; + private AndroidSkeletonDrawable drawable; private BoundsProvider boundsProvider = new SetupPoseBounds(); private Alignment alignment = Alignment.CENTER; + private ContentMode contentMode = ContentMode.FIT; public Builder(Context context, SpineController controller) { this.context = context; @@ -78,11 +84,28 @@ public class SpineView extends View implements Choreographer.FrameCallback { return this; } + public Builder setLoadFromHttp(URL atlasUrl, URL skeletonUrl, File targetDirectory) { + this.atlasUrl = atlasUrl; + this.skeletonUrl = skeletonUrl; + this.targetDirectory = targetDirectory; + return this; + } + + public Builder setLoadFromDrawable(AndroidSkeletonDrawable drawable) { + this.drawable = drawable; + return this; + } + public Builder setBoundsProvider(BoundsProvider boundsProvider) { this.boundsProvider = boundsProvider; return this; } + public Builder setContentMode(ContentMode contentMode) { + this.contentMode = contentMode; + return this; + } + public Builder setAlignment(Alignment alignment) { this.alignment = alignment; return this; @@ -92,10 +115,15 @@ public class SpineView extends View implements Choreographer.FrameCallback { SpineView spineView = new SpineView(context, controller); spineView.boundsProvider = boundsProvider; spineView.alignment = alignment; + spineView.contentMode = contentMode; if (atlasFileName != null && skeletonFileName != null) { spineView.loadFromAsset(atlasFileName, skeletonFileName); } else if (atlasFile != null && skeletonFile != null) { spineView.loadFromFile(atlasFile, skeletonFile); + } else if (atlasUrl != null && skeletonUrl != null && targetDirectory != null) { + spineView.loadFromHttp(atlasUrl, skeletonUrl, targetDirectory); + } else if (drawable != null) { + spineView.loadFromDrawable(drawable); } return spineView; } @@ -109,15 +137,13 @@ public class SpineView extends View implements Choreographer.FrameCallback { private float scaleY = 1; private float x = 0; private float y = 0; - private final SkeletonRenderer renderer = new SkeletonRenderer(); private Bounds computedBounds = new Bounds(); - SpineController controller; - - BoundsProvider boundsProvider = new SetupPoseBounds(); - - Alignment alignment = Alignment.CENTER; + private SpineController controller; + private BoundsProvider boundsProvider = new SetupPoseBounds(); + private Alignment alignment = Alignment.CENTER; + private ContentMode contentMode = ContentMode.FIT; public SpineView (Context context, SpineController controller) { super(context); @@ -158,10 +184,6 @@ public class SpineView extends View implements Choreographer.FrameCallback { return spineView; } - public void setController(SpineController controller) { - this.controller = controller; - } - public void loadFromAsset(String atlasFileName, String skeletonFileName) { loadFrom(() -> AndroidSkeletonDrawable.fromAsset(atlasFileName, skeletonFileName, getContext())); } @@ -178,6 +200,41 @@ public class SpineView extends View implements Choreographer.FrameCallback { loadFrom(() -> drawable); } + public SpineController getController() { + return controller; + } + + public void setController(SpineController controller) { + this.controller = controller; + } + + public Alignment getAlignment() { + return alignment; + } + + public void setAlignment(Alignment alignment) { + this.alignment = alignment; + updateCanvasTransform(); + } + + public ContentMode getContentMode() { + return contentMode; + } + + public void setContentMode(ContentMode contentMode) { + this.contentMode = contentMode; + updateCanvasTransform(); + } + + public BoundsProvider getBoundsProvider() { + return boundsProvider; + } + + public void setBoundsProvider(BoundsProvider boundsProvider) { + this.boundsProvider = boundsProvider; + updateCanvasTransform(); + } + private void loadFrom(AndroidSkeletonDrawableLoader loader) { Handler mainHandler = new Handler(Looper.getMainLooper()); Thread backgroundThread = new Thread(() -> { @@ -230,9 +287,14 @@ public class SpineView extends View implements Choreographer.FrameCallback { x = (float) (-computedBounds.getX() - computedBounds.getWidth() / 2.0 - (alignment.getX() * computedBounds.getWidth() / 2.0)); y = (float) (-computedBounds.getY() - computedBounds.getHeight() / 2.0 - (alignment.getY() * computedBounds.getHeight() / 2.0)); - // contain - scaleX = scaleY = (float) Math.min(getWidth() / computedBounds.getWidth(), getHeight() / computedBounds.getHeight()); - + switch (contentMode) { + case FIT: + scaleX = scaleY = (float) Math.min(getWidth() / computedBounds.getWidth(), getHeight() / computedBounds.getHeight()); + break; + case FILL: + scaleX = scaleY = (float) Math.max(getWidth() / computedBounds.getWidth(), getHeight() / computedBounds.getHeight()); + break; + } offsetX = (float) (getWidth() / 2.0 + (alignment.getX() * getWidth() / 2.0)); offsetY = (float) (getHeight() / 2.0 + (alignment.getY() * getHeight() / 2.0)); diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java new file mode 100644 index 000000000..f0ccbf269 --- /dev/null +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java @@ -0,0 +1,6 @@ +package com.esotericsoftware.spine.android.bounds; + +public enum ContentMode { + FIT, + FILL; +} diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineHttpUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineHttpUtils.java index 0a3eaf99a..ca9c0ffc1 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineHttpUtils.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineHttpUtils.java @@ -2,8 +2,6 @@ package com.esotericsoftware.spine.android.utils; import android.os.Build; -import com.esotericsoftware.spine.android.AndroidTextureAtlas; - import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; From c13a6507564dd25d6d12d22ccd3a651ee18950c0 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 10 Jul 2024 15:53:56 +0200 Subject: [PATCH 044/215] Add Java + XML example --- spine-android/app/build.gradle.kts | 1 + .../app/src/main/AndroidManifest.xml | 5 ++ .../esotericsoftware/spine/MainActivity.kt | 28 +++++++++++ .../spine/SimpleAnimationActivity.java | 49 +++++++++++++++++++ .../res/layout/activity_simple_animation.xml | 21 ++++++++ spine-android/gradle/libs.versions.toml | 2 + .../spine/android/SpineView.java | 11 +++-- 7 files changed, 113 insertions(+), 4 deletions(-) create mode 100644 spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java create mode 100644 spine-android/app/src/main/res/layout/activity_simple_animation.xml diff --git a/spine-android/app/build.gradle.kts b/spine-android/app/build.gradle.kts index d3fa4cbee..bb87218aa 100644 --- a/spine-android/app/build.gradle.kts +++ b/spine-android/app/build.gradle.kts @@ -60,6 +60,7 @@ dependencies { implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) implementation(libs.androidx.navigation.compose) + implementation(libs.appcompat) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) diff --git a/spine-android/app/src/main/AndroidManifest.xml b/spine-android/app/src/main/AndroidManifest.xml index 20ac444d9..35fd26c4b 100644 --- a/spine-android/app/src/main/AndroidManifest.xml +++ b/spine-android/app/src/main/AndroidManifest.xml @@ -24,6 +24,11 @@ + + + + diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt index 28074fdfc..320041933 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt @@ -1,5 +1,6 @@ package com.esotericsoftware.spine +import android.content.Intent import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent @@ -19,6 +20,7 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost @@ -129,6 +131,10 @@ fun Samples( .padding(8.dp) .padding(paddingValues) ) { + item { + Text(text = "Kotlin + Jetpack Compose", Modifier.padding(8.dp)) + } + samples.forEach { item { Card( @@ -141,6 +147,28 @@ fun Samples( } } } + + item { + Text(text = "Java + XML", Modifier.padding(8.dp)) + } + + item { + Card( + Modifier + .fillMaxWidth() + .clickable(onClick = { + nav.context.startActivity( + Intent( + nav.context, + SimpleAnimationActivity::class.java + ) + ) + }), + shape = MaterialTheme.shapes.large + ) { + Text(text = "Simple Animation", Modifier.padding(24.dp)) + } + } } } diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java new file mode 100644 index 000000000..399713ee3 --- /dev/null +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java @@ -0,0 +1,49 @@ +package com.esotericsoftware.spine; + +import android.os.Bundle; +import android.view.MenuItem; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; + +import com.esotericsoftware.spine.android.SpineController; +import com.esotericsoftware.spine.android.SpineView; + +public class SimpleAnimationActivity extends AppCompatActivity { + /** @noinspection FieldCanBeLocal*/ + private SpineView spineView; + /** @noinspection FieldCanBeLocal*/ + private SpineController spineController; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_simple_animation); + + // Set up the toolbar + Toolbar toolbar = findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + if (getSupportActionBar() != null) { + getSupportActionBar().setTitle("Simple Animation"); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + spineView = findViewById(R.id.spineView); + spineController = new SpineController( controller -> + controller.getAnimationState().setAnimation(0, "walk", true) + ); + + spineView.setController(spineController); + spineView.loadFromAsset("spineboy.atlas","spineboy-pro.json"); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == android.R.id.home) { + finish(); + return true; + } + return super.onOptionsItemSelected(item); + } +} diff --git a/spine-android/app/src/main/res/layout/activity_simple_animation.xml b/spine-android/app/src/main/res/layout/activity_simple_animation.xml new file mode 100644 index 000000000..b49d6a405 --- /dev/null +++ b/spine-android/app/src/main/res/layout/activity_simple_animation.xml @@ -0,0 +1,21 @@ + + + + + + diff --git a/spine-android/gradle/libs.versions.toml b/spine-android/gradle/libs.versions.toml index 54793659d..c971f0f64 100644 --- a/spine-android/gradle/libs.versions.toml +++ b/spine-android/gradle/libs.versions.toml @@ -11,6 +11,7 @@ composeBom = "2023.08.00" appcompat = "1.6.1" material = "1.10.0" navigationCompose = "2.7.7" +appcompatVersion = "1.7.0" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -30,6 +31,7 @@ androidx-material3 = { group = "androidx.compose.material3", name = "material3" androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } material = { group = "com.google.android.material", name = "material", version.ref = "material" } androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationCompose" } +appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompatVersion" } [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index 77fb0c6ca..1d6174235 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -152,12 +152,12 @@ public class SpineView extends View implements Choreographer.FrameCallback { public SpineView (Context context, AttributeSet attrs) { super(context, attrs); - // TODO Load controller & assets fro attrs + // Set properties by view id } - + public SpineView (Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - // TODO Load controller & assets fro attrs + // Set properties by view id } public static SpineView loadFromAssets(String atlasFileName, String skeletonFileName, Context context, SpineController controller) { @@ -253,7 +253,7 @@ public class SpineView extends View implements Choreographer.FrameCallback { @Override public void onDraw (@NonNull Canvas canvas) { super.onDraw(canvas); - if (!controller.isInitialized()) { + if (controller == null || !controller.isInitialized()) { return; } @@ -284,6 +284,9 @@ public class SpineView extends View implements Choreographer.FrameCallback { } private void updateCanvasTransform() { + if (controller == null) { + return; + } x = (float) (-computedBounds.getX() - computedBounds.getWidth() / 2.0 - (alignment.getX() * computedBounds.getWidth() / 2.0)); y = (float) (-computedBounds.getY() - computedBounds.getHeight() / 2.0 - (alignment.getY() * computedBounds.getHeight() / 2.0)); From c09727dab7c8732eda20a3bc1bdeafa8156c0bbc Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 10 Jul 2024 16:32:17 +0200 Subject: [PATCH 045/215] Fix selected skin key in DressUp sample --- .../src/main/java/com/esotericsoftware/spine/DressUp.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt index 0c4c0f41a..a777e0eb0 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt @@ -84,10 +84,10 @@ fun DressUp(nav: NavHostController) { selectedSkins[skinName] = !(selectedSkins[skinName] ?: false) drawable.skeleton.setSkin("default") customSkin.value = Skin("custom-skin"); - for (skinName2 in selectedSkins.keys) { - if (selectedSkins[skinName2] == true) { - val skin = drawable.skeletonData.findSkin(skinName) - if (skin != null) customSkin.value?.addSkin(skin) + for (selectedSkinKey in selectedSkins.keys) { + if (selectedSkins[selectedSkinKey] == true) { + val selectedSkin = drawable.skeletonData.findSkin(selectedSkinKey) + if (selectedSkin != null) customSkin.value?.addSkin(selectedSkin) } } val customSkinValue = customSkin.value From 0e72a698bebb750dc30037ab9004d4138bcb403a Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 10 Jul 2024 16:48:50 +0200 Subject: [PATCH 046/215] Fix DressUp sample --- .../com/esotericsoftware/spine/DressUp.kt | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt index a777e0eb0..a2985d37b 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt @@ -1,10 +1,13 @@ package com.esotericsoftware.spine import androidx.compose.foundation.Image +import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState @@ -23,9 +26,11 @@ import androidx.compose.runtime.mutableStateMapOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.draw.drawWithCache import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.ColorMatrix import androidx.compose.ui.graphics.ImageBitmap @@ -135,11 +140,13 @@ fun DressUp(nav: NavHostController) { ) { paddingValues -> Row( modifier = Modifier - .width(thumbnailSize.dp) - .verticalScroll(rememberScrollState()) .padding(paddingValues) ) { - Column { + Column( + modifier = Modifier + .width(thumbnailSize.dp) + .verticalScroll(rememberScrollState()) + ) { skinImages.keys.forEach { skinName -> Box(modifier = Modifier .clickable { @@ -160,12 +167,16 @@ fun DressUp(nav: NavHostController) { } } } - AndroidView( - factory = { context -> - SpineView.loadFromDrawable(drawable, context, controller) - }, - modifier = Modifier.padding(paddingValues) - ) + Column( + modifier = Modifier + .clipToBounds() + ) { + AndroidView( + factory = { context -> + SpineView.loadFromDrawable(drawable, context, controller) + } + ) + } } } } From 241d56348953e492fd95e1f6afeac05ada1d65c2 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 10 Jul 2024 16:51:47 +0200 Subject: [PATCH 047/215] Add guard against crash in renderer --- .../esotericsoftware/spine/android/SkeletonRenderer.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java index e0d71c549..8b66ab874 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java @@ -209,6 +209,12 @@ public class SkeletonRenderer { public void render (Canvas canvas, Array commands) { for (int i = 0; i < commands.size; i++) { RenderCommand command = commands.get(i); + + // TODO: Happens when deselecting last skin in DressUp sample + if (command.texture == null) { + break; + } + canvas.drawVertices(Canvas.VertexMode.TRIANGLES, command.vertices.size, command.vertices.items, 0, command.uvs.items, 0, command.colors.items, 0, command.indices.items, 0, command.indices.size, command.texture.getPaint(command.blendMode)); } From d2953d6053b0ae9f3634cedb94687b84481ab445 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Wed, 10 Jul 2024 17:36:04 +0200 Subject: [PATCH 048/215] [unity] Automatically updating SkeletonRootMotion references after SkeletonDataAsset change. Exposed `rootMotionBoneName`. Closes #2575. --- CHANGELOG.md | 1 + .../RootMotion/SkeletonMecanimRootMotion.cs | 4 ++-- .../Components/RootMotion/SkeletonRootMotion.cs | 4 ++-- .../RootMotion/SkeletonRootMotionBase.cs | 17 ++++++++++++++--- spine-unity/Assets/Spine/package.json | 2 +- 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed1be6312..e71f765f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -161,6 +161,7 @@ - Added support for BlendModeMaterials at runtime instantiation from files via an additional method `SkeletonDataAsset.SetupRuntimeBlendModeMaterials`. See example scene `Spine Examples/Other Examples/Instantiate from Script` for a usage example. - SkeletonGraphic: You can now offset the skeleton mesh relative to the pivot via a newly added green circle handle. This allows you to e.g. frame only the face of a skeleton inside a masked frame. Previously offsetting the pivot downwards fails when `Layout Scale Mode` scales the mesh smaller and towards the pivot (e.g. the feet) and thus out of the frame. Now you can keep the pivot in the center of the `RectTransform` while offsetting only the mesh downwards, keeping the desired skeleton area (e.g. the face) centered while resizing. Moving the new larger green circle handle moves the mesh offset, while moving the blue pivot circle handle moves the pivot as usual. - `Universal Render Pipeline/Spine/Skeleton` shader now performs proper alpha-testing when `Depth Write` is enabled, using the existing `Shadow alpha cutoff` parameter. + - `SkeletonRootMotion` components now provide a public `Initialize()` method which is automatically called when calling `skeletonAnimation.Initialize(true)` to update the necessary skeleton references. If a different root bone shall be used, be sure to set `skeletonRootMotion.rootMotionBoneName` before calling `skeletonAnimation.Initialize(true)`. - **Breaking changes** diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonMecanimRootMotion.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonMecanimRootMotion.cs index 4dbc7d2f1..4e031166e 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonMecanimRootMotion.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonMecanimRootMotion.cs @@ -88,8 +88,8 @@ namespace Spine.Unity { mecanimLayerFlags = DefaultMecanimLayerFlags; } - protected override void Start () { - base.Start(); + public override void Initialize () { + base.Initialize(); skeletonMecanim = GetComponent(); if (skeletonMecanim) { skeletonMecanim.Translator.OnClipApplied -= OnClipApplied; diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotion.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotion.cs index 6bc6c0b60..2086c3e2a 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotion.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotion.cs @@ -88,8 +88,8 @@ namespace Spine.Unity { animationTrackFlags = DefaultAnimationTrackFlags; } - protected override void Start () { - base.Start(); + public override void Initialize () { + base.Initialize(); IAnimationStateComponent animstateComponent = skeletonComponent as IAnimationStateComponent; this.animationState = (animstateComponent != null) ? animstateComponent.AnimationState : null; diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs index a85b077ba..0e88ad732 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs @@ -42,8 +42,7 @@ namespace Spine.Unity { #region Inspector [SpineBone] - [SerializeField] - protected string rootMotionBoneName = "root"; + public string rootMotionBoneName = "root"; public bool transformPositionX = true; public bool transformPositionY = true; public bool transformRotation = false; @@ -155,6 +154,14 @@ namespace Spine.Unity { } protected virtual void Start () { + Initialize(); + } + + protected void InitializeOnRebuild (ISkeletonAnimation animatedSkeletonComponent) { + Initialize(); + } + + public virtual void Initialize () { skeletonComponent = GetComponent(); GatherTopLevelBones(); SetRootMotionBone(rootMotionBoneName); @@ -167,6 +174,9 @@ namespace Spine.Unity { if (skeletonAnimation != null) { skeletonAnimation.UpdateLocal -= HandleUpdateLocal; skeletonAnimation.UpdateLocal += HandleUpdateLocal; + + skeletonAnimation.OnAnimationRebuild -= InitializeOnRebuild; + skeletonAnimation.OnAnimationRebuild += InitializeOnRebuild; } } @@ -271,7 +281,8 @@ namespace Spine.Unity { this.rootMotionBone = bone; FindTransformConstraintsAffectingBone(); } else { - Debug.Log("Bone named \"" + name + "\" could not be found."); + Debug.Log("Bone named \"" + name + "\" could not be found. " + + "Set 'skeletonRootMotion.rootMotionBoneName' before calling 'skeletonAnimation.Initialize(true)'."); this.rootMotionBoneIndex = 0; this.rootMotionBone = skeleton.RootBone; } diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index a94a81c48..5150344c7 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.2.76", + "version": "4.2.77", "unity": "2018.3", "author": { "name": "Esoteric Software", From 63fc9555d742791c3acece726560135b9ff1f07a Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Thu, 11 Jul 2024 14:02:20 +0200 Subject: [PATCH 049/215] Fix renderer crash --- .../spine/android/SkeletonRenderer.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java index 8b66ab874..cd02e45d2 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java @@ -203,6 +203,11 @@ public class SkeletonRenderer { } clipper.clipEnd(); + if (commandList.size == 1 && commandList.get(0).vertices.size == 0) { + commandPool.freeAll(commandList); + commandList.clear(); + } + return commandList; } @@ -210,11 +215,6 @@ public class SkeletonRenderer { for (int i = 0; i < commands.size; i++) { RenderCommand command = commands.get(i); - // TODO: Happens when deselecting last skin in DressUp sample - if (command.texture == null) { - break; - } - canvas.drawVertices(Canvas.VertexMode.TRIANGLES, command.vertices.size, command.vertices.items, 0, command.uvs.items, 0, command.colors.items, 0, command.indices.items, 0, command.indices.size, command.texture.getPaint(command.blendMode)); } From be3aa5f70ea688f16b5214b8787682e52db2efcd Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Thu, 11 Jul 2024 18:56:27 -1000 Subject: [PATCH 050/215] [libgdx] Scale physics constraint limits with skeleton scale. --- .../spine/PhysicsConstraint.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java index dcb28f684..ce3720a6f 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java @@ -141,6 +141,7 @@ public class PhysicsConstraint implements Updatable { reset(); // Fall through. case update: + Skeleton skeleton = this.skeleton; float delta = Math.max(skeleton.time - lastTime, 0); remaining += delta; lastTime = skeleton.time; @@ -151,16 +152,18 @@ public class PhysicsConstraint implements Updatable { ux = bx; uy = by; } else { - float a = remaining, i = inertia, q = data.limit * delta, t = data.step, f = skeleton.data.referenceScale, d = -1; + float a = remaining, i = inertia, t = data.step, f = skeleton.data.referenceScale, d = -1; + float qx = data.limit * delta, qy = qx * skeleton.scaleY; + qx *= skeleton.scaleX; if (x || y) { if (x) { float u = (ux - bx) * i; - xOffset += u > q ? q : u < -q ? -q : u; + xOffset += u > qx ? qx : u < -qx ? -qx : u; ux = bx; } if (y) { float u = (uy - by) * i; - yOffset += u > q ? q : u < -q ? -q : u; + yOffset += u > qy ? qy : u < -qy ? -qy : u; uy = by; } if (a >= t) { @@ -186,14 +189,14 @@ public class PhysicsConstraint implements Updatable { if (rotateOrShearX || scaleX) { float ca = atan2(bone.c, bone.a), c, s, mr = 0; float dx = cx - bone.worldX, dy = cy - bone.worldY; - if (dx > q) - dx = q; - else if (dx < -q) // - dx = -q; - if (dy > q) - dy = q; - else if (dy < -q) // - dy = -q; + if (dx > qx) + dx = qx; + else if (dx < -qx) // + dx = -qx; + if (dy > qy) + dy = qy; + else if (dy < -qy) // + dy = -qy; if (rotateOrShearX) { mr = (data.rotate + data.shearX) * mix; float r = atan2(dy + ty, dx + tx) - ca - rotateOffset * mr; From cbed5fbf40f17f4392542725ab8a06845d84a830 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Fri, 12 Jul 2024 09:00:01 +0200 Subject: [PATCH 051/215] [ts] Port: Scale physics constraint limits with skeleton scale. See #2576. --- spine-ts/spine-core/src/PhysicsConstraint.ts | 27 +++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/spine-ts/spine-core/src/PhysicsConstraint.ts b/spine-ts/spine-core/src/PhysicsConstraint.ts index d90493e53..4af8a62e7 100644 --- a/spine-ts/spine-core/src/PhysicsConstraint.ts +++ b/spine-ts/spine-core/src/PhysicsConstraint.ts @@ -136,9 +136,10 @@ export class PhysicsConstraint implements Updatable { this.reset(); // Fall through. case Physics.update: + const skeleton = this.skeleton; const delta = Math.max(this.skeleton.time - this.lastTime, 0); this.remaining += delta; - this.lastTime = this.skeleton.time; + this.lastTime = skeleton.time; const bx = bone.worldX, by = bone.worldY; if (this._reset) { @@ -146,16 +147,18 @@ export class PhysicsConstraint implements Updatable { this.ux = bx; this.uy = by; } else { - let a = this.remaining, i = this.inertia, q = this.data.limit * delta, t = this.data.step, f = this.skeleton.data.referenceScale, d = -1; + let a = this.remaining, i = this.inertia, t = this.data.step, f = this.skeleton.data.referenceScale, d = -1; + let qx = this.data.limit * delta, qy = qx * skeleton.scaleY; + qx *= skeleton.scaleX; if (x || y) { if (x) { const u = (this.ux - bx) * i; - this.xOffset += u > q ? q : u < -q ? -q : u; + this.xOffset += u > qx ? qx : u < -qx ? -qx : u; this.ux = bx; } if (y) { const u = (this.uy - by) * i; - this.yOffset += u > q ? q : u < -q ? -q : u; + this.yOffset += u > qy ? qy : u < -qy ? -qy : u; this.uy = by; } if (a >= t) { @@ -181,14 +184,14 @@ export class PhysicsConstraint implements Updatable { if (rotateOrShearX || scaleX) { let ca = Math.atan2(bone.c, bone.a), c = 0, s = 0, mr = 0; let dx = this.cx - bone.worldX, dy = this.cy - bone.worldY; - if (dx > q) - dx = q; - else if (dx < -q) // - dx = -q; - if (dy > q) - dy = q; - else if (dy < -q) // - dy = -q; + if (dx > qx) + dx = qx; + else if (dx < -qx) // + dx = -qx; + if (dy > qy) + dy = qy; + else if (dy < -qy) // + dy = -qy; if (rotateOrShearX) { mr = (this.data.rotate + this.data.shearX) * mix; let r = Math.atan2(dy + this.ty, dx + this.tx) - ca - this.rotateOffset * mr; From d08f346deaede224b5765b4f1b8753bbbac87130 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Fri, 12 Jul 2024 09:13:51 +0200 Subject: [PATCH 052/215] [haxe] Port: Scale physics constraint limits with skeleton scale. See #2576. --- .../spine-haxe/spine/PhysicsConstraint.hx | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/spine-haxe/spine-haxe/spine/PhysicsConstraint.hx b/spine-haxe/spine-haxe/spine/PhysicsConstraint.hx index e660d1563..a299fdd84 100644 --- a/spine-haxe/spine-haxe/spine/PhysicsConstraint.hx +++ b/spine-haxe/spine-haxe/spine/PhysicsConstraint.hx @@ -32,7 +32,7 @@ package spine; class PhysicsConstraint implements Updatable { private var _data:PhysicsConstraintData; private var _bone:Bone = null; - + public var inertia:Float = 0; public var strength:Float = 0; public var damping:Float = 0; @@ -63,7 +63,7 @@ class PhysicsConstraint implements Updatable { private var _skeleton:Skeleton; public var remaining:Float = 0; public var lastTime:Float = 0; - + public function new(data: PhysicsConstraintData, skeleton: Skeleton) { _data = data; _skeleton = skeleton; @@ -123,7 +123,7 @@ class PhysicsConstraint implements Updatable { return; case Physics.reset, Physics.update: if (physics == Physics.reset) reset(); - + var delta:Float = Math.max(skeleton.time - lastTime, 0); remaining += delta; lastTime = _skeleton.time; @@ -136,19 +136,22 @@ class PhysicsConstraint implements Updatable { } else { var a:Float = remaining, i:Float = inertia, - q:Float = _data.limit * delta, t:Float = _data.step, f:Float = skeleton.data.referenceScale, d:Float = -1; + + var qx:Float = _data.limit * delta, + qy:Float = qx * skeleton.scaleY; + qx *= skeleton.scaleX; if (x || y) { if (x) { var u:Float = (ux - bx) * i; - xOffset += u > q ? q : u < -q ? -q : u; + xOffset += u > qx ? qx : u < -qx ? -qx : u; ux = bx; } if (y) { var u:Float = (uy - by) * i; - yOffset += u > q ? q : u < -q ? -q : u; + yOffset += u > qy ? qy : u < -qy ? -qy : u; uy = by; } if (a >= t) { @@ -181,14 +184,14 @@ class PhysicsConstraint implements Updatable { mr:Float = 0; var dx:Float = cx - bone.worldX, dy:Float = cy - bone.worldY; - if (dx > q) - dx = q; - else if (dx < -q) // - dx = -q; - if (dy > q) - dy = q; - else if (dy < -q) // - dy = -q; + if (dx > qx) + dx = qx; + else if (dx < -qx) // + dx = -qx; + if (dy > qy) + dy = qy; + else if (dy < -qy) // + dy = -qy; if (rotateOrShearX) { mr = (_data.rotate + _data.shearX) * mix; var r:Float = Math.atan2(dy + ty, dx + tx) - ca - rotateOffset * mr; From cc55a2eeba44b95108e6c9c18cab3863c8bbf5ea Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 12 Jul 2024 17:52:52 +0200 Subject: [PATCH 053/215] [unity] Minor: RootMotion: commented failed experiments with setting velocity instead of MovePosition. --- .../Components/RootMotion/SkeletonRootMotionBase.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs index 0e88ad732..1a260768f 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs @@ -208,6 +208,13 @@ namespace Spine.Unity { } Vector2 rigidbodyDisplacement2D = new Vector2(rigidbodyDisplacement.x, rigidbodyDisplacement.y); + // Note: MovePosition seems to be the only precise and reliable way to set movement delta, + // for both 2D and 3D rigidbodies. + // Setting velocity like "rigidBody2D.velocity = movement/deltaTime" works perfectly in mid-air + // without gravity and ground collision, unfortunately when on the ground, friction causes severe + // slowdown. Using a zero-friction PhysicsMaterial leads to sliding endlessly along the ground as + // soon as forces are applied. Additionally, there is no rigidBody2D.isGrounded, requiring our own + // checks. rigidBody2D.MovePosition(gravityAndVelocityMovement + new Vector2(rigidBody2D.position.x, rigidBody2D.position.y) + rigidbodyDisplacement2D + additionalRigidbody2DMovement); rigidBody2D.MoveRotation(rigidbody2DRotation + rigidBody2D.rotation); From 112bea0603fa835787e46cb959c07e1ed5b09dfa Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Fri, 12 Jul 2024 07:08:43 -1000 Subject: [PATCH 054/215] [libgdx] Fixed physics constraint limit with negative skeleton scale. ref #2576 --- .../src/com/esotericsoftware/spine/PhysicsConstraint.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java index ce3720a6f..87fb116d5 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java @@ -153,8 +153,8 @@ public class PhysicsConstraint implements Updatable { uy = by; } else { float a = remaining, i = inertia, t = data.step, f = skeleton.data.referenceScale, d = -1; - float qx = data.limit * delta, qy = qx * skeleton.scaleY; - qx *= skeleton.scaleX; + float qx = data.limit * delta, qy = qx * Math.abs(skeleton.scaleY); + qx *= Math.abs(skeleton.scaleX); if (x || y) { if (x) { float u = (ux - bx) * i; From 884af914a2c5b7ffb1e7dda3b6a953b6741ee8f5 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 12 Jul 2024 19:08:54 +0200 Subject: [PATCH 055/215] [csharp] Port of be3aa5f: Scale physics constraint limits with skeleton scale. Includes additional abs(skeleton.ScaleXY) fix. See #2576. --- spine-csharp/src/PhysicsConstraint.cs | 26 +++++++++++++++----------- spine-csharp/src/package.json | 2 +- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/spine-csharp/src/PhysicsConstraint.cs b/spine-csharp/src/PhysicsConstraint.cs index 4221b0aec..50c601cdf 100644 --- a/spine-csharp/src/PhysicsConstraint.cs +++ b/spine-csharp/src/PhysicsConstraint.cs @@ -147,6 +147,7 @@ namespace Spine { Reset(); goto case Physics.Update; // Fall through. case Physics.Update: + Skeleton skeleton = this.skeleton; float delta = Math.Max(skeleton.time - lastTime, 0); remaining += delta; lastTime = skeleton.time; @@ -157,16 +158,19 @@ namespace Spine { ux = bx; uy = by; } else { - float a = this.remaining, i = inertia, q = data.limit * delta, t = data.step, f = skeleton.data.referenceScale; + float a = remaining, i = inertia, t = data.step, f = skeleton.data.referenceScale; + float qx = data.limit * delta, qy = qx * Math.Abs(skeleton.ScaleY); + qx *= Math.Abs(skeleton.ScaleX); + if (x || y) { if (x) { float u = (ux - bx) * i; - xOffset += u > q ? q : u < -q ? -q : u; + xOffset += u > qx ? qx : u < -qx ? -qx : u; ux = bx; } if (y) { float u = (uy - by) * i; - yOffset += u > q ? q : u < -q ? -q : u; + yOffset += u > qy ? qy : u < -qy ? -qy : u; uy = by; } if (a >= t) { @@ -192,14 +196,14 @@ namespace Spine { if (rotateOrShearX || scaleX) { float ca = (float)Math.Atan2(bone.c, bone.a), c, s, mr = 0; float dx = cx - bone.worldX, dy = cy - bone.worldY; - if (dx > q) - dx = q; - else if (dx < -q) - dx = -q; - if (dy > q) - dy = q; - else if (dy < -q) - dy = -q; + if (dx > qx) + dx = qx; + else if (dx < -qx) + dx = -qx; + if (dy > qy) + dy = qy; + else if (dy < -qy) + dy = -qy; if (rotateOrShearX) { mr = (data.rotate + data.shearX) * mix; float r = (float)Math.Atan2(dy + ty, dx + tx) - ca - rotateOffset * mr; diff --git a/spine-csharp/src/package.json b/spine-csharp/src/package.json index c52b7612f..45e4e0f79 100644 --- a/spine-csharp/src/package.json +++ b/spine-csharp/src/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-csharp", "displayName": "spine-csharp Runtime", "description": "This plugin provides the spine-csharp core runtime.", - "version": "4.2.25", + "version": "4.2.26", "unity": "2018.3", "author": { "name": "Esoteric Software", From 520c0750f55d430f439a85eb87e7c360aa6d4bcc Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Fri, 12 Jul 2024 10:18:03 +0200 Subject: [PATCH 056/215] [ts] Port: Scale physics constraint limits with skeleton scale. See #2576. --- spine-ts/spine-core/src/PhysicsConstraint.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-ts/spine-core/src/PhysicsConstraint.ts b/spine-ts/spine-core/src/PhysicsConstraint.ts index 4af8a62e7..2870ecbf7 100644 --- a/spine-ts/spine-core/src/PhysicsConstraint.ts +++ b/spine-ts/spine-core/src/PhysicsConstraint.ts @@ -148,8 +148,8 @@ export class PhysicsConstraint implements Updatable { this.uy = by; } else { let a = this.remaining, i = this.inertia, t = this.data.step, f = this.skeleton.data.referenceScale, d = -1; - let qx = this.data.limit * delta, qy = qx * skeleton.scaleY; - qx *= skeleton.scaleX; + let qx = this.data.limit * delta, qy = qx * Math.abs(skeleton.scaleY); + qx *= Math.abs(skeleton.scaleX); if (x || y) { if (x) { const u = (this.ux - bx) * i; From 42079d1d2307b362bb9b5fc25f0bebc4f132ca5c Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Fri, 12 Jul 2024 10:22:26 +0200 Subject: [PATCH 057/215] [haxe] Port: Scale physics constraint limits with skeleton scale. See #2576. --- spine-haxe/spine-haxe/spine/PhysicsConstraint.hx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-haxe/spine-haxe/spine/PhysicsConstraint.hx b/spine-haxe/spine-haxe/spine/PhysicsConstraint.hx index a299fdd84..19d92c384 100644 --- a/spine-haxe/spine-haxe/spine/PhysicsConstraint.hx +++ b/spine-haxe/spine-haxe/spine/PhysicsConstraint.hx @@ -141,8 +141,8 @@ class PhysicsConstraint implements Updatable { d:Float = -1; var qx:Float = _data.limit * delta, - qy:Float = qx * skeleton.scaleY; - qx *= skeleton.scaleX; + qy:Float = qx * Math.abs(skeleton.scaleY); + qx *= Math.abs(skeleton.scaleX); if (x || y) { if (x) { var u:Float = (ux - bx) * i; From 59bcffcf42654465903638811e18c51c87a5c240 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 16 Jul 2024 11:43:54 +0200 Subject: [PATCH 058/215] [csharp] Port of commit ad71a986a, PhysicsConstraint clean up. --- spine-csharp/src/PhysicsConstraint.cs | 14 +++++++------- spine-csharp/src/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/spine-csharp/src/PhysicsConstraint.cs b/spine-csharp/src/PhysicsConstraint.cs index 50c601cdf..1ab3000a9 100644 --- a/spine-csharp/src/PhysicsConstraint.cs +++ b/spine-csharp/src/PhysicsConstraint.cs @@ -158,7 +158,7 @@ namespace Spine { ux = bx; uy = by; } else { - float a = remaining, i = inertia, t = data.step, f = skeleton.data.referenceScale; + float a = remaining, i = inertia, t = data.step, f = skeleton.data.referenceScale, d = -1; float qx = data.limit * delta, qy = qx * Math.Abs(skeleton.ScaleY); qx *= Math.Abs(skeleton.ScaleX); @@ -174,8 +174,8 @@ namespace Spine { uy = by; } if (a >= t) { + d = (float)Math.Pow(damping, 60 * t); float m = massInverse * t, e = strength, w = wind * f, g = (Bone.yDown ? -gravity : gravity) * f; - float d = (float)Math.Pow(damping, 60 * t); do { if (x) { xVelocity += (w - xOffset * e) * m; @@ -221,10 +221,10 @@ namespace Spine { float r = l * bone.WorldScaleX; if (r > 0) scaleOffset += (dx * c + dy * s) * i / r; } - a = this.remaining; + a = remaining; if (a >= t) { - float m = massInverse * t, e = strength, w = wind, g = (Bone.yDown ? -gravity : gravity); - float d = (float)Math.Pow(damping, 60 * t), h = l / f; + if (d == -1) d = (float)Math.Pow(damping, 60 * t); + float m = massInverse * t, e = strength, w = wind, g = (Bone.yDown ? -gravity : gravity), h = l / f; while (true) { a -= t; if (scaleX) { @@ -245,7 +245,7 @@ namespace Spine { } } } - this.remaining = a; + remaining = a; } cx = bone.worldX; cy = bone.worldY; @@ -299,7 +299,7 @@ namespace Spine { } /// The bone constrained by this physics constraint. - public Bone Bone { get {return bone;} set { bone = value; } } + public Bone Bone { get { return bone; } set { bone = value; } } public float Inertia { get { return inertia; } set { inertia = value; } } public float Strength { get { return strength; } set { strength = value; } } public float Damping { get { return damping; } set { damping = value; } } diff --git a/spine-csharp/src/package.json b/spine-csharp/src/package.json index 45e4e0f79..967424a88 100644 --- a/spine-csharp/src/package.json +++ b/spine-csharp/src/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-csharp", "displayName": "spine-csharp Runtime", "description": "This plugin provides the spine-csharp core runtime.", - "version": "4.2.26", + "version": "4.2.27", "unity": "2018.3", "author": { "name": "Esoteric Software", From 3e8c9dfa6681a8d3fab736158eda4402bc85ea80 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 16 Jul 2024 18:14:17 +0200 Subject: [PATCH 059/215] [unity] Fixed SkeletonRootMotion ignoring parent bone scale set via transform constraints. Closes #2580. --- CHANGELOG.md | 3 ++- .../Components/RootMotion/SkeletonRootMotionBase.cs | 11 +++++++++++ spine-unity/Assets/Spine/package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e71f765f2..f504cf432 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -122,7 +122,7 @@ ### Unity -- **Officially supported Unity versions are 2017.1-2022.1**. +- **Officially supported Unity versions are 2017.1-2023.1**. - **Additions** @@ -174,6 +174,7 @@ - Inspector: String attribute `SpineSkin()` now allows to include `` in the list of parameters. Previously the `includeNone=true` parameter of the `SpineSkin()` attribute defaulted to `true` but was ignored. Now it defaults to `false` and has an effect on the list. Only the Inspector GUI is affected by this behaviour change. - `SkeletonGraphicRenderTexture` example component: `protected RawImage quadRawImage` was changed to `protected SkeletonSubmeshGraphic quadMaskableGraphic` for a bugfix. This is only relevant for subclasses of `SkeletonGraphicRenderTexture` or when querying the `RawImage` component via e.g. `skeletonGraphicRenderTexture.quad.GetComponent()`. - Fixed a bug where when Linear color space is used and `PMA vertex colors` enabled, additive slots add a too dark (too transparent) color value. If you want the old incorrect behaviour (darker additive slots) or are not using Linear but Gamma color space, you can comment-out the define `LINEAR_COLOR_SPACE_FIX_ADDITIVE_ALPHA` in `MeshGenerator.cs` to deactivate the fix or just to skip unnecessary instructions. + - Fixed SkeletonRootMotion components ignoring parent bone scale when set by transform constraints. Using applied scale of parent bone now. If you need the old behaviour, comment out the line `#define USE_APPLIED_PARENT_SCALE` in SkeletonRootMotionBase.cs. - **Changes of default values** diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs index 1a260768f..7559a7039 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs @@ -27,6 +27,12 @@ * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ +// In order to respect TransformConstraints modifying the scale of parent bones, +// GetScaleAffectingRootMotion() now uses parentBone.AScaleX and AScaleY instead +// of previously used ScaleX and ScaleY. If you require the previous behaviour, +// comment out the define below. +#define USE_APPLIED_PARENT_SCALE + using Spine.Unity.AnimationTools; using System; using System.Collections.Generic; @@ -641,8 +647,13 @@ namespace Spine.Unity { parentBoneScale = Vector2.one; Bone scaleBone = rootMotionBone; while ((scaleBone = scaleBone.Parent) != null) { +#if USE_APPLIED_PARENT_SCALE + parentBoneScale.x *= scaleBone.AScaleX; + parentBoneScale.y *= scaleBone.AScaleY; +#else parentBoneScale.x *= scaleBone.ScaleX; parentBoneScale.y *= scaleBone.ScaleY; +#endif } totalScale = Vector2.Scale(totalScale, parentBoneScale); totalScale *= AdditionalScale; diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index 5150344c7..4e722c65b 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.2.77", + "version": "4.2.78", "unity": "2018.3", "author": { "name": "Esoteric Software", From ff32e3ebb8d0a13cb342f4c43d0c72e1c223d137 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 17 Jul 2024 16:57:15 +0200 Subject: [PATCH 060/215] Add sample that renders many SpineViews at once --- .../esotericsoftware/spine/MainActivity.kt | 10 +- .../com/esotericsoftware/spine/TheBoys.kt | 116 ++++++++++++++++++ 2 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt index 320041933..a2cf0889c 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt @@ -66,7 +66,8 @@ fun AppContent() { Destination.DebugRendering, Destination.DressUp, Destination.IKFollowing, - Destination.Physics + Destination.Physics, + Destination.TheBoys ), paddingValues ) @@ -114,6 +115,12 @@ fun AppContent() { ) { Physics(navController) } + + composable( + Destination.TheBoys.route + ) { + TheBoys(navController) + } } } } @@ -181,4 +188,5 @@ sealed class Destination(val route: String, val title: String) { data object DressUp : Destination("dressUp", "Dress Up") data object IKFollowing : Destination("ikFollowing", "IK Following") data object Physics: Destination("physics", "Physics (drag anywhere)") + data object TheBoys: Destination("theBoys", "100 Spine Boys") } diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt new file mode 100644 index 000000000..73aa5d97d --- /dev/null +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt @@ -0,0 +1,116 @@ +package com.esotericsoftware.spine + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.ArrowBack +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.scale +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.layout.onGloballyPositioned +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.toSize +import androidx.compose.ui.viewinterop.AndroidView +import androidx.navigation.NavHostController +import com.esotericsoftware.spine.android.AndroidSkeletonDrawable +import com.esotericsoftware.spine.android.AndroidTextureAtlas +import com.esotericsoftware.spine.android.SpineController +import com.esotericsoftware.spine.android.SpineView +import com.esotericsoftware.spine.android.utils.SkeletonDataUtils +import kotlin.random.Random + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun TheBoys(nav: NavHostController) { + Scaffold( + topBar = { + TopAppBar( + title = { Text(text = Destination.TheBoys.title) }, + navigationIcon = { + IconButton({ nav.navigateUp() }) { + Icon( + Icons.Rounded.ArrowBack, + null, + ) + } + } + ) + } + ) { paddingValues -> + var viewportSize by remember { mutableStateOf(Size.Zero) } + + Box( + modifier = Modifier + .padding(paddingValues) + .fillMaxSize() + .onGloballyPositioned { coordinates -> + viewportSize = coordinates.size.toSize() + } + ) { + if (viewportSize != Size.Zero) { + val contentSize = Size(viewportSize.width * 2, viewportSize.height * 2) + + val context = LocalContext.current + val cachedAtlas = remember { AndroidTextureAtlas.fromAsset("spineboy.atlas", context) } + val cachedSkeletonData = remember { SkeletonDataUtils.fromAsset(cachedAtlas, "spineboy-pro.json", context) } + + val spineboys = remember { + val rng = Random(System.currentTimeMillis()) + List(100) { + val scale = 0.1f + rng.nextFloat() * 0.2f + val position = Offset(rng.nextFloat() * contentSize.width, rng.nextFloat() * contentSize.height) + SpineBoyData(scale, position, "walk") + } + } + + Box( + modifier = Modifier + .size(contentSize.width.dp, contentSize.height.dp) + ) { + spineboys.forEach { spineBoyData -> + AndroidView( + modifier = Modifier + .scale(spineBoyData.scale) + .offset( + -(contentSize.width / 2).dp + spineBoyData.position.x.dp, + -(contentSize.height / 2).dp + spineBoyData.position.y.dp + ), + factory = { ctx -> + SpineView.loadFromDrawable( + AndroidSkeletonDrawable(cachedAtlas, cachedSkeletonData), + ctx, + SpineController { + it.animationState.setAnimation(0, spineBoyData.animation, true) + } + ) + }, + ) + } + } + } + } + } +} + +data class SpineBoyData( + val scale: Float, + val position: Offset, + val animation: String +) + From b1fe837e8ad9b391a151738685ebe01ffd3f8f9e Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Wed, 17 Jul 2024 18:24:59 +0200 Subject: [PATCH 061/215] [unity] Fixed SkeletonGraphic MatchRectTransformWithBounds wrong scale with layoutScaleMode. Closes #2577. --- .../Runtime/spine-unity/Components/SkeletonGraphic.cs | 8 +++++--- spine-unity/Assets/Spine/package.json | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs index 82b49e147..9c88ff382 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs @@ -93,6 +93,7 @@ namespace Spine.Unity { /// Offset relative to the pivot position, before potential layout scale is applied. [SerializeField] protected Vector2 pivotOffset = Vector2.zero; [SerializeField] protected float referenceScale = 1f; + [SerializeField] protected float layoutScale = 1f; #if UNITY_EDITOR protected LayoutMode previousLayoutScaleMode = LayoutMode.None; [SerializeField] protected Vector2 rectTransformSize = Vector2.zero; @@ -742,8 +743,9 @@ namespace Spine.Unity { SetRectTransformSize(submeshGraphic, size); submeshGraphic.rectTransform.pivot = p; } - this.referenceSize = size; + referenceScale = referenceScale * layoutScale; + layoutScale = 1f; } public static void SetRectTransformSize (Graphic target, Vector2 size) { @@ -943,7 +945,7 @@ namespace Spine.Unity { meshScale = (canvas == null) ? 100 : canvas.referencePixelsPerUnit; if (layoutScaleMode != LayoutMode.None) { meshScale *= referenceScale; - float layoutScale = GetLayoutScale(layoutScaleMode); + layoutScale = GetLayoutScale(layoutScaleMode); if (!EditReferenceRect) { meshScale *= layoutScale; } @@ -1043,7 +1045,7 @@ namespace Spine.Unity { meshScale = (canvas == null) ? 100 : canvas.referencePixelsPerUnit; if (layoutScaleMode != LayoutMode.None) { meshScale *= referenceScale; - float layoutScale = GetLayoutScale(layoutScaleMode); + layoutScale = GetLayoutScale(layoutScaleMode); if (!EditReferenceRect) { meshScale *= layoutScale; } diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index 4e722c65b..07004553a 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.2.78", + "version": "4.2.79", "unity": "2018.3", "author": { "name": "Esoteric Software", From 2e5c1c9ff09717b6347df16d4f1995e5517c1c66 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Thu, 18 Jul 2024 11:01:56 +0200 Subject: [PATCH 062/215] Move view around --- .../com/esotericsoftware/spine/TheBoys.kt | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt index 73aa5d97d..f4cef243e 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt @@ -1,5 +1,8 @@ package com.esotericsoftware.spine +import android.view.View +import androidx.compose.foundation.background +import androidx.compose.foundation.gestures.detectDragGestures import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.offset @@ -15,15 +18,20 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.draw.scale import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.toSize import androidx.compose.ui.viewinterop.AndroidView @@ -54,17 +62,27 @@ fun TheBoys(nav: NavHostController) { } ) { paddingValues -> var viewportSize by remember { mutableStateOf(Size.Zero) } + val offsetX = remember { mutableFloatStateOf(0f) } + val offsetY = remember { mutableFloatStateOf(0f) } Box( modifier = Modifier .padding(paddingValues) .fillMaxSize() + .clipToBounds() .onGloballyPositioned { coordinates -> viewportSize = coordinates.size.toSize() } + .pointerInput(Unit) { + detectDragGestures { change, dragAmount -> + change.consume() + offsetX.floatValue += dragAmount.x + offsetY.floatValue += dragAmount.y + } + } ) { if (viewportSize != Size.Zero) { - val contentSize = Size(viewportSize.width * 2, viewportSize.height * 2) + val contentSize = viewportSize * 4f val context = LocalContext.current val cachedAtlas = remember { AndroidTextureAtlas.fromAsset("spineboy.atlas", context) } @@ -72,25 +90,24 @@ fun TheBoys(nav: NavHostController) { val spineboys = remember { val rng = Random(System.currentTimeMillis()) - List(100) { + List(100) { index -> val scale = 0.1f + rng.nextFloat() * 0.2f val position = Offset(rng.nextFloat() * contentSize.width, rng.nextFloat() * contentSize.height) - SpineBoyData(scale, position, "walk") + SpineBoyData(scale, position, if (index == 99) "hoverboard" else "walk") } } - Box( - modifier = Modifier - .size(contentSize.width.dp, contentSize.height.dp) - ) { - spineboys.forEach { spineBoyData -> + spineboys.forEach { spineBoyData -> + Box(modifier = Modifier + .offset { + IntOffset( + (-(contentSize.width / 2) + spineBoyData.position.x + offsetX.floatValue.toInt()).toInt(), + (-(contentSize.height / 2) + spineBoyData.position.y + offsetY.floatValue.toInt()).toInt(), + ) + } + .scale(spineBoyData.scale) + ) { AndroidView( - modifier = Modifier - .scale(spineBoyData.scale) - .offset( - -(contentSize.width / 2).dp + spineBoyData.position.x.dp, - -(contentSize.height / 2).dp + spineBoyData.position.y.dp - ), factory = { ctx -> SpineView.loadFromDrawable( AndroidSkeletonDrawable(cachedAtlas, cachedSkeletonData), From ebc7bc9cfcae4ccd0f394172bf7acd360b8d3b41 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Thu, 18 Jul 2024 12:27:30 +0200 Subject: [PATCH 063/215] Finish `DisableRendering` sample and add `isRendering` flag to `SpineView` --- .../spine/DisableRendering.kt | 196 ++++++++++++++++++ .../esotericsoftware/spine/MainActivity.kt | 9 +- .../com/esotericsoftware/spine/TheBoys.kt | 133 ------------ .../spine/android/SpineController.java | 24 ++- .../spine/android/SpineView.java | 18 +- 5 files changed, 239 insertions(+), 141 deletions(-) create mode 100644 spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt delete mode 100644 spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt new file mode 100644 index 000000000..c3ba09153 --- /dev/null +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt @@ -0,0 +1,196 @@ +package com.esotericsoftware.spine + +import androidx.compose.foundation.background +import androidx.compose.foundation.gestures.detectDragGestures +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.ArrowBack +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clipToBounds +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.layout.onGloballyPositioned +import androidx.compose.ui.layout.positionInParent +import androidx.compose.ui.layout.positionInRoot +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.IntOffset +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.toSize +import androidx.compose.ui.viewinterop.AndroidView +import androidx.navigation.NavHostController +import com.esotericsoftware.spine.android.AndroidSkeletonDrawable +import com.esotericsoftware.spine.android.AndroidTextureAtlas +import com.esotericsoftware.spine.android.SpineController +import com.esotericsoftware.spine.android.SpineView +import com.esotericsoftware.spine.android.utils.SkeletonDataUtils +import kotlin.random.Random + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun DisableRendering(nav: NavHostController) { + Scaffold( + topBar = { + TopAppBar( + title = { Text(text = Destination.DisableRendering.title) }, + navigationIcon = { + IconButton({ nav.navigateUp() }) { + Icon( + Icons.Rounded.ArrowBack, + null, + ) + } + } + ) + } + ) { paddingValues -> + Column( + modifier = Modifier + .padding(paddingValues) + .padding() + .onGloballyPositioned { coordinates -> + print(coordinates.size.toSize()) + } + ) { + Column( + modifier = Modifier + .padding(8.dp) + ) { + Text("Scroll spine boys out of the viewport") + Text("Rendering is disabled when the spine view moves out of the viewport, preserving CPU/GPU resources.") + } + SpineBoys() + } + } +} + +@Composable +fun SpineBoys() { + var boxSize by remember { mutableStateOf(Size.Zero) } + val offsetX = remember { mutableFloatStateOf(0f) } + val offsetY = remember { mutableFloatStateOf(0f) } + + Box( + modifier = Modifier + .fillMaxSize() + .clipToBounds() + .onGloballyPositioned { coordinates -> + boxSize = coordinates.size.toSize() + } + .pointerInput(Unit) { + detectDragGestures { change, dragAmount -> + change.consume() + offsetX.floatValue += dragAmount.x + offsetY.floatValue += dragAmount.y + } + } + ) { + if (boxSize != Size.Zero) { + val contentSize = boxSize * 4f + + val context = LocalContext.current + val cachedAtlas = + remember { AndroidTextureAtlas.fromAsset("spineboy.atlas", context) } + val cachedSkeletonData = remember { + SkeletonDataUtils.fromAsset( + cachedAtlas, + "spineboy-pro.json", + context + ) + } + + val spineboys = remember { + val rng = Random(System.currentTimeMillis()) + List(100) { index -> + val scale = 0.1f + rng.nextFloat() * 0.2f + val position = Offset( + rng.nextFloat() * contentSize.width, + rng.nextFloat() * contentSize.height + ) + SpineBoyData( + index, + scale, + position, + if (index == 99) "hoverboard" else "walk" + ) + } + } + + spineboys.forEach { spineBoyData -> + + val isSpineBoyVisible = remember { mutableStateOf(false) } + + Box(modifier = Modifier + .offset { + IntOffset( + (-(contentSize.width / 2) + spineBoyData.position.x + offsetX.floatValue.toInt()).toInt(), + (-(contentSize.height / 2) + spineBoyData.position.y + offsetY.floatValue.toInt()).toInt(), + ) + } + .size( + (boxSize.width * spineBoyData.scale).dp, + (boxSize.height * spineBoyData.scale).dp + ) + .onGloballyPositioned { coordinates -> + val positionInRoot = coordinates.positionInParent() + val size = coordinates.size.toSize() + + val isInViewport = positionInRoot.x < boxSize.width && + positionInRoot.x + size.width > 0 && + positionInRoot.y < boxSize.height && + positionInRoot.y + size.height > 0 + + isSpineBoyVisible.value = isInViewport + } + ) { + AndroidView( + factory = { ctx -> + SpineView.loadFromDrawable( + AndroidSkeletonDrawable(cachedAtlas, cachedSkeletonData), + ctx, + SpineController { + it.animationState.setAnimation( + 0, + spineBoyData.animation, + true + ) + } + ).apply { + isRendering = false + } + }, + update = { view -> + view.isRendering = isSpineBoyVisible.value + } + ) + } + } + } + } +} + +data class SpineBoyData( + val id: Int, + val scale: Float, + val position: Offset, + val animation: String +) + diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt index a2cf0889c..07622c199 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt @@ -20,7 +20,6 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost @@ -67,7 +66,7 @@ fun AppContent() { Destination.DressUp, Destination.IKFollowing, Destination.Physics, - Destination.TheBoys + Destination.DisableRendering ), paddingValues ) @@ -117,9 +116,9 @@ fun AppContent() { } composable( - Destination.TheBoys.route + Destination.DisableRendering.route ) { - TheBoys(navController) + DisableRendering(navController) } } } @@ -188,5 +187,5 @@ sealed class Destination(val route: String, val title: String) { data object DressUp : Destination("dressUp", "Dress Up") data object IKFollowing : Destination("ikFollowing", "IK Following") data object Physics: Destination("physics", "Physics (drag anywhere)") - data object TheBoys: Destination("theBoys", "100 Spine Boys") + data object DisableRendering: Destination("disableRendering", "Disable Rendering") } diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt deleted file mode 100644 index f4cef243e..000000000 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/TheBoys.kt +++ /dev/null @@ -1,133 +0,0 @@ -package com.esotericsoftware.spine - -import android.view.View -import androidx.compose.foundation.background -import androidx.compose.foundation.gestures.detectDragGestures -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.offset -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.ArrowBack -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBar -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableFloatStateOf -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clipToBounds -import androidx.compose.ui.draw.scale -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.geometry.Size -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.input.pointer.pointerInput -import androidx.compose.ui.layout.onGloballyPositioned -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.unit.IntOffset -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.toSize -import androidx.compose.ui.viewinterop.AndroidView -import androidx.navigation.NavHostController -import com.esotericsoftware.spine.android.AndroidSkeletonDrawable -import com.esotericsoftware.spine.android.AndroidTextureAtlas -import com.esotericsoftware.spine.android.SpineController -import com.esotericsoftware.spine.android.SpineView -import com.esotericsoftware.spine.android.utils.SkeletonDataUtils -import kotlin.random.Random - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -fun TheBoys(nav: NavHostController) { - Scaffold( - topBar = { - TopAppBar( - title = { Text(text = Destination.TheBoys.title) }, - navigationIcon = { - IconButton({ nav.navigateUp() }) { - Icon( - Icons.Rounded.ArrowBack, - null, - ) - } - } - ) - } - ) { paddingValues -> - var viewportSize by remember { mutableStateOf(Size.Zero) } - val offsetX = remember { mutableFloatStateOf(0f) } - val offsetY = remember { mutableFloatStateOf(0f) } - - Box( - modifier = Modifier - .padding(paddingValues) - .fillMaxSize() - .clipToBounds() - .onGloballyPositioned { coordinates -> - viewportSize = coordinates.size.toSize() - } - .pointerInput(Unit) { - detectDragGestures { change, dragAmount -> - change.consume() - offsetX.floatValue += dragAmount.x - offsetY.floatValue += dragAmount.y - } - } - ) { - if (viewportSize != Size.Zero) { - val contentSize = viewportSize * 4f - - val context = LocalContext.current - val cachedAtlas = remember { AndroidTextureAtlas.fromAsset("spineboy.atlas", context) } - val cachedSkeletonData = remember { SkeletonDataUtils.fromAsset(cachedAtlas, "spineboy-pro.json", context) } - - val spineboys = remember { - val rng = Random(System.currentTimeMillis()) - List(100) { index -> - val scale = 0.1f + rng.nextFloat() * 0.2f - val position = Offset(rng.nextFloat() * contentSize.width, rng.nextFloat() * contentSize.height) - SpineBoyData(scale, position, if (index == 99) "hoverboard" else "walk") - } - } - - spineboys.forEach { spineBoyData -> - Box(modifier = Modifier - .offset { - IntOffset( - (-(contentSize.width / 2) + spineBoyData.position.x + offsetX.floatValue.toInt()).toInt(), - (-(contentSize.height / 2) + spineBoyData.position.y + offsetY.floatValue.toInt()).toInt(), - ) - } - .scale(spineBoyData.scale) - ) { - AndroidView( - factory = { ctx -> - SpineView.loadFromDrawable( - AndroidSkeletonDrawable(cachedAtlas, cachedSkeletonData), - ctx, - SpineController { - it.animationState.setAnimation(0, spineBoyData.animation, true) - } - ) - }, - ) - } - } - } - } - } -} - -data class SpineBoyData( - val scale: Float, - val position: Offset, - val animation: String -) - diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java index 48b6efe12..5a5799438 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java @@ -119,11 +119,15 @@ public class SpineController { } public void pause() { - playing = false; + if (playing) { + playing = false; + } } public void resume() { - playing = true; + if (!playing) { + playing = true; + } } public Point toSkeletonCoordinates(Point position) { @@ -132,6 +136,22 @@ public class SpineController { return new Point((int) (x / scaleX - offsetX), (int) (y / scaleY - offsetY)); } + public void setOnBeforeUpdateWorldTransforms(@Nullable SpineControllerCallback onBeforeUpdateWorldTransforms) { + this.onBeforeUpdateWorldTransforms = onBeforeUpdateWorldTransforms; + } + + public void setOnAfterUpdateWorldTransforms(@Nullable SpineControllerCallback onAfterUpdateWorldTransforms) { + this.onAfterUpdateWorldTransforms = onAfterUpdateWorldTransforms; + } + + public void setOnBeforePaint(@Nullable SpineControllerBeforePaintCallback onBeforePaint) { + this.onBeforePaint = onBeforePaint; + } + + public void setOnAfterPaint(@Nullable SpineControllerAfterPaintCallback onAfterPaint) { + this.onAfterPaint = onAfterPaint; + } + protected void setCoordinateTransform(double offsetX, double offsetY, double scaleX, double scaleY) { this.offsetX = offsetX; this.offsetY = offsetY; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index 1d6174235..498034610 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -42,13 +42,20 @@ import android.graphics.Canvas; import android.os.Handler; import android.os.Looper; import android.util.AttributeSet; +import android.util.Log; import android.view.Choreographer; import android.view.View; import androidx.annotation.NonNull; +import java.io.Console; import java.io.File; import java.net.URL; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; +import java.util.Timer; +import java.util.TimerTask; public class SpineView extends View implements Choreographer.FrameCallback { @@ -138,6 +145,7 @@ public class SpineView extends View implements Choreographer.FrameCallback { private float x = 0; private float y = 0; private final SkeletonRenderer renderer = new SkeletonRenderer(); + private Boolean rendering = true; private Bounds computedBounds = new Bounds(); private SpineController controller; @@ -235,6 +243,14 @@ public class SpineView extends View implements Choreographer.FrameCallback { updateCanvasTransform(); } + public Boolean isRendering() { + return rendering; + } + + public void setRendering(Boolean rendering) { + this.rendering = rendering; + } + private void loadFrom(AndroidSkeletonDrawableLoader loader) { Handler mainHandler = new Handler(Looper.getMainLooper()); Thread backgroundThread = new Thread(() -> { @@ -253,7 +269,7 @@ public class SpineView extends View implements Choreographer.FrameCallback { @Override public void onDraw (@NonNull Canvas canvas) { super.onDraw(canvas); - if (controller == null || !controller.isInitialized()) { + if (controller == null || !controller.isInitialized() || !rendering) { return; } From 04f28b9e4f36d0f48459726df25b183f191187ec Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Thu, 18 Jul 2024 13:57:30 +0200 Subject: [PATCH 064/215] Show number of visible spineboys in Disable Rendering sample --- .../spine/DisableRendering.kt | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt index c3ba09153..4bde10f14 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt @@ -1,6 +1,5 @@ package com.esotericsoftware.spine -import androidx.compose.foundation.background import androidx.compose.foundation.gestures.detectDragGestures import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -19,6 +18,7 @@ import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue @@ -26,11 +26,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size -import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.layout.positionInParent -import androidx.compose.ui.layout.positionInRoot import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp @@ -62,6 +60,11 @@ fun DisableRendering(nav: NavHostController) { ) } ) { paddingValues -> + + val visibleSpineBoys = remember { + mutableStateListOf() + } + Column( modifier = Modifier .padding(paddingValues) @@ -74,16 +77,16 @@ fun DisableRendering(nav: NavHostController) { modifier = Modifier .padding(8.dp) ) { - Text("Scroll spine boys out of the viewport") + Text("Scroll ${visibleSpineBoys.count()} spine boys out of the viewport") Text("Rendering is disabled when the spine view moves out of the viewport, preserving CPU/GPU resources.") } - SpineBoys() + SpineBoys(visibleSpineBoys) } } } @Composable -fun SpineBoys() { +fun SpineBoys(visibleSpineBoys: MutableList) { var boxSize by remember { mutableStateOf(Size.Zero) } val offsetX = remember { mutableFloatStateOf(0f) } val offsetY = remember { mutableFloatStateOf(0f) } @@ -159,6 +162,15 @@ fun SpineBoys() { positionInRoot.y + size.height > 0 isSpineBoyVisible.value = isInViewport + + val visibleSpineBoysAsSet = visibleSpineBoys.toMutableSet() + if (isInViewport) { + visibleSpineBoysAsSet.add(spineBoyData.id) + } else { + visibleSpineBoysAsSet.remove(spineBoyData.id) + } + visibleSpineBoys.clear() + visibleSpineBoys.addAll(visibleSpineBoysAsSet) } ) { AndroidView( @@ -193,4 +205,3 @@ data class SpineBoyData( val position: Offset, val animation: String ) - From 6f0e1998188434275a989118c52e00f3a1acb7dc Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Thu, 18 Jul 2024 14:03:19 +0200 Subject: [PATCH 065/215] Update text --- .../main/java/com/esotericsoftware/spine/DisableRendering.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt index 4bde10f14..b247958c3 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.layout.positionInParent @@ -77,8 +78,8 @@ fun DisableRendering(nav: NavHostController) { modifier = Modifier .padding(8.dp) ) { - Text("Scroll ${visibleSpineBoys.count()} spine boys out of the viewport") - Text("Rendering is disabled when the spine view moves out of the viewport, preserving CPU/GPU resources.") + Text("There are ${visibleSpineBoys.count()} spine boys visible. Scroll around to find the odd one out...") + Text("Rendering is disabled when the spine view moves out of the viewport, preserving CPU/GPU resources.", color = Color.Gray) } SpineBoys(visibleSpineBoys) } From 7fa52fc8492e809a1d06a06ade19f9d96d078fd7 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Thu, 18 Jul 2024 14:42:29 +0200 Subject: [PATCH 066/215] Make dependencies non-transitive --- spine-android/app/build.gradle.kts | 4 ---- spine-android/gradle/libs.versions.toml | 2 -- spine-android/spine-android/build.gradle.kts | 6 +++--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/spine-android/app/build.gradle.kts b/spine-android/app/build.gradle.kts index bb87218aa..954c5ae8b 100644 --- a/spine-android/app/build.gradle.kts +++ b/spine-android/app/build.gradle.kts @@ -71,8 +71,4 @@ dependencies { debugImplementation(libs.androidx.ui.test.manifest) implementation(project(":spine-android")) - - // TODO Check if we really need to import `spine-libgdx` in addition to `spine-android`? - implementation("com.badlogicgames.gdx:gdx:1.12.2-SNAPSHOT") - implementation("com.esotericsoftware.spine:spine-libgdx:4.2.0") } diff --git a/spine-android/gradle/libs.versions.toml b/spine-android/gradle/libs.versions.toml index c971f0f64..a3d4d9156 100644 --- a/spine-android/gradle/libs.versions.toml +++ b/spine-android/gradle/libs.versions.toml @@ -9,7 +9,6 @@ lifecycleRuntimeKtx = "2.6.1" activityCompose = "1.7.0" composeBom = "2023.08.00" appcompat = "1.6.1" -material = "1.10.0" navigationCompose = "2.7.7" appcompatVersion = "1.7.0" @@ -29,7 +28,6 @@ androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-man androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-material3 = { group = "androidx.compose.material3", name = "material3" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } -material = { group = "com.google.android.material", name = "material", version.ref = "material" } androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationCompose" } appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompatVersion" } diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index fcc635a10..c5c04c6b0 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -31,9 +31,9 @@ android { dependencies { implementation(libs.androidx.appcompat) - implementation(libs.material) - implementation("com.badlogicgames.gdx:gdx:1.12.2-SNAPSHOT") - implementation("com.esotericsoftware.spine:spine-libgdx:4.2.0") + api("com.badlogicgames.gdx:gdx:1.12.2-SNAPSHOT") + api("com.esotericsoftware.spine:spine-libgdx:4.2.0") + testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) From ea1929824fd2b90d2b7e64040bdc7129e3858784 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 18 Jul 2024 16:06:18 +0200 Subject: [PATCH 067/215] [unity] URP Shaders: Exposed `Stencil Comparison` parameter on URP blend mode shaders. --- .../Shaders/2D/BlendModes/Spine-Skeleton-Additive-URP-2D.shader | 2 +- .../Shaders/2D/BlendModes/Spine-Skeleton-Multiply-URP-2D.shader | 2 +- .../Shaders/2D/BlendModes/Spine-Skeleton-Screen-URP-2D.shader | 2 +- .../Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader | 2 +- .../Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader | 2 +- .../Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader | 2 +- .../Modules/com.esotericsoftware.spine.urp-shaders/package.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Additive-URP-2D.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Additive-URP-2D.shader index 1fe8f8510..85be28e21 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Additive-URP-2D.shader +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Additive-URP-2D.shader @@ -7,7 +7,7 @@ [MaterialToggle(_TINT_BLACK_ON)] _TintBlack("Tint Black", Float) = 0 _Black(" Dark Color", Color) = (0,0,0,0) [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 - [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default } SubShader { diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Multiply-URP-2D.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Multiply-URP-2D.shader index 17048d9e2..97a3c1302 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Multiply-URP-2D.shader +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Multiply-URP-2D.shader @@ -7,7 +7,7 @@ [MaterialToggle(_TINT_BLACK_ON)] _TintBlack("Tint Black", Float) = 0 _Black(" Dark Color", Color) = (0,0,0,0) [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 - [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default } SubShader { diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Screen-URP-2D.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Screen-URP-2D.shader index 159d74a1e..26350562b 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Screen-URP-2D.shader +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Screen-URP-2D.shader @@ -7,7 +7,7 @@ [MaterialToggle(_TINT_BLACK_ON)] _TintBlack("Tint Black", Float) = 0 _Black(" Dark Color", Color) = (0,0,0,0) [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 - [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default } SubShader { diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader index a99c16785..62a7c11a9 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader @@ -7,7 +7,7 @@ [MaterialToggle(_TINT_BLACK_ON)] _TintBlack("Tint Black", Float) = 0 _Black(" Dark Color", Color) = (0,0,0,0) [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 - [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default } SubShader { diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader index 80302211d..ad6e8c520 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader @@ -7,7 +7,7 @@ [MaterialToggle(_TINT_BLACK_ON)] _TintBlack("Tint Black", Float) = 0 _Black(" Dark Color", Color) = (0,0,0,0) [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 - [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default } SubShader { diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader index 2e200e3c6..003845bd5 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader @@ -7,7 +7,7 @@ [MaterialToggle(_TINT_BLACK_ON)] _TintBlack("Tint Black", Float) = 0 _Black(" Dark Color", Color) = (0,0,0,0) [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 - [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default } SubShader { diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json index 60dadd51b..c01f8bcc4 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.urp-shaders", "displayName": "Spine Universal RP Shaders", "description": "This plugin provides universal render pipeline (URP) shaders for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.2.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", - "version": "4.2.35", + "version": "4.2.36", "unity": "2019.3", "author": { "name": "Esoteric Software", From 840c838666ee2e716b3f6b533d36d6e1ecd7ed6e Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Thu, 18 Jul 2024 16:35:58 +0200 Subject: [PATCH 068/215] Publish to local maven repo --- spine-android/app/build.gradle.kts | 2 + spine-android/settings.gradle.kts | 1 + spine-android/spine-android/build.gradle.kts | 39 +++++++++++++++++++- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/spine-android/app/build.gradle.kts b/spine-android/app/build.gradle.kts index 954c5ae8b..586da8e28 100644 --- a/spine-android/app/build.gradle.kts +++ b/spine-android/app/build.gradle.kts @@ -71,4 +71,6 @@ dependencies { debugImplementation(libs.androidx.ui.test.manifest) implementation(project(":spine-android")) + // Run `./gradlew publishToMavenLocal` in `spine-android` to use from local maven repo. +// implementation("com.esotericsoftware:spine-android:4.2") } diff --git a/spine-android/settings.gradle.kts b/spine-android/settings.gradle.kts index 3915bb0fe..8f1932fa2 100644 --- a/spine-android/settings.gradle.kts +++ b/spine-android/settings.gradle.kts @@ -19,6 +19,7 @@ dependencyResolutionManagement { maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") } + mavenLocal() } } diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index c5c04c6b0..82ef214d4 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.androidLibrary) + `maven-publish` } android { @@ -29,7 +30,6 @@ android { } dependencies { - implementation(libs.androidx.appcompat) api("com.badlogicgames.gdx:gdx:1.12.2-SNAPSHOT") api("com.esotericsoftware.spine:spine-libgdx:4.2.0") @@ -37,4 +37,39 @@ dependencies { testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) -} \ No newline at end of file +} + +afterEvaluate { + publishing { + publications { + create("spine-android") { + groupId = "com.esotericsoftware" + artifactId = "spine-android" + version = "4.2" + artifact(tasks.getByName("bundleReleaseAar")) + + pom { + withXml { + val dependenciesNode = asNode().appendNode("dependencies") + configurations.api.get().dependencies.forEach { dependency -> + dependenciesNode.appendNode("dependency").apply { + appendNode("groupId", dependency.group) + appendNode("artifactId", dependency.name) + appendNode("version", dependency.version) + appendNode("scope", "compile") + } + } + configurations.implementation.get().dependencies.forEach { dependency -> + dependenciesNode.appendNode("dependency").apply { + appendNode("groupId", dependency.group) + appendNode("artifactId", dependency.name) + appendNode("version", dependency.version) + appendNode("scope", "runtime") + } + } + } + } + } + } + } +} From 342866268444b5847c46f81ae0711db228ac97b6 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Thu, 18 Jul 2024 16:41:35 +0200 Subject: [PATCH 069/215] rename publication to mavenLocal --- spine-android/spine-android/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index 82ef214d4..9d77b1661 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -42,7 +42,7 @@ dependencies { afterEvaluate { publishing { publications { - create("spine-android") { + create("mavenLocal") { groupId = "com.esotericsoftware" artifactId = "spine-android" version = "4.2" From 093ba489cc175e8912e619603d3b040b83904505 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Fri, 19 Jul 2024 11:09:12 +0200 Subject: [PATCH 070/215] Rename files and document SpineController --- .../spine/android/AndroidTextureAtlas.java | 6 +- .../spine/android/SpineController.java | 125 +++++++++++++++++- .../spine/android/SpineView.java | 9 +- .../AndroidSkeletonDrawableLoader.java | 2 +- .../SpineControllerAfterPaintCallback.java | 2 +- .../SpineControllerBeforePaintCallback.java | 2 +- .../SpineControllerCallback.java | 2 +- .../{SpineHttpUtils.java => HttpUtils.java} | 2 +- .../android/utils/SkeletonDataUtils.java | 5 +- 9 files changed, 131 insertions(+), 24 deletions(-) rename spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/{utils => callbacks}/AndroidSkeletonDrawableLoader.java (76%) rename spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/{utils => callbacks}/SpineControllerAfterPaintCallback.java (88%) rename spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/{utils => callbacks}/SpineControllerBeforePaintCallback.java (85%) rename spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/{utils => callbacks}/SpineControllerCallback.java (76%) rename spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/{SpineHttpUtils.java => HttpUtils.java} (98%) diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java index a9945f243..17ae46f49 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java @@ -44,7 +44,7 @@ import com.badlogic.gdx.graphics.g2d.TextureAtlas.AtlasRegion; import com.badlogic.gdx.graphics.g2d.TextureAtlas.TextureAtlasData; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Null; -import com.esotericsoftware.spine.android.utils.SpineHttpUtils; +import com.esotericsoftware.spine.android.utils.HttpUtils; import android.content.Context; import android.content.res.AssetManager; @@ -149,7 +149,7 @@ public class AndroidTextureAtlas { } static public AndroidTextureAtlas fromHttp(URL atlasUrl, File targetDirectory) { - File atlasFile = SpineHttpUtils.downloadFrom(atlasUrl, targetDirectory); + File atlasFile = HttpUtils.downloadFrom(atlasUrl, targetDirectory); TextureAtlasData data; try { data = loadTextureAtlasData(atlasFile); @@ -166,7 +166,7 @@ public class AndroidTextureAtlas { File imageFile; try { URL imageUrl = new URL(atlasUrl.getProtocol(), atlasUrl.getHost(), atlasUrl.getPort(), imagePath); - imageFile = SpineHttpUtils.downloadFrom(imageUrl, targetDirectory); + imageFile = HttpUtils.downloadFrom(imageUrl, targetDirectory); } catch (MalformedURLException e) { throw new RuntimeException(e); } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java index 5a5799438..e1b2f0691 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java @@ -10,12 +10,41 @@ import com.esotericsoftware.spine.AnimationState; import com.esotericsoftware.spine.AnimationStateData; import com.esotericsoftware.spine.Skeleton; import com.esotericsoftware.spine.SkeletonData; -import com.esotericsoftware.spine.android.utils.SpineControllerAfterPaintCallback; -import com.esotericsoftware.spine.android.utils.SpineControllerBeforePaintCallback; -import com.esotericsoftware.spine.android.utils.SpineControllerCallback; +import com.esotericsoftware.spine.android.callbacks.SpineControllerAfterPaintCallback; +import com.esotericsoftware.spine.android.callbacks.SpineControllerBeforePaintCallback; +import com.esotericsoftware.spine.android.callbacks.SpineControllerCallback; +/** + * Controls how the skeleton of a {@link SpineView} is animated and rendered. + * + * Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback method is called once. This method can be used + * to set up the initial animation(s) of the skeleton, among other things. + * + * After initialization is complete, the {@link SpineView} is rendered at the screen refresh rate. In each frame, + * the {@link AnimationState} is updated and applied to the {@link Skeleton}. + * + * Next, the optionally provided method {@code onBeforeUpdateWorldTransforms} is called, which can modify the + * skeleton before its current pose is calculated using {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. After + * {@link Skeleton#updateWorldTransform(Skeleton.Physics)} has completed, the optional {@code onAfterUpdateWorldTransforms} method is + * called, which can modify the current pose before rendering the skeleton. + * + * Before the skeleton's current pose is rendered by the {@link SpineView}, the optional {@code onBeforePaint} is called, + * which allows rendering backgrounds or other objects that should go behind the skeleton on the {@link Canvas}. The + * {@link SpineView} then renders the skeleton's current pose and finally calls the optional {@code onAfterPaint}, which + * can render additional objects on top of the skeleton. + * + * The underlying {@link AndroidTextureAtlas}, {@link SkeletonData}, {@link Skeleton}, {@link AnimationStateData}, {@link AnimationState}, and {@link AndroidSkeletonDrawable} + * can be accessed through their respective getters to inspect and/or modify the skeleton and its associated data. Accessing + * this data is only allowed if the {@link SpineView} and its data have been initialized and have not been disposed of yet. + * + * By default, the widget updates and renders the skeleton every frame. The {@code pause} method can be used to pause updating + * and rendering the skeleton. The {@link SpineController#resume()} method resumes updating and rendering the skeleton. The {@link SpineController#isPlaying()} getter + * reports the current state. + */ public class SpineController { - + /** + * Used to create a {@link SpineController} instance. + * */ public static class Builder { private final SpineControllerCallback onInitialized; private SpineControllerCallback onBeforeUpdateWorldTransforms; @@ -23,25 +52,51 @@ public class SpineController { private SpineControllerBeforePaintCallback onBeforePaint; private SpineControllerAfterPaintCallback onAfterPaint; + /** + * Instantiate a {@link Builder} for {@link SpineController}, which controls how the skeleton of a {@link SpineView} + * is animated and rendered. Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback + * method is called once. This method can be used to set up the initial animation(s) of the skeleton, among other things. + * + * @param onInitialized Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback + * method is called once. This method can be used to set up the initial animation(s) of the skeleton, + * among other things. + */ public Builder(SpineControllerCallback onInitialized) { this.onInitialized = onInitialized; } + /** + * Sets the {@code onBeforeUpdateWorldTransforms} callback. It is called before the skeleton's current pose is calculated + * using {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the skeleton before the pose calculation. + */ public Builder setOnBeforeUpdateWorldTransforms(SpineControllerCallback onBeforeUpdateWorldTransforms) { this.onBeforeUpdateWorldTransforms = onBeforeUpdateWorldTransforms; return this; } + /** + * Sets the {@code onAfterUpdateWorldTransforms} callback. This method is called after the skeleton's current pose is calculated using + * {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the current pose before rendering the skeleton. + */ public Builder setOnAfterUpdateWorldTransforms(SpineControllerCallback onAfterUpdateWorldTransforms) { this.onAfterUpdateWorldTransforms = onAfterUpdateWorldTransforms; return this; } + /** + * Sets the {@code onBeforePaint} callback. It is called before the skeleton's current pose is rendered by the + * {@link SpineView}. It allows rendering backgrounds or other objects that should go behind the skeleton on the + * {@link Canvas}. + */ public Builder setOnBeforePaint(SpineControllerBeforePaintCallback onBeforePaint) { this.onBeforePaint = onBeforePaint; return this; } + /** + * Sets the {@code onAfterPaint} callback. It is called after the skeleton's current pose is rendered by the + * {@link SpineView}. It allows rendering additional objects on top of the skeleton. + */ public Builder setOnAfterPaint(SpineControllerAfterPaintCallback onAfterPaint) { this.onAfterPaint = onAfterPaint; return this; @@ -69,6 +124,15 @@ public class SpineController { private double scaleX = 1; private double scaleY = 1; + /** + * Instantiate a {@link SpineController}, which controls how the skeleton of a {@link SpineView} is animated and rendered. + * Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback method is called once. + * This method can be used to set up the initial animation(s) of the skeleton, among other things. + * + * @param onInitialized Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback + * method is called once. This method can be used to set up the initial animation(s) of the skeleton, + * among other things. + */ public SpineController(SpineControllerCallback onInitialized) { this.onInitialized = onInitialized; } @@ -80,74 +144,127 @@ public class SpineController { } } + /** + * The {@link AndroidTextureAtlas} from which images to render the skeleton are sourced. + */ public AndroidTextureAtlas getAtlas() { if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); return drawable.getAtlas(); } + /** + * The setup-pose data used by the skeleton. + */ public SkeletonData getSkeletonDate() { if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); return drawable.getSkeletonData(); } + /** + * The {@link Skeleton}. + */ public Skeleton getSkeleton() { if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); return drawable.getSkeleton(); } + /** + * The mixing information used by the {@link AnimationState}. + */ public AnimationStateData getAnimationStateData() { if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); return drawable.getAnimationStateData(); } + /** + * The {@link AnimationState} used to manage animations that are being applied to the + * skeleton. + */ public AnimationState getAnimationState() { if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); return drawable.getAnimationState(); } + /** + * The {@link AndroidSkeletonDrawable}. + */ public AndroidSkeletonDrawable getDrawable() { if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); return drawable; } + /** + * Checks if the {@link SpineView} is initialized. + */ public boolean isInitialized() { return drawable != null; } + /** + * Checks if the animation is currently playing. + */ public boolean isPlaying() { return playing; } + /** + * Pauses updating and rendering the skeleton. + */ public void pause() { if (playing) { playing = false; } } + /** + * Resumes updating and rendering the skeleton. + */ public void resume() { if (!playing) { playing = true; } } + /** + * Transforms the coordinates given in the {@link SpineView} coordinate system in {@code position} to + * the skeleton coordinate system. See the {@code IKFollowing.kt} example for how to use this + * to move a bone based on user touch input. + */ public Point toSkeletonCoordinates(Point position) { int x = position.x; int y = position.y; return new Point((int) (x / scaleX - offsetX), (int) (y / scaleY - offsetY)); } + /** + * Sets the {@code onBeforeUpdateWorldTransforms} callback. It is called before the skeleton's current pose is calculated + * using {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the skeleton before the pose calculation. + */ public void setOnBeforeUpdateWorldTransforms(@Nullable SpineControllerCallback onBeforeUpdateWorldTransforms) { this.onBeforeUpdateWorldTransforms = onBeforeUpdateWorldTransforms; } + /** + * Sets the {@code onAfterUpdateWorldTransforms} callback. This method is called after the skeleton's current pose is calculated using + * {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the current pose before rendering the skeleton. + */ public void setOnAfterUpdateWorldTransforms(@Nullable SpineControllerCallback onAfterUpdateWorldTransforms) { this.onAfterUpdateWorldTransforms = onAfterUpdateWorldTransforms; } + /** + * Sets the {@code onBeforePaint} callback. It is called before the skeleton's current pose is rendered by the + * {@link SpineView}. It allows rendering backgrounds or other objects that should go behind the skeleton on the + * {@link Canvas}. + */ public void setOnBeforePaint(@Nullable SpineControllerBeforePaintCallback onBeforePaint) { this.onBeforePaint = onBeforePaint; } + /** + * Sets the {@code onAfterPaint} callback. It is called after the skeleton's current pose is rendered by the + * {@link SpineView}. It allows rendering additional objects on top of the skeleton. + */ public void setOnAfterPaint(@Nullable SpineControllerAfterPaintCallback onAfterPaint) { this.onAfterPaint = onAfterPaint; } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index 498034610..45cda2277 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -35,27 +35,20 @@ import com.esotericsoftware.spine.android.bounds.Bounds; import com.esotericsoftware.spine.android.bounds.BoundsProvider; import com.esotericsoftware.spine.android.bounds.ContentMode; import com.esotericsoftware.spine.android.bounds.SetupPoseBounds; -import com.esotericsoftware.spine.android.utils.AndroidSkeletonDrawableLoader; +import com.esotericsoftware.spine.android.callbacks.AndroidSkeletonDrawableLoader; import android.content.Context; import android.graphics.Canvas; import android.os.Handler; import android.os.Looper; import android.util.AttributeSet; -import android.util.Log; import android.view.Choreographer; import android.view.View; import androidx.annotation.NonNull; -import java.io.Console; import java.io.File; import java.net.URL; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; -import java.util.Timer; -import java.util.TimerTask; public class SpineView extends View implements Choreographer.FrameCallback { diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/AndroidSkeletonDrawableLoader.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/AndroidSkeletonDrawableLoader.java similarity index 76% rename from spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/AndroidSkeletonDrawableLoader.java rename to spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/AndroidSkeletonDrawableLoader.java index c8f224850..8f1e66da7 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/AndroidSkeletonDrawableLoader.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/AndroidSkeletonDrawableLoader.java @@ -1,4 +1,4 @@ -package com.esotericsoftware.spine.android.utils; +package com.esotericsoftware.spine.android.callbacks; import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineControllerAfterPaintCallback.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerAfterPaintCallback.java similarity index 88% rename from spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineControllerAfterPaintCallback.java rename to spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerAfterPaintCallback.java index 96e824ac8..c61561b20 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineControllerAfterPaintCallback.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerAfterPaintCallback.java @@ -1,4 +1,4 @@ -package com.esotericsoftware.spine.android.utils; +package com.esotericsoftware.spine.android.callbacks; import android.graphics.Canvas; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineControllerBeforePaintCallback.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerBeforePaintCallback.java similarity index 85% rename from spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineControllerBeforePaintCallback.java rename to spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerBeforePaintCallback.java index 16218fda4..5c0791aaa 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineControllerBeforePaintCallback.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerBeforePaintCallback.java @@ -1,4 +1,4 @@ -package com.esotericsoftware.spine.android.utils; +package com.esotericsoftware.spine.android.callbacks; import android.graphics.Canvas; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineControllerCallback.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerCallback.java similarity index 76% rename from spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineControllerCallback.java rename to spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerCallback.java index 56967bfe8..028ec1dc4 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineControllerCallback.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerCallback.java @@ -1,4 +1,4 @@ -package com.esotericsoftware.spine.android.utils; +package com.esotericsoftware.spine.android.callbacks; import com.esotericsoftware.spine.android.SpineController; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineHttpUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java similarity index 98% rename from spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineHttpUtils.java rename to spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java index ca9c0ffc1..81dec32f4 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SpineHttpUtils.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java @@ -12,7 +12,7 @@ import java.net.HttpURLConnection; import java.net.URL; import java.nio.file.Files; -public class SpineHttpUtils { +public class HttpUtils { public static File downloadFrom(URL url, File targetDirectory) throws RuntimeException { HttpURLConnection urlConnection = null; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java index 5d849d274..cbbcb61c3 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java @@ -13,13 +13,10 @@ import com.esotericsoftware.spine.android.AndroidTextureAtlas; import java.io.BufferedInputStream; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; -import kotlin.NotImplementedError; - public class SkeletonDataUtils { public static SkeletonData fromAsset(AndroidTextureAtlas atlas, String skeletonFileName, Context context) { @@ -56,7 +53,7 @@ public class SkeletonDataUtils { } public static SkeletonData fromHttp(AndroidTextureAtlas atlas, URL skeletonUrl, File targetDirectory) { - File skeletonFile = SpineHttpUtils.downloadFrom(skeletonUrl, targetDirectory); + File skeletonFile = HttpUtils.downloadFrom(skeletonUrl, targetDirectory); return fromFile(atlas, skeletonFile); } } From ae5ae1e1a16961c88087b605430c1b1e931b1ca3 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Fri, 19 Jul 2024 11:46:08 +0200 Subject: [PATCH 071/215] Add docs to `SpineView` --- .../spine/android/SpineController.java | 4 +- .../spine/android/SpineView.java | 144 ++++++++++++++++++ 2 files changed, 146 insertions(+), 2 deletions(-) diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java index e1b2f0691..3090570dc 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java @@ -43,7 +43,7 @@ import com.esotericsoftware.spine.android.callbacks.SpineControllerCallback; */ public class SpineController { /** - * Used to create a {@link SpineController} instance. + * Used to build {@link SpineController} instances. * */ public static class Builder { private final SpineControllerCallback onInitialized; @@ -53,7 +53,7 @@ public class SpineController { private SpineControllerAfterPaintCallback onAfterPaint; /** - * Instantiate a {@link Builder} for {@link SpineController}, which controls how the skeleton of a {@link SpineView} + * Instantiate a {@link Builder} used to build a {@link SpineController}, which controls how the skeleton of a {@link SpineView} * is animated and rendered. Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback * method is called once. This method can be used to set up the initial animation(s) of the skeleton, among other things. * diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index 45cda2277..d7828c045 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -36,6 +36,7 @@ import com.esotericsoftware.spine.android.bounds.BoundsProvider; import com.esotericsoftware.spine.android.bounds.ContentMode; import com.esotericsoftware.spine.android.bounds.SetupPoseBounds; import com.esotericsoftware.spine.android.callbacks.AndroidSkeletonDrawableLoader; +import com.esotericsoftware.spine.Skeleton; import android.content.Context; import android.graphics.Canvas; @@ -50,8 +51,20 @@ import androidx.annotation.NonNull; import java.io.File; import java.net.URL; +/** + * A {@link View} to display a Spine skeleton. The skeleton can be loaded from an asset bundle ({@link SpineView#loadFromAssets(String, String, Context, SpineController)}), + * local files ({@link SpineView#loadFromFile(File, File, Context, SpineController)}), URLs ({@link SpineView#loadFromHttp(URL, URL, File, Context, SpineController)}), or a pre-loaded {@link AndroidSkeletonDrawable} using ({@link SpineView#loadFromDrawable(AndroidSkeletonDrawable, Context, SpineController)}). + * + * The skeleton displayed by a {@link SpineView} can be controlled via a {@link SpineController}. + * + * The size of the widget can be derived from the bounds provided by a {@link BoundsProvider}. If the widget is not sized by the bounds + * computed by the {@link BoundsProvider}, the widget will use the computed bounds to fit the skeleton inside the widget's dimensions. + */ public class SpineView extends View implements Choreographer.FrameCallback { + /** + * Used to build {@link SpineView} instances. + * */ public static class Builder { private final Context context; private final SpineController controller; @@ -67,23 +80,41 @@ public class SpineView extends View implements Choreographer.FrameCallback { private Alignment alignment = Alignment.CENTER; private ContentMode contentMode = ContentMode.FIT; + /** + * Instantiate a {@link Builder} used to build a {@link SpineView}, which is a {@link View} to display a Spine skeleton. + * + * @param controller The skeleton displayed by a {@link SpineView} can be controlled via a {@link SpineController}. + */ public Builder(Context context, SpineController controller) { this.context = context; this.controller = controller; } + /** + * Loads assets from your app assets for the {@link SpineView} if set. The {@code atlasFileName} specifies the + * `.atlas` file to be loaded for the images used to render the skeleton. The {@code skeletonFileName} specifies either a Skeleton `.json` or + * `.skel` file containing the skeleton data. + */ public Builder setLoadFromAssets(String atlasFileName, String skeletonFileName) { this.atlasFileName = atlasFileName; this.skeletonFileName = skeletonFileName; return this; } + /** + * Loads assets from files for the {@link SpineView} if set. The {@code atlasFile} specifies the `.atlas` file to be loaded for the images used to render + * the skeleton. The {@code skeletonFile} specifies either a Skeleton `.json` or `.skel` file containing the skeleton data. + */ public Builder setLoadFromFile(File atlasFile, File skeletonFile) { this.atlasFile = atlasFile; this.skeletonFile = skeletonFile; return this; } + /** + * Loads assets from http for the {@link SpineView} if set. The {@code atlasUrl} specifies the `.atlas` url to be loaded for the images used to render + * the skeleton. The {@code skeletonUrl} specifies either a Skeleton `.json` or `.skel` url containing the skeleton data. + */ public Builder setLoadFromHttp(URL atlasUrl, URL skeletonUrl, File targetDirectory) { this.atlasUrl = atlasUrl; this.skeletonUrl = skeletonUrl; @@ -91,26 +122,47 @@ public class SpineView extends View implements Choreographer.FrameCallback { return this; } + /** + * Uses the {@link AndroidSkeletonDrawable} for the {@link SpineView} if set. + */ public Builder setLoadFromDrawable(AndroidSkeletonDrawable drawable) { this.drawable = drawable; return this; } + /** + * Get the {@link BoundsProvider} used to compute the bounds of the {@link Skeleton} inside the view. + * The default is {@link SetupPoseBounds}. + */ public Builder setBoundsProvider(BoundsProvider boundsProvider) { this.boundsProvider = boundsProvider; return this; } + /** + * Get the {@link ContentMode} used to fit the {@link Skeleton} inside the view. + * The default is {@link ContentMode#FIT}. + */ public Builder setContentMode(ContentMode contentMode) { this.contentMode = contentMode; return this; } + /** + * Set the {@link Alignment} used to align the {@link Skeleton} inside the view. + * The default is {@link Alignment#CENTER} + */ public Builder setAlignment(Alignment alignment) { this.alignment = alignment; return this; } + /** + * Builds a new {@link SpineView}. + * + * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} semantics, to allow + * modifying how the skeleton inside the widget is animated and rendered. + */ public SpineView build() { SpineView spineView = new SpineView(context, controller); spineView.boundsProvider = boundsProvider; @@ -146,100 +198,192 @@ public class SpineView extends View implements Choreographer.FrameCallback { private Alignment alignment = Alignment.CENTER; private ContentMode contentMode = ContentMode.FIT; + /** + * Constructs a new {@link SpineView}. + * + * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} semantics, to allow + * modifying how the skeleton inside the widget is animated and rendered. + */ public SpineView (Context context, SpineController controller) { super(context); this.controller = controller; } + /** + * Constructs a new {@link SpineView} without providing a {@link SpineController}, which you need to provide using + * {@link SpineView#setController(SpineController)}. + */ public SpineView (Context context, AttributeSet attrs) { super(context, attrs); // Set properties by view id } + /** + * Constructs a new {@link SpineView} without providing a {@link SpineController}, which you need to provide using + * {@link SpineView#setController(SpineController)}. + */ public SpineView (Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // Set properties by view id } + /** + * Constructs a new {@link SpineView} from files in your app assets. The {@code atlasFileName} specifies the + * `.atlas` file to be loaded for the images used to render the skeleton. The {@code skeletonFileName} specifies either a Skeleton `.json` or + * `.skel` file containing the skeleton data. + * + * After initialization is complete, the provided {@code controller} is invoked as per the {@link SpineController} semantics, to allow + * modifying how the skeleton inside the widget is animated and rendered. + */ public static SpineView loadFromAssets(String atlasFileName, String skeletonFileName, Context context, SpineController controller) { SpineView spineView = new SpineView(context, controller); spineView.loadFromAsset(atlasFileName, skeletonFileName); return spineView; } + /** + * Constructs a new {@link SpineView} from files. The {@code atlasFile} specifies the `.atlas` file to be loaded for the images used to render + * the skeleton. The {@code skeletonFile} specifies either a Skeleton `.json` or `.skel` file containing the skeleton data. + * + * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} semantics, to allow + * modifying how the skeleton inside the widget is animated and rendered. + */ public static SpineView loadFromFile(File atlasFile, File skeletonFile, Context context, SpineController controller) { SpineView spineView = new SpineView(context, controller); spineView.loadFromFile(atlasFile, skeletonFile); return spineView; } + /** + * Constructs a new {@link SpineView} from HTTP URLs. The {@code atlasUrl} specifies the `.atlas` url to be loaded for the images used to render + * the skeleton. The {@code skeletonUrl} specifies either a Skeleton `.json` or `.skel` url containing the skeleton data. + * + * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} semantics, to allow + * modifying how the skeleton inside the widget is animated and rendered. + */ public static SpineView loadFromHttp(URL atlasUrl, URL skeletonUrl, File targetDirectory, Context context, SpineController controller) { SpineView spineView = new SpineView(context, controller); spineView.loadFromHttp(atlasUrl, skeletonUrl, targetDirectory); return spineView; } + /** + * Constructs a new {@link SpineView} from a {@link AndroidSkeletonDrawable}. + * + * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} semantics, to allow + * modifying how the skeleton inside the widget is animated and rendered. + */ public static SpineView loadFromDrawable(AndroidSkeletonDrawable drawable, Context context, SpineController controller) { SpineView spineView = new SpineView(context, controller); spineView.loadFromDrawable(drawable); return spineView; } + /** + * The same as {@link SpineView#loadFromAssets(String, String, Context, SpineController)}, but can be used after + * instantiating the view via {@link SpineView#SpineView(Context, SpineController)}. + */ public void loadFromAsset(String atlasFileName, String skeletonFileName) { loadFrom(() -> AndroidSkeletonDrawable.fromAsset(atlasFileName, skeletonFileName, getContext())); } + /** + * The same as {@link SpineView#loadFromFile(File, File, Context, SpineController)}, but can be used after + * instantiating the view via {@link SpineView#SpineView(Context, SpineController)}. + */ public void loadFromFile(File atlasFile, File skeletonFile) { loadFrom(() -> AndroidSkeletonDrawable.fromFile(atlasFile, skeletonFile)); } + /** + * The same as {@link SpineView#loadFromHttp(URL, URL, File, Context, SpineController)}, but can be used after + * instantiating the view via {@link SpineView#SpineView(Context, SpineController)}. + */ public void loadFromHttp(URL atlasUrl, URL skeletonUrl, File targetDirectory) { loadFrom(() -> AndroidSkeletonDrawable.fromHttp(atlasUrl, skeletonUrl, targetDirectory)); } + /** + * The same as {@link SpineView#loadFromDrawable(AndroidSkeletonDrawable, Context, SpineController)}, but can be used after + * instantiating the view via {@link SpineView#SpineView(Context, SpineController)}. + */ public void loadFromDrawable(AndroidSkeletonDrawable drawable) { loadFrom(() -> drawable); } + /** + * Get the {@link SpineController} + */ public SpineController getController() { return controller; } + /** + * Set the {@link SpineController}. Only do this if you use {@link SpineView#SpineView(Context, AttributeSet)}, + * {@link SpineView#SpineView(Context, AttributeSet, int)}, or create the {@link SpineView} in an XML layout. + */ public void setController(SpineController controller) { this.controller = controller; } + /** + * Get the {@link Alignment} used to align the {@link Skeleton} inside the view. + * The default is {@link Alignment#CENTER} + */ public Alignment getAlignment() { return alignment; } + /** + * Set the {@link Alignment}. + */ public void setAlignment(Alignment alignment) { this.alignment = alignment; updateCanvasTransform(); } + /** + * Get the {@link ContentMode} used to fit the {@link Skeleton} inside the view. + * The default is {@link ContentMode#FIT}. + */ public ContentMode getContentMode() { return contentMode; } + /** + * Set the {@link ContentMode}. + */ public void setContentMode(ContentMode contentMode) { this.contentMode = contentMode; updateCanvasTransform(); } + /** + * Get the {@link BoundsProvider} used to compute the bounds of the {@link Skeleton} inside the view. + * The default is {@link SetupPoseBounds}. + */ public BoundsProvider getBoundsProvider() { return boundsProvider; } + /** + * Set the {@link BoundsProvider}. + */ public void setBoundsProvider(BoundsProvider boundsProvider) { this.boundsProvider = boundsProvider; updateCanvasTransform(); } + /** + * Check if rendering is enabled. + */ public Boolean isRendering() { return rendering; } + /** + * Set to disable or enable rendering. Disable it when the spine view is out of bounds and you want to preserve CPU/GPU resources. + */ public void setRendering(Boolean rendering) { this.rendering = rendering; } From 43e1d624dd1d46041e0444a9585b702a4deb01ab Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 19 Jul 2024 12:37:44 +0200 Subject: [PATCH 072/215] [unity] Fixed wrong SkeletonUtilityBone position when used with RootMotion. Closes #2582. --- CHANGELOG.md | 2 + .../RootMotion/SkeletonRootMotionBase.cs | 7 +++ .../SkeletonUtility/SkeletonUtility.cs | 52 ++++++++----------- spine-unity/Assets/Spine/package.json | 2 +- 4 files changed, 32 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f504cf432..daa028312 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -175,6 +175,8 @@ - `SkeletonGraphicRenderTexture` example component: `protected RawImage quadRawImage` was changed to `protected SkeletonSubmeshGraphic quadMaskableGraphic` for a bugfix. This is only relevant for subclasses of `SkeletonGraphicRenderTexture` or when querying the `RawImage` component via e.g. `skeletonGraphicRenderTexture.quad.GetComponent()`. - Fixed a bug where when Linear color space is used and `PMA vertex colors` enabled, additive slots add a too dark (too transparent) color value. If you want the old incorrect behaviour (darker additive slots) or are not using Linear but Gamma color space, you can comment-out the define `LINEAR_COLOR_SPACE_FIX_ADDITIVE_ALPHA` in `MeshGenerator.cs` to deactivate the fix or just to skip unnecessary instructions. - Fixed SkeletonRootMotion components ignoring parent bone scale when set by transform constraints. Using applied scale of parent bone now. If you need the old behaviour, comment out the line `#define USE_APPLIED_PARENT_SCALE` in SkeletonRootMotionBase.cs. + - Fixed SkeletonUtility callback update order when used with SkeletonRootMotion components so that the position when following a bone is updated after SkeletonRootMotion clears root-bone position. The order of SkeletonUtilityBone callbacks is changed to be later to achieve this. This is a breaking change in the unlikely case that you are using SkeletonRootMotion together with SkeletonUtility and subscribed to `UpdateLocal`, `UpdateWorld` or `UpdateComplete` yourself and relied on a certain callback order. One solution is to then resubscribe your own callback events accordingly by calling + `.UpdateLocal -= Callback; .UpdateLocal += Callback;`. - **Changes of default values** diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs index 7559a7039..ddcdf1361 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/RootMotion/SkeletonRootMotionBase.cs @@ -183,6 +183,13 @@ namespace Spine.Unity { skeletonAnimation.OnAnimationRebuild -= InitializeOnRebuild; skeletonAnimation.OnAnimationRebuild += InitializeOnRebuild; + + SkeletonUtility skeletonUtility = GetComponent(); + if (skeletonUtility != null) { + // SkeletonUtilityBone shall receive UpdateLocal callbacks for bone-following after root motion + // clears the root-bone position. + skeletonUtility.ResubscribeEvents(); + } } } diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonUtility/SkeletonUtility.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonUtility/SkeletonUtility.cs index 749a81eae..910a8fa69 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonUtility/SkeletonUtility.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonUtility/SkeletonUtility.cs @@ -238,8 +238,27 @@ namespace Spine.Unity { bool needToReprocessBones; public void ResubscribeEvents () { - OnDisable(); - OnEnable(); + if (skeletonRenderer != null) { + skeletonRenderer.OnRebuild -= HandleRendererReset; + skeletonRenderer.OnRebuild += HandleRendererReset; + } else if (skeletonGraphic != null) { + skeletonGraphic.OnRebuild -= HandleRendererReset; + skeletonGraphic.OnRebuild += HandleRendererReset; + skeletonGraphic.OnPostProcessVertices -= UpdateToMeshScaleAndOffset; + skeletonGraphic.OnPostProcessVertices += UpdateToMeshScaleAndOffset; + } + + if (skeletonAnimation != null) { + skeletonAnimation.UpdateLocal -= UpdateLocal; + skeletonAnimation.UpdateWorld -= UpdateWorld; + skeletonAnimation.UpdateComplete -= UpdateComplete; + + skeletonAnimation.UpdateLocal += UpdateLocal; + if (hasOverrideBones || hasConstraints) + skeletonAnimation.UpdateWorld += UpdateWorld; + if (hasConstraints) + skeletonAnimation.UpdateComplete += UpdateComplete; + } } void OnEnable () { @@ -259,23 +278,8 @@ namespace Spine.Unity { skeletonGraphic != null ? skeletonGraphic.GetComponent() : GetComponent(); } - - if (skeletonRenderer != null) { - skeletonRenderer.OnRebuild -= HandleRendererReset; - skeletonRenderer.OnRebuild += HandleRendererReset; - } else if (skeletonGraphic != null) { - skeletonGraphic.OnRebuild -= HandleRendererReset; - skeletonGraphic.OnRebuild += HandleRendererReset; - skeletonGraphic.OnPostProcessVertices -= UpdateToMeshScaleAndOffset; - skeletonGraphic.OnPostProcessVertices += UpdateToMeshScaleAndOffset; - } - - if (skeletonAnimation != null) { - skeletonAnimation.UpdateLocal -= UpdateLocal; - skeletonAnimation.UpdateLocal += UpdateLocal; - } - CollectBones(); + ResubscribeEvents(); } void Start () { @@ -360,18 +364,6 @@ namespace Spine.Unity { } hasConstraints |= constraintComponents.Count > 0; - - if (skeletonAnimation != null) { - skeletonAnimation.UpdateWorld -= UpdateWorld; - skeletonAnimation.UpdateComplete -= UpdateComplete; - - if (hasOverrideBones || hasConstraints) - skeletonAnimation.UpdateWorld += UpdateWorld; - - if (hasConstraints) - skeletonAnimation.UpdateComplete += UpdateComplete; - } - needToReprocessBones = false; } else { boneComponents.Clear(); diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index 07004553a..bfc24e12b 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.2.79", + "version": "4.2.80", "unity": "2018.3", "author": { "name": "Esoteric Software", From 42be887994e228af76f658cc92101039fcddac91 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Fri, 19 Jul 2024 15:56:40 +0200 Subject: [PATCH 073/215] Add more documentation --- .../com/esotericsoftware/spine/DressUp.kt | 6 +- .../android/AndroidSkeletonDrawable.java | 89 ++++++++++++------- .../spine/android/AndroidTexture.java | 4 + .../spine/android/AndroidTextureAtlas.java | 44 +++++++-- .../spine/android/DebugRenderer.java | 4 + .../spine/android/SkeletonRenderer.java | 63 ++++++++++++- .../spine/android/SpineView.java | 2 +- .../spine/android/bounds/Alignment.java | 3 + .../spine/android/bounds/Bounds.java | 4 + .../spine/android/bounds/BoundsProvider.java | 4 + .../spine/android/bounds/ContentMode.java | 11 ++- .../spine/android/bounds/RawBounds.java | 24 +++++ .../spine/android/bounds/SetupPoseBounds.java | 4 + .../bounds/SkinAndAnimationBounds.java | 20 ++++- .../spine/android/utils/HttpUtils.java | 8 +- .../android/utils/SkeletonDataUtils.java | 20 +++++ 16 files changed, 262 insertions(+), 48 deletions(-) create mode 100644 spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt index a2985d37b..74dfd9a6c 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt @@ -112,11 +112,11 @@ fun DressUp(nav: NavHostController) { skeleton.setToSetupPose() skeleton.update(0f) skeleton.updateWorldTransform(Skeleton.Physics.update) - skinImages[skin.getName()] = drawable.renderToBitmap( - renderer, + skinImages[skin.getName()] = renderer.renderToBitmap( with(localDensity) { thumbnailSize.dp.toPx() }, with(localDensity) { thumbnailSize.dp.toPx() }, - 0xffffffff.toInt() + 0xffffffff.toInt(), + skeleton, ).asImageBitmap() selectedSkins[skin.getName()] = false } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java index 3d3138a03..72f39e453 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java @@ -7,7 +7,9 @@ import android.graphics.Paint; import android.graphics.RectF; import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.FloatArray; +import com.esotericsoftware.spine.Animation; import com.esotericsoftware.spine.AnimationState; import com.esotericsoftware.spine.AnimationStateData; import com.esotericsoftware.spine.Skeleton; @@ -17,6 +19,25 @@ import com.esotericsoftware.spine.android.utils.SkeletonDataUtils; import java.io.File; import java.net.URL; +/** + * A {@link AndroidSkeletonDrawable} bundles loading updating updating an {@link AndroidTextureAtlas}, {@link Skeleton}, and {@link AnimationState} + * into a single easy-to-use class. + * + * Use the {@link AndroidSkeletonDrawable#fromAsset(String, String, Context)}, {@link AndroidSkeletonDrawable#fromFile(File, File)}, + * or {@link AndroidSkeletonDrawable#fromHttp(URL, URL, File)} methods to construct a {@link AndroidSkeletonDrawable}. To have + * multiple skeleton drawable instances share the same {@link AndroidTextureAtlas} and {@link SkeletonData}, use the constructor. + * + * You can then directly access the {@link AndroidSkeletonDrawable#getAtlas()}, {@link AndroidSkeletonDrawable#getSkeletonData()}, + * {@link AndroidSkeletonDrawable#getSkeleton()}, {@link AndroidSkeletonDrawable#getAnimationStateData()}, and {@link AndroidSkeletonDrawable#getAnimationState()} + * to query and animate the skeleton. Use the {@link AnimationState} to queue animations on one or more tracks + * via {@link AnimationState#setAnimation(int, Animation, boolean)} or {@link AnimationState#addAnimation(int, Animation, boolean, float)}. + * + * To update the {@link AnimationState} and apply it to the {@link Skeleton}, call the {@link AndroidSkeletonDrawable#update(float)} function, providing it + * a delta time in seconds to advance the animations. + * + * To render the current pose of the {@link Skeleton}, use {@link SkeletonRenderer#render(Skeleton)}, {@link SkeletonRenderer#renderToCanvas(Canvas, Array)}, + * {@link SkeletonRenderer#renderToBitmap(float, float, int, Skeleton)}, depending on your needs. + */ public class AndroidSkeletonDrawable { private final AndroidTextureAtlas atlas; @@ -29,6 +50,9 @@ public class AndroidSkeletonDrawable { private final AnimationState animationState; + /** + * Constructs a new skeleton drawable from the given (possibly shared) {@link AndroidTextureAtlas} and {@link SkeletonData}. + */ public AndroidSkeletonDrawable(AndroidTextureAtlas atlas, SkeletonData skeletonData) { this.atlas = atlas; this.skeletonData = skeletonData; @@ -40,6 +64,11 @@ public class AndroidSkeletonDrawable { skeleton.updateWorldTransform(Skeleton.Physics.none); } + /** + * Updates the {@link AnimationState} using the {@code delta} time given in seconds, applies the + * animation state to the {@link Skeleton} and updates the world transforms of the skeleton + * to calculate its current pose. + */ public void update(float delta) { animationState.update(delta); animationState.apply(skeleton); @@ -48,71 +77,71 @@ public class AndroidSkeletonDrawable { skeleton.updateWorldTransform(Skeleton.Physics.update); } + /** + * Get the {@link AndroidTextureAtlas} + */ public AndroidTextureAtlas getAtlas() { return atlas; } + /** + * Get the {@link Skeleton} + */ public Skeleton getSkeleton() { return skeleton; } + /** + * Get the {@link SkeletonData} + */ public SkeletonData getSkeletonData() { return skeletonData; } + /** + * Get the {@link AnimationStateData} + */ public AnimationStateData getAnimationStateData() { return animationStateData; } + /** + * Get the {@link AnimationState} + */ public AnimationState getAnimationState() { return animationState; } + /** + * Constructs a new skeleton drawable from the {@code atlasFileName} and {@code skeletonFileName} from the the apps resources using {@link Context}. + * + * Throws an exception in case the data could not be loaded. + */ public static AndroidSkeletonDrawable fromAsset (String atlasFileName, String skeletonFileName, Context context) { AndroidTextureAtlas atlas = AndroidTextureAtlas.fromAsset(atlasFileName, context); SkeletonData skeletonData = SkeletonDataUtils.fromAsset(atlas, skeletonFileName, context); return new AndroidSkeletonDrawable(atlas, skeletonData); } + /** + * Constructs a new skeleton drawable from the {@code atlasFile} and {@code skeletonFile}. + * + * Throws an exception in case the data could not be loaded. + */ public static AndroidSkeletonDrawable fromFile (File atlasFile, File skeletonFile) { AndroidTextureAtlas atlas = AndroidTextureAtlas.fromFile(atlasFile); SkeletonData skeletonData = SkeletonDataUtils.fromFile(atlas, skeletonFile); return new AndroidSkeletonDrawable(atlas, skeletonData); } + /** + * Constructs a new skeleton drawable from the {@code atlasUrl} and {@code skeletonUrl}. + * + * Throws an exception in case the data could not be loaded. + */ public static AndroidSkeletonDrawable fromHttp (URL atlasUrl, URL skeletonUrl, File targetDirectory) { AndroidTextureAtlas atlas = AndroidTextureAtlas.fromHttp(atlasUrl, targetDirectory); SkeletonData skeletonData = SkeletonDataUtils.fromHttp(atlas, skeletonUrl, targetDirectory); return new AndroidSkeletonDrawable(atlas, skeletonData); } - - public Bitmap renderToBitmap(SkeletonRenderer renderer, float width, float height, int bgColor) { - Vector2 offset = new Vector2(0, 0); - Vector2 size = new Vector2(0, 0); - FloatArray floatArray = new FloatArray(); - - getSkeleton().getBounds(offset, size, floatArray); - - RectF bounds = new RectF(offset.x, offset.y, offset.x + size.x, offset.y + size.y); - float scale = (1 / (bounds.width() > bounds.height() ? bounds.width() / width : bounds.height() / height)); - - Bitmap bitmap = Bitmap.createBitmap((int) width, (int) height, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - - Paint paint = new Paint(); - paint.setColor(bgColor); - paint.setStyle(Paint.Style.FILL); - - // Draw background - canvas.drawRect(0, 0, width, height, paint); - - // Transform canvas - canvas.translate(width / 2, height / 2); - canvas.scale(scale, -scale); - canvas.translate(-(bounds.left + bounds.width() / 2), -(bounds.top + bounds.height() / 2)); - - renderer.render(canvas, renderer.render(skeleton)); - - return bitmap; - } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTexture.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTexture.java index 2eeca999a..95fe94665 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTexture.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTexture.java @@ -40,6 +40,10 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Shader; +/** + * A class holding an {@link Bitmap} of an {@link AndroidTextureAtlas} page image with it's associated + * blend modes and paints. + */ public class AndroidTexture extends Texture { private Bitmap bitmap; private ObjectMap paints = new ObjectMap<>(); diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java index 17ae46f49..67bdf33bb 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java @@ -49,16 +49,25 @@ import com.esotericsoftware.spine.android.utils.HttpUtils; import android.content.Context; import android.content.res.AssetManager; import android.graphics.Bitmap; +import android.graphics.Paint; import android.graphics.BitmapFactory; import android.os.Build; +/** + * Atlas data loaded from a `.atlas` file and its corresponding `.png` files. For each atlas image, + * a corresponding {@link Bitmap} and {@link Paint} is constructed, which are used when rendering a skeleton + * that uses this atlas. + * + * Use the static methods {@link AndroidTextureAtlas#fromAsset(String, Context)}, {@link AndroidTextureAtlas#fromFile(File)}, + * and {@link AndroidTextureAtlas#fromHttp(URL, File)} to load an atlas. + */ public class AndroidTextureAtlas { - private static interface BitmapLoader { + private interface BitmapLoader { Bitmap load (String path); } - private Array textures = new Array<>(); - private Array regions = new Array<>(); + private final Array textures = new Array<>(); + private final Array regions = new Array<>(); private AndroidTextureAtlas (TextureAtlasData data, BitmapLoader bitmapLoader) { for (TextureAtlasData.Page page : data.getPages()) { @@ -85,8 +94,10 @@ public class AndroidTextureAtlas { } } - /** Returns the first region found with the specified name. This method uses string comparison to find the region, so the - * result should be cached rather than calling this method multiple times. */ + /** + * Returns the first region found with the specified name. This method uses string comparison to find the region, so the + * result should be cached rather than calling this method multiple times. + */ public @Null AtlasRegion findRegion (String name) { for (int i = 0, n = regions.size; i < n; i++) if (regions.get(i).name.equals(name)) return regions.get(i); @@ -101,7 +112,12 @@ public class AndroidTextureAtlas { return regions; } - static public AndroidTextureAtlas fromAsset(String atlasFileName, Context context) { + /** + * Loads an {@link AndroidTextureAtlas} from the file {@code atlasFileName} from assets using {@link Context}. + * + * Throws a {@link RuntimeException} in case the atlas could not be loaded. + */ + public static AndroidTextureAtlas fromAsset(String atlasFileName, Context context) { TextureAtlasData data = new TextureAtlasData(); AssetManager assetManager = context.getAssets(); @@ -131,7 +147,12 @@ public class AndroidTextureAtlas { }); } - static public AndroidTextureAtlas fromFile(File atlasFile) { + /** + * Loads an {@link AndroidTextureAtlas} from the file {@code atlasFileName}. + * + * Throws a {@link RuntimeException} in case the atlas could not be loaded. + */ + public static AndroidTextureAtlas fromFile(File atlasFile) { TextureAtlasData data; try { data = loadTextureAtlasData(atlasFile); @@ -148,7 +169,12 @@ public class AndroidTextureAtlas { }); } - static public AndroidTextureAtlas fromHttp(URL atlasUrl, File targetDirectory) { + /** + * Loads an {@link AndroidTextureAtlas} from the URL {@code atlasURL}. + * + * Throws a {@link Exception} in case the atlas could not be loaded. + */ + public static AndroidTextureAtlas fromHttp(URL atlasUrl, File targetDirectory) { File atlasFile = HttpUtils.downloadFrom(atlasUrl, targetDirectory); TextureAtlasData data; try { @@ -188,7 +214,7 @@ public class AndroidTextureAtlas { } } - static private TextureAtlasData loadTextureAtlasData(File atlasFile) { + private static TextureAtlasData loadTextureAtlasData(File atlasFile) { TextureAtlasData data = new TextureAtlasData(); FileHandle inputFile = new FileHandle() { @Override diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java index a3e6b7695..58c5549ff 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java @@ -7,6 +7,10 @@ import android.graphics.RectF; import com.badlogic.gdx.utils.Array; import com.esotericsoftware.spine.Bone; +/** + * Renders debug information for a {@link AndroidSkeletonDrawable}, like bone locations, to a {@link Canvas}. + * See {@link DebugRenderer#render}. + */ public class DebugRenderer { public void render(AndroidSkeletonDrawable drawable, Canvas canvas, Array commands) { diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java index cd02e45d2..f0d496a3a 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java @@ -30,6 +30,7 @@ package com.esotericsoftware.spine.android; import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.FloatArray; import com.badlogic.gdx.utils.IntArray; @@ -44,9 +45,22 @@ import com.esotericsoftware.spine.attachments.MeshAttachment; import com.esotericsoftware.spine.attachments.RegionAttachment; import com.esotericsoftware.spine.utils.SkeletonClipping; +import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.RectF; +/** + * Is responsible to transform the {@link Skeleton} with its current pose to {@link SkeletonRenderer.RenderCommand} commands + * and render them to a {@link Canvas}. + */ public class SkeletonRenderer { + + /** + * Stores the vertices, indices, and atlas page index to be used for rendering one or more attachments + * of a {@link Skeleton} to a {@link Canvas}. See the implementation of {@link SkeletonRenderer#render(Skeleton)} and + * {@link SkeletonRenderer#renderToCanvas(Canvas, Array)} on how to use this data to render it to a {@link Canvas}. + */ public static class RenderCommand implements Pool.Poolable { FloatArray vertices = new FloatArray(32); FloatArray uvs = new FloatArray(32); @@ -76,7 +90,10 @@ public class SkeletonRenderer { }; private final Array commandList = new Array(); - public Array render (Skeleton skeleton) { + /** + * Created the {@link RenderCommand} commands from the skeletons current pose. + */ + public Array render(Skeleton skeleton) { Color color = null, skeletonColor = skeleton.getColor(); float r = skeletonColor.r, g = skeletonColor.g, b = skeletonColor.b, a = skeletonColor.a; @@ -211,7 +228,11 @@ public class SkeletonRenderer { return commandList; } - public void render (Canvas canvas, Array commands) { + /** + * Renders the {@link RenderCommand} commands created from the skeleton current pose to the given {@link Canvas}. + * Does not perform any scaling or fitting. + */ + public void renderToCanvas(Canvas canvas, Array commands) { for (int i = 0; i < commands.size; i++) { RenderCommand command = commands.get(i); @@ -219,4 +240,42 @@ public class SkeletonRenderer { command.colors.items, 0, command.indices.items, 0, command.indices.size, command.texture.getPaint(command.blendMode)); } } + + /** + * Renders the {@link Skeleton} with its current pose to a {@link Bitmap}. + * + * @param width The width of the bitmap in pixels. + * @param height The height of the bitmap in pixels. + * @param bgColor The background color. + * @param skeleton The skeleton to render. + */ + public Bitmap renderToBitmap(float width, float height, int bgColor, Skeleton skeleton) { + Vector2 offset = new Vector2(0, 0); + Vector2 size = new Vector2(0, 0); + FloatArray floatArray = new FloatArray(); + + skeleton.getBounds(offset, size, floatArray); + + RectF bounds = new RectF(offset.x, offset.y, offset.x + size.x, offset.y + size.y); + float scale = (1 / (bounds.width() > bounds.height() ? bounds.width() / width : bounds.height() / height)); + + Bitmap bitmap = Bitmap.createBitmap((int) width, (int) height, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + + Paint paint = new Paint(); + paint.setColor(bgColor); + paint.setStyle(Paint.Style.FILL); + + // Draw background + canvas.drawRect(0, 0, width, height, paint); + + // Transform canvas + canvas.translate(width / 2, height / 2); + canvas.scale(scale, -scale); + canvas.translate(-(bounds.left + bounds.width() / 2), -(bounds.top + bounds.height() / 2)); + + renderToCanvas(canvas, render(skeleton)); + + return bitmap; + } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index d7828c045..808238b6c 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -424,7 +424,7 @@ public class SpineView extends View implements Choreographer.FrameCallback { controller.callOnBeforePaint(canvas); Array commands = renderer.render(controller.getSkeleton()); - renderer.render(canvas, commands); + renderer.renderToCanvas(canvas, commands); controller.callOnAfterPaint(canvas, commands); canvas.restore(); diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java index 53f3b6711..b580c62be 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java @@ -1,5 +1,8 @@ package com.esotericsoftware.spine.android.bounds; +/** + * How a view should be aligned within another view. + */ public enum Alignment { TOP_LEFT(-1.0f, -1.0f), TOP_CENTER(0.0f, -1.0f), diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java index e66afcd7e..3e4ae66d9 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java @@ -4,6 +4,10 @@ import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.FloatArray; import com.esotericsoftware.spine.Skeleton; +/** + * Bounds denoted by the top left corner coordinates {@code x} and {@code y} + * and the {@code width} and {@code height}. + */ public class Bounds { private double x; private double y; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java index 7b0ace6b7..833769dde 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java @@ -2,6 +2,10 @@ package com.esotericsoftware.spine.android.bounds; import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; +/** + * A {@link BoundsProvider} that calculates the bounding box of the skeleton based on the visible + * attachments in the setup pose. + */ public interface BoundsProvider { Bounds computeBounds(AndroidSkeletonDrawable drawable); } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java index f0ccbf269..9a51835d3 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java @@ -1,6 +1,15 @@ package com.esotericsoftware.spine.android.bounds; +/** + * How a view should be inscribed into another view. + */ public enum ContentMode { + /** + * As large as possible while still containing the source view entirely within the target view. + */ FIT, - FILL; + /** + * Fill the target view by distorting the source's aspect ratio. + */ + FILL } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java new file mode 100644 index 000000000..8b8ebad02 --- /dev/null +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java @@ -0,0 +1,24 @@ +package com.esotericsoftware.spine.android.bounds; +import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; + +/** + * A {@link BoundsProvider} that returns fixed bounds. + */ +public class RawBounds implements BoundsProvider { + final Double x; + final Double y; + final Double width; + final Double height; + + public RawBounds(Double x, Double y, Double width, Double height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + + @Override + public Bounds computeBounds(AndroidSkeletonDrawable drawable) { + return new Bounds(x, y, width, height); + } +} diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java index a7e3a6014..2fd00df29 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java @@ -4,6 +4,10 @@ import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.FloatArray; import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; +/** + * A {@link BoundsProvider} that calculates the bounding box of the skeleton based on the visible + * attachments in the setup pose. + */ public class SetupPoseBounds implements BoundsProvider { @Override diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java index c608607f9..5c66e6540 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java @@ -8,22 +8,40 @@ import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; import java.util.Collections; import java.util.List; +/** + * A {@link BoundsProvider} that calculates the bounding box needed for a combination of skins + * and an animation. + */ public class SkinAndAnimationBounds implements BoundsProvider { private final List skins; private final String animation; private final double stepTime; - // Constructor + /** + * Constructs a new provider that will use the given {@code skins} and {@code animation} to calculate + * the bounding box of the skeleton. If no skins are given, the default skin is used. + * The {@code stepTime}, given in seconds, defines at what interval the bounds should be sampled + * across the entire animation. + */ public SkinAndAnimationBounds(List skins, String animation, double stepTime) { this.skins = (skins == null || skins.isEmpty()) ? Collections.singletonList("default") : skins; this.animation = animation; this.stepTime = stepTime; } + /** + * Constructs a new provider that will use the given {@code skins} and {@code animation} to calculate + * the bounding box of the skeleton. If no skins are given, the default skin is used. + * The {@code stepTime} has default value 0.1. + */ public SkinAndAnimationBounds(List skins, String animation) { this(skins, animation, 0.1); } + /** + * Constructs a new provider that will use the given {@code skins} and {@code animation} to calculate + * the bounding box of the skeleton. The default skin is used. The {@code stepTime} has default value 0.1. + */ public SkinAndAnimationBounds(String animation) { this(Collections.emptyList(), animation, 0.1); } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java index 81dec32f4..870ab649d 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java @@ -12,8 +12,14 @@ import java.net.HttpURLConnection; import java.net.URL; import java.nio.file.Files; +/** + * Helper to load http resources. + */ public class HttpUtils { - + /** + * Download a file from an url into a target directory. It keeps the name from the {@code url}. + * This should NOT be executed on the main run loop. + */ public static File downloadFrom(URL url, File targetDirectory) throws RuntimeException { HttpURLConnection urlConnection = null; InputStream inputStream = null; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java index cbbcb61c3..67b9715dd 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java @@ -17,8 +17,17 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; +/** + * Helper to load {@link SkeletonData} from assets. + */ public class SkeletonDataUtils { + /** + * Loads a {@link SkeletonData} from the file {@code skeletonFile} in assets using {@link Context}. + * Uses the provided {@link AndroidTextureAtlas} to resolve attachment images. + * + * Throws a {@link RuntimeException} in case the skeleton data could not be loaded. + */ public static SkeletonData fromAsset(AndroidTextureAtlas atlas, String skeletonFileName, Context context) { AndroidAtlasAttachmentLoader attachmentLoader = new AndroidAtlasAttachmentLoader(atlas); @@ -39,6 +48,12 @@ public class SkeletonDataUtils { } return skeletonData; } + + /** + * Loads a {@link SkeletonData} from the file {@code skeletonFile}. Uses the provided {@link AndroidTextureAtlas} to resolve attachment images. + * + * Throws a {@link RuntimeException} in case the skeleton data could not be loaded. + */ public static SkeletonData fromFile(AndroidTextureAtlas atlas, File skeletonFile) { AndroidAtlasAttachmentLoader attachmentLoader = new AndroidAtlasAttachmentLoader(atlas); @@ -52,6 +67,11 @@ public class SkeletonDataUtils { return skeletonLoader.readSkeletonData(new FileHandle(skeletonFile)); } + /** + * Loads a {@link SkeletonData} from the URL {@code skeletonURL}. Uses the provided {@link AndroidTextureAtlas} to resolve attachment images. + * + * Throws a {@link RuntimeException} in case the skeleton data could not be loaded. + */ public static SkeletonData fromHttp(AndroidTextureAtlas atlas, URL skeletonUrl, File targetDirectory) { File skeletonFile = HttpUtils.downloadFrom(skeletonUrl, targetDirectory); return fromFile(atlas, skeletonFile); From 554106982689406926b68caef523c9b286a90371 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Fri, 19 Jul 2024 16:00:34 +0200 Subject: [PATCH 074/215] Add missing license agreement headers --- .../spine/AnimationStateEvents.kt | 29 +++++++++++++++++ .../esotericsoftware/spine/DebugRendering.kt | 29 +++++++++++++++++ .../spine/DisableRendering.kt | 29 +++++++++++++++++ .../com/esotericsoftware/spine/DressUp.kt | 29 +++++++++++++++++ .../com/esotericsoftware/spine/IKFollowing.kt | 29 +++++++++++++++++ .../esotericsoftware/spine/MainActivity.kt | 29 +++++++++++++++++ .../com/esotericsoftware/spine/Physics.kt | 29 +++++++++++++++++ .../com/esotericsoftware/spine/PlayPause.kt | 29 +++++++++++++++++ .../esotericsoftware/spine/SimpleAnimation.kt | 29 +++++++++++++++++ .../spine/SimpleAnimationActivity.java | 29 +++++++++++++++++ .../esotericsoftware/spine/ui/theme/Color.kt | 29 +++++++++++++++++ .../esotericsoftware/spine/ui/theme/Theme.kt | 29 +++++++++++++++++ .../esotericsoftware/spine/ui/theme/Type.kt | 29 +++++++++++++++++ .../android/AndroidSkeletonDrawable.java | 29 +++++++++++++++++ .../spine/android/DebugRenderer.java | 29 +++++++++++++++++ .../spine/android/SpineController.java | 29 +++++++++++++++++ .../spine/android/bounds/Alignment.java | 29 +++++++++++++++++ .../spine/android/bounds/Bounds.java | 29 +++++++++++++++++ .../spine/android/bounds/BoundsProvider.java | 29 +++++++++++++++++ .../spine/android/bounds/ContentMode.java | 29 +++++++++++++++++ .../spine/android/bounds/RawBounds.java | 30 ++++++++++++++++++ .../spine/android/bounds/SetupPoseBounds.java | 31 +++++++++++++++++-- .../bounds/SkinAndAnimationBounds.java | 29 +++++++++++++++++ .../AndroidSkeletonDrawableLoader.java | 29 +++++++++++++++++ .../SpineControllerAfterPaintCallback.java | 29 +++++++++++++++++ .../SpineControllerBeforePaintCallback.java | 29 +++++++++++++++++ .../callbacks/SpineControllerCallback.java | 29 +++++++++++++++++ .../spine/android/utils/HttpUtils.java | 29 +++++++++++++++++ .../android/utils/SkeletonDataUtils.java | 29 +++++++++++++++++ 29 files changed, 842 insertions(+), 2 deletions(-) diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt index 946f27c45..df8350a39 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine import android.util.Log diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt index 3f4d0c32b..50abe1e30 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DebugRendering.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine import androidx.compose.foundation.layout.padding diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt index b247958c3..af617c283 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DisableRendering.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine import androidx.compose.foundation.gestures.detectDragGestures diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt index 74dfd9a6c..f0b1d315b 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/DressUp.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine import androidx.compose.foundation.Image diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt index 0b09b2631..d49bc01b8 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/IKFollowing.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine import android.graphics.Point diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt index 07622c199..c9d537cf7 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/MainActivity.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine import android.content.Intent diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt index 583eb7665..a9c39348a 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/Physics.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine import android.graphics.Point diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt index bd514a42b..f441d74d0 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/PlayPause.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine import androidx.compose.foundation.layout.padding diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt index 258521844..2f287fff8 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimation.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine import androidx.compose.foundation.layout.padding diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java index 399713ee3..dc423cf7c 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine; import android.os.Bundle; diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Color.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Color.kt index 9e8e25d6c..fcc46f94d 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Color.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Color.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.ui.theme import androidx.compose.ui.graphics.Color diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Theme.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Theme.kt index a40d4c82c..f27504a29 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Theme.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Theme.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.ui.theme import android.app.Activity diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Type.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Type.kt index 26034fc05..5a9692672 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Type.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/ui/theme/Type.kt @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.ui.theme import androidx.compose.material3.Typography diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java index 72f39e453..e71a2fab7 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android; import android.content.Context; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java index 58c5549ff..24f166f12 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android; import android.graphics.Canvas; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java index 3090570dc..3f2c9d50f 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android; import android.graphics.Canvas; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java index b580c62be..ba2a497ce 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.bounds; /** diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java index 3e4ae66d9..b3b8502d8 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.bounds; import com.badlogic.gdx.math.Vector2; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java index 833769dde..2a59c8666 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.bounds; import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java index 9a51835d3..67d239f51 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.bounds; /** diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java index 8b8ebad02..272656c62 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java @@ -1,4 +1,34 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.bounds; + import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; /** diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java index 2fd00df29..de1523737 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java @@ -1,7 +1,34 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.bounds; -import com.badlogic.gdx.math.Vector2; -import com.badlogic.gdx.utils.FloatArray; import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; /** diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java index 5c66e6540..5a3355fcd 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.bounds; import com.esotericsoftware.spine.Animation; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/AndroidSkeletonDrawableLoader.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/AndroidSkeletonDrawableLoader.java index 8f1e66da7..87626810d 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/AndroidSkeletonDrawableLoader.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/AndroidSkeletonDrawableLoader.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.callbacks; import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerAfterPaintCallback.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerAfterPaintCallback.java index c61561b20..1864780b4 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerAfterPaintCallback.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerAfterPaintCallback.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.callbacks; import android.graphics.Canvas; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerBeforePaintCallback.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerBeforePaintCallback.java index 5c0791aaa..ad622c07d 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerBeforePaintCallback.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerBeforePaintCallback.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.callbacks; import android.graphics.Canvas; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerCallback.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerCallback.java index 028ec1dc4..75d3b282f 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerCallback.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerCallback.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.callbacks; import com.esotericsoftware.spine.android.SpineController; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java index 870ab649d..0f442b43b 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.utils; import android.os.Build; diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java index 67b9715dd..6395ce22f 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java @@ -1,3 +1,32 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2023, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + package com.esotericsoftware.spine.android.utils; import android.content.Context; From 1aa50ca9684d42c24ccdf1c0d76d7cfdfaa45325 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 22 Jul 2024 17:31:04 +0200 Subject: [PATCH 075/215] [ts] Updated README.md --- spine-ts/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spine-ts/README.md b/spine-ts/README.md index 1161689b6..a87626aa4 100644 --- a/spine-ts/README.md +++ b/spine-ts/README.md @@ -20,6 +20,8 @@ For documentation of `spine-phaser`, please refer to our [spine-phaser Guide](ht For documentation of `spine-pixi`, please refer to our [spine-pixi Guide](https://esotericsoftware.com/spine-pixi). +For documentation of `spine-canvaskit`, please refer to our [spine-canvaskit Guide](https://esotericsoftware.com/spine-canvaskit). + For module specific APIs in `spine-canvas`, `spine-webgl`, and `spine-threejs`, please refer to the [Examples](#examples) in the respecitve `spine-/example` folder. For `spine-webgl` specifically, we have provided additional [demos](spine-webgl/demos), which you can also [view online](http://esotericsoftware.com/spine-demos). ## Licensing From cd8dadc02aba6f45f36fe3549a14c3a9e29e37fb Mon Sep 17 00:00:00 2001 From: indubitablement2 Date: Wed, 24 Jul 2024 07:28:24 -0400 Subject: [PATCH 076/215] Update SpineAnimationTrack.cpp (#2578) Fix: Invalid PROPERTY_HINT_RANGE with hint "0,256,0": Step cannot be 0. --- spine-godot/spine_godot/SpineAnimationTrack.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-godot/spine_godot/SpineAnimationTrack.cpp b/spine-godot/spine_godot/SpineAnimationTrack.cpp index 1154a4428..4cad6e14c 100644 --- a/spine-godot/spine_godot/SpineAnimationTrack.cpp +++ b/spine-godot/spine_godot/SpineAnimationTrack.cpp @@ -78,7 +78,7 @@ void SpineAnimationTrack::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::STRING, "animation_name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_INTERNAL | PROPERTY_USAGE_NOEDITOR), "set_animation_name", "get_animation_name"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "loop", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_INTERNAL | PROPERTY_USAGE_NOEDITOR), "set_loop", "get_loop"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "track_index", PROPERTY_HINT_RANGE, "0,256,0"), "set_track_index", "get_track_index"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "track_index", PROPERTY_HINT_RANGE, "0,256,1"), "set_track_index", "get_track_index"); ADD_PROPERTY(PropertyInfo(VARIANT_FLOAT, "mix_duration"), "set_mix_duration", "get_mix_duration"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hold_previous"), "set_hold_previous", "get_hold_previous"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "reverse"), "set_reverse", "get_reverse"); From aca86fa588079f2f3ebfaea7e43d56842e9be2f9 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 13:49:42 +0200 Subject: [PATCH 077/215] [cpp] Fix float exception, closes #2583 --- spine-cpp/spine-cpp/include/spine/MathUtil.h | 2 ++ spine-cpp/spine-cpp/src/spine/AnimationState.cpp | 2 +- spine-cpp/spine-cpp/src/spine/MathUtil.cpp | 11 +++++------ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/spine-cpp/spine-cpp/include/spine/MathUtil.h b/spine-cpp/spine-cpp/include/spine/MathUtil.h index 6ce5361f9..7a2f37976 100644 --- a/spine-cpp/spine-cpp/include/spine/MathUtil.h +++ b/spine-cpp/spine-cpp/include/spine/MathUtil.h @@ -88,6 +88,8 @@ namespace spine { static bool isNan(float v); + static float quietNan(); + static float random(); static float randomTriangular(float min, float max); diff --git a/spine-cpp/spine-cpp/src/spine/AnimationState.cpp b/spine-cpp/spine-cpp/src/spine/AnimationState.cpp index ad60bccda..dd3b57c08 100644 --- a/spine-cpp/spine-cpp/src/spine/AnimationState.cpp +++ b/spine-cpp/spine-cpp/src/spine/AnimationState.cpp @@ -921,7 +921,7 @@ void AnimationState::setAttachment(Skeleton &skeleton, Slot &slot, const String void AnimationState::queueEvents(TrackEntry *entry, float animationTime) { float animationStart = entry->_animationStart, animationEnd = entry->_animationEnd; float duration = animationEnd - animationStart; - float trackLastWrapped = MathUtil::fmod(entry->_trackLast, duration); + float trackLastWrapped = duration != 0 ? MathUtil::fmod(entry->_trackLast, duration) : MathUtil::quietNan(); // Queue events before complete. size_t i = 0, n = _events.size(); diff --git a/spine-cpp/spine-cpp/src/spine/MathUtil.cpp b/spine-cpp/spine-cpp/src/spine/MathUtil.cpp index 1438f793b..159b4e7c0 100644 --- a/spine-cpp/spine-cpp/src/spine/MathUtil.cpp +++ b/spine-cpp/spine-cpp/src/spine/MathUtil.cpp @@ -30,6 +30,7 @@ #include #include #include +#include // Required for division by 0 in _isNaN on MSVC #ifdef _MSC_VER @@ -99,14 +100,12 @@ float MathUtil::cosDeg(float degrees) { return (float) ::cos(degrees * MathUtil::Deg_Rad); } -/* Need to pass 0 as an argument, so VC++ doesn't error with C2124 */ -static bool _isNan(float value, float zero) { - float _nan = (float) 0.0 / zero; - return 0 == memcmp((void *) &value, (void *) &_nan, sizeof(value)); +bool MathUtil::isNan(float v) { + return std::isnan(v); } -bool MathUtil::isNan(float v) { - return _isNan(v, 0); +float MathUtil::quietNan() { + return std::nan(""); } float MathUtil::random() { From 92b5b8a1eeb295c4b228aa43f8dfe1da349359db Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 14:22:44 +0200 Subject: [PATCH 078/215] [cpp] Fix handling of degenerate clipping polygons, closes #2579 --- spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp b/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp index ae433c7e7..19a48d879 100644 --- a/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp +++ b/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp @@ -363,6 +363,10 @@ bool SkeletonClipping::clip(float x1, float y1, float x2, float y2, float x3, fl } else originalOutput->setSize(originalOutput->size() - 2, 0); + if (originalOutput->size() < 6) { + originalOutput->clear(); + return false; + } return clipped; } From a5e51afb5782f3bf624c19d74ce019035801207f Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 14:32:13 +0200 Subject: [PATCH 079/215] [cpp] Port: Scale physics constraint limits with skeleton scale. See #2576 --- .../spine-cpp/src/spine/PhysicsConstraint.cpp | 28 ++++++++++--------- spine-sfml/cpp/example/main.cpp | 4 ++- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/spine-cpp/spine-cpp/src/spine/PhysicsConstraint.cpp b/spine-cpp/spine-cpp/src/spine/PhysicsConstraint.cpp index a73ea100c..84971c377 100644 --- a/spine-cpp/spine-cpp/src/spine/PhysicsConstraint.cpp +++ b/spine-cpp/spine-cpp/src/spine/PhysicsConstraint.cpp @@ -334,22 +334,24 @@ void PhysicsConstraint::update(Physics physics) { _ux = bx; _uy = by; } else { - float a = _remaining, i = _inertia, q = _data._limit * delta, t = _data._step, f = _skeleton.getData()->getReferenceScale(), d = -1; + float a = _remaining, i = _inertia, t = _data._step, f = _skeleton.getData()->getReferenceScale(); + float qx = _data._limit * delta, qy = qx * MathUtil::abs(_skeleton.getScaleX()); + qx *= MathUtil::abs(_skeleton.getScaleY()); if (x || y) { if (x) { float u = (_ux - bx) * i; - _xOffset += u > q ? q : u < -q ? -q + _xOffset += u > qx ? qx : u < -qx ? -qx : u; _ux = bx; } if (y) { float u = (_uy - by) * i; - _yOffset += u > q ? q : u < -q ? -q + _yOffset += u > qy ? qy : u < -qy ? -qy : u; _uy = by; } if (a >= t) { - d = MathUtil::pow(_damping, 60 * t); + float d = MathUtil::pow(_damping, 60 * t); float m = _massInverse * t, e = _strength, w = _wind * f, g = _gravity * f * (Bone::yDown ? -1 : 1); do { if (x) { @@ -372,14 +374,14 @@ void PhysicsConstraint::update(Physics physics) { if (rotateOrShearX || scaleX) { float ca = MathUtil::atan2(bone->_c, bone->_a), c, s, mr = 0; float dx = _cx - bone->_worldX, dy = _cy - bone->_worldY; - if (dx > q) - dx = q; - else if (dx < -q)// - dx = -q; - if (dy > q) - dy = q; - else if (dy < -q)// - dy = -q; + if (dx > qx) + dx = qx; + else if (dx < -qx)// + dx = -qx; + if (dy > qy) + dy = qy; + else if (dy < -qy)// + dy = -qy; if (rotateOrShearX) { mr = (_data._rotate + _data._shearX) * mix; float r = MathUtil::atan2(dy + _ty, dx + _tx) - ca - _rotateOffset * mr; @@ -399,8 +401,8 @@ void PhysicsConstraint::update(Physics physics) { } a = _remaining; if (a >= t) { - if (d == -1) d = MathUtil::pow(_damping, 60 * t); float m = _massInverse * t, e = _strength, w = _wind, g = _gravity * (Bone::yDown ? -1 : 1), h = l / f; + float d = MathUtil::pow(_damping, 60 * t); while (true) { a -= t; if (scaleX) { diff --git a/spine-sfml/cpp/example/main.cpp b/spine-sfml/cpp/example/main.cpp index 14a324fcb..1b595f406 100644 --- a/spine-sfml/cpp/example/main.cpp +++ b/spine-sfml/cpp/example/main.cpp @@ -626,6 +626,8 @@ void celestialCircus(SkeletonData *skeletonData, Atlas *atlas) { Skeleton *skeleton = drawable.skeleton; skeleton->setPosition(320, 480); + skeleton->setScaleX(0.2); + skeleton->setScaleY(0.2); skeleton->updateWorldTransform(Physics_Update); drawable.state->setAnimation(0, "swing", true); @@ -778,10 +780,10 @@ extern spine::SkeletonRenderer *skeletonRenderer; int main() { SpineExtension::setInstance(&dbgExtension); + testcase(celestialCircus, "data/celestial-circus-pro.json", "data/celestial-circus-pro.skel", "data/celestial-circus-pma.atlas", 1); testcase(mixAndMatch, "data/mix-and-match-pro.json", "data/mix-and-match-pro.skel", "data/mix-and-match-pma.atlas", 0.5f); testcase(cloudpot, "data/cloud-pot.json", "data/cloud-pot.skel", "data/cloud-pot-pma.atlas", 0.2); testcase(sack, "data/sack-pro.json", "data/sack-pro.skel", "data/sack-pma.atlas", 0.2f); - testcase(celestialCircus, "data/celestial-circus-pro.json", "data/celestial-circus-pro.skel", "data/celestial-circus-pma.atlas", 0.2f); testcase(snowglobe, "data/snowglobe-pro.json", "data/snowglobe-pro.skel", "data/snowglobe-pma.atlas", 0.2f); testcase(dragon, "data/dragon-ess.json", "data/dragon-ess.skel", "data/dragon-pma.atlas", 0.6f); testcase(spineboy, "data/spineboy-pro.json", "data/spineboy-pro.skel", "data/spineboy-pma.atlas", 0.62f); From 83ac01e76c9839496fc7674b673d50ebc8556564 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 14:36:41 +0200 Subject: [PATCH 080/215] [c] Port: Scale physics constraint limits with skeleton scale. See #2576 --- spine-c/spine-c/src/spine/PhysicsConstraint.c | 29 ++++++++++--------- spine-sfml/c/example/main.cpp | 3 +- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/spine-c/spine-c/src/spine/PhysicsConstraint.c b/spine-c/spine-c/src/spine/PhysicsConstraint.c index df9134faa..f750b5be6 100644 --- a/spine-c/spine-c/src/spine/PhysicsConstraint.c +++ b/spine-c/spine-c/src/spine/PhysicsConstraint.c @@ -121,22 +121,25 @@ void spPhysicsConstraint_update(spPhysicsConstraint *self, spPhysics physics) { self->ux = bx; self->uy = by; } else { - float a = self->remaining, i = self->inertia, q = self->data->limit * delta, t = self->data->step, f = self->skeleton->data->referenceScale, d = -1; + // float a = self->remaining, i = self->inertia, q = self->data->limit * delta, t = self->data->step, f = self->skeleton->data->referenceScale, d = -1; + float a = self->remaining, i = self->inertia, t = self->data->step, f = self->skeleton->data->referenceScale; + float qx = self->data->limit * delta, qy = qx * ABS(self->skeleton->scaleX); + qx *= ABS(self->skeleton->scaleY); if (x || y) { if (x) { float u = (self->ux - bx) * i; - self->xOffset += u > q ? q : u < -q ? -q + self->xOffset += u > qx ? qx : u < -qx ? -qx : u; self->ux = bx; } if (y) { float u = (self->uy - by) * i; - self->yOffset += u > q ? q : u < -q ? -q + self->yOffset += u > qy ? qy : u < -qy ? -qy : u; self->uy = by; } if (a >= t) { - d = POW(self->damping, 60 * t); + float d = POW(self->damping, 60 * t); float m = self->massInverse * t, e = self->strength, w = self->wind * f, g = self->gravity * f * (spBone_isYDown() ? -1 : 1); do { if (x) { @@ -159,14 +162,14 @@ void spPhysicsConstraint_update(spPhysicsConstraint *self, spPhysics physics) { if (rotateOrShearX || scaleX) { float ca = ATAN2(bone->c, bone->a), c, s, mr = 0; float dx = self->cx - bone->worldX, dy = self->cy - bone->worldY; - if (dx > q) - dx = q; - else if (dx < -q)// - dx = -q; - if (dy > q) - dy = q; - else if (dy < -q)// - dy = -q; + if (dx > qx) + dx = qx; + else if (dx < -qx)// + dx = -qx; + if (dy > qy) + dy = qy; + else if (dy < -qy)// + dy = -qy; if (rotateOrShearX) { mr = (self->data->rotate + self->data->shearX) * mix; float r = ATAN2(dy + self->ty, dx + self->tx) - ca - self->rotateOffset * mr; @@ -186,8 +189,8 @@ void spPhysicsConstraint_update(spPhysicsConstraint *self, spPhysics physics) { } a = self->remaining; if (a >= t) { - if (d == -1) d = POW(self->damping, 60 * t); float m = self->massInverse * t, e = self->strength, w = self->wind, g = self->gravity, h = l / f; + float d = POW(self->damping, 60 * t); while (-1) { a -= t; if (scaleX) { diff --git a/spine-sfml/c/example/main.cpp b/spine-sfml/c/example/main.cpp index d1a1f9883..2f6aebd96 100644 --- a/spine-sfml/c/example/main.cpp +++ b/spine-sfml/c/example/main.cpp @@ -760,6 +760,7 @@ void celestialCircus(spSkeletonData *skeletonData, spAtlas *atlas) { spSkeleton *skeleton = drawable->skeleton; skeleton->x = 320; skeleton->y = 480; + skeleton->scaleX = skeleton->scaleY = 0.2f; spSkeleton_updateWorldTransform(skeleton, SP_PHYSICS_UPDATE); spAnimationState_setAnimationByName(drawable->state, 0, "swing", true); @@ -784,9 +785,9 @@ void celestialCircus(spSkeletonData *skeletonData, spAtlas *atlas) { } int main() { + testcase(celestialCircus, "data/celestial-circus-pro.json", "data/celestial-circus-pro.skel", "data/celestial-circus-pma.atlas", 1); testcase(cloudpot, "data/cloud-pot.json", "data/cloud-pot.skel", "data/cloud-pot-pma.atlas", 0.2); testcase(sack, "data/sack-pro.json", "data/sack-pro.skel", "data/sack-pma.atlas", 0.2f); - testcase(celestialCircus, "data/celestial-circus-pro.json", "data/celestial-circus-pro.skel", "data/celestial-circus-pma.atlas", 0.2f); testcase(snowglobe, "data/snowglobe-pro.json", "data/snowglobe-pro.skel", "data/snowglobe-pma.atlas", 0.2f); testcase(raptor, "data/raptor-pro.json", "data/raptor-pro.skel", "data/raptor-pma.atlas", 0.5f); testcase(dragon, "data/dragon-ess.json", "data/dragon-ess.skel", "data/dragon-pma.atlas", 0.6f); From 1d0b33fb694f04bfa8789495aedbc6d632d3da73 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 14:37:16 +0200 Subject: [PATCH 081/215] Formatting --- spine-c/spine-c/src/spine/PhysicsConstraint.c | 12 ++++++------ spine-cpp/spine-cpp/src/spine/MathUtil.cpp | 2 +- spine-cpp/spine-cpp/src/spine/PhysicsConstraint.cpp | 12 ++++++------ spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp | 8 ++++---- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/spine-c/spine-c/src/spine/PhysicsConstraint.c b/spine-c/spine-c/src/spine/PhysicsConstraint.c index f750b5be6..f15305281 100644 --- a/spine-c/spine-c/src/spine/PhysicsConstraint.c +++ b/spine-c/spine-c/src/spine/PhysicsConstraint.c @@ -122,20 +122,20 @@ void spPhysicsConstraint_update(spPhysicsConstraint *self, spPhysics physics) { self->uy = by; } else { // float a = self->remaining, i = self->inertia, q = self->data->limit * delta, t = self->data->step, f = self->skeleton->data->referenceScale, d = -1; - float a = self->remaining, i = self->inertia, t = self->data->step, f = self->skeleton->data->referenceScale; - float qx = self->data->limit * delta, qy = qx * ABS(self->skeleton->scaleX); - qx *= ABS(self->skeleton->scaleY); + float a = self->remaining, i = self->inertia, t = self->data->step, f = self->skeleton->data->referenceScale; + float qx = self->data->limit * delta, qy = qx * ABS(self->skeleton->scaleX); + qx *= ABS(self->skeleton->scaleY); if (x || y) { if (x) { float u = (self->ux - bx) * i; self->xOffset += u > qx ? qx : u < -qx ? -qx - : u; + : u; self->ux = bx; } if (y) { float u = (self->uy - by) * i; self->yOffset += u > qy ? qy : u < -qy ? -qy - : u; + : u; self->uy = by; } if (a >= t) { @@ -190,7 +190,7 @@ void spPhysicsConstraint_update(spPhysicsConstraint *self, spPhysics physics) { a = self->remaining; if (a >= t) { float m = self->massInverse * t, e = self->strength, w = self->wind, g = self->gravity, h = l / f; - float d = POW(self->damping, 60 * t); + float d = POW(self->damping, 60 * t); while (-1) { a -= t; if (scaleX) { diff --git a/spine-cpp/spine-cpp/src/spine/MathUtil.cpp b/spine-cpp/spine-cpp/src/spine/MathUtil.cpp index 159b4e7c0..cbfc8b897 100644 --- a/spine-cpp/spine-cpp/src/spine/MathUtil.cpp +++ b/spine-cpp/spine-cpp/src/spine/MathUtil.cpp @@ -105,7 +105,7 @@ bool MathUtil::isNan(float v) { } float MathUtil::quietNan() { - return std::nan(""); + return std::nan(""); } float MathUtil::random() { diff --git a/spine-cpp/spine-cpp/src/spine/PhysicsConstraint.cpp b/spine-cpp/spine-cpp/src/spine/PhysicsConstraint.cpp index 84971c377..66334f6ac 100644 --- a/spine-cpp/spine-cpp/src/spine/PhysicsConstraint.cpp +++ b/spine-cpp/spine-cpp/src/spine/PhysicsConstraint.cpp @@ -334,20 +334,20 @@ void PhysicsConstraint::update(Physics physics) { _ux = bx; _uy = by; } else { - float a = _remaining, i = _inertia, t = _data._step, f = _skeleton.getData()->getReferenceScale(); - float qx = _data._limit * delta, qy = qx * MathUtil::abs(_skeleton.getScaleX()); - qx *= MathUtil::abs(_skeleton.getScaleY()); + float a = _remaining, i = _inertia, t = _data._step, f = _skeleton.getData()->getReferenceScale(); + float qx = _data._limit * delta, qy = qx * MathUtil::abs(_skeleton.getScaleX()); + qx *= MathUtil::abs(_skeleton.getScaleY()); if (x || y) { if (x) { float u = (_ux - bx) * i; _xOffset += u > qx ? qx : u < -qx ? -qx - : u; + : u; _ux = bx; } if (y) { float u = (_uy - by) * i; _yOffset += u > qy ? qy : u < -qy ? -qy - : u; + : u; _uy = by; } if (a >= t) { @@ -402,7 +402,7 @@ void PhysicsConstraint::update(Physics physics) { a = _remaining; if (a >= t) { float m = _massInverse * t, e = _strength, w = _wind, g = _gravity * (Bone::yDown ? -1 : 1), h = l / f; - float d = MathUtil::pow(_damping, 60 * t); + float d = MathUtil::pow(_damping, 60 * t); while (true) { a -= t; if (scaleX) { diff --git a/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp b/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp index 19a48d879..a1681760d 100644 --- a/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp +++ b/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp @@ -363,10 +363,10 @@ bool SkeletonClipping::clip(float x1, float y1, float x2, float y2, float x3, fl } else originalOutput->setSize(originalOutput->size() - 2, 0); - if (originalOutput->size() < 6) { - originalOutput->clear(); - return false; - } + if (originalOutput->size() < 6) { + originalOutput->clear(); + return false; + } return clipped; } From 30cf3bcfba2a514b1f719bf871129794dd39716d Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 17:44:12 +0200 Subject: [PATCH 082/215] [maven-release-plugin] prepare release spine-libgdx-4.2.1 --- spine-libgdx/spine-libgdx/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-libgdx/spine-libgdx/pom.xml b/spine-libgdx/spine-libgdx/pom.xml index 673225196..3d7d7e91c 100644 --- a/spine-libgdx/spine-libgdx/pom.xml +++ b/spine-libgdx/spine-libgdx/pom.xml @@ -10,7 +10,7 @@ com.esotericsoftware.spine spine-libgdx jar - 4.2.1-SNAPSHOT + 4.2.1 spine-libgdx @@ -39,7 +39,7 @@ scm:git:https://github.com/EsotericSoftware/spine-runtimes.git scm:git:https://github.com/EsotericSoftware/spine-runtimes.git https://github.com/EsotericSoftware/spine-runtimes/ - spine-libgdx-4.1.0 + spine-libgdx-4.2.1 From facb8299a68724be0811674153656144c74092d8 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 17:44:14 +0200 Subject: [PATCH 083/215] [maven-release-plugin] prepare for next development iteration --- spine-libgdx/spine-libgdx/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-libgdx/spine-libgdx/pom.xml b/spine-libgdx/spine-libgdx/pom.xml index 3d7d7e91c..4df1aecb4 100644 --- a/spine-libgdx/spine-libgdx/pom.xml +++ b/spine-libgdx/spine-libgdx/pom.xml @@ -10,7 +10,7 @@ com.esotericsoftware.spine spine-libgdx jar - 4.2.1 + 4.2.2-SNAPSHOT spine-libgdx @@ -39,7 +39,7 @@ scm:git:https://github.com/EsotericSoftware/spine-runtimes.git scm:git:https://github.com/EsotericSoftware/spine-runtimes.git https://github.com/EsotericSoftware/spine-runtimes/ - spine-libgdx-4.2.1 + spine-libgdx-4.1.0 From e2954788e109b224b939cb64fdf72449a582ab52 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 17:47:13 +0200 Subject: [PATCH 084/215] [maven-release-plugin] rollback the release of spine-libgdx-4.2.1 --- spine-libgdx/spine-libgdx/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-libgdx/spine-libgdx/pom.xml b/spine-libgdx/spine-libgdx/pom.xml index 4df1aecb4..673225196 100644 --- a/spine-libgdx/spine-libgdx/pom.xml +++ b/spine-libgdx/spine-libgdx/pom.xml @@ -10,7 +10,7 @@ com.esotericsoftware.spine spine-libgdx jar - 4.2.2-SNAPSHOT + 4.2.1-SNAPSHOT spine-libgdx From 5ea99dd2e13e5a72a72b3f96593a3af4e4827113 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 17:53:11 +0200 Subject: [PATCH 085/215] [maven-release-plugin] prepare release spine-libgdx-4.2.1 --- spine-libgdx/spine-libgdx/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-libgdx/spine-libgdx/pom.xml b/spine-libgdx/spine-libgdx/pom.xml index 673225196..3d7d7e91c 100644 --- a/spine-libgdx/spine-libgdx/pom.xml +++ b/spine-libgdx/spine-libgdx/pom.xml @@ -10,7 +10,7 @@ com.esotericsoftware.spine spine-libgdx jar - 4.2.1-SNAPSHOT + 4.2.1 spine-libgdx @@ -39,7 +39,7 @@ scm:git:https://github.com/EsotericSoftware/spine-runtimes.git scm:git:https://github.com/EsotericSoftware/spine-runtimes.git https://github.com/EsotericSoftware/spine-runtimes/ - spine-libgdx-4.1.0 + spine-libgdx-4.2.1 From 14d21f840933c5ac95de276abffda047c8d29182 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 17:53:14 +0200 Subject: [PATCH 086/215] [maven-release-plugin] prepare for next development iteration --- spine-libgdx/spine-libgdx/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-libgdx/spine-libgdx/pom.xml b/spine-libgdx/spine-libgdx/pom.xml index 3d7d7e91c..4df1aecb4 100644 --- a/spine-libgdx/spine-libgdx/pom.xml +++ b/spine-libgdx/spine-libgdx/pom.xml @@ -10,7 +10,7 @@ com.esotericsoftware.spine spine-libgdx jar - 4.2.1 + 4.2.2-SNAPSHOT spine-libgdx @@ -39,7 +39,7 @@ scm:git:https://github.com/EsotericSoftware/spine-runtimes.git scm:git:https://github.com/EsotericSoftware/spine-runtimes.git https://github.com/EsotericSoftware/spine-runtimes/ - spine-libgdx-4.2.1 + spine-libgdx-4.1.0 From 5de003cb8f87d6594ee693a094aab4f7bc27e743 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 20:05:34 +0200 Subject: [PATCH 087/215] [android] Fix publishing to Maven Central --- spine-android/app/build.gradle.kts | 3 +- .../spine/AnimationStateEvents.kt | 2 +- spine-android/settings.gradle.kts | 10 +-- spine-android/spine-android/build.gradle.kts | 62 +++++++++++++++++-- 4 files changed, 65 insertions(+), 12 deletions(-) diff --git a/spine-android/app/build.gradle.kts b/spine-android/app/build.gradle.kts index 586da8e28..de1569259 100644 --- a/spine-android/app/build.gradle.kts +++ b/spine-android/app/build.gradle.kts @@ -71,6 +71,5 @@ dependencies { debugImplementation(libs.androidx.ui.test.manifest) implementation(project(":spine-android")) - // Run `./gradlew publishToMavenLocal` in `spine-android` to use from local maven repo. -// implementation("com.esotericsoftware:spine-android:4.2") + // implementation("com.esotericsoftware.spine:spine-android:4.2.2-SNAPSHOT") } diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt b/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt index df8350a39..c1b507b52 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/AnimationStateEvents.kt @@ -62,7 +62,7 @@ fun AnimationState(nav: NavHostController) { controller.skeleton.setScaleX(0.5f) controller.skeleton.setScaleY(0.5f) - controller.skeleton.findSlot("gun")?.color = Color(1f, 0f, 0f, 1f) + controller.skeleton.findSlot("gun")?.color?.set(Color(1f, 0f, 0f, 1f)) controller.animationStateData.setDefaultMix(0.2f) controller.animationState.setAnimation(0, "walk", true).setListener(object : AnimationState.AnimationStateListener { diff --git a/spine-android/settings.gradle.kts b/spine-android/settings.gradle.kts index 8f1932fa2..749b05767 100644 --- a/spine-android/settings.gradle.kts +++ b/spine-android/settings.gradle.kts @@ -24,11 +24,11 @@ dependencyResolutionManagement { } rootProject.name = "Spine Android Examples" -includeBuild("../spine-libgdx") { - dependencySubstitution { - substitute(module("com.esotericsoftware.spine:spine-libgdx")).using(project(":spine-libgdx")) - } -} +//includeBuild("../spine-libgdx") { +// dependencySubstitution { +// substitute(module("com.esotericsoftware.spine:spine-libgdx")).using(project(":spine-libgdx")) +// } +//} //includeBuild("../../libgdx") { // dependencySubstitution { // substitute(module("com.badlogicgames.gdx:gdx")).using(project(":gdx")) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index 9d77b1661..9aed02929 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -1,6 +1,7 @@ plugins { alias(libs.plugins.androidLibrary) `maven-publish` + signing } android { @@ -39,16 +40,47 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) } +val libraryVersion = "4.2.2-SNAPSHOT" // Update this as needed + +tasks.register("sourceJar") { + archiveClassifier.set("sources") + from(android.sourceSets["main"].java.srcDirs) +} + afterEvaluate { publishing { publications { - create("mavenLocal") { - groupId = "com.esotericsoftware" - artifactId = "spine-android" - version = "4.2" + create("release") { artifact(tasks.getByName("bundleReleaseAar")) + artifact(tasks.getByName("sourceJar")) + + groupId = "com.esotericsoftware.spine" + artifactId = "spine-android" + version = libraryVersion pom { + packaging = "aar" + name.set("spine-android") + description.set("Spine Runtime for Android") + url.set("https://github.com/esotericsoftware/spine-runtimes") + licenses { + license { + name.set("Spine Runtimes License") + url.set("http://esotericsoftware.com/spine-runtimes-license") + } + } + developers { + developer { + name.set("Esoteric Software") + email.set("contact@esotericsoftware.com") + } + } + scm { + url.set(pom.url.get()) + connection.set("scm:git:${url.get()}.git") + developerConnection.set("scm:git:${url.get()}.git") + } + withXml { val dependenciesNode = asNode().appendNode("dependencies") configurations.api.get().dependencies.forEach { dependency -> @@ -68,8 +100,30 @@ afterEvaluate { } } } + + } + } + } + + repositories { + maven { + name = "SonaType" + url = uri(if (libraryVersion.endsWith("-SNAPSHOT")) { + "https://oss.sonatype.org/content/repositories/snapshots" + } else { + "https://oss.sonatype.org/service/local/staging/deploy/maven2" + }) + + credentials { + username = project.findProperty("ossrhUsername") as String? + password = project.findProperty("ossrhPassword") as String? } } } } + + signing { + useGpgCmd() + sign(publishing.publications["release"]) + } } From 12f11cbbf97315c5ca58db49a65a140267bf2f8a Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 24 Jul 2024 20:37:00 +0200 Subject: [PATCH 088/215] Add spine-android to formatter --- formatters/build.gradle | 3 +- .../spine/SimpleAnimationActivity.java | 60 ++- spine-android/publish.sh | 14 + spine-android/spine-android/build.gradle.kts | 3 +- .../android/ExampleInstrumentedTest.java | 21 +- .../android/AndroidSkeletonDrawable.java | 184 ++++--- .../spine/android/AndroidTexture.java | 5 +- .../spine/android/AndroidTextureAtlas.java | 63 +-- .../spine/android/DebugRenderer.java | 26 +- .../spine/android/SkeletonRenderer.java | 44 +- .../spine/android/SpineController.java | 454 ++++++++---------- .../spine/android/SpineView.java | 301 +++++------- .../spine/android/bounds/Alignment.java | 39 +- .../spine/android/bounds/Bounds.java | 105 ++-- .../spine/android/bounds/BoundsProvider.java | 8 +- .../spine/android/bounds/ContentMode.java | 16 +- .../spine/android/bounds/RawBounds.java | 32 +- .../spine/android/bounds/SetupPoseBounds.java | 14 +- .../bounds/SkinAndAnimationBounds.java | 139 +++--- .../AndroidSkeletonDrawableLoader.java | 2 +- .../SpineControllerAfterPaintCallback.java | 2 +- .../SpineControllerBeforePaintCallback.java | 2 +- .../callbacks/SpineControllerCallback.java | 2 +- .../spine/android/utils/HttpUtils.java | 113 +++-- .../android/utils/SkeletonDataUtils.java | 94 ++-- .../android/ExampleUnitTest.java | 17 +- .../src/com/esotericsoftware/spine/Slot.java | 2 +- 27 files changed, 794 insertions(+), 971 deletions(-) create mode 100755 spine-android/publish.sh diff --git a/formatters/build.gradle b/formatters/build.gradle index 2886d7a77..1b8b485ae 100644 --- a/formatters/build.gradle +++ b/formatters/build.gradle @@ -8,7 +8,8 @@ spotless { lineEndings 'UNIX' java { - target 'spine-libgdx/**/*.java' + target 'spine-libgdx/**/*.java', + 'spine-android/**/*.java' eclipse().configFile('formatters/eclipse-formatter.xml') } diff --git a/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java index dc423cf7c..51f50d8f8 100644 --- a/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java +++ b/spine-android/app/src/main/java/com/esotericsoftware/spine/SimpleAnimationActivity.java @@ -39,40 +39,38 @@ import com.esotericsoftware.spine.android.SpineController; import com.esotericsoftware.spine.android.SpineView; public class SimpleAnimationActivity extends AppCompatActivity { - /** @noinspection FieldCanBeLocal*/ - private SpineView spineView; - /** @noinspection FieldCanBeLocal*/ - private SpineController spineController; + /** @noinspection FieldCanBeLocal */ + private SpineView spineView; + /** @noinspection FieldCanBeLocal */ + private SpineController spineController; - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_simple_animation); + @Override + protected void onCreate (Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_simple_animation); - // Set up the toolbar - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - if (getSupportActionBar() != null) { - getSupportActionBar().setTitle("Simple Animation"); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - getSupportActionBar().setDisplayShowHomeEnabled(true); - } + // Set up the toolbar + Toolbar toolbar = findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + if (getSupportActionBar() != null) { + getSupportActionBar().setTitle("Simple Animation"); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setDisplayShowHomeEnabled(true); + } - spineView = findViewById(R.id.spineView); - spineController = new SpineController( controller -> - controller.getAnimationState().setAnimation(0, "walk", true) - ); + spineView = findViewById(R.id.spineView); + spineController = new SpineController(controller -> controller.getAnimationState().setAnimation(0, "walk", true)); - spineView.setController(spineController); - spineView.loadFromAsset("spineboy.atlas","spineboy-pro.json"); - } + spineView.setController(spineController); + spineView.loadFromAsset("spineboy.atlas", "spineboy-pro.json"); + } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - return true; - } - return super.onOptionsItemSelected(item); - } + @Override + public boolean onOptionsItemSelected (MenuItem item) { + if (item.getItemId() == android.R.id.home) { + finish(); + return true; + } + return super.onOptionsItemSelected(item); + } } diff --git a/spine-android/publish.sh b/spine-android/publish.sh new file mode 100755 index 000000000..d1f97c465 --- /dev/null +++ b/spine-android/publish.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +# +# 1. Set up PGP key for signing +# 2. Create ~/.gradle/gradle.properties +# 3. Add +# ossrhUsername= +# ossrhPassword= +# signing.gnupg.passphrase= +# +# After publishing via this script, log into https://oss.sonatype.org and release it manually after +# checks pass ("Release & Drop"). +set -e + ./gradlew publishReleasePublicationToSonaTypeRepository --info \ No newline at end of file diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index 9aed02929..75f18b2ea 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -40,7 +40,7 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) } -val libraryVersion = "4.2.2-SNAPSHOT" // Update this as needed +val libraryVersion = "4.2.3-SNAPSHOT" // Update this as needed tasks.register("sourceJar") { archiveClassifier.set("sources") @@ -125,5 +125,6 @@ afterEvaluate { signing { useGpgCmd() sign(publishing.publications["release"]) + sign(tasks.getByName("sourceJar")) } } diff --git a/spine-android/spine-android/src/androidTest/java/com/esotericsoftware/android/ExampleInstrumentedTest.java b/spine-android/spine-android/src/androidTest/java/com/esotericsoftware/android/ExampleInstrumentedTest.java index 4d375b3ab..9e3730dc6 100644 --- a/spine-android/spine-android/src/androidTest/java/com/esotericsoftware/android/ExampleInstrumentedTest.java +++ b/spine-android/spine-android/src/androidTest/java/com/esotericsoftware/android/ExampleInstrumentedTest.java @@ -1,3 +1,4 @@ + package com.esotericsoftware.android; import android.content.Context; @@ -10,17 +11,15 @@ import org.junit.runner.RunWith; import static org.junit.Assert.*; -/** - * Instrumented test, which will execute on an Android device. +/** Instrumented test, which will execute on an Android device. * - * @see Testing documentation - */ + * @see Testing documentation */ @RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); - assertEquals("com.esotericsoftware.spine.test", appContext.getPackageName()); - } -} \ No newline at end of file + @Test + public void useAppContext () { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.esotericsoftware.spine.test", appContext.getPackageName()); + } +} diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java index e71a2fab7..a4e38cc06 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidSkeletonDrawable.java @@ -48,129 +48,111 @@ import com.esotericsoftware.spine.android.utils.SkeletonDataUtils; import java.io.File; import java.net.URL; -/** - * A {@link AndroidSkeletonDrawable} bundles loading updating updating an {@link AndroidTextureAtlas}, {@link Skeleton}, and {@link AnimationState} - * into a single easy-to-use class. +/** A {@link AndroidSkeletonDrawable} bundles loading updating updating an {@link AndroidTextureAtlas}, {@link Skeleton}, and + * {@link AnimationState} into a single easy-to-use class. * - * Use the {@link AndroidSkeletonDrawable#fromAsset(String, String, Context)}, {@link AndroidSkeletonDrawable#fromFile(File, File)}, - * or {@link AndroidSkeletonDrawable#fromHttp(URL, URL, File)} methods to construct a {@link AndroidSkeletonDrawable}. To have - * multiple skeleton drawable instances share the same {@link AndroidTextureAtlas} and {@link SkeletonData}, use the constructor. + * Use the {@link AndroidSkeletonDrawable#fromAsset(String, String, Context)}, + * {@link AndroidSkeletonDrawable#fromFile(File, File)}, or {@link AndroidSkeletonDrawable#fromHttp(URL, URL, File)} methods to + * construct a {@link AndroidSkeletonDrawable}. To have multiple skeleton drawable instances share the same + * {@link AndroidTextureAtlas} and {@link SkeletonData}, use the constructor. * * You can then directly access the {@link AndroidSkeletonDrawable#getAtlas()}, {@link AndroidSkeletonDrawable#getSkeletonData()}, - * {@link AndroidSkeletonDrawable#getSkeleton()}, {@link AndroidSkeletonDrawable#getAnimationStateData()}, and {@link AndroidSkeletonDrawable#getAnimationState()} - * to query and animate the skeleton. Use the {@link AnimationState} to queue animations on one or more tracks - * via {@link AnimationState#setAnimation(int, Animation, boolean)} or {@link AnimationState#addAnimation(int, Animation, boolean, float)}. + * {@link AndroidSkeletonDrawable#getSkeleton()}, {@link AndroidSkeletonDrawable#getAnimationStateData()}, and + * {@link AndroidSkeletonDrawable#getAnimationState()} to query and animate the skeleton. Use the {@link AnimationState} to queue + * animations on one or more tracks via {@link AnimationState#setAnimation(int, Animation, boolean)} or + * {@link AnimationState#addAnimation(int, Animation, boolean, float)}. * - * To update the {@link AnimationState} and apply it to the {@link Skeleton}, call the {@link AndroidSkeletonDrawable#update(float)} function, providing it - * a delta time in seconds to advance the animations. + * To update the {@link AnimationState} and apply it to the {@link Skeleton}, call the + * {@link AndroidSkeletonDrawable#update(float)} function, providing it a delta time in seconds to advance the animations. * - * To render the current pose of the {@link Skeleton}, use {@link SkeletonRenderer#render(Skeleton)}, {@link SkeletonRenderer#renderToCanvas(Canvas, Array)}, - * {@link SkeletonRenderer#renderToBitmap(float, float, int, Skeleton)}, depending on your needs. - */ + * To render the current pose of the {@link Skeleton}, use {@link SkeletonRenderer#render(Skeleton)}, + * {@link SkeletonRenderer#renderToCanvas(Canvas, Array)}, {@link SkeletonRenderer#renderToBitmap(float, float, int, Skeleton)}, + * depending on your needs. */ public class AndroidSkeletonDrawable { - private final AndroidTextureAtlas atlas; + private final AndroidTextureAtlas atlas; - private final SkeletonData skeletonData; + private final SkeletonData skeletonData; - private final Skeleton skeleton; + private final Skeleton skeleton; - private final AnimationStateData animationStateData; + private final AnimationStateData animationStateData; - private final AnimationState animationState; + private final AnimationState animationState; - /** - * Constructs a new skeleton drawable from the given (possibly shared) {@link AndroidTextureAtlas} and {@link SkeletonData}. - */ - public AndroidSkeletonDrawable(AndroidTextureAtlas atlas, SkeletonData skeletonData) { - this.atlas = atlas; - this.skeletonData = skeletonData; + /** Constructs a new skeleton drawable from the given (possibly shared) {@link AndroidTextureAtlas} and + * {@link SkeletonData}. */ + public AndroidSkeletonDrawable (AndroidTextureAtlas atlas, SkeletonData skeletonData) { + this.atlas = atlas; + this.skeletonData = skeletonData; - skeleton = new Skeleton(skeletonData); - animationStateData = new AnimationStateData(skeletonData); - animationState = new AnimationState(animationStateData); + skeleton = new Skeleton(skeletonData); + animationStateData = new AnimationStateData(skeletonData); + animationState = new AnimationState(animationStateData); - skeleton.updateWorldTransform(Skeleton.Physics.none); - } + skeleton.updateWorldTransform(Skeleton.Physics.none); + } - /** - * Updates the {@link AnimationState} using the {@code delta} time given in seconds, applies the - * animation state to the {@link Skeleton} and updates the world transforms of the skeleton - * to calculate its current pose. - */ - public void update(float delta) { - animationState.update(delta); - animationState.apply(skeleton); + /** Updates the {@link AnimationState} using the {@code delta} time given in seconds, applies the animation state to the + * {@link Skeleton} and updates the world transforms of the skeleton to calculate its current pose. */ + public void update (float delta) { + animationState.update(delta); + animationState.apply(skeleton); - skeleton.update(delta); - skeleton.updateWorldTransform(Skeleton.Physics.update); - } + skeleton.update(delta); + skeleton.updateWorldTransform(Skeleton.Physics.update); + } - /** - * Get the {@link AndroidTextureAtlas} - */ - public AndroidTextureAtlas getAtlas() { - return atlas; - } + /** Get the {@link AndroidTextureAtlas} */ + public AndroidTextureAtlas getAtlas () { + return atlas; + } - /** - * Get the {@link Skeleton} - */ - public Skeleton getSkeleton() { - return skeleton; - } + /** Get the {@link Skeleton} */ + public Skeleton getSkeleton () { + return skeleton; + } - /** - * Get the {@link SkeletonData} - */ - public SkeletonData getSkeletonData() { - return skeletonData; - } + /** Get the {@link SkeletonData} */ + public SkeletonData getSkeletonData () { + return skeletonData; + } - /** - * Get the {@link AnimationStateData} - */ - public AnimationStateData getAnimationStateData() { - return animationStateData; - } + /** Get the {@link AnimationStateData} */ + public AnimationStateData getAnimationStateData () { + return animationStateData; + } - /** - * Get the {@link AnimationState} - */ - public AnimationState getAnimationState() { - return animationState; - } + /** Get the {@link AnimationState} */ + public AnimationState getAnimationState () { + return animationState; + } - /** - * Constructs a new skeleton drawable from the {@code atlasFileName} and {@code skeletonFileName} from the the apps resources using {@link Context}. - * - * Throws an exception in case the data could not be loaded. - */ - public static AndroidSkeletonDrawable fromAsset (String atlasFileName, String skeletonFileName, Context context) { - AndroidTextureAtlas atlas = AndroidTextureAtlas.fromAsset(atlasFileName, context); - SkeletonData skeletonData = SkeletonDataUtils.fromAsset(atlas, skeletonFileName, context); - return new AndroidSkeletonDrawable(atlas, skeletonData); - } + /** Constructs a new skeleton drawable from the {@code atlasFileName} and {@code skeletonFileName} from the the apps resources + * using {@link Context}. + * + * Throws an exception in case the data could not be loaded. */ + public static AndroidSkeletonDrawable fromAsset (String atlasFileName, String skeletonFileName, Context context) { + AndroidTextureAtlas atlas = AndroidTextureAtlas.fromAsset(atlasFileName, context); + SkeletonData skeletonData = SkeletonDataUtils.fromAsset(atlas, skeletonFileName, context); + return new AndroidSkeletonDrawable(atlas, skeletonData); + } - /** - * Constructs a new skeleton drawable from the {@code atlasFile} and {@code skeletonFile}. - * - * Throws an exception in case the data could not be loaded. - */ - public static AndroidSkeletonDrawable fromFile (File atlasFile, File skeletonFile) { - AndroidTextureAtlas atlas = AndroidTextureAtlas.fromFile(atlasFile); - SkeletonData skeletonData = SkeletonDataUtils.fromFile(atlas, skeletonFile); - return new AndroidSkeletonDrawable(atlas, skeletonData); - } + /** Constructs a new skeleton drawable from the {@code atlasFile} and {@code skeletonFile}. + * + * Throws an exception in case the data could not be loaded. */ + public static AndroidSkeletonDrawable fromFile (File atlasFile, File skeletonFile) { + AndroidTextureAtlas atlas = AndroidTextureAtlas.fromFile(atlasFile); + SkeletonData skeletonData = SkeletonDataUtils.fromFile(atlas, skeletonFile); + return new AndroidSkeletonDrawable(atlas, skeletonData); + } - /** - * Constructs a new skeleton drawable from the {@code atlasUrl} and {@code skeletonUrl}. - * - * Throws an exception in case the data could not be loaded. - */ - public static AndroidSkeletonDrawable fromHttp (URL atlasUrl, URL skeletonUrl, File targetDirectory) { - AndroidTextureAtlas atlas = AndroidTextureAtlas.fromHttp(atlasUrl, targetDirectory); - SkeletonData skeletonData = SkeletonDataUtils.fromHttp(atlas, skeletonUrl, targetDirectory); - return new AndroidSkeletonDrawable(atlas, skeletonData); - } + /** Constructs a new skeleton drawable from the {@code atlasUrl} and {@code skeletonUrl}. + * + * Throws an exception in case the data could not be loaded. */ + public static AndroidSkeletonDrawable fromHttp (URL atlasUrl, URL skeletonUrl, File targetDirectory) { + AndroidTextureAtlas atlas = AndroidTextureAtlas.fromHttp(atlasUrl, targetDirectory); + SkeletonData skeletonData = SkeletonDataUtils.fromHttp(atlas, skeletonUrl, targetDirectory); + return new AndroidSkeletonDrawable(atlas, skeletonData); + } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTexture.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTexture.java index 95fe94665..1542dcd4b 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTexture.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTexture.java @@ -40,10 +40,7 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Shader; -/** - * A class holding an {@link Bitmap} of an {@link AndroidTextureAtlas} page image with it's associated - * blend modes and paints. - */ +/** A class holding an {@link Bitmap} of an {@link AndroidTextureAtlas} page image with it's associated blend modes and paints. */ public class AndroidTexture extends Texture { private Bitmap bitmap; private ObjectMap paints = new ObjectMap<>(); diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java index 67bdf33bb..65e54d470 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/AndroidTextureAtlas.java @@ -53,14 +53,11 @@ import android.graphics.Paint; import android.graphics.BitmapFactory; import android.os.Build; -/** - * Atlas data loaded from a `.atlas` file and its corresponding `.png` files. For each atlas image, - * a corresponding {@link Bitmap} and {@link Paint} is constructed, which are used when rendering a skeleton - * that uses this atlas. +/** Atlas data loaded from a `.atlas` file and its corresponding `.png` files. For each atlas image, a corresponding + * {@link Bitmap} and {@link Paint} is constructed, which are used when rendering a skeleton that uses this atlas. * - * Use the static methods {@link AndroidTextureAtlas#fromAsset(String, Context)}, {@link AndroidTextureAtlas#fromFile(File)}, - * and {@link AndroidTextureAtlas#fromHttp(URL, File)} to load an atlas. - */ + * Use the static methods {@link AndroidTextureAtlas#fromAsset(String, Context)}, {@link AndroidTextureAtlas#fromFile(File)}, and + * {@link AndroidTextureAtlas#fromHttp(URL, File)} to load an atlas. */ public class AndroidTextureAtlas { private interface BitmapLoader { Bitmap load (String path); @@ -94,10 +91,8 @@ public class AndroidTextureAtlas { } } - /** - * Returns the first region found with the specified name. This method uses string comparison to find the region, so the - * result should be cached rather than calling this method multiple times. - */ + /** Returns the first region found with the specified name. This method uses string comparison to find the region, so the + * result should be cached rather than calling this method multiple times. */ public @Null AtlasRegion findRegion (String name) { for (int i = 0, n = regions.size; i < n; i++) if (regions.get(i).name.equals(name)) return regions.get(i); @@ -112,12 +107,10 @@ public class AndroidTextureAtlas { return regions; } - /** - * Loads an {@link AndroidTextureAtlas} from the file {@code atlasFileName} from assets using {@link Context}. + /** Loads an {@link AndroidTextureAtlas} from the file {@code atlasFileName} from assets using {@link Context}. * - * Throws a {@link RuntimeException} in case the atlas could not be loaded. - */ - public static AndroidTextureAtlas fromAsset(String atlasFileName, Context context) { + * Throws a {@link RuntimeException} in case the atlas could not be loaded. */ + public static AndroidTextureAtlas fromAsset (String atlasFileName, Context context) { TextureAtlasData data = new TextureAtlasData(); AssetManager assetManager = context.getAssets(); @@ -138,21 +131,19 @@ public class AndroidTextureAtlas { } return new AndroidTextureAtlas(data, path -> { - path = path.startsWith("/") ? path.substring(1) : path; - try (InputStream in = new BufferedInputStream(assetManager.open(path))) { - return BitmapFactory.decodeStream(in); - } catch (Throwable t) { - throw new RuntimeException(t); - } - }); + path = path.startsWith("/") ? path.substring(1) : path; + try (InputStream in = new BufferedInputStream(assetManager.open(path))) { + return BitmapFactory.decodeStream(in); + } catch (Throwable t) { + throw new RuntimeException(t); + } + }); } - /** - * Loads an {@link AndroidTextureAtlas} from the file {@code atlasFileName}. + /** Loads an {@link AndroidTextureAtlas} from the file {@code atlasFileName}. * - * Throws a {@link RuntimeException} in case the atlas could not be loaded. - */ - public static AndroidTextureAtlas fromFile(File atlasFile) { + * Throws a {@link RuntimeException} in case the atlas could not be loaded. */ + public static AndroidTextureAtlas fromFile (File atlasFile) { TextureAtlasData data; try { data = loadTextureAtlasData(atlasFile); @@ -169,12 +160,10 @@ public class AndroidTextureAtlas { }); } - /** - * Loads an {@link AndroidTextureAtlas} from the URL {@code atlasURL}. + /** Loads an {@link AndroidTextureAtlas} from the URL {@code atlasURL}. * - * Throws a {@link Exception} in case the atlas could not be loaded. - */ - public static AndroidTextureAtlas fromHttp(URL atlasUrl, File targetDirectory) { + * Throws a {@link Exception} in case the atlas could not be loaded. */ + public static AndroidTextureAtlas fromHttp (URL atlasUrl, File targetDirectory) { File atlasFile = HttpUtils.downloadFrom(atlasUrl, targetDirectory); TextureAtlasData data; try { @@ -205,20 +194,20 @@ public class AndroidTextureAtlas { }); } - private static InputStream inputStream(File file) throws Exception { + private static InputStream inputStream (File file) throws Exception { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { return Files.newInputStream(file.toPath()); } else { - //noinspection IOStreamConstructor + // noinspection IOStreamConstructor return new FileInputStream(file); } } - private static TextureAtlasData loadTextureAtlasData(File atlasFile) { + private static TextureAtlasData loadTextureAtlasData (File atlasFile) { TextureAtlasData data = new TextureAtlasData(); FileHandle inputFile = new FileHandle() { @Override - public InputStream read() { + public InputStream read () { try { return new FileInputStream(atlasFile); } catch (FileNotFoundException e) { diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java index 24f166f12..a4ad6e739 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/DebugRenderer.java @@ -36,21 +36,19 @@ import android.graphics.RectF; import com.badlogic.gdx.utils.Array; import com.esotericsoftware.spine.Bone; -/** - * Renders debug information for a {@link AndroidSkeletonDrawable}, like bone locations, to a {@link Canvas}. - * See {@link DebugRenderer#render}. - */ +/** Renders debug information for a {@link AndroidSkeletonDrawable}, like bone locations, to a {@link Canvas}. See + * {@link DebugRenderer#render}. */ public class DebugRenderer { - public void render(AndroidSkeletonDrawable drawable, Canvas canvas, Array commands) { - Paint bonePaint = new Paint(); - bonePaint.setColor(android.graphics.Color.BLUE); - bonePaint.setStyle(Paint.Style.FILL); + public void render (AndroidSkeletonDrawable drawable, Canvas canvas, Array commands) { + Paint bonePaint = new Paint(); + bonePaint.setColor(android.graphics.Color.BLUE); + bonePaint.setStyle(Paint.Style.FILL); - for (Bone bone : drawable.getSkeleton().getBones()) { - float x = bone.getWorldX(); - float y = bone.getWorldY(); - canvas.drawRect(new RectF(x - 2.5f, y - 2.5f, x + 2.5f, y + 2.5f), bonePaint); - } - } + for (Bone bone : drawable.getSkeleton().getBones()) { + float x = bone.getWorldX(); + float y = bone.getWorldY(); + canvas.drawRect(new RectF(x - 2.5f, y - 2.5f, x + 2.5f, y + 2.5f), bonePaint); + } + } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java index f0d496a3a..f1cad367d 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java @@ -50,17 +50,13 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; -/** - * Is responsible to transform the {@link Skeleton} with its current pose to {@link SkeletonRenderer.RenderCommand} commands - * and render them to a {@link Canvas}. - */ +/** Is responsible to transform the {@link Skeleton} with its current pose to {@link SkeletonRenderer.RenderCommand} commands and + * render them to a {@link Canvas}. */ public class SkeletonRenderer { - /** - * Stores the vertices, indices, and atlas page index to be used for rendering one or more attachments - * of a {@link Skeleton} to a {@link Canvas}. See the implementation of {@link SkeletonRenderer#render(Skeleton)} and - * {@link SkeletonRenderer#renderToCanvas(Canvas, Array)} on how to use this data to render it to a {@link Canvas}. - */ + /** Stores the vertices, indices, and atlas page index to be used for rendering one or more attachments of a {@link Skeleton} + * to a {@link Canvas}. See the implementation of {@link SkeletonRenderer#render(Skeleton)} and + * {@link SkeletonRenderer#renderToCanvas(Canvas, Array)} on how to use this data to render it to a {@link Canvas}. */ public static class RenderCommand implements Pool.Poolable { FloatArray vertices = new FloatArray(32); FloatArray uvs = new FloatArray(32); @@ -90,10 +86,8 @@ public class SkeletonRenderer { }; private final Array commandList = new Array(); - /** - * Created the {@link RenderCommand} commands from the skeletons current pose. - */ - public Array render(Skeleton skeleton) { + /** Created the {@link RenderCommand} commands from the skeletons current pose. */ + public Array render (Skeleton skeleton) { Color color = null, skeletonColor = skeleton.getColor(); float r = skeletonColor.r, g = skeletonColor.g, b = skeletonColor.b, a = skeletonColor.a; @@ -228,11 +222,9 @@ public class SkeletonRenderer { return commandList; } - /** - * Renders the {@link RenderCommand} commands created from the skeleton current pose to the given {@link Canvas}. - * Does not perform any scaling or fitting. - */ - public void renderToCanvas(Canvas canvas, Array commands) { + /** Renders the {@link RenderCommand} commands created from the skeleton current pose to the given {@link Canvas}. Does not + * perform any scaling or fitting. */ + public void renderToCanvas (Canvas canvas, Array commands) { for (int i = 0; i < commands.size; i++) { RenderCommand command = commands.get(i); @@ -241,15 +233,13 @@ public class SkeletonRenderer { } } - /** - * Renders the {@link Skeleton} with its current pose to a {@link Bitmap}. + /** Renders the {@link Skeleton} with its current pose to a {@link Bitmap}. * - * @param width The width of the bitmap in pixels. - * @param height The height of the bitmap in pixels. - * @param bgColor The background color. - * @param skeleton The skeleton to render. - */ - public Bitmap renderToBitmap(float width, float height, int bgColor, Skeleton skeleton) { + * @param width The width of the bitmap in pixels. + * @param height The height of the bitmap in pixels. + * @param bgColor The background color. + * @param skeleton The skeleton to render. */ + public Bitmap renderToBitmap (float width, float height, int bgColor, Skeleton skeleton) { Vector2 offset = new Vector2(0, 0); Vector2 size = new Vector2(0, 0); FloatArray floatArray = new FloatArray(); @@ -259,7 +249,7 @@ public class SkeletonRenderer { RectF bounds = new RectF(offset.x, offset.y, offset.x + size.x, offset.y + size.y); float scale = (1 / (bounds.width() > bounds.height() ? bounds.width() / width : bounds.height() / height)); - Bitmap bitmap = Bitmap.createBitmap((int) width, (int) height, Bitmap.Config.ARGB_8888); + Bitmap bitmap = Bitmap.createBitmap((int)width, (int)height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); Paint paint = new Paint(); diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java index 3f2c9d50f..2a2b12f5d 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineController.java @@ -43,289 +43,245 @@ import com.esotericsoftware.spine.android.callbacks.SpineControllerAfterPaintCal import com.esotericsoftware.spine.android.callbacks.SpineControllerBeforePaintCallback; import com.esotericsoftware.spine.android.callbacks.SpineControllerCallback; -/** - * Controls how the skeleton of a {@link SpineView} is animated and rendered. +/** Controls how the skeleton of a {@link SpineView} is animated and rendered. * - * Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback method is called once. This method can be used - * to set up the initial animation(s) of the skeleton, among other things. + * Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback method is called once. This method can + * be used to set up the initial animation(s) of the skeleton, among other things. * - * After initialization is complete, the {@link SpineView} is rendered at the screen refresh rate. In each frame, - * the {@link AnimationState} is updated and applied to the {@link Skeleton}. + * After initialization is complete, the {@link SpineView} is rendered at the screen refresh rate. In each frame, the + * {@link AnimationState} is updated and applied to the {@link Skeleton}. * - * Next, the optionally provided method {@code onBeforeUpdateWorldTransforms} is called, which can modify the - * skeleton before its current pose is calculated using {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. After - * {@link Skeleton#updateWorldTransform(Skeleton.Physics)} has completed, the optional {@code onAfterUpdateWorldTransforms} method is - * called, which can modify the current pose before rendering the skeleton. + * Next, the optionally provided method {@code onBeforeUpdateWorldTransforms} is called, which can modify the skeleton before its + * current pose is calculated using {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. After + * {@link Skeleton#updateWorldTransform(Skeleton.Physics)} has completed, the optional {@code onAfterUpdateWorldTransforms} method + * is called, which can modify the current pose before rendering the skeleton. * - * Before the skeleton's current pose is rendered by the {@link SpineView}, the optional {@code onBeforePaint} is called, - * which allows rendering backgrounds or other objects that should go behind the skeleton on the {@link Canvas}. The - * {@link SpineView} then renders the skeleton's current pose and finally calls the optional {@code onAfterPaint}, which - * can render additional objects on top of the skeleton. + * Before the skeleton's current pose is rendered by the {@link SpineView}, the optional {@code onBeforePaint} is called, which + * allows rendering backgrounds or other objects that should go behind the skeleton on the {@link Canvas}. The {@link SpineView} + * then renders the skeleton's current pose and finally calls the optional {@code onAfterPaint}, which can render additional + * objects on top of the skeleton. * - * The underlying {@link AndroidTextureAtlas}, {@link SkeletonData}, {@link Skeleton}, {@link AnimationStateData}, {@link AnimationState}, and {@link AndroidSkeletonDrawable} - * can be accessed through their respective getters to inspect and/or modify the skeleton and its associated data. Accessing - * this data is only allowed if the {@link SpineView} and its data have been initialized and have not been disposed of yet. + * The underlying {@link AndroidTextureAtlas}, {@link SkeletonData}, {@link Skeleton}, {@link AnimationStateData}, + * {@link AnimationState}, and {@link AndroidSkeletonDrawable} can be accessed through their respective getters to inspect and/or + * modify the skeleton and its associated data. Accessing this data is only allowed if the {@link SpineView} and its data have + * been initialized and have not been disposed of yet. * - * By default, the widget updates and renders the skeleton every frame. The {@code pause} method can be used to pause updating - * and rendering the skeleton. The {@link SpineController#resume()} method resumes updating and rendering the skeleton. The {@link SpineController#isPlaying()} getter - * reports the current state. - */ + * By default, the widget updates and renders the skeleton every frame. The {@code pause} method can be used to pause updating and + * rendering the skeleton. The {@link SpineController#resume()} method resumes updating and rendering the skeleton. The + * {@link SpineController#isPlaying()} getter reports the current state. */ public class SpineController { - /** - * Used to build {@link SpineController} instances. - * */ - public static class Builder { - private final SpineControllerCallback onInitialized; - private SpineControllerCallback onBeforeUpdateWorldTransforms; - private SpineControllerCallback onAfterUpdateWorldTransforms; - private SpineControllerBeforePaintCallback onBeforePaint; - private SpineControllerAfterPaintCallback onAfterPaint; + /** Used to build {@link SpineController} instances. */ + public static class Builder { + private final SpineControllerCallback onInitialized; + private SpineControllerCallback onBeforeUpdateWorldTransforms; + private SpineControllerCallback onAfterUpdateWorldTransforms; + private SpineControllerBeforePaintCallback onBeforePaint; + private SpineControllerAfterPaintCallback onAfterPaint; - /** - * Instantiate a {@link Builder} used to build a {@link SpineController}, which controls how the skeleton of a {@link SpineView} - * is animated and rendered. Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback - * method is called once. This method can be used to set up the initial animation(s) of the skeleton, among other things. - * - * @param onInitialized Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback - * method is called once. This method can be used to set up the initial animation(s) of the skeleton, - * among other things. - */ - public Builder(SpineControllerCallback onInitialized) { - this.onInitialized = onInitialized; - } + /** Instantiate a {@link Builder} used to build a {@link SpineController}, which controls how the skeleton of a + * {@link SpineView} is animated and rendered. Upon initialization of a {@link SpineView}, the provided + * {@code onInitialized} callback method is called once. This method can be used to set up the initial animation(s) of the + * skeleton, among other things. + * + * @param onInitialized Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback method is + * called once. This method can be used to set up the initial animation(s) of the skeleton, among other things. */ + public Builder (SpineControllerCallback onInitialized) { + this.onInitialized = onInitialized; + } - /** - * Sets the {@code onBeforeUpdateWorldTransforms} callback. It is called before the skeleton's current pose is calculated - * using {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the skeleton before the pose calculation. - */ - public Builder setOnBeforeUpdateWorldTransforms(SpineControllerCallback onBeforeUpdateWorldTransforms) { - this.onBeforeUpdateWorldTransforms = onBeforeUpdateWorldTransforms; - return this; - } + /** Sets the {@code onBeforeUpdateWorldTransforms} callback. It is called before the skeleton's current pose is calculated + * using {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the skeleton before the pose + * calculation. */ + public Builder setOnBeforeUpdateWorldTransforms (SpineControllerCallback onBeforeUpdateWorldTransforms) { + this.onBeforeUpdateWorldTransforms = onBeforeUpdateWorldTransforms; + return this; + } - /** - * Sets the {@code onAfterUpdateWorldTransforms} callback. This method is called after the skeleton's current pose is calculated using - * {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the current pose before rendering the skeleton. - */ - public Builder setOnAfterUpdateWorldTransforms(SpineControllerCallback onAfterUpdateWorldTransforms) { - this.onAfterUpdateWorldTransforms = onAfterUpdateWorldTransforms; - return this; - } + /** Sets the {@code onAfterUpdateWorldTransforms} callback. This method is called after the skeleton's current pose is + * calculated using {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the current pose + * before rendering the skeleton. */ + public Builder setOnAfterUpdateWorldTransforms (SpineControllerCallback onAfterUpdateWorldTransforms) { + this.onAfterUpdateWorldTransforms = onAfterUpdateWorldTransforms; + return this; + } - /** - * Sets the {@code onBeforePaint} callback. It is called before the skeleton's current pose is rendered by the - * {@link SpineView}. It allows rendering backgrounds or other objects that should go behind the skeleton on the - * {@link Canvas}. - */ - public Builder setOnBeforePaint(SpineControllerBeforePaintCallback onBeforePaint) { - this.onBeforePaint = onBeforePaint; - return this; - } + /** Sets the {@code onBeforePaint} callback. It is called before the skeleton's current pose is rendered by the + * {@link SpineView}. It allows rendering backgrounds or other objects that should go behind the skeleton on the + * {@link Canvas}. */ + public Builder setOnBeforePaint (SpineControllerBeforePaintCallback onBeforePaint) { + this.onBeforePaint = onBeforePaint; + return this; + } - /** - * Sets the {@code onAfterPaint} callback. It is called after the skeleton's current pose is rendered by the - * {@link SpineView}. It allows rendering additional objects on top of the skeleton. - */ - public Builder setOnAfterPaint(SpineControllerAfterPaintCallback onAfterPaint) { - this.onAfterPaint = onAfterPaint; - return this; - } + /** Sets the {@code onAfterPaint} callback. It is called after the skeleton's current pose is rendered by the + * {@link SpineView}. It allows rendering additional objects on top of the skeleton. */ + public Builder setOnAfterPaint (SpineControllerAfterPaintCallback onAfterPaint) { + this.onAfterPaint = onAfterPaint; + return this; + } - public SpineController build() { - SpineController spineController = new SpineController(onInitialized); - spineController.onBeforeUpdateWorldTransforms = onBeforeUpdateWorldTransforms; - spineController.onAfterUpdateWorldTransforms = onAfterUpdateWorldTransforms; - spineController.onBeforePaint = onBeforePaint; - spineController.onAfterPaint = onAfterPaint; - return spineController; - } - } + public SpineController build () { + SpineController spineController = new SpineController(onInitialized); + spineController.onBeforeUpdateWorldTransforms = onBeforeUpdateWorldTransforms; + spineController.onAfterUpdateWorldTransforms = onAfterUpdateWorldTransforms; + spineController.onBeforePaint = onBeforePaint; + spineController.onAfterPaint = onAfterPaint; + return spineController; + } + } - private final SpineControllerCallback onInitialized; - private @Nullable SpineControllerCallback onBeforeUpdateWorldTransforms; - private @Nullable SpineControllerCallback onAfterUpdateWorldTransforms; - private @Nullable SpineControllerBeforePaintCallback onBeforePaint; - private @Nullable SpineControllerAfterPaintCallback onAfterPaint; - private AndroidSkeletonDrawable drawable; - private boolean playing = true; - private double offsetX = 0; - private double offsetY = 0; - private double scaleX = 1; - private double scaleY = 1; + private final SpineControllerCallback onInitialized; + private @Nullable SpineControllerCallback onBeforeUpdateWorldTransforms; + private @Nullable SpineControllerCallback onAfterUpdateWorldTransforms; + private @Nullable SpineControllerBeforePaintCallback onBeforePaint; + private @Nullable SpineControllerAfterPaintCallback onAfterPaint; + private AndroidSkeletonDrawable drawable; + private boolean playing = true; + private double offsetX = 0; + private double offsetY = 0; + private double scaleX = 1; + private double scaleY = 1; - /** - * Instantiate a {@link SpineController}, which controls how the skeleton of a {@link SpineView} is animated and rendered. - * Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback method is called once. - * This method can be used to set up the initial animation(s) of the skeleton, among other things. - * - * @param onInitialized Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback - * method is called once. This method can be used to set up the initial animation(s) of the skeleton, - * among other things. - */ - public SpineController(SpineControllerCallback onInitialized) { - this.onInitialized = onInitialized; - } + /** Instantiate a {@link SpineController}, which controls how the skeleton of a {@link SpineView} is animated and rendered. + * Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback method is called once. This method + * can be used to set up the initial animation(s) of the skeleton, among other things. + * + * @param onInitialized Upon initialization of a {@link SpineView}, the provided {@code onInitialized} callback method is + * called once. This method can be used to set up the initial animation(s) of the skeleton, among other things. */ + public SpineController (SpineControllerCallback onInitialized) { + this.onInitialized = onInitialized; + } - protected void init(AndroidSkeletonDrawable drawable) { - this.drawable = drawable; - if (onInitialized != null) { - onInitialized.execute(this); - } - } + protected void init (AndroidSkeletonDrawable drawable) { + this.drawable = drawable; + if (onInitialized != null) { + onInitialized.execute(this); + } + } - /** - * The {@link AndroidTextureAtlas} from which images to render the skeleton are sourced. - */ - public AndroidTextureAtlas getAtlas() { - if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); - return drawable.getAtlas(); - } + /** The {@link AndroidTextureAtlas} from which images to render the skeleton are sourced. */ + public AndroidTextureAtlas getAtlas () { + if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); + return drawable.getAtlas(); + } - /** - * The setup-pose data used by the skeleton. - */ - public SkeletonData getSkeletonDate() { - if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); - return drawable.getSkeletonData(); - } + /** The setup-pose data used by the skeleton. */ + public SkeletonData getSkeletonDate () { + if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); + return drawable.getSkeletonData(); + } - /** - * The {@link Skeleton}. - */ - public Skeleton getSkeleton() { - if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); - return drawable.getSkeleton(); - } + /** The {@link Skeleton}. */ + public Skeleton getSkeleton () { + if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); + return drawable.getSkeleton(); + } - /** - * The mixing information used by the {@link AnimationState}. - */ - public AnimationStateData getAnimationStateData() { - if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); - return drawable.getAnimationStateData(); - } + /** The mixing information used by the {@link AnimationState}. */ + public AnimationStateData getAnimationStateData () { + if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); + return drawable.getAnimationStateData(); + } - /** - * The {@link AnimationState} used to manage animations that are being applied to the - * skeleton. - */ - public AnimationState getAnimationState() { - if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); - return drawable.getAnimationState(); - } + /** The {@link AnimationState} used to manage animations that are being applied to the skeleton. */ + public AnimationState getAnimationState () { + if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); + return drawable.getAnimationState(); + } - /** - * The {@link AndroidSkeletonDrawable}. - */ - public AndroidSkeletonDrawable getDrawable() { - if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); - return drawable; - } + /** The {@link AndroidSkeletonDrawable}. */ + public AndroidSkeletonDrawable getDrawable () { + if (drawable == null) throw new RuntimeException("Controller is not initialized yet."); + return drawable; + } - /** - * Checks if the {@link SpineView} is initialized. - */ - public boolean isInitialized() { - return drawable != null; - } + /** Checks if the {@link SpineView} is initialized. */ + public boolean isInitialized () { + return drawable != null; + } - /** - * Checks if the animation is currently playing. - */ - public boolean isPlaying() { - return playing; - } + /** Checks if the animation is currently playing. */ + public boolean isPlaying () { + return playing; + } - /** - * Pauses updating and rendering the skeleton. - */ - public void pause() { - if (playing) { - playing = false; - } - } + /** Pauses updating and rendering the skeleton. */ + public void pause () { + if (playing) { + playing = false; + } + } - /** - * Resumes updating and rendering the skeleton. - */ - public void resume() { - if (!playing) { - playing = true; - } - } + /** Resumes updating and rendering the skeleton. */ + public void resume () { + if (!playing) { + playing = true; + } + } - /** - * Transforms the coordinates given in the {@link SpineView} coordinate system in {@code position} to - * the skeleton coordinate system. See the {@code IKFollowing.kt} example for how to use this - * to move a bone based on user touch input. - */ - public Point toSkeletonCoordinates(Point position) { - int x = position.x; - int y = position.y; - return new Point((int) (x / scaleX - offsetX), (int) (y / scaleY - offsetY)); - } + /** Transforms the coordinates given in the {@link SpineView} coordinate system in {@code position} to the skeleton coordinate + * system. See the {@code IKFollowing.kt} example for how to use this to move a bone based on user touch input. */ + public Point toSkeletonCoordinates (Point position) { + int x = position.x; + int y = position.y; + return new Point((int)(x / scaleX - offsetX), (int)(y / scaleY - offsetY)); + } - /** - * Sets the {@code onBeforeUpdateWorldTransforms} callback. It is called before the skeleton's current pose is calculated - * using {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the skeleton before the pose calculation. - */ - public void setOnBeforeUpdateWorldTransforms(@Nullable SpineControllerCallback onBeforeUpdateWorldTransforms) { - this.onBeforeUpdateWorldTransforms = onBeforeUpdateWorldTransforms; - } + /** Sets the {@code onBeforeUpdateWorldTransforms} callback. It is called before the skeleton's current pose is calculated + * using {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the skeleton before the pose + * calculation. */ + public void setOnBeforeUpdateWorldTransforms (@Nullable SpineControllerCallback onBeforeUpdateWorldTransforms) { + this.onBeforeUpdateWorldTransforms = onBeforeUpdateWorldTransforms; + } - /** - * Sets the {@code onAfterUpdateWorldTransforms} callback. This method is called after the skeleton's current pose is calculated using - * {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the current pose before rendering the skeleton. - */ - public void setOnAfterUpdateWorldTransforms(@Nullable SpineControllerCallback onAfterUpdateWorldTransforms) { - this.onAfterUpdateWorldTransforms = onAfterUpdateWorldTransforms; - } + /** Sets the {@code onAfterUpdateWorldTransforms} callback. This method is called after the skeleton's current pose is + * calculated using {@link Skeleton#updateWorldTransform(Skeleton.Physics)}. It can be used to modify the current pose before + * rendering the skeleton. */ + public void setOnAfterUpdateWorldTransforms (@Nullable SpineControllerCallback onAfterUpdateWorldTransforms) { + this.onAfterUpdateWorldTransforms = onAfterUpdateWorldTransforms; + } - /** - * Sets the {@code onBeforePaint} callback. It is called before the skeleton's current pose is rendered by the - * {@link SpineView}. It allows rendering backgrounds or other objects that should go behind the skeleton on the - * {@link Canvas}. - */ - public void setOnBeforePaint(@Nullable SpineControllerBeforePaintCallback onBeforePaint) { - this.onBeforePaint = onBeforePaint; - } + /** Sets the {@code onBeforePaint} callback. It is called before the skeleton's current pose is rendered by the + * {@link SpineView}. It allows rendering backgrounds or other objects that should go behind the skeleton on the + * {@link Canvas}. */ + public void setOnBeforePaint (@Nullable SpineControllerBeforePaintCallback onBeforePaint) { + this.onBeforePaint = onBeforePaint; + } - /** - * Sets the {@code onAfterPaint} callback. It is called after the skeleton's current pose is rendered by the - * {@link SpineView}. It allows rendering additional objects on top of the skeleton. - */ - public void setOnAfterPaint(@Nullable SpineControllerAfterPaintCallback onAfterPaint) { - this.onAfterPaint = onAfterPaint; - } + /** Sets the {@code onAfterPaint} callback. It is called after the skeleton's current pose is rendered by the + * {@link SpineView}. It allows rendering additional objects on top of the skeleton. */ + public void setOnAfterPaint (@Nullable SpineControllerAfterPaintCallback onAfterPaint) { + this.onAfterPaint = onAfterPaint; + } - protected void setCoordinateTransform(double offsetX, double offsetY, double scaleX, double scaleY) { - this.offsetX = offsetX; - this.offsetY = offsetY; - this.scaleX = scaleX; - this.scaleY = scaleY; - } + protected void setCoordinateTransform (double offsetX, double offsetY, double scaleX, double scaleY) { + this.offsetX = offsetX; + this.offsetY = offsetY; + this.scaleX = scaleX; + this.scaleY = scaleY; + } - protected void callOnBeforeUpdateWorldTransforms() { - if (onBeforeUpdateWorldTransforms != null) { - onBeforeUpdateWorldTransforms.execute(this); - } - } + protected void callOnBeforeUpdateWorldTransforms () { + if (onBeforeUpdateWorldTransforms != null) { + onBeforeUpdateWorldTransforms.execute(this); + } + } - protected void callOnAfterUpdateWorldTransforms() { - if (onAfterUpdateWorldTransforms != null) { - onAfterUpdateWorldTransforms.execute(this); - } - } + protected void callOnAfterUpdateWorldTransforms () { + if (onAfterUpdateWorldTransforms != null) { + onAfterUpdateWorldTransforms.execute(this); + } + } - protected void callOnBeforePaint(Canvas canvas) { - if (onBeforePaint != null) { - onBeforePaint.execute(this, canvas); - } - } + protected void callOnBeforePaint (Canvas canvas) { + if (onBeforePaint != null) { + onBeforePaint.execute(this, canvas); + } + } - protected void callOnAfterPaint(Canvas canvas, Array renderCommands) { - if (onAfterPaint != null) { - onAfterPaint.execute(this, canvas, renderCommands); - } - } + protected void callOnAfterPaint (Canvas canvas, Array renderCommands) { + if (onAfterPaint != null) { + onAfterPaint.execute(this, canvas, renderCommands); + } + } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java index 808238b6c..af76e11b0 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SpineView.java @@ -51,20 +51,20 @@ import androidx.annotation.NonNull; import java.io.File; import java.net.URL; -/** - * A {@link View} to display a Spine skeleton. The skeleton can be loaded from an asset bundle ({@link SpineView#loadFromAssets(String, String, Context, SpineController)}), - * local files ({@link SpineView#loadFromFile(File, File, Context, SpineController)}), URLs ({@link SpineView#loadFromHttp(URL, URL, File, Context, SpineController)}), or a pre-loaded {@link AndroidSkeletonDrawable} using ({@link SpineView#loadFromDrawable(AndroidSkeletonDrawable, Context, SpineController)}). +/** A {@link View} to display a Spine skeleton. The skeleton can be loaded from an asset bundle + * ({@link SpineView#loadFromAssets(String, String, Context, SpineController)}), local files + * ({@link SpineView#loadFromFile(File, File, Context, SpineController)}), URLs + * ({@link SpineView#loadFromHttp(URL, URL, File, Context, SpineController)}), or a pre-loaded {@link AndroidSkeletonDrawable} + * using ({@link SpineView#loadFromDrawable(AndroidSkeletonDrawable, Context, SpineController)}). * * The skeleton displayed by a {@link SpineView} can be controlled via a {@link SpineController}. * - * The size of the widget can be derived from the bounds provided by a {@link BoundsProvider}. If the widget is not sized by the bounds - * computed by the {@link BoundsProvider}, the widget will use the computed bounds to fit the skeleton inside the widget's dimensions. - */ + * The size of the widget can be derived from the bounds provided by a {@link BoundsProvider}. If the widget is not sized by the + * bounds computed by the {@link BoundsProvider}, the widget will use the computed bounds to fit the skeleton inside the widget's + * dimensions. */ public class SpineView extends View implements Choreographer.FrameCallback { - /** - * Used to build {@link SpineView} instances. - * */ + /** Used to build {@link SpineView} instances. */ public static class Builder { private final Context context; private final SpineController controller; @@ -80,90 +80,72 @@ public class SpineView extends View implements Choreographer.FrameCallback { private Alignment alignment = Alignment.CENTER; private ContentMode contentMode = ContentMode.FIT; - /** - * Instantiate a {@link Builder} used to build a {@link SpineView}, which is a {@link View} to display a Spine skeleton. + /** Instantiate a {@link Builder} used to build a {@link SpineView}, which is a {@link View} to display a Spine skeleton. * - * @param controller The skeleton displayed by a {@link SpineView} can be controlled via a {@link SpineController}. - */ - public Builder(Context context, SpineController controller) { + * @param controller The skeleton displayed by a {@link SpineView} can be controlled via a {@link SpineController}. */ + public Builder (Context context, SpineController controller) { this.context = context; this.controller = controller; } - /** - * Loads assets from your app assets for the {@link SpineView} if set. The {@code atlasFileName} specifies the - * `.atlas` file to be loaded for the images used to render the skeleton. The {@code skeletonFileName} specifies either a Skeleton `.json` or - * `.skel` file containing the skeleton data. - */ - public Builder setLoadFromAssets(String atlasFileName, String skeletonFileName) { + /** Loads assets from your app assets for the {@link SpineView} if set. The {@code atlasFileName} specifies the `.atlas` + * file to be loaded for the images used to render the skeleton. The {@code skeletonFileName} specifies either a Skeleton + * `.json` or `.skel` file containing the skeleton data. */ + public Builder setLoadFromAssets (String atlasFileName, String skeletonFileName) { this.atlasFileName = atlasFileName; this.skeletonFileName = skeletonFileName; return this; } - /** - * Loads assets from files for the {@link SpineView} if set. The {@code atlasFile} specifies the `.atlas` file to be loaded for the images used to render - * the skeleton. The {@code skeletonFile} specifies either a Skeleton `.json` or `.skel` file containing the skeleton data. - */ - public Builder setLoadFromFile(File atlasFile, File skeletonFile) { + /** Loads assets from files for the {@link SpineView} if set. The {@code atlasFile} specifies the `.atlas` file to be loaded + * for the images used to render the skeleton. The {@code skeletonFile} specifies either a Skeleton `.json` or `.skel` file + * containing the skeleton data. */ + public Builder setLoadFromFile (File atlasFile, File skeletonFile) { this.atlasFile = atlasFile; this.skeletonFile = skeletonFile; return this; } - /** - * Loads assets from http for the {@link SpineView} if set. The {@code atlasUrl} specifies the `.atlas` url to be loaded for the images used to render - * the skeleton. The {@code skeletonUrl} specifies either a Skeleton `.json` or `.skel` url containing the skeleton data. - */ - public Builder setLoadFromHttp(URL atlasUrl, URL skeletonUrl, File targetDirectory) { + /** Loads assets from http for the {@link SpineView} if set. The {@code atlasUrl} specifies the `.atlas` url to be loaded + * for the images used to render the skeleton. The {@code skeletonUrl} specifies either a Skeleton `.json` or `.skel` url + * containing the skeleton data. */ + public Builder setLoadFromHttp (URL atlasUrl, URL skeletonUrl, File targetDirectory) { this.atlasUrl = atlasUrl; this.skeletonUrl = skeletonUrl; this.targetDirectory = targetDirectory; return this; } - /** - * Uses the {@link AndroidSkeletonDrawable} for the {@link SpineView} if set. - */ - public Builder setLoadFromDrawable(AndroidSkeletonDrawable drawable) { + /** Uses the {@link AndroidSkeletonDrawable} for the {@link SpineView} if set. */ + public Builder setLoadFromDrawable (AndroidSkeletonDrawable drawable) { this.drawable = drawable; return this; } - /** - * Get the {@link BoundsProvider} used to compute the bounds of the {@link Skeleton} inside the view. - * The default is {@link SetupPoseBounds}. - */ - public Builder setBoundsProvider(BoundsProvider boundsProvider) { + /** Get the {@link BoundsProvider} used to compute the bounds of the {@link Skeleton} inside the view. The default is + * {@link SetupPoseBounds}. */ + public Builder setBoundsProvider (BoundsProvider boundsProvider) { this.boundsProvider = boundsProvider; return this; } - /** - * Get the {@link ContentMode} used to fit the {@link Skeleton} inside the view. - * The default is {@link ContentMode#FIT}. - */ - public Builder setContentMode(ContentMode contentMode) { + /** Get the {@link ContentMode} used to fit the {@link Skeleton} inside the view. The default is {@link ContentMode#FIT}. */ + public Builder setContentMode (ContentMode contentMode) { this.contentMode = contentMode; return this; } - /** - * Set the {@link Alignment} used to align the {@link Skeleton} inside the view. - * The default is {@link Alignment#CENTER} - */ - public Builder setAlignment(Alignment alignment) { + /** Set the {@link Alignment} used to align the {@link Skeleton} inside the view. The default is {@link Alignment#CENTER} */ + public Builder setAlignment (Alignment alignment) { this.alignment = alignment; return this; } - /** - * Builds a new {@link SpineView}. + /** Builds a new {@link SpineView}. * - * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} semantics, to allow - * modifying how the skeleton inside the widget is animated and rendered. - */ - public SpineView build() { + * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} + * semantics, to allow modifying how the skeleton inside the widget is animated and rendered. */ + public SpineView build () { SpineView spineView = new SpineView(context, controller); spineView.boundsProvider = boundsProvider; spineView.alignment = alignment; @@ -198,201 +180,162 @@ public class SpineView extends View implements Choreographer.FrameCallback { private Alignment alignment = Alignment.CENTER; private ContentMode contentMode = ContentMode.FIT; - /** - * Constructs a new {@link SpineView}. + /** Constructs a new {@link SpineView}. * - * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} semantics, to allow - * modifying how the skeleton inside the widget is animated and rendered. - */ + * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} + * semantics, to allow modifying how the skeleton inside the widget is animated and rendered. */ public SpineView (Context context, SpineController controller) { super(context); this.controller = controller; } - /** - * Constructs a new {@link SpineView} without providing a {@link SpineController}, which you need to provide using - * {@link SpineView#setController(SpineController)}. - */ + /** Constructs a new {@link SpineView} without providing a {@link SpineController}, which you need to provide using + * {@link SpineView#setController(SpineController)}. */ public SpineView (Context context, AttributeSet attrs) { super(context, attrs); // Set properties by view id } - /** - * Constructs a new {@link SpineView} without providing a {@link SpineController}, which you need to provide using - * {@link SpineView#setController(SpineController)}. - */ + /** Constructs a new {@link SpineView} without providing a {@link SpineController}, which you need to provide using + * {@link SpineView#setController(SpineController)}. */ public SpineView (Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // Set properties by view id } - /** - * Constructs a new {@link SpineView} from files in your app assets. The {@code atlasFileName} specifies the - * `.atlas` file to be loaded for the images used to render the skeleton. The {@code skeletonFileName} specifies either a Skeleton `.json` or + /** Constructs a new {@link SpineView} from files in your app assets. The {@code atlasFileName} specifies the `.atlas` file to + * be loaded for the images used to render the skeleton. The {@code skeletonFileName} specifies either a Skeleton `.json` or * `.skel` file containing the skeleton data. * - * After initialization is complete, the provided {@code controller} is invoked as per the {@link SpineController} semantics, to allow - * modifying how the skeleton inside the widget is animated and rendered. - */ - public static SpineView loadFromAssets(String atlasFileName, String skeletonFileName, Context context, SpineController controller) { + * After initialization is complete, the provided {@code controller} is invoked as per the {@link SpineController} semantics, + * to allow modifying how the skeleton inside the widget is animated and rendered. */ + public static SpineView loadFromAssets (String atlasFileName, String skeletonFileName, Context context, + SpineController controller) { SpineView spineView = new SpineView(context, controller); spineView.loadFromAsset(atlasFileName, skeletonFileName); return spineView; } - /** - * Constructs a new {@link SpineView} from files. The {@code atlasFile} specifies the `.atlas` file to be loaded for the images used to render - * the skeleton. The {@code skeletonFile} specifies either a Skeleton `.json` or `.skel` file containing the skeleton data. + /** Constructs a new {@link SpineView} from files. The {@code atlasFile} specifies the `.atlas` file to be loaded for the + * images used to render the skeleton. The {@code skeletonFile} specifies either a Skeleton `.json` or `.skel` file containing + * the skeleton data. * - * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} semantics, to allow - * modifying how the skeleton inside the widget is animated and rendered. - */ - public static SpineView loadFromFile(File atlasFile, File skeletonFile, Context context, SpineController controller) { + * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} + * semantics, to allow modifying how the skeleton inside the widget is animated and rendered. */ + public static SpineView loadFromFile (File atlasFile, File skeletonFile, Context context, SpineController controller) { SpineView spineView = new SpineView(context, controller); spineView.loadFromFile(atlasFile, skeletonFile); return spineView; } - /** - * Constructs a new {@link SpineView} from HTTP URLs. The {@code atlasUrl} specifies the `.atlas` url to be loaded for the images used to render - * the skeleton. The {@code skeletonUrl} specifies either a Skeleton `.json` or `.skel` url containing the skeleton data. + /** Constructs a new {@link SpineView} from HTTP URLs. The {@code atlasUrl} specifies the `.atlas` url to be loaded for the + * images used to render the skeleton. The {@code skeletonUrl} specifies either a Skeleton `.json` or `.skel` url containing + * the skeleton data. * - * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} semantics, to allow - * modifying how the skeleton inside the widget is animated and rendered. - */ - public static SpineView loadFromHttp(URL atlasUrl, URL skeletonUrl, File targetDirectory, Context context, SpineController controller) { + * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} + * semantics, to allow modifying how the skeleton inside the widget is animated and rendered. */ + public static SpineView loadFromHttp (URL atlasUrl, URL skeletonUrl, File targetDirectory, Context context, + SpineController controller) { SpineView spineView = new SpineView(context, controller); spineView.loadFromHttp(atlasUrl, skeletonUrl, targetDirectory); return spineView; } - /** - * Constructs a new {@link SpineView} from a {@link AndroidSkeletonDrawable}. + /** Constructs a new {@link SpineView} from a {@link AndroidSkeletonDrawable}. * - * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} semantics, to allow - * modifying how the skeleton inside the widget is animated and rendered. - */ - public static SpineView loadFromDrawable(AndroidSkeletonDrawable drawable, Context context, SpineController controller) { + * After initialization is complete, the provided {@code SpineController} is invoked as per the {@link SpineController} + * semantics, to allow modifying how the skeleton inside the widget is animated and rendered. */ + public static SpineView loadFromDrawable (AndroidSkeletonDrawable drawable, Context context, SpineController controller) { SpineView spineView = new SpineView(context, controller); spineView.loadFromDrawable(drawable); return spineView; } - /** - * The same as {@link SpineView#loadFromAssets(String, String, Context, SpineController)}, but can be used after - * instantiating the view via {@link SpineView#SpineView(Context, SpineController)}. - */ - public void loadFromAsset(String atlasFileName, String skeletonFileName) { - loadFrom(() -> AndroidSkeletonDrawable.fromAsset(atlasFileName, skeletonFileName, getContext())); + /** The same as {@link SpineView#loadFromAssets(String, String, Context, SpineController)}, but can be used after instantiating + * the view via {@link SpineView#SpineView(Context, SpineController)}. */ + public void loadFromAsset (String atlasFileName, String skeletonFileName) { + loadFrom( () -> AndroidSkeletonDrawable.fromAsset(atlasFileName, skeletonFileName, getContext())); } - /** - * The same as {@link SpineView#loadFromFile(File, File, Context, SpineController)}, but can be used after - * instantiating the view via {@link SpineView#SpineView(Context, SpineController)}. - */ - public void loadFromFile(File atlasFile, File skeletonFile) { - loadFrom(() -> AndroidSkeletonDrawable.fromFile(atlasFile, skeletonFile)); + /** The same as {@link SpineView#loadFromFile(File, File, Context, SpineController)}, but can be used after instantiating the + * view via {@link SpineView#SpineView(Context, SpineController)}. */ + public void loadFromFile (File atlasFile, File skeletonFile) { + loadFrom( () -> AndroidSkeletonDrawable.fromFile(atlasFile, skeletonFile)); } - /** - * The same as {@link SpineView#loadFromHttp(URL, URL, File, Context, SpineController)}, but can be used after - * instantiating the view via {@link SpineView#SpineView(Context, SpineController)}. - */ - public void loadFromHttp(URL atlasUrl, URL skeletonUrl, File targetDirectory) { - loadFrom(() -> AndroidSkeletonDrawable.fromHttp(atlasUrl, skeletonUrl, targetDirectory)); + /** The same as {@link SpineView#loadFromHttp(URL, URL, File, Context, SpineController)}, but can be used after instantiating + * the view via {@link SpineView#SpineView(Context, SpineController)}. */ + public void loadFromHttp (URL atlasUrl, URL skeletonUrl, File targetDirectory) { + loadFrom( () -> AndroidSkeletonDrawable.fromHttp(atlasUrl, skeletonUrl, targetDirectory)); } - /** - * The same as {@link SpineView#loadFromDrawable(AndroidSkeletonDrawable, Context, SpineController)}, but can be used after - * instantiating the view via {@link SpineView#SpineView(Context, SpineController)}. - */ - public void loadFromDrawable(AndroidSkeletonDrawable drawable) { - loadFrom(() -> drawable); + /** The same as {@link SpineView#loadFromDrawable(AndroidSkeletonDrawable, Context, SpineController)}, but can be used after + * instantiating the view via {@link SpineView#SpineView(Context, SpineController)}. */ + public void loadFromDrawable (AndroidSkeletonDrawable drawable) { + loadFrom( () -> drawable); } - /** - * Get the {@link SpineController} - */ - public SpineController getController() { + /** Get the {@link SpineController} */ + public SpineController getController () { return controller; } - /** - * Set the {@link SpineController}. Only do this if you use {@link SpineView#SpineView(Context, AttributeSet)}, - * {@link SpineView#SpineView(Context, AttributeSet, int)}, or create the {@link SpineView} in an XML layout. - */ - public void setController(SpineController controller) { + /** Set the {@link SpineController}. Only do this if you use {@link SpineView#SpineView(Context, AttributeSet)}, + * {@link SpineView#SpineView(Context, AttributeSet, int)}, or create the {@link SpineView} in an XML layout. */ + public void setController (SpineController controller) { this.controller = controller; } - /** - * Get the {@link Alignment} used to align the {@link Skeleton} inside the view. - * The default is {@link Alignment#CENTER} - */ - public Alignment getAlignment() { + /** Get the {@link Alignment} used to align the {@link Skeleton} inside the view. The default is {@link Alignment#CENTER} */ + public Alignment getAlignment () { return alignment; } - /** - * Set the {@link Alignment}. - */ - public void setAlignment(Alignment alignment) { + /** Set the {@link Alignment}. */ + public void setAlignment (Alignment alignment) { this.alignment = alignment; updateCanvasTransform(); } - /** - * Get the {@link ContentMode} used to fit the {@link Skeleton} inside the view. - * The default is {@link ContentMode#FIT}. - */ - public ContentMode getContentMode() { + /** Get the {@link ContentMode} used to fit the {@link Skeleton} inside the view. The default is {@link ContentMode#FIT}. */ + public ContentMode getContentMode () { return contentMode; } - /** - * Set the {@link ContentMode}. - */ - public void setContentMode(ContentMode contentMode) { + /** Set the {@link ContentMode}. */ + public void setContentMode (ContentMode contentMode) { this.contentMode = contentMode; updateCanvasTransform(); } - /** - * Get the {@link BoundsProvider} used to compute the bounds of the {@link Skeleton} inside the view. - * The default is {@link SetupPoseBounds}. - */ - public BoundsProvider getBoundsProvider() { + /** Get the {@link BoundsProvider} used to compute the bounds of the {@link Skeleton} inside the view. The default is + * {@link SetupPoseBounds}. */ + public BoundsProvider getBoundsProvider () { return boundsProvider; } - /** - * Set the {@link BoundsProvider}. - */ - public void setBoundsProvider(BoundsProvider boundsProvider) { + /** Set the {@link BoundsProvider}. */ + public void setBoundsProvider (BoundsProvider boundsProvider) { this.boundsProvider = boundsProvider; updateCanvasTransform(); } - /** - * Check if rendering is enabled. - */ - public Boolean isRendering() { + /** Check if rendering is enabled. */ + public Boolean isRendering () { return rendering; } - /** - * Set to disable or enable rendering. Disable it when the spine view is out of bounds and you want to preserve CPU/GPU resources. - */ - public void setRendering(Boolean rendering) { + /** Set to disable or enable rendering. Disable it when the spine view is out of bounds and you want to preserve CPU/GPU + * resources. */ + public void setRendering (Boolean rendering) { this.rendering = rendering; } - private void loadFrom(AndroidSkeletonDrawableLoader loader) { + private void loadFrom (AndroidSkeletonDrawableLoader loader) { Handler mainHandler = new Handler(Looper.getMainLooper()); - Thread backgroundThread = new Thread(() -> { + Thread backgroundThread = new Thread( () -> { final AndroidSkeletonDrawable skeletonDrawable = loader.load(); - mainHandler.post(() -> { + mainHandler.post( () -> { computedBounds = boundsProvider.computeBounds(skeletonDrawable); updateCanvasTransform(); @@ -431,28 +374,30 @@ public class SpineView extends View implements Choreographer.FrameCallback { } @Override - protected void onSizeChanged(int w, int h, int oldw, int oldh) { + protected void onSizeChanged (int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); updateCanvasTransform(); } - private void updateCanvasTransform() { + private void updateCanvasTransform () { if (controller == null) { return; } - x = (float) (-computedBounds.getX() - computedBounds.getWidth() / 2.0 - (alignment.getX() * computedBounds.getWidth() / 2.0)); - y = (float) (-computedBounds.getY() - computedBounds.getHeight() / 2.0 - (alignment.getY() * computedBounds.getHeight() / 2.0)); + x = (float)(-computedBounds.getX() - computedBounds.getWidth() / 2.0 + - (alignment.getX() * computedBounds.getWidth() / 2.0)); + y = (float)(-computedBounds.getY() - computedBounds.getHeight() / 2.0 + - (alignment.getY() * computedBounds.getHeight() / 2.0)); switch (contentMode) { - case FIT: - scaleX = scaleY = (float) Math.min(getWidth() / computedBounds.getWidth(), getHeight() / computedBounds.getHeight()); - break; - case FILL: - scaleX = scaleY = (float) Math.max(getWidth() / computedBounds.getWidth(), getHeight() / computedBounds.getHeight()); - break; + case FIT: + scaleX = scaleY = (float)Math.min(getWidth() / computedBounds.getWidth(), getHeight() / computedBounds.getHeight()); + break; + case FILL: + scaleX = scaleY = (float)Math.max(getWidth() / computedBounds.getWidth(), getHeight() / computedBounds.getHeight()); + break; } - offsetX = (float) (getWidth() / 2.0 + (alignment.getX() * getWidth() / 2.0)); - offsetY = (float) (getHeight() / 2.0 + (alignment.getY() * getHeight() / 2.0)); + offsetX = (float)(getWidth() / 2.0 + (alignment.getX() * getWidth() / 2.0)); + offsetY = (float)(getHeight() / 2.0 + (alignment.getY() * getHeight() / 2.0)); controller.setCoordinateTransform(x + offsetX / scaleX, y + offsetY / scaleY, scaleX, scaleY); } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java index ba2a497ce..cfeb69408 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Alignment.java @@ -29,33 +29,24 @@ package com.esotericsoftware.spine.android.bounds; -/** - * How a view should be aligned within another view. - */ +/** How a view should be aligned within another view. */ public enum Alignment { - TOP_LEFT(-1.0f, -1.0f), - TOP_CENTER(0.0f, -1.0f), - TOP_RIGHT(1.0f, -1.0f), - CENTER_LEFT(-1.0f, 0.0f), - CENTER(0.0f, 0.0f), - CENTER_RIGHT(1.0f, 0.0f), - BOTTOM_LEFT(-1.0f, 1.0f), - BOTTOM_CENTER(0.0f, 1.0f), - BOTTOM_RIGHT(1.0f, 1.0f); + TOP_LEFT(-1.0f, -1.0f), TOP_CENTER(0.0f, -1.0f), TOP_RIGHT(1.0f, -1.0f), CENTER_LEFT(-1.0f, 0.0f), CENTER(0.0f, + 0.0f), CENTER_RIGHT(1.0f, 0.0f), BOTTOM_LEFT(-1.0f, 1.0f), BOTTOM_CENTER(0.0f, 1.0f), BOTTOM_RIGHT(1.0f, 1.0f); - private final float x; - private final float y; + private final float x; + private final float y; - Alignment(float x, float y) { - this.x = x; - this.y = y; - } + Alignment (float x, float y) { + this.x = x; + this.y = y; + } - public float getX() { - return x; - } + public float getX () { + return x; + } - public float getY() { - return y; - } + public float getY () { + return y; + } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java index b3b8502d8..18b94612f 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/Bounds.java @@ -33,72 +33,69 @@ import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.FloatArray; import com.esotericsoftware.spine.Skeleton; -/** - * Bounds denoted by the top left corner coordinates {@code x} and {@code y} - * and the {@code width} and {@code height}. - */ +/** Bounds denoted by the top left corner coordinates {@code x} and {@code y} and the {@code width} and {@code height}. */ public class Bounds { - private double x; - private double y; - private double width; - private double height; + private double x; + private double y; + private double width; + private double height; - public Bounds() { - this.x = 0; - this.y = 0; - this.width = 0; - this.height = 0; - } + public Bounds () { + this.x = 0; + this.y = 0; + this.width = 0; + this.height = 0; + } - public Bounds(double x, double y, double width, double height) { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - } + public Bounds (double x, double y, double width, double height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } - public Bounds(Skeleton skeleton) { - Vector2 offset = new Vector2(0, 0); - Vector2 size = new Vector2(0, 0); - FloatArray floatArray = new FloatArray(); + public Bounds (Skeleton skeleton) { + Vector2 offset = new Vector2(0, 0); + Vector2 size = new Vector2(0, 0); + FloatArray floatArray = new FloatArray(); - skeleton.getBounds(offset, size, floatArray); + skeleton.getBounds(offset, size, floatArray); - x = offset.x; - y = offset.y; - width = size.x; - height = size.y; - } + x = offset.x; + y = offset.y; + width = size.x; + height = size.y; + } - public double getX() { - return x; - } + public double getX () { + return x; + } - public void setX(double x) { - this.x = x; - } + public void setX (double x) { + this.x = x; + } - public double getY() { - return y; - } + public double getY () { + return y; + } - public void setY(double y) { - this.y = y; - } + public void setY (double y) { + this.y = y; + } - public double getWidth() { - return width; - } + public double getWidth () { + return width; + } - public void setWidth(double width) { - this.width = width; - } + public void setWidth (double width) { + this.width = width; + } - public double getHeight() { - return height; - } + public double getHeight () { + return height; + } - public void setHeight(double height) { - this.height = height; - } + public void setHeight (double height) { + this.height = height; + } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java index 2a59c8666..07d1366fa 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/BoundsProvider.java @@ -31,10 +31,8 @@ package com.esotericsoftware.spine.android.bounds; import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; -/** - * A {@link BoundsProvider} that calculates the bounding box of the skeleton based on the visible - * attachments in the setup pose. - */ +/** A {@link BoundsProvider} that calculates the bounding box of the skeleton based on the visible attachments in the setup + * pose. */ public interface BoundsProvider { - Bounds computeBounds(AndroidSkeletonDrawable drawable); + Bounds computeBounds (AndroidSkeletonDrawable drawable); } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java index 67d239f51..bf6fa1f12 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/ContentMode.java @@ -29,16 +29,10 @@ package com.esotericsoftware.spine.android.bounds; -/** - * How a view should be inscribed into another view. - */ +/** How a view should be inscribed into another view. */ public enum ContentMode { - /** - * As large as possible while still containing the source view entirely within the target view. - */ - FIT, - /** - * Fill the target view by distorting the source's aspect ratio. - */ - FILL + /** As large as possible while still containing the source view entirely within the target view. */ + FIT, + /** Fill the target view by distorting the source's aspect ratio. */ + FILL } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java index 272656c62..80cd38625 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/RawBounds.java @@ -31,24 +31,22 @@ package com.esotericsoftware.spine.android.bounds; import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; -/** - * A {@link BoundsProvider} that returns fixed bounds. - */ +/** A {@link BoundsProvider} that returns fixed bounds. */ public class RawBounds implements BoundsProvider { - final Double x; - final Double y; - final Double width; - final Double height; + final Double x; + final Double y; + final Double width; + final Double height; - public RawBounds(Double x, Double y, Double width, Double height) { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - } + public RawBounds (Double x, Double y, Double width, Double height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } - @Override - public Bounds computeBounds(AndroidSkeletonDrawable drawable) { - return new Bounds(x, y, width, height); - } + @Override + public Bounds computeBounds (AndroidSkeletonDrawable drawable) { + return new Bounds(x, y, width, height); + } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java index de1523737..238a4b66c 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SetupPoseBounds.java @@ -31,14 +31,12 @@ package com.esotericsoftware.spine.android.bounds; import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; -/** - * A {@link BoundsProvider} that calculates the bounding box of the skeleton based on the visible - * attachments in the setup pose. - */ +/** A {@link BoundsProvider} that calculates the bounding box of the skeleton based on the visible attachments in the setup + * pose. */ public class SetupPoseBounds implements BoundsProvider { - @Override - public Bounds computeBounds(AndroidSkeletonDrawable drawable) { - return new Bounds(drawable.getSkeleton()); - } + @Override + public Bounds computeBounds (AndroidSkeletonDrawable drawable) { + return new Bounds(drawable.getSkeleton()); + } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java index 5a3355fcd..782036800 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/bounds/SkinAndAnimationBounds.java @@ -37,86 +37,75 @@ import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; import java.util.Collections; import java.util.List; -/** - * A {@link BoundsProvider} that calculates the bounding box needed for a combination of skins - * and an animation. - */ +/** A {@link BoundsProvider} that calculates the bounding box needed for a combination of skins and an animation. */ public class SkinAndAnimationBounds implements BoundsProvider { - private final List skins; - private final String animation; - private final double stepTime; + private final List skins; + private final String animation; + private final double stepTime; - /** - * Constructs a new provider that will use the given {@code skins} and {@code animation} to calculate - * the bounding box of the skeleton. If no skins are given, the default skin is used. - * The {@code stepTime}, given in seconds, defines at what interval the bounds should be sampled - * across the entire animation. - */ - public SkinAndAnimationBounds(List skins, String animation, double stepTime) { - this.skins = (skins == null || skins.isEmpty()) ? Collections.singletonList("default") : skins; - this.animation = animation; - this.stepTime = stepTime; - } + /** Constructs a new provider that will use the given {@code skins} and {@code animation} to calculate the bounding box of the + * skeleton. If no skins are given, the default skin is used. The {@code stepTime}, given in seconds, defines at what interval + * the bounds should be sampled across the entire animation. */ + public SkinAndAnimationBounds (List skins, String animation, double stepTime) { + this.skins = (skins == null || skins.isEmpty()) ? Collections.singletonList("default") : skins; + this.animation = animation; + this.stepTime = stepTime; + } - /** - * Constructs a new provider that will use the given {@code skins} and {@code animation} to calculate - * the bounding box of the skeleton. If no skins are given, the default skin is used. - * The {@code stepTime} has default value 0.1. - */ - public SkinAndAnimationBounds(List skins, String animation) { - this(skins, animation, 0.1); - } + /** Constructs a new provider that will use the given {@code skins} and {@code animation} to calculate the bounding box of the + * skeleton. If no skins are given, the default skin is used. The {@code stepTime} has default value 0.1. */ + public SkinAndAnimationBounds (List skins, String animation) { + this(skins, animation, 0.1); + } - /** - * Constructs a new provider that will use the given {@code skins} and {@code animation} to calculate - * the bounding box of the skeleton. The default skin is used. The {@code stepTime} has default value 0.1. - */ - public SkinAndAnimationBounds(String animation) { - this(Collections.emptyList(), animation, 0.1); - } + /** Constructs a new provider that will use the given {@code skins} and {@code animation} to calculate the bounding box of the + * skeleton. The default skin is used. The {@code stepTime} has default value 0.1. */ + public SkinAndAnimationBounds (String animation) { + this(Collections.emptyList(), animation, 0.1); + } - @Override - public Bounds computeBounds(AndroidSkeletonDrawable drawable) { - SkeletonData data = drawable.getSkeletonData(); - Skin oldSkin = drawable.getSkeleton().getSkin(); - Skin customSkin = new Skin("custom-skin"); - for (String skinName : skins) { - Skin skin = data.findSkin(skinName); - if (skin == null) continue; - customSkin.addSkin(skin); - } - drawable.getSkeleton().setSkin(customSkin); - drawable.getSkeleton().setToSetupPose(); + @Override + public Bounds computeBounds (AndroidSkeletonDrawable drawable) { + SkeletonData data = drawable.getSkeletonData(); + Skin oldSkin = drawable.getSkeleton().getSkin(); + Skin customSkin = new Skin("custom-skin"); + for (String skinName : skins) { + Skin skin = data.findSkin(skinName); + if (skin == null) continue; + customSkin.addSkin(skin); + } + drawable.getSkeleton().setSkin(customSkin); + drawable.getSkeleton().setToSetupPose(); - Animation animation = (this.animation != null) ? data.findAnimation(this.animation) : null; - double minX = Double.POSITIVE_INFINITY; - double minY = Double.POSITIVE_INFINITY; - double maxX = Double.NEGATIVE_INFINITY; - double maxY = Double.NEGATIVE_INFINITY; - if (animation == null) { - Bounds bounds = new Bounds(drawable.getSkeleton()); - minX = bounds.getX(); - minY = bounds.getY(); - maxX = minX + bounds.getWidth(); - maxY = minY + bounds.getHeight(); - } else { - drawable.getAnimationState().setAnimation(0, animation, false); - int steps = (int) Math.max( (animation.getDuration() / stepTime), 1.0); - for (int i = 0; i < steps; i++) { - drawable.update(i > 0 ? (float) stepTime : 0); - Bounds bounds = new Bounds(drawable.getSkeleton()); - minX = Math.min(minX, bounds.getX()); - minY = Math.min(minY, bounds.getY()); - maxX = Math.max(maxX, minX + bounds.getWidth()); - maxY = Math.max(maxY, minY + bounds.getHeight()); - } - } + Animation animation = (this.animation != null) ? data.findAnimation(this.animation) : null; + double minX = Double.POSITIVE_INFINITY; + double minY = Double.POSITIVE_INFINITY; + double maxX = Double.NEGATIVE_INFINITY; + double maxY = Double.NEGATIVE_INFINITY; + if (animation == null) { + Bounds bounds = new Bounds(drawable.getSkeleton()); + minX = bounds.getX(); + minY = bounds.getY(); + maxX = minX + bounds.getWidth(); + maxY = minY + bounds.getHeight(); + } else { + drawable.getAnimationState().setAnimation(0, animation, false); + int steps = (int)Math.max((animation.getDuration() / stepTime), 1.0); + for (int i = 0; i < steps; i++) { + drawable.update(i > 0 ? (float)stepTime : 0); + Bounds bounds = new Bounds(drawable.getSkeleton()); + minX = Math.min(minX, bounds.getX()); + minY = Math.min(minY, bounds.getY()); + maxX = Math.max(maxX, minX + bounds.getWidth()); + maxY = Math.max(maxY, minY + bounds.getHeight()); + } + } - drawable.getSkeleton().setSkin("default"); - drawable.getAnimationState().clearTracks(); - if (oldSkin != null) drawable.getSkeleton().setSkin(oldSkin); - drawable.getSkeleton().setToSetupPose(); - drawable.update(0); - return new Bounds(minX, minY, maxX - minX, maxY - minY); - } + drawable.getSkeleton().setSkin("default"); + drawable.getAnimationState().clearTracks(); + if (oldSkin != null) drawable.getSkeleton().setSkin(oldSkin); + drawable.getSkeleton().setToSetupPose(); + drawable.update(0); + return new Bounds(minX, minY, maxX - minX, maxY - minY); + } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/AndroidSkeletonDrawableLoader.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/AndroidSkeletonDrawableLoader.java index 87626810d..13488579a 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/AndroidSkeletonDrawableLoader.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/AndroidSkeletonDrawableLoader.java @@ -33,5 +33,5 @@ import com.esotericsoftware.spine.android.AndroidSkeletonDrawable; @FunctionalInterface public interface AndroidSkeletonDrawableLoader { - AndroidSkeletonDrawable load(); + AndroidSkeletonDrawable load (); } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerAfterPaintCallback.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerAfterPaintCallback.java index 1864780b4..efd8df0c2 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerAfterPaintCallback.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerAfterPaintCallback.java @@ -39,5 +39,5 @@ import java.util.List; @FunctionalInterface public interface SpineControllerAfterPaintCallback { - void execute (SpineController controller, Canvas canvas, Array commands); + void execute (SpineController controller, Canvas canvas, Array commands); } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerBeforePaintCallback.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerBeforePaintCallback.java index ad622c07d..41eb23c58 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerBeforePaintCallback.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerBeforePaintCallback.java @@ -38,5 +38,5 @@ import java.util.List; @FunctionalInterface public interface SpineControllerBeforePaintCallback { - void execute (SpineController controller, Canvas canvas); + void execute (SpineController controller, Canvas canvas); } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerCallback.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerCallback.java index 75d3b282f..a0d1b494f 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerCallback.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/callbacks/SpineControllerCallback.java @@ -33,5 +33,5 @@ import com.esotericsoftware.spine.android.SpineController; @FunctionalInterface public interface SpineControllerCallback { - void execute (SpineController controller); + void execute (SpineController controller); } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java index 0f442b43b..068e5b8b7 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/HttpUtils.java @@ -41,73 +41,68 @@ import java.net.HttpURLConnection; import java.net.URL; import java.nio.file.Files; -/** - * Helper to load http resources. - */ +/** Helper to load http resources. */ public class HttpUtils { - /** - * Download a file from an url into a target directory. It keeps the name from the {@code url}. - * This should NOT be executed on the main run loop. - */ - public static File downloadFrom(URL url, File targetDirectory) throws RuntimeException { - HttpURLConnection urlConnection = null; - InputStream inputStream = null; - OutputStream outputStream = null; + /** Download a file from an url into a target directory. It keeps the name from the {@code url}. This should NOT be executed on + * the main run loop. */ + public static File downloadFrom (URL url, File targetDirectory) throws RuntimeException { + HttpURLConnection urlConnection = null; + InputStream inputStream = null; + OutputStream outputStream = null; - try { - urlConnection = (HttpURLConnection) url.openConnection(); - urlConnection.connect(); + try { + urlConnection = (HttpURLConnection)url.openConnection(); + urlConnection.connect(); - if (urlConnection.getResponseCode() != HttpURLConnection.HTTP_OK) { - throw new RuntimeException("Failed to connect: HTTP response code " + urlConnection.getResponseCode()); - } + if (urlConnection.getResponseCode() != HttpURLConnection.HTTP_OK) { + throw new RuntimeException("Failed to connect: HTTP response code " + urlConnection.getResponseCode()); + } - inputStream = new BufferedInputStream(urlConnection.getInputStream()); + inputStream = new BufferedInputStream(urlConnection.getInputStream()); - String atlasUrlPath = url.getPath(); - String fileName = atlasUrlPath.substring(atlasUrlPath.lastIndexOf('/') + 1); - File file = new File(targetDirectory, fileName); + String atlasUrlPath = url.getPath(); + String fileName = atlasUrlPath.substring(atlasUrlPath.lastIndexOf('/') + 1); + File file = new File(targetDirectory, fileName); - // Create an OutputStream to write to the file - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - outputStream = Files.newOutputStream(file.toPath()); - } else { - //noinspection IOStreamConstructor - outputStream = new FileOutputStream(file); - } + // Create an OutputStream to write to the file + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + outputStream = Files.newOutputStream(file.toPath()); + } else { + // noinspection IOStreamConstructor + outputStream = new FileOutputStream(file); + } - byte[] buffer = new byte[1024]; - int bytesRead; + byte[] buffer = new byte[1024]; + int bytesRead; - // Write the input stream to the output stream - while ((bytesRead = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, bytesRead); - } - return file; - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - if (outputStream != null) { - try { - outputStream.flush(); - outputStream.close(); - } catch (IOException e) { - // Nothing we can do - } - } + // Write the input stream to the output stream + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } + return file; + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + if (outputStream != null) { + try { + outputStream.flush(); + outputStream.close(); + } catch (IOException e) { + // Nothing we can do + } + } - if (inputStream != null) { - try { - inputStream.close(); - } catch (IOException e) { - // Nothing we can do - } - } + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + // Nothing we can do + } + } - if (urlConnection != null) { - urlConnection.disconnect(); - } - } - } + if (urlConnection != null) { + urlConnection.disconnect(); + } + } + } } - diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java index 6395ce22f..44f61ea2a 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/utils/SkeletonDataUtils.java @@ -46,63 +46,57 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; -/** - * Helper to load {@link SkeletonData} from assets. - */ +/** Helper to load {@link SkeletonData} from assets. */ public class SkeletonDataUtils { - /** - * Loads a {@link SkeletonData} from the file {@code skeletonFile} in assets using {@link Context}. - * Uses the provided {@link AndroidTextureAtlas} to resolve attachment images. - * - * Throws a {@link RuntimeException} in case the skeleton data could not be loaded. - */ - public static SkeletonData fromAsset(AndroidTextureAtlas atlas, String skeletonFileName, Context context) { - AndroidAtlasAttachmentLoader attachmentLoader = new AndroidAtlasAttachmentLoader(atlas); + /** Loads a {@link SkeletonData} from the file {@code skeletonFile} in assets using {@link Context}. Uses the provided + * {@link AndroidTextureAtlas} to resolve attachment images. + * + * Throws a {@link RuntimeException} in case the skeleton data could not be loaded. */ + public static SkeletonData fromAsset (AndroidTextureAtlas atlas, String skeletonFileName, Context context) { + AndroidAtlasAttachmentLoader attachmentLoader = new AndroidAtlasAttachmentLoader(atlas); - SkeletonLoader skeletonLoader; - if (skeletonFileName.endsWith(".json")) { - skeletonLoader = new SkeletonJson(attachmentLoader); - } else { - skeletonLoader = new SkeletonBinary(attachmentLoader); - } + SkeletonLoader skeletonLoader; + if (skeletonFileName.endsWith(".json")) { + skeletonLoader = new SkeletonJson(attachmentLoader); + } else { + skeletonLoader = new SkeletonBinary(attachmentLoader); + } - SkeletonData skeletonData; + SkeletonData skeletonData; - AssetManager assetManager = context.getAssets(); - try (InputStream in = new BufferedInputStream(assetManager.open(skeletonFileName))) { - skeletonData = skeletonLoader.readSkeletonData(in); - } catch (IOException e) { - throw new RuntimeException(e); - } - return skeletonData; - } + AssetManager assetManager = context.getAssets(); + try (InputStream in = new BufferedInputStream(assetManager.open(skeletonFileName))) { + skeletonData = skeletonLoader.readSkeletonData(in); + } catch (IOException e) { + throw new RuntimeException(e); + } + return skeletonData; + } - /** - * Loads a {@link SkeletonData} from the file {@code skeletonFile}. Uses the provided {@link AndroidTextureAtlas} to resolve attachment images. - * - * Throws a {@link RuntimeException} in case the skeleton data could not be loaded. - */ - public static SkeletonData fromFile(AndroidTextureAtlas atlas, File skeletonFile) { - AndroidAtlasAttachmentLoader attachmentLoader = new AndroidAtlasAttachmentLoader(atlas); + /** Loads a {@link SkeletonData} from the file {@code skeletonFile}. Uses the provided {@link AndroidTextureAtlas} to resolve + * attachment images. + * + * Throws a {@link RuntimeException} in case the skeleton data could not be loaded. */ + public static SkeletonData fromFile (AndroidTextureAtlas atlas, File skeletonFile) { + AndroidAtlasAttachmentLoader attachmentLoader = new AndroidAtlasAttachmentLoader(atlas); - SkeletonLoader skeletonLoader; - if (skeletonFile.getPath().endsWith(".json")) { - skeletonLoader = new SkeletonJson(attachmentLoader); - } else { - skeletonLoader = new SkeletonBinary(attachmentLoader); - } + SkeletonLoader skeletonLoader; + if (skeletonFile.getPath().endsWith(".json")) { + skeletonLoader = new SkeletonJson(attachmentLoader); + } else { + skeletonLoader = new SkeletonBinary(attachmentLoader); + } - return skeletonLoader.readSkeletonData(new FileHandle(skeletonFile)); - } + return skeletonLoader.readSkeletonData(new FileHandle(skeletonFile)); + } - /** - * Loads a {@link SkeletonData} from the URL {@code skeletonURL}. Uses the provided {@link AndroidTextureAtlas} to resolve attachment images. - * - * Throws a {@link RuntimeException} in case the skeleton data could not be loaded. - */ - public static SkeletonData fromHttp(AndroidTextureAtlas atlas, URL skeletonUrl, File targetDirectory) { - File skeletonFile = HttpUtils.downloadFrom(skeletonUrl, targetDirectory); - return fromFile(atlas, skeletonFile); - } + /** Loads a {@link SkeletonData} from the URL {@code skeletonURL}. Uses the provided {@link AndroidTextureAtlas} to resolve + * attachment images. + * + * Throws a {@link RuntimeException} in case the skeleton data could not be loaded. */ + public static SkeletonData fromHttp (AndroidTextureAtlas atlas, URL skeletonUrl, File targetDirectory) { + File skeletonFile = HttpUtils.downloadFrom(skeletonUrl, targetDirectory); + return fromFile(atlas, skeletonFile); + } } diff --git a/spine-android/spine-android/src/test/java/com/esotericsoftware/android/ExampleUnitTest.java b/spine-android/spine-android/src/test/java/com/esotericsoftware/android/ExampleUnitTest.java index cc5cf30cc..48f3aa380 100644 --- a/spine-android/spine-android/src/test/java/com/esotericsoftware/android/ExampleUnitTest.java +++ b/spine-android/spine-android/src/test/java/com/esotericsoftware/android/ExampleUnitTest.java @@ -1,17 +1,16 @@ + package com.esotericsoftware.android; import org.junit.Test; import static org.junit.Assert.*; -/** - * Example local unit test, which will execute on the development machine (host). +/** Example local unit test, which will execute on the development machine (host). * - * @see Testing documentation - */ + * @see Testing documentation */ public class ExampleUnitTest { - @Test - public void addition_isCorrect() { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file + @Test + public void addition_isCorrect () { + assertEquals(4, 2 + 2); + } +} diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slot.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slot.java index 3d2cce195..110b235e8 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slot.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Slot.java @@ -95,7 +95,7 @@ public class Slot { return color; } - public void setColor(Color color) { + public void setColor (Color color) { this.color = color; } From 538c4ed58ec9fba90e76b931115987a433380d63 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Thu, 25 Jul 2024 09:19:34 +0200 Subject: [PATCH 089/215] [haxe] Use physicsTranslate in the example --- spine-haxe/example/src/CelestialCircusExample.hx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/spine-haxe/example/src/CelestialCircusExample.hx b/spine-haxe/example/src/CelestialCircusExample.hx index 92bf08382..ece50e7fd 100644 --- a/spine-haxe/example/src/CelestialCircusExample.hx +++ b/spine-haxe/example/src/CelestialCircusExample.hx @@ -58,11 +58,11 @@ class CelestialCircusExample extends Scene { skeletonSprite = new SkeletonSprite(skeletondata, animationStateData); skeletonSprite.skeleton.updateWorldTransform(Physics.update); var bounds = skeletonSprite.skeleton.getBounds(); - + skeletonSprite.scale = 0.2; skeletonSprite.x = Starling.current.stage.stageWidth / 2; skeletonSprite.y = Starling.current.stage.stageHeight / 1.5; - + skeletonSprite.state.setAnimationByName(0, "eyeblink-long", true); addText("Drag Celeste to move her around"); @@ -79,8 +79,12 @@ class CelestialCircusExample extends Scene { if (skeletonTouch != null) { if (skeletonTouch.phase == TouchPhase.MOVED) { skeletonTouch.getMovement(this, movement); - skeletonSprite.skeleton.x += movement.x / skeletonSprite.scale; - skeletonSprite.skeleton.y += movement.y / skeletonSprite.scale; + skeletonSprite.x += movement.x; + skeletonSprite.y += movement.y; + skeletonSprite.skeleton.physicsTranslate( + movement.x / skeletonSprite.scale, + movement.y / skeletonSprite.scale, + ); } } else { var sceneTouch = e.getTouch(this); @@ -89,7 +93,7 @@ class CelestialCircusExample extends Scene { } } - + } } From 8b162ad1c57b5abc900bc5a4677baeff1705c4e7 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:00:02 +0200 Subject: [PATCH 090/215] [android] Clipping support. --- spine-android/settings.gradle.kts | 10 +-- spine-android/spine-android/build.gradle.kts | 12 ++-- .../spine/android/SkeletonRenderer.java | 70 ++++++++++++------- 3 files changed, 56 insertions(+), 36 deletions(-) diff --git a/spine-android/settings.gradle.kts b/spine-android/settings.gradle.kts index 749b05767..8f1932fa2 100644 --- a/spine-android/settings.gradle.kts +++ b/spine-android/settings.gradle.kts @@ -24,11 +24,11 @@ dependencyResolutionManagement { } rootProject.name = "Spine Android Examples" -//includeBuild("../spine-libgdx") { -// dependencySubstitution { -// substitute(module("com.esotericsoftware.spine:spine-libgdx")).using(project(":spine-libgdx")) -// } -//} +includeBuild("../spine-libgdx") { + dependencySubstitution { + substitute(module("com.esotericsoftware.spine:spine-libgdx")).using(project(":spine-libgdx")) + } +} //includeBuild("../../libgdx") { // dependencySubstitution { // substitute(module("com.badlogicgames.gdx:gdx")).using(project(":gdx")) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index 75f18b2ea..e4e3f942b 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -40,7 +40,7 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) } -val libraryVersion = "4.2.3-SNAPSHOT" // Update this as needed +val libraryVersion = "4.2.3" // Update this as needed tasks.register("sourceJar") { archiveClassifier.set("sources") @@ -122,9 +122,11 @@ afterEvaluate { } } - signing { - useGpgCmd() - sign(publishing.publications["release"]) - sign(tasks.getByName("sourceJar")) + if (!libraryVersion.endsWith("-SNAPSHOT")) { + signing { + useGpgCmd() + sign(publishing.publications["release"]) + sign(tasks.getByName("sourceJar")) + } } } diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java index f1cad367d..d953a781d 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java @@ -177,38 +177,56 @@ public class SkeletonRenderer { | (int)(g * slotColor.g * color.g * 255) << 8 // | (int)(b * slotColor.b * color.b * 255); + int indicesStart = command.indices.size; + int indicesLength = indices.length; if (clipper.isClipping()) { - // FIXME - throw new RuntimeException("Not implemented, need to split positions, uvs, colors"); - // clipper.clipTriangles(vertices, verticesLength, triangles, triangles.length, uvs, c, 0, false); - // FloatArray clippedVertices = clipper.getClippedVertices(); - // ShortArray clippedTriangles = clipper.getClippedTriangles(); - // batch.draw(texture, clippedVertices.items, 0, clippedVertices.size, clippedTriangles.items, 0, - // clippedTriangles.size); + clipper.clipTrianglesUnpacked(command.vertices.items, vertexStart, indices, indices.length, uvs); + + // Copy clipped vertices over, overwritting the previous vertices of this attachment + FloatArray clippedVertices = clipper.getClippedVertices(); + command.vertices.setSize(vertexStart + clippedVertices.size); + System.arraycopy(clippedVertices.items, 0, command.vertices.items, vertexStart, clippedVertices.size); + + // Copy UVs over, post-processing below + command.uvs.addAll(clipper.getClippedUvs()); + + // Copy indices over, post-processing below + command.indices.addAll(clipper.getClippedTriangles()); + + // Update verticesLength with the clipped number of vertices * 2, and indices length + // with the number of clipped indices. + verticesLength = clippedVertices.size; + indicesLength = clipper.getClippedTriangles().size; } else { + // Copy UVs over, post-processing below command.uvs.addAll(uvs); - float[] uvsArray = command.uvs.items; - for (int ii = vertexStart, w = command.texture.getWidth(), h = command.texture.getHeight(), - nn = vertexStart + verticesLength; ii < nn; ii += 2) { - uvsArray[ii] = uvsArray[ii] * w; - uvsArray[ii + 1] = uvsArray[ii + 1] * h; - } - command.colors.setSize(command.colors.size + (verticesLength >> 1)); - int[] colorsArray = command.colors.items; - for (int ii = vertexStart >> 1, nn = (vertexStart >> 1) + (verticesLength >> 1); ii < nn; ii++) { - colorsArray[ii] = c; - } - - int indicesStart = command.indices.size; + // Copy indices over, post-processing below command.indices.addAll(indices); - int firstIndex = vertexStart >> 1; - short[] indicesArray = command.indices.items; - for (int ii = indicesStart, nn = indicesStart + indices.length; ii < nn; ii++) { - indicesArray[ii] += firstIndex; - } } - // FIXME wrt clipping + + // Post-process UVs, require scaling by bitmap size + float[] uvsArray = command.uvs.items; + for (int ii = vertexStart, w = command.texture.getWidth(), h = command.texture.getHeight(), + nn = vertexStart + verticesLength; ii < nn; ii += 2) { + uvsArray[ii] = uvsArray[ii] * w; + uvsArray[ii + 1] = uvsArray[ii + 1] * h; + } + + // Fill colors array + command.colors.setSize(command.colors.size + (verticesLength >> 1)); + int[] colorsArray = command.colors.items; + for (int ii = vertexStart >> 1, nn = (vertexStart >> 1) + (verticesLength >> 1); ii < nn; ii++) { + colorsArray[ii] = c; + } + + // Post-process indices array, need to be offset by index of the mesh's first vertex. + int firstIndex = vertexStart >> 1; + short[] indicesArray = command.indices.items; + for (int ii = indicesStart, nn = indicesStart + indicesLength; ii < nn; ii++) { + indicesArray[ii] += firstIndex; + } + vertexStart += verticesLength; clipper.clipEnd(slot); } From eeb2ae691033b3670926f97b1bab2028c1584e3a Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:00:55 +0200 Subject: [PATCH 091/215] [libgdx] Switch to Gradle 8.4, publish to Maven Central via Maven. --- spine-libgdx/build.gradle | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 +- spine-libgdx/publishing.gradle | 76 ++++ spine-libgdx/spine-libgdx/.classpath | 7 - spine-libgdx/spine-libgdx/.project | 17 - .../org.eclipse.core.resources.prefs | 2 - .../.settings/org.eclipse.jdt.core.prefs | 413 ------------------ .../.settings/org.eclipse.jdt.ui.prefs | 3 - spine-libgdx/spine-libgdx/pom.xml | 126 ------ 9 files changed, 82 insertions(+), 570 deletions(-) create mode 100644 spine-libgdx/publishing.gradle delete mode 100644 spine-libgdx/spine-libgdx/.classpath delete mode 100644 spine-libgdx/spine-libgdx/.project delete mode 100644 spine-libgdx/spine-libgdx/.settings/org.eclipse.core.resources.prefs delete mode 100644 spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.core.prefs delete mode 100644 spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 spine-libgdx/spine-libgdx/pom.xml diff --git a/spine-libgdx/build.gradle b/spine-libgdx/build.gradle index 7f2832c27..c920b27c2 100644 --- a/spine-libgdx/build.gradle +++ b/spine-libgdx/build.gradle @@ -20,11 +20,14 @@ allprojects { project("spine-libgdx") { apply plugin: "java-library" + apply plugin: "maven-publish" + apply plugin: "signing" dependencies { implementation "com.badlogicgames.gdx:gdx:$libgdxVersion" } } +apply from: 'publishing.gradle' project("spine-skeletonviewer") { jar { diff --git a/spine-libgdx/gradle/wrapper/gradle-wrapper.properties b/spine-libgdx/gradle/wrapper/gradle-wrapper.properties index 2e6e5897b..859cb09ad 100644 --- a/spine-libgdx/gradle/wrapper/gradle-wrapper.properties +++ b/spine-libgdx/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Thu Apr 25 11:12:13 CEST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/spine-libgdx/publishing.gradle b/spine-libgdx/publishing.gradle new file mode 100644 index 000000000..a98628408 --- /dev/null +++ b/spine-libgdx/publishing.gradle @@ -0,0 +1,76 @@ +project("spine-libgdx") { + apply plugin: "java-library" + apply plugin: "maven-publish" + apply plugin: "signing" + + def libraryVersion = "4.2.3-SNAPSHOT" // Update as needed + + dependencies { + implementation "com.badlogicgames.gdx:gdx:$libgdxVersion" + } + + tasks.register("sourceJar", Jar) { + archiveClassifier.set("sources") + from(sourceSets.main.allJava) + } + + afterEvaluate { + publishing { + publications { + create("release", MavenPublication) { + from(components.java) + artifact(tasks.getByName("sourceJar")) + + groupId = "com.esotericsoftware.spine" + artifactId = "spine-libgdx" + version = libraryVersion + + pom { + packaging = "jar" + name.set("spine-libgdx") + description.set("Spine Runtime for libGDX") + url.set("https://github.com/esotericsoftware/spine-runtimes") + licenses { + license { + name.set("Spine Runtimes License") + url.set("http://esotericsoftware.com/spine-runtimes-license") + } + } + developers { + developer { + name.set("Esoteric Software") + email.set("contact@esotericsoftware.com") + } + } + scm { + url.set(pom.url.get()) + connection.set("scm:git:${url.get()}.git") + developerConnection.set("scm:git:${url.get()}.git") + } + } + } + } + + repositories { + maven { + name = "SonaType" + url = uri(libraryVersion.endsWith("-SNAPSHOT") ? + "https://oss.sonatype.org/content/repositories/snapshots" : + "https://oss.sonatype.org/service/local/staging/deploy/maven2") + + credentials { + username = project.findProperty("ossrhUsername") + password = project.findProperty("ossrhPassword") + } + } + } + } + + if (!libraryVersion.endsWith("-SNAPSHOT")) { + signing { + useGpgCmd() + sign(publishing.publications["release"]) + } + } + } +} diff --git a/spine-libgdx/spine-libgdx/.classpath b/spine-libgdx/spine-libgdx/.classpath deleted file mode 100644 index 9105c7891..000000000 --- a/spine-libgdx/spine-libgdx/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/spine-libgdx/spine-libgdx/.project b/spine-libgdx/spine-libgdx/.project deleted file mode 100644 index 7d65046eb..000000000 --- a/spine-libgdx/spine-libgdx/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - spine-libgdx - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/spine-libgdx/spine-libgdx/.settings/org.eclipse.core.resources.prefs b/spine-libgdx/spine-libgdx/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 42a944b8f..000000000 --- a/spine-libgdx/spine-libgdx/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=Cp1252 diff --git a/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.core.prefs b/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 4e563d526..000000000 --- a/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,413 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=enabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=com.badlogic.gdx.annotation.Null.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=com.badlogic.gdx.annotation.Null.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=com.badlogic.gdx.annotation.Null -org.eclipse.jdt.core.compiler.annotation.nullable.secondary=com.esotericsoftware.spine.launcher.utils.Null,com.esotericsoftware.spine.server.utils.Null,com.esotericsoftware.spine.editor.utils.Null -org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotatedTypeArgumentToUnannotated=info -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=warning -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=ignore -org.eclipse.jdt.core.compiler.problem.deprecation=ignore -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=info -org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=warning -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=info -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=ignore -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=enabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.7 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=1 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true -org.eclipse.jdt.core.formatter.comment.indent_root_tags=true -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=130 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=false -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=1 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1 -org.eclipse.jdt.core.formatter.disabling_tag=@off -org.eclipse.jdt.core.formatter.enabling_tag=@on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=130 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=tab -org.eclipse.jdt.core.formatter.tabulation.size=3 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true diff --git a/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.ui.prefs b/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 12ca7599a..000000000 --- a/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -formatter_profile=_libgdx -formatter_settings_version=12 diff --git a/spine-libgdx/spine-libgdx/pom.xml b/spine-libgdx/spine-libgdx/pom.xml deleted file mode 100644 index 4df1aecb4..000000000 --- a/spine-libgdx/spine-libgdx/pom.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - 4.0.0 - - org.sonatype.oss - oss-parent - 5 - - - com.esotericsoftware.spine - spine-libgdx - jar - 4.2.2-SNAPSHOT - - - spine-libgdx - Spine Runtime for libGDX - http://github.com/esotericsoftware/spine-runtimes - - http://github.com/esotericsoftware/spine-runtimes/issues - - - - - Spine Runtime License v2.5 - https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE - repo - - - - - - Developers - https://github.com/EsotericSoftware/spine-runtimes/graphs/contributors - - - - - scm:git:https://github.com/EsotericSoftware/spine-runtimes.git - scm:git:https://github.com/EsotericSoftware/spine-runtimes.git - https://github.com/EsotericSoftware/spine-runtimes/ - spine-libgdx-4.1.0 - - - - - nightlies - https://oss.sonatype.org/content/repositories/snapshots/ - - - - - UTF-8 - 1.10.0 - - - - src - test - - - org.apache.maven.plugins - maven-source-plugin - - - attach-sources - generate-resources - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 - - 1.7 - 1.7 - true - true - - - - org.apache.maven.plugins - maven-javadoc-plugin - - -Xdoclint:none - false - - - - org.apache.maven.plugins - maven-release-plugin - 3.0.0-M4 - - - default - - perform - - - spine-libgdx/spine-libgdx/pom.xml - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 3.0.1 - - - - - - - com.badlogicgames.gdx - gdx - ${gdx.version} - compile - true - - - \ No newline at end of file From 26d10b80d4050dc934e178244b7d349c248bce2b Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:02:46 +0200 Subject: [PATCH 092/215] [libgdx] Added SkeletonClipping.clipTrianglesUnpacked() Used on Android or anytime we want separate vertex attribute arrays. SkeletonClipping.getClippedUvs() will only return a non-empty result if this new method was invoked. --- .../spine/utils/SkeletonClipping.java | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java index 44352b439..605131ca8 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java @@ -41,6 +41,7 @@ public class SkeletonClipping { private final FloatArray clippingPolygon = new FloatArray(); private final FloatArray clipOutput = new FloatArray(128); private final FloatArray clippedVertices = new FloatArray(128); + private final FloatArray clippedUvs = new FloatArray(128); private final ShortArray clippedTriangles = new ShortArray(128); private final FloatArray scratch = new FloatArray(); @@ -74,6 +75,7 @@ public class SkeletonClipping { clipAttachment = null; clippingPolygons = null; clippedVertices.clear(); + clippedUvs.clear(); clippedTriangles.clear(); clippingPolygon.clear(); } @@ -84,12 +86,14 @@ public class SkeletonClipping { public void clipTriangles (float[] vertices, short[] triangles, int trianglesLength) { FloatArray clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; + FloatArray clippedUvs = this.clippedUvs; ShortArray clippedTriangles = this.clippedTriangles; Object[] polygons = clippingPolygons.items; int polygonsCount = clippingPolygons.size; short index = 0; clippedVertices.clear(); + clippedUvs.clear(); clippedTriangles.clear(); for (int i = 0; i < trianglesLength; i += 3) { int vertexOffset = triangles[i] << 1; @@ -153,6 +157,7 @@ public class SkeletonClipping { boolean twoColor) { FloatArray clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; + FloatArray clippedUvs = this.clippedUvs; ShortArray clippedTriangles = this.clippedTriangles; Object[] polygons = clippingPolygons.items; int polygonsCount = clippingPolygons.size; @@ -160,6 +165,7 @@ public class SkeletonClipping { short index = 0; clippedVertices.clear(); + clippedUvs.clear(); clippedTriangles.clear(); for (int i = 0; i < trianglesLength; i += 3) { int vertexOffset = triangles[i] << 1; @@ -265,6 +271,94 @@ public class SkeletonClipping { } } + public void clipTrianglesUnpacked (float[] vertices, int vertexStart, short[] triangles, int trianglesLength, float[] uvs) { + FloatArray clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; + FloatArray clippedUvs = this.clippedUvs; + ShortArray clippedTriangles = this.clippedTriangles; + Object[] polygons = clippingPolygons.items; + int polygonsCount = clippingPolygons.size; + int vertexSize = 2; + + short index = 0; + clippedVertices.clear(); + clippedUvs.clear(); + clippedTriangles.clear(); + for (int i = 0; i < trianglesLength; i += 3) { + int vertexOffset = triangles[i] << 1; + float x1 = vertices[vertexStart + vertexOffset], y1 = vertices[vertexStart + vertexOffset + 1]; + float u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1]; + + vertexOffset = triangles[i + 1] << 1; + float x2 = vertices[vertexStart + vertexOffset], y2 = vertices[vertexStart + vertexOffset + 1]; + float u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1]; + + vertexOffset = triangles[i + 2] << 1; + float x3 = vertices[vertexStart + vertexOffset], y3 = vertices[vertexStart + vertexOffset + 1]; + float u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1]; + + for (int p = 0; p < polygonsCount; p++) { + int s = clippedVertices.size; + if (clip(x1, y1, x2, y2, x3, y3, (FloatArray)polygons[p], clipOutput)) { + int clipOutputLength = clipOutput.size; + if (clipOutputLength == 0) continue; + float d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; + float d = 1 / (d0 * d2 + d1 * (y1 - y3)); + + int clipOutputCount = clipOutputLength >> 1; + float[] clipOutputItems = clipOutput.items; + float[] clippedVerticesItems = clippedVertices.setSize(s + clipOutputCount * vertexSize); + float[] clippedUvsItems = clippedUvs.setSize(s + clipOutputCount * vertexSize); + for (int ii = 0; ii < clipOutputLength; ii += 2, s += 2) { + float x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; + clippedVerticesItems[s] = x; + clippedVerticesItems[s + 1] = y; + + float c0 = x - x3, c1 = y - y3; + float a = (d0 * c0 + d1 * c1) * d; + float b = (d4 * c0 + d2 * c1) * d; + float c = 1 - a - b; + clippedUvsItems[s] = u1 * a + u2 * b + u3 * c; + clippedUvsItems[s + 1] = v1 * a + v2 * b + v3 * c; + } + + s = clippedTriangles.size; + short[] clippedTrianglesItems = clippedTriangles.setSize(s + 3 * (clipOutputCount - 2)); + clipOutputCount--; + for (int ii = 1; ii < clipOutputCount; ii++, s += 3) { + clippedTrianglesItems[s] = index; + clippedTrianglesItems[s + 1] = (short)(index + ii); + clippedTrianglesItems[s + 2] = (short)(index + ii + 1); + } + index += clipOutputCount + 1; + } else { + float[] clippedVerticesItems = clippedVertices.setSize(s + 3 * vertexSize); + float[] clippedUvsItems = clippedUvs.setSize(s + 3 * vertexSize); + clippedVerticesItems[s] = x1; + clippedVerticesItems[s + 1] = y1; + clippedVerticesItems[s + 2] = x2; + clippedVerticesItems[s + 3] = y2; + clippedVerticesItems[s + 4] = x3; + clippedVerticesItems[s + 5] = y3; + + clippedUvsItems[s] = u1; + clippedUvsItems[s + 1] = v1; + clippedUvsItems[s + 2] = u2; + clippedUvsItems[s + 3] = v2; + clippedUvsItems[s + 4] = u3; + clippedUvsItems[s + 5] = v3; + + s = clippedTriangles.size; + short[] clippedTrianglesItems = clippedTriangles.setSize(s + 3); + clippedTrianglesItems[s] = index; + clippedTrianglesItems[s + 1] = (short)(index + 1); + clippedTrianglesItems[s + 2] = (short)(index + 2); + index += 3; + break; + } + } + } + } + /** Clips the input triangle against the convex, clockwise clipping area. If the triangle lies entirely within the clipping * area, false is returned. The clipping area must duplicate the first vertex at the end of the vertices list. */ boolean clip (float x1, float y1, float x2, float y2, float x3, float y3, FloatArray clippingArea, FloatArray output) { @@ -364,6 +458,11 @@ public class SkeletonClipping { return clippedVertices; } + /** Only returns a non-empty array if clipTrianglesUnpacked() was used **/ + public FloatArray getClippedUvs() { + return clippedUvs; + } + public ShortArray getClippedTriangles () { return clippedTriangles; } From 43c2df9cceb3451526f78a298636b53096367426 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:07:33 +0200 Subject: [PATCH 093/215] [libgdx] Update GitHub Action to use Gradle --- .github/workflows/spine-libgdx.yml | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/.github/workflows/spine-libgdx.yml b/.github/workflows/spine-libgdx.yml index 2cfcda5b9..5bc417cee 100644 --- a/.github/workflows/spine-libgdx.yml +++ b/.github/workflows/spine-libgdx.yml @@ -12,24 +12,18 @@ jobs: steps: - uses: actions/checkout@v3 - name: Set up JDK 1.8 - uses: actions/setup-java@v3 + uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: "8" - server-id: sonatype-nexus-snapshots - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD + java-version: "8" - - name: Cache Maven packages + - name: Cache Gradle packages uses: actions/cache@v3 with: - path: ~/.m2 - key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2 + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: ${{ runner.os }}-gradle - name: Build spine-libgdx - working-directory: spine-libgdx/spine-libgdx - run: mvn clean deploy - env: - MAVEN_USERNAME: ${{ secrets.SONATYPE_USER }} - MAVEN_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + working-directory: spine-libgdx/spine-libgdx + run: ./gradlew publishReleasePublicationToSonaType -PossrhUsername=${{ secrets.SONATYPE_USER }} -PossrhPassword=${{ secrets.SONATYPE_PASSWORD }} From 07cbea08719ebbf8743d6091a4a451f743310658 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:12:21 +0200 Subject: [PATCH 094/215] [libgdx] Fix GH Action --- .github/workflows/spine-libgdx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spine-libgdx.yml b/.github/workflows/spine-libgdx.yml index 5bc417cee..fb56a8dcf 100644 --- a/.github/workflows/spine-libgdx.yml +++ b/.github/workflows/spine-libgdx.yml @@ -25,5 +25,5 @@ jobs: restore-keys: ${{ runner.os }}-gradle - name: Build spine-libgdx - working-directory: spine-libgdx/spine-libgdx + working-directory: spine-libgdx run: ./gradlew publishReleasePublicationToSonaType -PossrhUsername=${{ secrets.SONATYPE_USER }} -PossrhPassword=${{ secrets.SONATYPE_PASSWORD }} From 79a0f665095ad390a0addb461dba52fa0374d151 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:15:09 +0200 Subject: [PATCH 095/215] [android] Add GH action to publish snapshots. --- .github/workflows/spine-android.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/spine-android.yml diff --git a/.github/workflows/spine-android.yml b/.github/workflows/spine-android.yml new file mode 100644 index 000000000..06b19b9fa --- /dev/null +++ b/.github/workflows/spine-android.yml @@ -0,0 +1,29 @@ +name: Build spine-android + +on: + push: + paths: + - 'spine-android/**' + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 1.8 + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: "8" + + - name: Cache Gradle packages + uses: actions/cache@v3 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: ${{ runner.os }}-gradle + + - name: Build spine-android + working-directory: spine-android + run: ./gradlew publishReleasePublicationToSonaType -PossrhUsername=${{ secrets.SONATYPE_USER }} -PossrhPassword=${{ secrets.SONATYPE_PASSWORD }} From d5a739b99c51dc6c0433615b35013ecab10244ea Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:20:54 +0200 Subject: [PATCH 096/215] [android] Add GH action to publish snapshots. --- .github/workflows/spine-android.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/spine-android.yml b/.github/workflows/spine-android.yml index 06b19b9fa..4d2fef7d7 100644 --- a/.github/workflows/spine-android.yml +++ b/.github/workflows/spine-android.yml @@ -17,6 +17,12 @@ jobs: distribution: 'zulu' java-version: "8" + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + with: + api-level: 34 + build-tools: 35.0.0 + - name: Cache Gradle packages uses: actions/cache@v3 with: From ef49f942e47096f4b9ccba50a1354fc69f42d439 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:22:02 +0200 Subject: [PATCH 097/215] [android] Add GH action to publish snapshots. --- .github/workflows/spine-android.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/spine-android.yml b/.github/workflows/spine-android.yml index 4d2fef7d7..bb2826ec7 100644 --- a/.github/workflows/spine-android.yml +++ b/.github/workflows/spine-android.yml @@ -11,11 +11,11 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Set up JDK 1.8 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: "8" + java-version: "17" - name: Setup Android SDK uses: android-actions/setup-android@v3 From e2a82b46f19fd6e8e79ac7f09a7b3c6f6e3c80b0 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:47:25 +0200 Subject: [PATCH 098/215] [android] Add GH action to publish snapshots. --- spine-android/spine-android/build.gradle.kts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index e4e3f942b..259fef7ff 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -122,11 +122,13 @@ afterEvaluate { } } - if (!libraryVersion.endsWith("-SNAPSHOT")) { - signing { - useGpgCmd() - sign(publishing.publications["release"]) - sign(tasks.getByName("sourceJar")) - } + signing { + useGpgCmd() + sign(publishing.publications["release"]) + sign(tasks.getByName("sourceJar")) + } + + tasks.withType { + onlyIf { !libraryVersion.endsWith("-SNAPSHOT") } } } From be746e6a20485d997a93247f3b40633002938643 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:51:24 +0200 Subject: [PATCH 099/215] [android] Add GH action to publish snapshots. --- spine-android/spine-android/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index 259fef7ff..c5dacdd60 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -40,7 +40,7 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) } -val libraryVersion = "4.2.3" // Update this as needed +val libraryVersion = "4.2.3-SNAPSHOT" // Update this as needed tasks.register("sourceJar") { archiveClassifier.set("sources") From f9a8e31e1f09711b9f6242e4a40579d5eede2bb8 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:57:43 +0200 Subject: [PATCH 100/215] [libgdx] Release 4.2.4 --- spine-libgdx/publish.sh | 14 ++++++++++++++ spine-libgdx/publishing.gradle | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100755 spine-libgdx/publish.sh diff --git a/spine-libgdx/publish.sh b/spine-libgdx/publish.sh new file mode 100755 index 000000000..b3cd99758 --- /dev/null +++ b/spine-libgdx/publish.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +# +# 1. Set up PGP key for signing +# 2. Create ~/.gradle/gradle.properties +# 3. Add +# ossrhUsername= +# ossrhPassword= +# signing.gnupg.passphrase= +# +# After publishing via this script, log into https://oss.sonatype.org and release it manually after +# checks pass ("Close -> Release & Drop"). +set -e + ./gradlew publishReleasePublicationToSonaTypeRepository --info \ No newline at end of file diff --git a/spine-libgdx/publishing.gradle b/spine-libgdx/publishing.gradle index a98628408..bc515845e 100644 --- a/spine-libgdx/publishing.gradle +++ b/spine-libgdx/publishing.gradle @@ -3,7 +3,7 @@ project("spine-libgdx") { apply plugin: "maven-publish" apply plugin: "signing" - def libraryVersion = "4.2.3-SNAPSHOT" // Update as needed + def libraryVersion = "4.2.4" dependencies { implementation "com.badlogicgames.gdx:gdx:$libgdxVersion" From e6de4ee99f38c1e6e5d933083334b9764677e725 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 17:58:21 +0200 Subject: [PATCH 101/215] [libgdx] Snapshot 4.2.5 --- spine-libgdx/publishing.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-libgdx/publishing.gradle b/spine-libgdx/publishing.gradle index bc515845e..c732199d1 100644 --- a/spine-libgdx/publishing.gradle +++ b/spine-libgdx/publishing.gradle @@ -3,7 +3,7 @@ project("spine-libgdx") { apply plugin: "maven-publish" apply plugin: "signing" - def libraryVersion = "4.2.4" + def libraryVersion = "4.2.5-SNAPSHOT" dependencies { implementation "com.badlogicgames.gdx:gdx:$libgdxVersion" From 7457b1b9acfdadf03df12bbfa4b545528f9b40f0 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 18:04:00 +0200 Subject: [PATCH 102/215] [libgdx] Add javadoc Jar to publishing artifacts. --- spine-libgdx/build.gradle | 5 +++++ spine-libgdx/publishing.gradle | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/spine-libgdx/build.gradle b/spine-libgdx/build.gradle index c920b27c2..9312019af 100644 --- a/spine-libgdx/build.gradle +++ b/spine-libgdx/build.gradle @@ -16,6 +16,11 @@ allprojects { maven { url "https://oss.sonatype.org/content/repositories/snapshots" } mavenCentral() } + + tasks.withType(JavaCompile) { + sourceCompatibility = javaVersion.toString() + targetCompatibility = javaVersion.toString() + } } project("spine-libgdx") { diff --git a/spine-libgdx/publishing.gradle b/spine-libgdx/publishing.gradle index c732199d1..be615e6fb 100644 --- a/spine-libgdx/publishing.gradle +++ b/spine-libgdx/publishing.gradle @@ -14,12 +14,23 @@ project("spine-libgdx") { from(sourceSets.main.allJava) } + tasks.javadoc { + failOnError = false + } + + tasks.register("javadocJar", Jar) { + dependsOn javadoc + archiveClassifier.set("javadoc") + from(javadoc.destinationDir) + } + afterEvaluate { publishing { publications { create("release", MavenPublication) { from(components.java) artifact(tasks.getByName("sourceJar")) + artifact(tasks.getByName("javadocJar")) groupId = "com.esotericsoftware.spine" artifactId = "spine-libgdx" From a010b69f3e3d464602002e46395c77fab3362b1e Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 18:25:37 +0200 Subject: [PATCH 103/215] [libgdx] Release 4.2.5 --- spine-libgdx/publishing.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-libgdx/publishing.gradle b/spine-libgdx/publishing.gradle index be615e6fb..59ff838c2 100644 --- a/spine-libgdx/publishing.gradle +++ b/spine-libgdx/publishing.gradle @@ -3,7 +3,7 @@ project("spine-libgdx") { apply plugin: "maven-publish" apply plugin: "signing" - def libraryVersion = "4.2.5-SNAPSHOT" + def libraryVersion = "4.2.5" dependencies { implementation "com.badlogicgames.gdx:gdx:$libgdxVersion" From 903db420949227c27d811a407a0a708015cab9ce Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 18:36:27 +0200 Subject: [PATCH 104/215] [libgdx] Next snapshot --- spine-libgdx/publishing.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-libgdx/publishing.gradle b/spine-libgdx/publishing.gradle index 59ff838c2..10897ac38 100644 --- a/spine-libgdx/publishing.gradle +++ b/spine-libgdx/publishing.gradle @@ -3,7 +3,7 @@ project("spine-libgdx") { apply plugin: "maven-publish" apply plugin: "signing" - def libraryVersion = "4.2.5" + def libraryVersion = "4.2.6-SNAPSHOT" dependencies { implementation "com.badlogicgames.gdx:gdx:$libgdxVersion" From d8231d1656afd21cc2b5d69b964d5233f418d7ea Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 18:56:53 +0200 Subject: [PATCH 105/215] [android] Release 4.2.3 --- spine-android/spine-android/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index c5dacdd60..1105aeca1 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -33,14 +33,14 @@ android { dependencies { implementation(libs.androidx.appcompat) api("com.badlogicgames.gdx:gdx:1.12.2-SNAPSHOT") - api("com.esotericsoftware.spine:spine-libgdx:4.2.0") + api("com.esotericsoftware.spine:spine-libgdx:4.2.5") testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) } -val libraryVersion = "4.2.3-SNAPSHOT" // Update this as needed +val libraryVersion = "4.2.3" // Update this as needed tasks.register("sourceJar") { archiveClassifier.set("sources") From 67e937e79800fe7cc0a3f5be730d4038f7543609 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 19:02:37 +0200 Subject: [PATCH 106/215] [libgdx] Update README.md with better info on versioning. --- spine-libgdx/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spine-libgdx/README.md b/spine-libgdx/README.md index 8cad82a62..b167b823c 100644 --- a/spine-libgdx/README.md +++ b/spine-libgdx/README.md @@ -28,9 +28,9 @@ The spine-libgdx runtime is released to Maven Central through SonaType. We also ### Versions -You can find the latest version for release builds [here](http://search.maven.org/#search%7Cga%7C1%7Cspine-libgdx). +You can find the latest version for release builds [here](https://central.sonatype.com/artifact/com.esotericsoftware.spine/spine-libgdx). -You can find the latest SNAPSHOT version in the project's [pom.xml](spine-libgdx/pom.xml#L13). +You can find the latest SNAPSHOT version in this listing in the SonaType snapshot repository (https://oss.sonatype.org/content/repositories/snapshots/com/esotericsoftware/spine/spine-libgdx/). You can also build and install `spine-libgdx` into your local Maven repository: @@ -39,9 +39,7 @@ cd spine-libgdx/spine-libgdx mvn install ``` -Up until Spine 4.0, the version number is composed of the editor number at the time of release of the Maven artifact plus a patch number at the end. E.g. `4.0.18.1` means editor version `4.0.18`, and patch version `1` for the runtime. The editor version is updated everytime a new editor release is performed, the patch version is updated everytime a new fix or enhancement is released in the runtime. - -Starting from Spine 4.1, the version number is composed of the corresponding editor `major.minor` version, and runtime update version for the runtime. E.g. `4.1.10` means editor version 4.1, runtime update version 10. All runtime versions are compatible with the exports from the correspongind `major.minor` editor version. +The version number is composed of the corresponding editor `major.minor` version, and runtime update version for the runtime. E.g. `4.1.10` means editor version 4.1, runtime update version 10. All runtime versions are compatible with the exports from the correspongind `major.minor` editor version. ### Maven @@ -78,11 +76,13 @@ project(":core") { compile "com.badlogicgames.gdx:gdx:$gdxVersion" compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" - compile "com.esotericsoftware.spine:spine-libgdx:4.2.0" + compile "com.esotericsoftware.spine:spine-libgdx:4.2.+" } } ``` +Note that `4.2.+` will pull in the latest `-SNAPSHOT` release. Our snapshot releases are considered stable and based on the latest commit to the Spine Runtimes branch corresponding to the latest Spine Editor release version. + ## Running the examples Clone this repository and load the `spine-libgdx/build.gradle` file with IntelliJ IDEA or Eclipse. Alterantively, you can run `./gradlew eclipse` on the command line to generate Eclipse projects without having to use the Gradle build. From 5aa8cd43ff833f6ebf91d80477214366fae73605 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 19:04:48 +0200 Subject: [PATCH 107/215] [android] Next snapshot --- spine-android/spine-android/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index 1105aeca1..0f0854397 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -40,7 +40,7 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) } -val libraryVersion = "4.2.3" // Update this as needed +val libraryVersion = "4.2.4-SNAPSHOT" tasks.register("sourceJar") { archiveClassifier.set("sources") From a71dfd63e90f48ded740233cf28529e66cfc86c6 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 19:06:08 +0200 Subject: [PATCH 108/215] Formatting --- .../com/esotericsoftware/spine/android/SkeletonRenderer.java | 2 +- .../src/com/esotericsoftware/spine/utils/SkeletonClipping.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java index d953a781d..00b776cab 100644 --- a/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java +++ b/spine-android/spine-android/src/main/java/com/esotericsoftware/spine/android/SkeletonRenderer.java @@ -208,7 +208,7 @@ public class SkeletonRenderer { // Post-process UVs, require scaling by bitmap size float[] uvsArray = command.uvs.items; for (int ii = vertexStart, w = command.texture.getWidth(), h = command.texture.getHeight(), - nn = vertexStart + verticesLength; ii < nn; ii += 2) { + nn = vertexStart + verticesLength; ii < nn; ii += 2) { uvsArray[ii] = uvsArray[ii] * w; uvsArray[ii + 1] = uvsArray[ii + 1] * h; } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java index 605131ca8..1e4044516 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java @@ -459,7 +459,7 @@ public class SkeletonClipping { } /** Only returns a non-empty array if clipTrianglesUnpacked() was used **/ - public FloatArray getClippedUvs() { + public FloatArray getClippedUvs () { return clippedUvs; } From 09c71cd3133fd1dfaff6feb34528e609e2f4ff75 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 25 Jul 2024 19:13:39 +0200 Subject: [PATCH 109/215] [android] Copy assets via runtime.sh --- examples/export/runtimes.sh | 23 ++++++++++++++++++ .../app/src/main/assets/spineboy-pro.skel | Bin 64468 -> 64463 bytes 2 files changed, 23 insertions(+) diff --git a/examples/export/runtimes.sh b/examples/export/runtimes.sh index 811ac1385..7c7e48532 100755 --- a/examples/export/runtimes.sh +++ b/examples/export/runtimes.sh @@ -35,6 +35,29 @@ cp -f ../mix-and-match/export/*.json "$ROOT/spine-libgdx/spine-libgdx-tests/asse cp -f ../mix-and-match/export/*.skel "$ROOT/spine-libgdx/spine-libgdx-tests/assets/mix-and-match/" cp -f ../mix-and-match/export/*-pma.* "$ROOT/spine-libgdx/spine-libgdx-tests/assets/mix-and-match/" +echo "spine-android" +rm "$ROOT/spine-android/app/src/main/assets/"* +cp -f ../celestial-circus/export/celestial-circus-pro.skel "$ROOT/spine-android/app/src/main/assets/" +cp -f ../celestial-circus/export/celestial-circus.atlas "$ROOT/spine-android/app/src/main/assets" +cp -f ../celestial-circus/export/celestial-circus.png "$ROOT/spine-android/app/src/main/assets" + +cp -f ../dragon/export/dragon-ess.skel "$ROOT/spine-android/app/src/main/assets/" +cp -f ../dragon/export/dragon.atlas "$ROOT/spine-android/app/src/main/assets" +cp -f ../dragon/export/dragon.png "$ROOT/spine-android/app/src/main/assets" +cp -f ../dragon/export/dragon_2.png "$ROOT/spine-android/app/src/main/assets" +cp -f ../dragon/export/dragon_3.png "$ROOT/spine-android/app/src/main/assets" +cp -f ../dragon/export/dragon_4.png "$ROOT/spine-android/app/src/main/assets" +cp -f ../dragon/export/dragon_5.png "$ROOT/spine-android/app/src/main/assets" + +cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-android/app/src/main/assets/" +cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-android/app/src/main/assets/" +cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-android/app/src/main/assets/" + +cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-android/app/src/main/assets/" +cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-android/app/src/main/assets/" +cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-android/app/src/main/assets/" +cp -f ../spineboy/export/spineboy.png "$ROOT/spine-android/app/src/main/assets/" + rm -f "$ROOT/spine-libgdx/spine-libgdx-tests/assets/sack/"* mkdir -p "$ROOT/spine-libgdx/spine-libgdx-tests/assets/sack/" cp -f ../sack/export/sack-pro.json "$ROOT/spine-libgdx/spine-libgdx-tests/assets/sack/" diff --git a/spine-android/app/src/main/assets/spineboy-pro.skel b/spine-android/app/src/main/assets/spineboy-pro.skel index 4dfe536cdee2cd7d77b343462a494d5543dddfd5..09e564b7edc42fe37be66a4a0391862071ed948a 100644 GIT binary patch delta 166 zcmcceo%#HCX8y9hr`G>I)9``aM9)ai$Y`U;+x3i{ll3>KaI!ElF);u^<7WL0uk}rG z&YWenmz+7v$pOUBTD96yfq{XIg@F;IhSd%vum!}J2~<)#a~2~=$!5O?N2QqM($Xf2 z{Z?gh(m8W>vOSRDcy{Kj$r- Date: Fri, 26 Jul 2024 09:13:22 -1000 Subject: [PATCH 110/215] [libgdx] Revert removal of spine-libgdx Eclipse project files. This reverts (part of) commit eeb2ae691033b3670926f97b1bab2028c1584e3a. --- spine-libgdx/spine-libgdx/.classpath | 7 + spine-libgdx/spine-libgdx/.project | 17 + .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 413 ++++++++++++++++++ .../.settings/org.eclipse.jdt.ui.prefs | 3 + spine-libgdx/spine-libgdx/pom.xml | 126 ++++++ 6 files changed, 568 insertions(+) create mode 100644 spine-libgdx/spine-libgdx/.classpath create mode 100644 spine-libgdx/spine-libgdx/.project create mode 100644 spine-libgdx/spine-libgdx/.settings/org.eclipse.core.resources.prefs create mode 100644 spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.core.prefs create mode 100644 spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.ui.prefs create mode 100644 spine-libgdx/spine-libgdx/pom.xml diff --git a/spine-libgdx/spine-libgdx/.classpath b/spine-libgdx/spine-libgdx/.classpath new file mode 100644 index 000000000..9105c7891 --- /dev/null +++ b/spine-libgdx/spine-libgdx/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/spine-libgdx/spine-libgdx/.project b/spine-libgdx/spine-libgdx/.project new file mode 100644 index 000000000..7d65046eb --- /dev/null +++ b/spine-libgdx/spine-libgdx/.project @@ -0,0 +1,17 @@ + + + spine-libgdx + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/spine-libgdx/spine-libgdx/.settings/org.eclipse.core.resources.prefs b/spine-libgdx/spine-libgdx/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..42a944b8f --- /dev/null +++ b/spine-libgdx/spine-libgdx/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=Cp1252 diff --git a/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.core.prefs b/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..4e563d526 --- /dev/null +++ b/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,413 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=enabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=com.badlogic.gdx.annotation.Null.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=com.badlogic.gdx.annotation.Null.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.nullable=com.badlogic.gdx.annotation.Null +org.eclipse.jdt.core.compiler.annotation.nullable.secondary=com.esotericsoftware.spine.launcher.utils.Null,com.esotericsoftware.spine.server.utils.Null,com.esotericsoftware.spine.editor.utils.Null +org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.doc.comment.support=enabled +org.eclipse.jdt.core.compiler.problem.APILeak=warning +org.eclipse.jdt.core.compiler.problem.annotatedTypeArgumentToUnannotated=info +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=warning +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=ignore +org.eclipse.jdt.core.compiler.problem.deprecation=ignore +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=warning +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning +org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning +org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public +org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag +org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=info +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=warning +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=info +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=ignore +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=enabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning +org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled +org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled +org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.7 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=1 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert +org.eclipse.jdt.core.formatter.comment.line_length=130 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=false +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=1 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1 +org.eclipse.jdt.core.formatter.disabling_tag=@off +org.eclipse.jdt.core.formatter.enabling_tag=@on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=130 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=tab +org.eclipse.jdt.core.formatter.tabulation.size=3 +org.eclipse.jdt.core.formatter.use_on_off_tags=true +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true diff --git a/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.ui.prefs b/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 000000000..12ca7599a --- /dev/null +++ b/spine-libgdx/spine-libgdx/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +formatter_profile=_libgdx +formatter_settings_version=12 diff --git a/spine-libgdx/spine-libgdx/pom.xml b/spine-libgdx/spine-libgdx/pom.xml new file mode 100644 index 000000000..4df1aecb4 --- /dev/null +++ b/spine-libgdx/spine-libgdx/pom.xml @@ -0,0 +1,126 @@ + + + 4.0.0 + + org.sonatype.oss + oss-parent + 5 + + + com.esotericsoftware.spine + spine-libgdx + jar + 4.2.2-SNAPSHOT + + + spine-libgdx + Spine Runtime for libGDX + http://github.com/esotericsoftware/spine-runtimes + + http://github.com/esotericsoftware/spine-runtimes/issues + + + + + Spine Runtime License v2.5 + https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE + repo + + + + + + Developers + https://github.com/EsotericSoftware/spine-runtimes/graphs/contributors + + + + + scm:git:https://github.com/EsotericSoftware/spine-runtimes.git + scm:git:https://github.com/EsotericSoftware/spine-runtimes.git + https://github.com/EsotericSoftware/spine-runtimes/ + spine-libgdx-4.1.0 + + + + + nightlies + https://oss.sonatype.org/content/repositories/snapshots/ + + + + + UTF-8 + 1.10.0 + + + + src + test + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + generate-resources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + true + true + + + + org.apache.maven.plugins + maven-javadoc-plugin + + -Xdoclint:none + false + + + + org.apache.maven.plugins + maven-release-plugin + 3.0.0-M4 + + + default + + perform + + + spine-libgdx/spine-libgdx/pom.xml + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.0.1 + + + + + + + com.badlogicgames.gdx + gdx + ${gdx.version} + compile + true + + + \ No newline at end of file From d794d2649c4fd50a867cd5b63650d32737d10baf Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Fri, 26 Jul 2024 09:14:09 -1000 Subject: [PATCH 111/215] [libgdx] SkeletonClipping, don't need local clippedUvs for single reference. --- .../src/com/esotericsoftware/spine/utils/SkeletonClipping.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java index 1e4044516..6a5db1e94 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java @@ -86,7 +86,6 @@ public class SkeletonClipping { public void clipTriangles (float[] vertices, short[] triangles, int trianglesLength) { FloatArray clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; - FloatArray clippedUvs = this.clippedUvs; ShortArray clippedTriangles = this.clippedTriangles; Object[] polygons = clippingPolygons.items; int polygonsCount = clippingPolygons.size; @@ -157,7 +156,6 @@ public class SkeletonClipping { boolean twoColor) { FloatArray clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; - FloatArray clippedUvs = this.clippedUvs; ShortArray clippedTriangles = this.clippedTriangles; Object[] polygons = clippingPolygons.items; int polygonsCount = clippingPolygons.size; From 195c65ffd93787f6c23141867f8a2293d459705c Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 30 Jul 2024 17:14:18 +0200 Subject: [PATCH 112/215] [unity] Fixed SkeletonUtilityConstraint subclasses not updating. Closes #2587. --- .../Components/SkeletonUtility/SkeletonUtility.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonUtility/SkeletonUtility.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonUtility/SkeletonUtility.cs index 910a8fa69..958ed60d2 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonUtility/SkeletonUtility.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonUtility/SkeletonUtility.cs @@ -238,6 +238,11 @@ namespace Spine.Unity { bool needToReprocessBones; public void ResubscribeEvents () { + ResubscribeIndependentEvents(); + ResubscribeDependentEvents(); + } + + void ResubscribeIndependentEvents () { if (skeletonRenderer != null) { skeletonRenderer.OnRebuild -= HandleRendererReset; skeletonRenderer.OnRebuild += HandleRendererReset; @@ -250,10 +255,15 @@ namespace Spine.Unity { if (skeletonAnimation != null) { skeletonAnimation.UpdateLocal -= UpdateLocal; + skeletonAnimation.UpdateLocal += UpdateLocal; + } + } + + void ResubscribeDependentEvents () { + if (skeletonAnimation != null) { skeletonAnimation.UpdateWorld -= UpdateWorld; skeletonAnimation.UpdateComplete -= UpdateComplete; - skeletonAnimation.UpdateLocal += UpdateLocal; if (hasOverrideBones || hasConstraints) skeletonAnimation.UpdateWorld += UpdateWorld; if (hasConstraints) @@ -369,6 +379,7 @@ namespace Spine.Unity { boneComponents.Clear(); constraintComponents.Clear(); } + ResubscribeDependentEvents(); } void UpdateLocal (ISkeletonAnimation anim) { From bc15c4566e780bbf7c801dfa8e43104dbedbe00b Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Fri, 2 Aug 2024 16:29:06 -1000 Subject: [PATCH 113/215] [libgdx] Fixed mixing out inherit timelines to the setup pose. --- .../src/com/esotericsoftware/spine/Animation.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java index 482ffb36b..d5c724ff4 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java @@ -980,6 +980,11 @@ public class Animation { Bone bone = skeleton.bones.get(boneIndex); if (!bone.active) return; + if (direction == out) { + if (blend == setup) bone.inherit = bone.data.inherit; + return; + } + float[] frames = this.frames; if (time < frames[0]) { if (blend == setup || blend == first) bone.inherit = bone.data.inherit; From 9e35ce95fe1f9585092a6b5fee0cb53dbac23b2c Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Mon, 5 Aug 2024 09:02:41 +0200 Subject: [PATCH 114/215] [ts] Port: Fixed mixing out inherit timelines to the setup pose. See #2590. --- spine-ts/spine-core/src/Animation.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spine-ts/spine-core/src/Animation.ts b/spine-ts/spine-core/src/Animation.ts index ff9a5d0b8..c54085ca6 100644 --- a/spine-ts/spine-core/src/Animation.ts +++ b/spine-ts/spine-core/src/Animation.ts @@ -835,6 +835,11 @@ export class InheritTimeline extends Timeline implements BoneTimeline { let bone = skeleton.bones[this.boneIndex]; if (!bone.active) return; + if (direction == MixDirection.mixOut) { + if (blend == MixBlend.setup) bone.inherit = bone.data.inherit; + return; + } + let frames = this.frames; if (time < frames[0]) { if (blend == MixBlend.setup || blend == MixBlend.first) bone.inherit = bone.data.inherit; From 62903429601bc2a894fba6fa1c12e355a166ce51 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Mon, 5 Aug 2024 09:04:39 +0200 Subject: [PATCH 115/215] [haxe] Port: Fixed mixing out inherit timelines to the setup pose. See #2590. --- spine-haxe/spine-haxe/spine/animation/InheritTimeline.hx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spine-haxe/spine-haxe/spine/animation/InheritTimeline.hx b/spine-haxe/spine-haxe/spine/animation/InheritTimeline.hx index c2e36b964..605eab100 100644 --- a/spine-haxe/spine-haxe/spine/animation/InheritTimeline.hx +++ b/spine-haxe/spine-haxe/spine/animation/InheritTimeline.hx @@ -63,6 +63,11 @@ class InheritTimeline extends Timeline implements BoneTimeline { var bone:Bone = skeleton.bones[boneIndex]; if (!bone.active) return; + if (direction == MixDirection.mixOut) { + if (blend == MixBlend.setup) bone.inherit = bone.data.inherit; + return; + } + var frames:Array = frames; if (time < frames[0]) { if (blend == MixBlend.setup || blend == MixBlend.first) bone.inherit = bone.data.inherit; From c6775728b7c06d4b4c437f3622d7d1af97c4fd27 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Mon, 5 Aug 2024 09:40:40 +0200 Subject: [PATCH 116/215] [haxe] Release 4.2.0 --- spine-haxe/README.md | 2 -- spine-haxe/project.xml | 2 +- spine-haxe/publish.sh | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/spine-haxe/README.md b/spine-haxe/README.md index 7771d8345..5050b84dc 100644 --- a/spine-haxe/README.md +++ b/spine-haxe/README.md @@ -1,5 +1,3 @@ -> **Note**: this runtime is a work in progress. Please follow this issue to get alerted once the runtime is deemed complete. https://github.com/EsotericSoftware/spine-runtimes/issues/2249 - # spine-haxe The spine-haxe runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [Haxe](https://haxe.org/) in combination with [OpenFL](https://www.openfl.org/) and [Lime](https://lime.openfl.org/). diff --git a/spine-haxe/project.xml b/spine-haxe/project.xml index ceeafb6fb..85f1a9d4b 100644 --- a/spine-haxe/project.xml +++ b/spine-haxe/project.xml @@ -1,7 +1,7 @@ - + diff --git a/spine-haxe/publish.sh b/spine-haxe/publish.sh index 441bb7e0b..5b8eaeae9 100755 --- a/spine-haxe/publish.sh +++ b/spine-haxe/publish.sh @@ -22,7 +22,7 @@ read answer if [ "$answer" = "Y" ] || [ "$answer" = "y" ]; then git add haxelib.json git commit -m "[haxe] Release $newVersion" - git push origin haxe-ci + git push origin 4.2 echo "Changes committed and pushed." else echo "Commit and push cancelled, but haxelib.json version updated." From 3f43ff5a5a872033c76dacb8de0ae83339d257e7 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Mon, 5 Aug 2024 16:41:02 +0200 Subject: [PATCH 117/215] [csharp] Port: Fixed mixing out inherit timelines to the setup pose. See #2590, see commit bc15c45. --- spine-csharp/src/Animation.cs | 5 +++++ spine-csharp/src/package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/spine-csharp/src/Animation.cs b/spine-csharp/src/Animation.cs index 45c676e41..39dad90d3 100644 --- a/spine-csharp/src/Animation.cs +++ b/spine-csharp/src/Animation.cs @@ -1018,6 +1018,11 @@ namespace Spine { Bone bone = skeleton.bones.Items[boneIndex]; if (!bone.active) return; + if (direction == MixDirection.Out) { + if (blend == MixBlend.Setup) bone.inherit = bone.data.inherit; + return; + } + float[] frames = this.frames; if (time < frames[0]) { if (blend == MixBlend.Setup || blend == MixBlend.First) bone.inherit = bone.data.inherit; diff --git a/spine-csharp/src/package.json b/spine-csharp/src/package.json index 967424a88..745676354 100644 --- a/spine-csharp/src/package.json +++ b/spine-csharp/src/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-csharp", "displayName": "spine-csharp Runtime", "description": "This plugin provides the spine-csharp core runtime.", - "version": "4.2.27", + "version": "4.2.28", "unity": "2018.3", "author": { "name": "Esoteric Software", From 2d825d4c9a89a214347520c133cd4ec262a1361c Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 6 Aug 2024 13:28:37 +0200 Subject: [PATCH 118/215] [libgdx] 4.2.6 release --- spine-libgdx/publishing.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-libgdx/publishing.gradle b/spine-libgdx/publishing.gradle index 10897ac38..26df684bb 100644 --- a/spine-libgdx/publishing.gradle +++ b/spine-libgdx/publishing.gradle @@ -3,7 +3,7 @@ project("spine-libgdx") { apply plugin: "maven-publish" apply plugin: "signing" - def libraryVersion = "4.2.6-SNAPSHOT" + def libraryVersion = "4.2.6" dependencies { implementation "com.badlogicgames.gdx:gdx:$libgdxVersion" From 34c9eebfd81c1d23a4a5a39487c1ead30cedebfa Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 6 Aug 2024 13:28:58 +0200 Subject: [PATCH 119/215] [libgdx] Next snapshot. --- spine-libgdx/publishing.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-libgdx/publishing.gradle b/spine-libgdx/publishing.gradle index 26df684bb..c65bdf865 100644 --- a/spine-libgdx/publishing.gradle +++ b/spine-libgdx/publishing.gradle @@ -3,7 +3,7 @@ project("spine-libgdx") { apply plugin: "maven-publish" apply plugin: "signing" - def libraryVersion = "4.2.6" + def libraryVersion = "4.2.7-SNAPSHOT" dependencies { implementation "com.badlogicgames.gdx:gdx:$libgdxVersion" From 3f833ff68e121a8eb8415dc09457fc317fd1ff55 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 6 Aug 2024 13:30:38 +0200 Subject: [PATCH 120/215] [android] 4.2.4 release --- spine-android/spine-android/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index 0f0854397..bf8890418 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -33,14 +33,14 @@ android { dependencies { implementation(libs.androidx.appcompat) api("com.badlogicgames.gdx:gdx:1.12.2-SNAPSHOT") - api("com.esotericsoftware.spine:spine-libgdx:4.2.5") + api("com.esotericsoftware.spine:spine-libgdx:4.2.6") testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) } -val libraryVersion = "4.2.4-SNAPSHOT" +val libraryVersion = "4.2.4" tasks.register("sourceJar") { archiveClassifier.set("sources") From 7a6543052bb43f745b879da1e3861a6d1944bbdc Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 6 Aug 2024 13:30:53 +0200 Subject: [PATCH 121/215] [android] Next snapshot --- spine-android/spine-android/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index bf8890418..42e58b118 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -40,7 +40,7 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) } -val libraryVersion = "4.2.4" +val libraryVersion = "4.2.5-SNAPSHOT" tasks.register("sourceJar") { archiveClassifier.set("sources") From 866fbd8cd24a6f33a3e2be427ec732a29f5732a5 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 6 Aug 2024 13:34:39 +0200 Subject: [PATCH 122/215] [android] 4.2.5 release --- spine-android/spine-android/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index 42e58b118..2ec8fe5d9 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -40,7 +40,7 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) } -val libraryVersion = "4.2.5-SNAPSHOT" +val libraryVersion = "4.2.5" tasks.register("sourceJar") { archiveClassifier.set("sources") From 1716baae686a0c713a5094c5b755983ee2eca6f4 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 6 Aug 2024 13:34:55 +0200 Subject: [PATCH 123/215] [android] Next snapshot --- spine-android/spine-android/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index 2ec8fe5d9..83a620c2c 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -40,7 +40,7 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) } -val libraryVersion = "4.2.5" +val libraryVersion = "4.2.6-SNAPSHOT" tasks.register("sourceJar") { archiveClassifier.set("sources") From 853b5ee165106a57bc18e1e5543c8e16311af62f Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 6 Aug 2024 16:39:01 +0200 Subject: [PATCH 124/215] [cpp] Fix NaN in IKConstraint due to fp precision. dd - r * r might result in a negative value, even if dd == r * r, depending on compiler optimizations and operation order. --- spine-cpp/spine-cpp/src/spine/IkConstraint.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp b/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp index 72904398b..daf3edcc7 100644 --- a/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp +++ b/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp @@ -213,7 +213,7 @@ void IkConstraint::apply(Bone &parent, Bone &child, float targetX, float targetY r0 = q / c2; r1 = c0 / q; r = MathUtil::abs(r0) < MathUtil::abs(r1) ? r0 : r1; - if (r * r <= dd) { + if (dd - r * r >= 0) { y = MathUtil::sqrt(dd - r * r) * bendDir; a1 = ta - MathUtil::atan2(y, r); a2 = MathUtil::atan2(y / psy, (r - l1) / psx); From b17595db8a124f729bf02ccfdbf6c5fb977ca783 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 6 Aug 2024 18:22:54 +0200 Subject: [PATCH 125/215] [csharp] Port of commit 853b5ee. Fix NaN in IKConstraint due to fp precision. dd - r * r might result in a negative value, even if dd == r * r, depending on compiler optimizations and operation order. --- spine-csharp/src/IkConstraint.cs | 2 +- spine-csharp/src/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-csharp/src/IkConstraint.cs b/spine-csharp/src/IkConstraint.cs index bc92980da..e8a72c8f9 100644 --- a/spine-csharp/src/IkConstraint.cs +++ b/spine-csharp/src/IkConstraint.cs @@ -328,7 +328,7 @@ namespace Spine { q = -(c1 + q) * 0.5f; float r0 = q / c2, r1 = c / q; float r = Math.Abs(r0) < Math.Abs(r1) ? r0 : r1; - if (r * r <= dd) { + if (dd - r * r >= 0) { y = (float)Math.Sqrt(dd - r * r) * bendDir; a1 = ta - (float)Math.Atan2(y, r); a2 = (float)Math.Atan2(y / psy, (r - l1) / psx); diff --git a/spine-csharp/src/package.json b/spine-csharp/src/package.json index 745676354..6a83e51bb 100644 --- a/spine-csharp/src/package.json +++ b/spine-csharp/src/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-csharp", "displayName": "spine-csharp Runtime", "description": "This plugin provides the spine-csharp core runtime.", - "version": "4.2.28", + "version": "4.2.29", "unity": "2018.3", "author": { "name": "Esoteric Software", From 877e705ddb811a03479abdca9fa2f8841844f8fe Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Tue, 6 Aug 2024 19:21:45 -1000 Subject: [PATCH 126/215] [libgdx] Fix NaN in IKConstraint due to fp precision. 853b5ee165106a57bc18e1e5543c8e16311af62f --- .../src/com/esotericsoftware/spine/IkConstraint.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraint.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraint.java index 67f833c96..8e57d91c6 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraint.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraint.java @@ -339,8 +339,9 @@ public class IkConstraint implements Updatable { q = -(c1 + q) * 0.5f; float r0 = q / c2, r1 = c / q; float r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; - if (r * r <= dd) { - y = (float)Math.sqrt(dd - r * r) * bendDir; + r0 = dd - r * r; + if (r0 >= 0) { + y = (float)Math.sqrt(r0) * bendDir; a1 = ta - atan2(y, r); a2 = atan2(y / psy, (r - l1) / psx); break outer; From e4df0c0dffb44dd90ff9de728a29332a03c3eda2 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Wed, 7 Aug 2024 08:36:46 +0200 Subject: [PATCH 127/215] [ts] Port of commit 877e705dd. Fix NaN in IKConstraint due to fp precision. --- spine-ts/spine-core/src/IkConstraint.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spine-ts/spine-core/src/IkConstraint.ts b/spine-ts/spine-core/src/IkConstraint.ts index 268af28a6..c4694c5d1 100644 --- a/spine-ts/spine-core/src/IkConstraint.ts +++ b/spine-ts/spine-core/src/IkConstraint.ts @@ -270,8 +270,9 @@ export class IkConstraint implements Updatable { q = -(c1 + q) * 0.5; let r0 = q / c2, r1 = c / q; let r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; - if (r * r <= dd) { - y = Math.sqrt(dd - r * r) * bendDir; + r0 = dd - r * r; + if (r0 >= 0) { + y = Math.sqrt(r0) * bendDir; a1 = ta - Math.atan2(y, r); a2 = Math.atan2(y / psy, (r - l1) / psx); break outer; From ec52a4fc1aae686099e3057518c97194445a3504 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Wed, 7 Aug 2024 08:38:15 +0200 Subject: [PATCH 128/215] [haxe] Port of commit 877e705dd. Fix NaN in IKConstraint due to fp precision. --- spine-haxe/spine-haxe/spine/IkConstraint.hx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spine-haxe/spine-haxe/spine/IkConstraint.hx b/spine-haxe/spine-haxe/spine/IkConstraint.hx index 1377af1ed..64f1373d8 100644 --- a/spine-haxe/spine-haxe/spine/IkConstraint.hx +++ b/spine-haxe/spine-haxe/spine/IkConstraint.hx @@ -288,8 +288,9 @@ class IkConstraint implements Updatable { q = -(c1 + q) / 2; var r0:Float = q / c2, r1:Float = c / q; var r:Float = Math.abs(r0) < Math.abs(r1) ? r0 : r1; - if (r * r <= dd) { - y = Math.sqrt(dd - r * r) * bendDir; + r0 = dd - r * r; + if (r0 >= 0) { + y = Math.sqrt(r0) * bendDir; a1 = ta - Math.atan2(y, r); a2 = Math.atan2(y / psy, (r - l1) / psx); breakOuter = true; From a6899e7625522824ddbbdf86cc925e4bb8ab1a4a Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Wed, 7 Aug 2024 09:37:09 +0200 Subject: [PATCH 129/215] [ts] Restore deprecated clipTriangles signature erroneously removed in 4.2.46. Scheduled for removal in 4.3. --- spine-ts/spine-core/src/SkeletonClipping.ts | 51 +++++++++++++++++++-- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/spine-ts/spine-core/src/SkeletonClipping.ts b/spine-ts/spine-core/src/SkeletonClipping.ts index 9f5cae242..3ab1fc377 100644 --- a/spine-ts/spine-core/src/SkeletonClipping.ts +++ b/spine-ts/spine-core/src/SkeletonClipping.ts @@ -81,17 +81,58 @@ export class SkeletonClipping { return this.clipAttachment != null; } - clipTriangles (vertices: NumberArrayLike, triangles: NumberArrayLike, trianglesLength: number): void; - clipTriangles (vertices: NumberArrayLike, triangles: NumberArrayLike, trianglesLength: number, uvs: NumberArrayLike, - light: Color, dark: Color, twoColor: boolean): void; - clipTriangles (vertices: NumberArrayLike, triangles: NumberArrayLike, trianglesLength: number, uvs?: NumberArrayLike, - light?: Color, dark?: Color, twoColor?: boolean): void { + /** + * @deprecated Use clipTriangles without verticesLength parameter. Mark for removal in 4.3. + */ + clipTriangles(vertices: NumberArrayLike, verticesLength: number, triangles: NumberArrayLike, trianglesLength: number): void; + + /** + * @deprecated Use clipTriangles without verticesLength parameter. Mark for removal in 4.3. + */ + clipTriangles(vertices: NumberArrayLike, verticesLength: number, triangles: NumberArrayLike, trianglesLength: number, uvs: NumberArrayLike, light: Color, dark: Color, twoColor: boolean): void; + + clipTriangles(vertices: NumberArrayLike, triangles: NumberArrayLike, trianglesLength: number): void; + clipTriangles(vertices: NumberArrayLike, triangles: NumberArrayLike, trianglesLength: number, uvs: NumberArrayLike, light: Color, dark: Color, twoColor: boolean): void; + clipTriangles( + vertices: NumberArrayLike, + verticesLengthOrTriangles: number | NumberArrayLike, + trianglesOrTrianglesLength: NumberArrayLike | number, + trianglesLengthOrUvs?: number | NumberArrayLike, + uvsOrLight?: NumberArrayLike | Color, + lightOrDark?: Color, + darkOrTwoColor?: Color | boolean, + twoColorParam?: boolean + ): void { + // Determine which overload is being used + let triangles: NumberArrayLike; + let trianglesLength: number; + let uvs: NumberArrayLike | undefined; + let light: Color | undefined; + let dark: Color | undefined; + let twoColor: boolean | undefined; + + if (typeof verticesLengthOrTriangles === 'number') { + triangles = trianglesOrTrianglesLength as NumberArrayLike; + trianglesLength = trianglesLengthOrUvs as number; + uvs = uvsOrLight as NumberArrayLike; + light = lightOrDark as Color | undefined; + dark = darkOrTwoColor as Color | undefined; + twoColor = twoColorParam; + } else { + triangles = verticesLengthOrTriangles; + trianglesLength = trianglesOrTrianglesLength as number; + uvs = trianglesLengthOrUvs as NumberArrayLike; + light = uvsOrLight as Color | undefined; + dark = lightOrDark as Color | undefined; + twoColor = darkOrTwoColor as boolean; + } if (uvs && light && dark && typeof twoColor === 'boolean') this.clipTrianglesRender(vertices, triangles, trianglesLength, uvs, light, dark, twoColor); else this.clipTrianglesNoRender(vertices, triangles, trianglesLength); } + private clipTrianglesNoRender (vertices: NumberArrayLike, triangles: NumberArrayLike, trianglesLength: number) { let clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; From 561219a4d8cf5bc7f1899fd8174541b380391ff6 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Wed, 7 Aug 2024 09:51:17 +0200 Subject: [PATCH 130/215] [ts] Formatting --- spine-ts/spine-core/src/SkeletonClipping.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/spine-ts/spine-core/src/SkeletonClipping.ts b/spine-ts/spine-core/src/SkeletonClipping.ts index 3ab1fc377..e31dbd929 100644 --- a/spine-ts/spine-core/src/SkeletonClipping.ts +++ b/spine-ts/spine-core/src/SkeletonClipping.ts @@ -82,18 +82,18 @@ export class SkeletonClipping { } /** - * @deprecated Use clipTriangles without verticesLength parameter. Mark for removal in 4.3. - */ - clipTriangles(vertices: NumberArrayLike, verticesLength: number, triangles: NumberArrayLike, trianglesLength: number): void; + * @deprecated Use clipTriangles without verticesLength parameter. Mark for removal in 4.3. + */ + clipTriangles (vertices: NumberArrayLike, verticesLength: number, triangles: NumberArrayLike, trianglesLength: number): void; /** * @deprecated Use clipTriangles without verticesLength parameter. Mark for removal in 4.3. */ - clipTriangles(vertices: NumberArrayLike, verticesLength: number, triangles: NumberArrayLike, trianglesLength: number, uvs: NumberArrayLike, light: Color, dark: Color, twoColor: boolean): void; + clipTriangles (vertices: NumberArrayLike, verticesLength: number, triangles: NumberArrayLike, trianglesLength: number, uvs: NumberArrayLike, light: Color, dark: Color, twoColor: boolean): void; - clipTriangles(vertices: NumberArrayLike, triangles: NumberArrayLike, trianglesLength: number): void; - clipTriangles(vertices: NumberArrayLike, triangles: NumberArrayLike, trianglesLength: number, uvs: NumberArrayLike, light: Color, dark: Color, twoColor: boolean): void; - clipTriangles( + clipTriangles (vertices: NumberArrayLike, triangles: NumberArrayLike, trianglesLength: number): void; + clipTriangles (vertices: NumberArrayLike, triangles: NumberArrayLike, trianglesLength: number, uvs: NumberArrayLike, light: Color, dark: Color, twoColor: boolean): void; + clipTriangles ( vertices: NumberArrayLike, verticesLengthOrTriangles: number | NumberArrayLike, trianglesOrTrianglesLength: NumberArrayLike | number, From a1e4146cbbb14dacbd2771e9e771eeb32618f505 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Wed, 7 Aug 2024 10:02:21 +0200 Subject: [PATCH 131/215] [ts] Release 4.2.57 --- spine-ts/package-lock.json | 43 +++++++++++++++------------ spine-ts/package.json | 2 +- spine-ts/spine-canvas/package.json | 4 +-- spine-ts/spine-canvaskit/package.json | 4 +-- spine-ts/spine-core/package.json | 2 +- spine-ts/spine-phaser/package.json | 8 ++--- spine-ts/spine-pixi/package.json | 4 +-- spine-ts/spine-player/package.json | 4 +-- spine-ts/spine-threejs/package.json | 4 +-- spine-ts/spine-webgl/package.json | 4 +-- 10 files changed, 42 insertions(+), 37 deletions(-) diff --git a/spine-ts/package-lock.json b/spine-ts/package-lock.json index 90c4ff1b3..4df696ed9 100644 --- a/spine-ts/package-lock.json +++ b/spine-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.56", + "version": "4.2.57", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@esotericsoftware/spine-ts", - "version": "4.2.56", + "version": "4.2.57", "license": "LicenseRef-LICENSE", "workspaces": [ "spine-core", @@ -805,6 +805,7 @@ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -1876,6 +1877,7 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1979,6 +1981,7 @@ "integrity": "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==", "deprecated": "The package has been renamed to `open`", "dev": true, + "license": "MIT", "dependencies": { "is-wsl": "^1.1.0" }, @@ -2057,6 +2060,7 @@ "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", "integrity": "sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -2261,6 +2265,7 @@ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -3031,18 +3036,18 @@ }, "spine-canvas": { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.56", + "version": "4.2.57", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.56" + "@esotericsoftware/spine-core": "4.2.57" } }, "spine-canvaskit": { "name": "@esotericsoftware/spine-canvaskit", - "version": "4.2.56", + "version": "4.2.57", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.56", + "@esotericsoftware/spine-core": "4.2.57", "canvaskit-wasm": "0.39.1" }, "devDependencies": { @@ -3052,25 +3057,25 @@ }, "spine-core": { "name": "@esotericsoftware/spine-core", - "version": "4.2.56", + "version": "4.2.57", "license": "LicenseRef-LICENSE" }, "spine-phaser": { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.56", + "version": "4.2.57", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-canvas": "4.2.56", - "@esotericsoftware/spine-core": "4.2.56", - "@esotericsoftware/spine-webgl": "4.2.56" + "@esotericsoftware/spine-canvas": "4.2.57", + "@esotericsoftware/spine-core": "4.2.57", + "@esotericsoftware/spine-webgl": "4.2.57" } }, "spine-pixi": { "name": "@esotericsoftware/spine-pixi", - "version": "4.2.56", + "version": "4.2.57", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.56" + "@esotericsoftware/spine-core": "4.2.57" }, "peerDependencies": { "@pixi/assets": "^7.2.4", @@ -3083,26 +3088,26 @@ }, "spine-player": { "name": "@esotericsoftware/spine-player", - "version": "4.2.56", + "version": "4.2.57", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.56" + "@esotericsoftware/spine-webgl": "4.2.57" } }, "spine-threejs": { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.56", + "version": "4.2.57", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.56" + "@esotericsoftware/spine-core": "4.2.57" } }, "spine-webgl": { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.56", + "version": "4.2.57", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.56" + "@esotericsoftware/spine-core": "4.2.57" } } } diff --git a/spine-ts/package.json b/spine-ts/package.json index 4db60f3b2..baac95bcc 100644 --- a/spine-ts/package.json +++ b/spine-ts/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.56", + "version": "4.2.57", "description": "The official Spine Runtimes for the web.", "type": "module", "files": [ diff --git a/spine-ts/spine-canvas/package.json b/spine-ts/spine-canvas/package.json index c618d5d13..edd770613 100644 --- a/spine-ts/spine-canvas/package.json +++ b/spine-ts/spine-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.56", + "version": "4.2.57", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.56" + "@esotericsoftware/spine-core": "4.2.57" } } \ No newline at end of file diff --git a/spine-ts/spine-canvaskit/package.json b/spine-ts/spine-canvaskit/package.json index 4707ee87b..29a1839d3 100644 --- a/spine-ts/spine-canvaskit/package.json +++ b/spine-ts/spine-canvaskit/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-canvaskit", - "version": "4.2.56", + "version": "4.2.57", "description": "The official Spine Runtimes for CanvasKit for NodeJS", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.56", + "@esotericsoftware/spine-core": "4.2.57", "canvaskit-wasm": "0.39.1" }, "devDependencies": { diff --git a/spine-ts/spine-core/package.json b/spine-ts/spine-core/package.json index 8dff974ae..a51a2e4a7 100644 --- a/spine-ts/spine-core/package.json +++ b/spine-ts/spine-core/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-core", - "version": "4.2.56", + "version": "4.2.57", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/spine-ts/spine-phaser/package.json b/spine-ts/spine-phaser/package.json index 41c6d3859..10f1d4945 100644 --- a/spine-ts/spine-phaser/package.json +++ b/spine-ts/spine-phaser/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.56", + "version": "4.2.57", "description": "The official Spine Runtimes for the Phaser.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,8 +31,8 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.56", - "@esotericsoftware/spine-webgl": "4.2.56", - "@esotericsoftware/spine-canvas": "4.2.56" + "@esotericsoftware/spine-core": "4.2.57", + "@esotericsoftware/spine-webgl": "4.2.57", + "@esotericsoftware/spine-canvas": "4.2.57" } } \ No newline at end of file diff --git a/spine-ts/spine-pixi/package.json b/spine-ts/spine-pixi/package.json index 33a6bb19c..2131cd5af 100644 --- a/spine-ts/spine-pixi/package.json +++ b/spine-ts/spine-pixi/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-pixi", - "version": "4.2.56", + "version": "4.2.57", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.56" + "@esotericsoftware/spine-core": "4.2.57" }, "peerDependencies": { "@pixi/core": "^7.2.4", diff --git a/spine-ts/spine-player/package.json b/spine-ts/spine-player/package.json index 8076e14b5..0ee16f7a1 100644 --- a/spine-ts/spine-player/package.json +++ b/spine-ts/spine-player/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-player", - "version": "4.2.56", + "version": "4.2.57", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.56" + "@esotericsoftware/spine-webgl": "4.2.57" } } \ No newline at end of file diff --git a/spine-ts/spine-threejs/package.json b/spine-ts/spine-threejs/package.json index b5d838d3b..11a550638 100644 --- a/spine-ts/spine-threejs/package.json +++ b/spine-ts/spine-threejs/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.56", + "version": "4.2.57", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.56" + "@esotericsoftware/spine-core": "4.2.57" } } \ No newline at end of file diff --git a/spine-ts/spine-webgl/package.json b/spine-ts/spine-webgl/package.json index 3d62efb63..5f048a85b 100644 --- a/spine-ts/spine-webgl/package.json +++ b/spine-ts/spine-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.56", + "version": "4.2.57", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.56" + "@esotericsoftware/spine-core": "4.2.57" } } \ No newline at end of file From b47c739516ea97a33dd82033e19e3108be953b62 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 6 Aug 2024 17:15:04 +0200 Subject: [PATCH 132/215] [flutter] 4.2.31 release --- spine-flutter/CHANGELOG.md | 3 +++ spine-flutter/pubspec.yaml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/spine-flutter/CHANGELOG.md b/spine-flutter/CHANGELOG.md index c93d8ac1a..9776f19b6 100644 --- a/spine-flutter/CHANGELOG.md +++ b/spine-flutter/CHANGELOG.md @@ -1,3 +1,6 @@ +# 4.2.31 +- Fix bug in IKConstraint leading to NaNs. + # 4.2.30 - Switch to spine-cpp SkeletonRenderer diff --git a/spine-flutter/pubspec.yaml b/spine-flutter/pubspec.yaml index 76b141369..5856fd261 100644 --- a/spine-flutter/pubspec.yaml +++ b/spine-flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: spine_flutter description: The official Spine Flutter Runtime to load, display and interact with Spine animations. -version: 4.2.30 +version: 4.2.31 homepage: https://esotericsoftware.com repository: https://github.com/esotericsoftware/spine-runtimes issue_tracker: https://github.com/esotericsoftware/spine-runtimes/issues From eb2802e366994bee1c94ad311b63650160e0ae92 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 7 Aug 2024 14:09:20 +0200 Subject: [PATCH 133/215] [ue] Fix shadowed variables on Clang/GCC. --- spine-cpp/spine-cpp/src/spine/Skeleton.cpp | 3 +-- .../lib/assets/libspine_flutter.wasm | Bin 417869 -> 417918 bytes .../SpinePlugin/Private/SpineAtlasAsset.cpp | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/spine-cpp/spine-cpp/src/spine/Skeleton.cpp b/spine-cpp/spine-cpp/src/spine/Skeleton.cpp index d307f7f87..baaa7b53d 100644 --- a/spine-cpp/spine-cpp/src/spine/Skeleton.cpp +++ b/spine-cpp/spine-cpp/src/spine/Skeleton.cpp @@ -462,10 +462,9 @@ void Skeleton::getBounds(float &outX, float &outY, float &outWidth, getBounds(outX, outY, outWidth, outHeight, outVertexBuffer, NULL); } -static unsigned short quadIndices[] = {0, 1, 2, 2, 3, 0}; - void Skeleton::getBounds(float &outX, float &outY, float &outWidth, float &outHeight, Vector &outVertexBuffer, SkeletonClipping *clipper) { + static unsigned short quadIndices[] = {0, 1, 2, 2, 3, 0}; float minX = FLT_MAX; float minY = FLT_MAX; float maxX = -FLT_MAX; diff --git a/spine-flutter/lib/assets/libspine_flutter.wasm b/spine-flutter/lib/assets/libspine_flutter.wasm index 7ba4114037ed4a46f6d65d57a4eb5f2f7f847c61..cffc6246ba57442b30e518fb9d07e8fb31129ee1 100755 GIT binary patch delta 2587 zcmbVOU1%g#7OuK=tExLy)v0v4lXN=CoO?$hHV#G|*G41T?I!-s1V;%PG1El!q2~wj zC$F=;tTT>38C<$bi+vD<-6!!u@Szu0+z1QHg5rZZILr_k9eosi(kJmdx6(6=4+;j- zx9Z$`&-u>xefM^Mv|amYyY^0Z)BfSPBb%p>Y}$h(o8qU7_8VFEA!m<6)}w=09&%p4 z&VGNe?=Q|jr0r)PpLC|K;K;csI(vS@?~r++-@WIvvir{aH)3a3{+AzEZL#5H;> zJ9A3jJm-^W2vPwL*Q*J#=0!n^c_ABOMpd$%Q*!Tkfvh{NTg4JtZTmKBo-8V4mFML` zFE2&;(5dT@ep4LBG?H{1;vKswp5na6mCM71Dsu6C*1W_(Zc{8^C^p6QNNgc-Xa|ff zRO37xR~{z&Y=B-KSKQu%NlpQTP6T`mPk)?=bOd4>g5ywVdg z9HfY%Er1)x9v2y0a%lt^T#8JFg8_L|*vNNR42MtMnZ~cVfKp=&ggsm2w%`7zz0b1h zs+xyqQZ-57qamhxsVeisAvMLrLC}oh9yQ9t5(8?8SjEFum2_Gp4fi8730QHOP&uX1 zz7A78+7$PogOCa-75f^pm>w^;2qLBcK2E9H$F2l>Zq!pvacH>7?Q2Myx0Pt_EwX}O zSR7>qjb)ve<#cIR23CP%FTEh=dK0_SwC%e&+z?Oj$6B1ac{@#Gq(ph51#QsSeq*Ub z`-hRbqMD4Eu-RiT%E{h%Y9+-y(l#C0*LWF{x1PRh+ckN~toNX5cL>kNG$>#8s{=53w5?O>*gwqO_lTZ$r6x zedS*^Ss8}$X#^$#0X8J7@5D`^7eOpS)_b7<_u%EK+joNP_HqhQM2%@(D19L^xS^ zN08Y=qBZW-0Qp_}ThQV%W@I%*yC`KaG6+-Ol@%RCZ=Z2HEym`N!JUTWlU}2rJRETWT)bb51txsch|>oI5bfqR`at0_`QKstImRB5V!A(+Sg!Z;xSM zCZRc4x4!EH+(T3wd~i;#*_ArkG@a-giIirc)J&r5*}n5~x>zG8rRl!1Gy9^P%bq+h z|L)Z}HZzDWNGbN#I?J+!9?FmuAbvYjEzk7-_i{cTuxr^DJMy}*T2oj7_H*vOazrbO zFUZNu9G9|{3jnaaBgY1(zK|b_k;!{;v}gp34LV=S$L;FGUAW`Iw)F=gDa7qEhTE^2 zo&8GA-2!9<8oL`vEwEk4*F^IIY#q}`ArKGnZ$UQ>leH2>*^QUv&ZJoqa86hjKUEI! zd1@E3`!317$@$Mq*$bCs=;Aw@f~@F+&v@V)1)Kk_pMOUsJ@ delta 2561 zcmbVOU1%It6rQY2X0u5)$>y(~d;K8|Rf85?wZ*I^tv_ig5~R{JMl72CfIkF$ zsvESmYNHQ3Q!fgFpx{d%6onNO?33by_@JW2(jWgG6vU@K7Qb_6H&zh^^RRdBxo5s} z&Ue0hCYMePe|~ECo#hqxlV|s@9NWL*w)d}yOBdX?%<}!-72!vX)z#HY!S?ox_j|8z zbU$oQta@)s^Z5~PxJQQ+JUE*;RHA^w^w`BCp1F8L9<99JBfMtyu$U%iQe34g=J-*0 zvPlh)Ga*7PCWM?6W2)brIV!L0_sO}#xmnDR({OKfCdeV*^gSo1n*N;* z{wQA-N44Loi$gdD$nvCk$E}OU8TXJ1cv(^<4t}jOA+b+Mu>f_~*DiEx7Wj&TT!>0JaRaIanHjl+wIgN+ak5!SvjwJzP=ahqTjm7n# zyq}?nqBY%1eN?1Un&~3e-o2yvjTT2y&rH+>%K@e=fK9%MN+-o!j!?1)K?k998NyuD z&B~|3gE>molJ@u=S>+WUfK>*fOb2TeG)}(dUh6ocYA`pCWva%sOp02jdU@TYhHT&_ zc*XWERpw7=TF21igeYTImOl6E7K8J z2q-X5ydZ~~eVILMF$wb^Dzd}|mEQt%AgDYOs<>O@Y$B+iMCFW!7UyLrZY&}y=iX)O zZ4aRNzj@BGh8?IY360RmmHx8#s*0GC>{YTNTqIh6 zx>!OLC01M5(xJ_pg@bEtdjh#3+HM*|fhe{oYf&{LtM_>wVwW)aSsgA8z=QojvN-cd zyReveFy<`?b5cV~DznVzU?ze%(Pkb|e;G<_MS68kuP!#Ta{e3{|Ds{ltZ>TnnaT&C zf^v9vd8{Z@1$}95hU2g%kwoYDFh6J7=2sw_Z4vjPz*#MzL@Ji|qF!)W;6ee(Wdj80e2>6c4!KVk83?xvdl-u#4nVu}X^TYu=ldj@-JF4H zgDxYK&5@I^@onhksH-6GAZ&KHQlM@DSBM9>*p#toZ*OVeHn>y6K5X_yW&0=o%$Qz0bSgY1Qa8OhB&APaZk zs%s=N8UwYXsU9&~&&rWvjl7J8TgtWW=Be-GtHlwvjk4|31v%87IwOB^udMMmu;Hpc zG#5$zH)1VEyycv{#_YTx?{sVC!gq3GT&oKw!uuStsgejq_3&IxlFY%%`_Q2Eru z2Le4Y*S#$VP4g!iT#Y>O;n;yG$zBAgl>-fcQ*;oImEVJri2BSE_j#@M?w{qySI`Mx zgiZf2x%?Tx&$Nzt*`mv-PAaKy<_i98Zfu?}_}BO6Q)5r!;%2~U7bPdmySK~Xiq~-F g5|LZyJJyatlas; } From 94d26d2b524be271614eec6e1db3b90e974753e3 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Wed, 7 Aug 2024 16:33:17 +0200 Subject: [PATCH 134/215] [csharp] Minor: port of commit 877e705, moved common subexpression part out. See commit b17595d. --- spine-csharp/src/IkConstraint.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spine-csharp/src/IkConstraint.cs b/spine-csharp/src/IkConstraint.cs index e8a72c8f9..66c3dcb58 100644 --- a/spine-csharp/src/IkConstraint.cs +++ b/spine-csharp/src/IkConstraint.cs @@ -328,8 +328,9 @@ namespace Spine { q = -(c1 + q) * 0.5f; float r0 = q / c2, r1 = c / q; float r = Math.Abs(r0) < Math.Abs(r1) ? r0 : r1; - if (dd - r * r >= 0) { - y = (float)Math.Sqrt(dd - r * r) * bendDir; + r0 = dd - r * r; + if (r0 >= 0) { + y = (float)Math.Sqrt(r0) * bendDir; a1 = ta - (float)Math.Atan2(y, r); a2 = (float)Math.Atan2(y / psy, (r - l1) / psx); goto break_outer; // break outer; From 0bcdc314b4320c8f85a8d76b3252782708ff7875 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 8 Aug 2024 16:06:10 +0200 Subject: [PATCH 135/215] [unity] Fixed errors in URP blend mode shaders when main and additional lights are disabled. Closes #2592. --- .../Spine-Skeleton-Additive-URP.shader | 40 ++++++++++++++++++- .../Spine-Skeleton-Multiply-URP.shader | 40 ++++++++++++++++++- .../Spine-Skeleton-Screen-URP.shader | 40 ++++++++++++++++++- .../package.json | 2 +- 4 files changed, 118 insertions(+), 4 deletions(-) diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader index 62a7c11a9..e85d7b96a 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader @@ -63,6 +63,44 @@ ENDHLSL } - UsePass "Universal Render Pipeline/Spine/Skeleton/SHADOWCASTER" + // UsePass "Universal Render Pipeline/Spine/Skeleton/SHADOWCASTER" + // Note: UsePass above fails when both main and additional lights are disabled, thus inlined below. + Pass + { + Name "ShadowCaster" + Tags{"LightMode" = "ShadowCaster"} + + ZWrite On + ColorMask 0 + ZTest LEqual + Cull Off + + HLSLPROGRAM + // Required to compile gles 2.0 with standard srp library + #pragma prefer_hlslcc gles + #pragma exclude_renderers d3d11_9x + #pragma target 2.0 + + // ------------------------------------- + // Material Keywords + #pragma shader_feature _ALPHATEST_ON + + //-------------------------------------- + // GPU Instancing + #pragma multi_compile_instancing + #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + + #pragma vertex ShadowPassVertexSkeletonLit + #pragma fragment ShadowPassFragmentSkeletonLit + + #define USE_URP + #define fixed4 half4 + #define fixed3 half3 + #define fixed half + #include "../Include/Spine-Input-URP.hlsl" + #include "../Include/Spine-SkeletonLit-ShadowCasterPass-URP.hlsl" + + ENDHLSL + } } } diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader index ad6e8c520..a250333b9 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader @@ -63,6 +63,44 @@ ENDHLSL } - UsePass "Universal Render Pipeline/Spine/Skeleton/SHADOWCASTER" + // UsePass "Universal Render Pipeline/Spine/Skeleton/SHADOWCASTER" + // Note: UsePass above fails when both main and additional lights are disabled, thus inlined below. + Pass + { + Name "ShadowCaster" + Tags{"LightMode" = "ShadowCaster"} + + ZWrite On + ColorMask 0 + ZTest LEqual + Cull Off + + HLSLPROGRAM + // Required to compile gles 2.0 with standard srp library + #pragma prefer_hlslcc gles + #pragma exclude_renderers d3d11_9x + #pragma target 2.0 + + // ------------------------------------- + // Material Keywords + #pragma shader_feature _ALPHATEST_ON + + //-------------------------------------- + // GPU Instancing + #pragma multi_compile_instancing + #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + + #pragma vertex ShadowPassVertexSkeletonLit + #pragma fragment ShadowPassFragmentSkeletonLit + + #define USE_URP + #define fixed4 half4 + #define fixed3 half3 + #define fixed half + #include "../Include/Spine-Input-URP.hlsl" + #include "../Include/Spine-SkeletonLit-ShadowCasterPass-URP.hlsl" + + ENDHLSL + } } } diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader index 003845bd5..5b16e5f93 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader @@ -63,6 +63,44 @@ ENDHLSL } - UsePass "Universal Render Pipeline/Spine/Skeleton/SHADOWCASTER" + // UsePass "Universal Render Pipeline/Spine/Skeleton/SHADOWCASTER" + // Note: UsePass above fails when both main and additional lights are disabled, thus inlined below. + Pass + { + Name "ShadowCaster" + Tags{"LightMode" = "ShadowCaster"} + + ZWrite On + ColorMask 0 + ZTest LEqual + Cull Off + + HLSLPROGRAM + // Required to compile gles 2.0 with standard srp library + #pragma prefer_hlslcc gles + #pragma exclude_renderers d3d11_9x + #pragma target 2.0 + + // ------------------------------------- + // Material Keywords + #pragma shader_feature _ALPHATEST_ON + + //-------------------------------------- + // GPU Instancing + #pragma multi_compile_instancing + #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + + #pragma vertex ShadowPassVertexSkeletonLit + #pragma fragment ShadowPassFragmentSkeletonLit + + #define USE_URP + #define fixed4 half4 + #define fixed3 half3 + #define fixed half + #include "../Include/Spine-Input-URP.hlsl" + #include "../Include/Spine-SkeletonLit-ShadowCasterPass-URP.hlsl" + + ENDHLSL + } } } diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json index c01f8bcc4..a46ca9b0a 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.urp-shaders", "displayName": "Spine Universal RP Shaders", "description": "This plugin provides universal render pipeline (URP) shaders for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.2.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", - "version": "4.2.36", + "version": "4.2.37", "unity": "2019.3", "author": { "name": "Esoteric Software", From c6614d7db7944b72f20ab4bb4267f93203023cae Mon Sep 17 00:00:00 2001 From: Gordon Cummings <57897263+GordonTombola@users.noreply.github.com> Date: Mon, 12 Aug 2024 10:27:48 +0100 Subject: [PATCH 136/215] hide existing meshes when attachments are removed when empty keyframes are set on attachments, we shouldn't see the mesh as it should have technically been removed (hidden) --- spine-ts/spine-pixi/src/Spine.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/spine-ts/spine-pixi/src/Spine.ts b/spine-ts/spine-pixi/src/Spine.ts index 2b4702203..147c93803 100644 --- a/spine-ts/spine-pixi/src/Spine.ts +++ b/spine-ts/spine-pixi/src/Spine.ts @@ -227,8 +227,15 @@ export class Spine extends Container { /** * If you want to manually handle which meshes go on which slot and how you cache, overwrite this method. */ - protected getMeshForSlot (slot: Slot): ISlotMesh { - if (!this.meshesCache.has(slot)) { + protected hasMeshForSlot(slot: Slot) { + return this.meshesCache.has(slot); + } + + /** + * If you want to manually handle which meshes go on which slot and how you cache, overwrite this method. + */ + protected getMeshForSlot(slot: Slot): ISlotMesh { + if (!this.hasMeshForSlot(slot)) { let mesh = this.slotMeshFactory(); this.addChild(mesh); this.meshesCache.set(slot, mesh); @@ -410,6 +417,9 @@ export class Spine extends Container { pixiMaskSource = { slot, computed: false }; continue; } else { + if (this.hasMeshForSlot(slot)) { + this.getMeshForSlot(slot).renderable = false; + } Spine.clipper.clipEndWithSlot(slot); this.pixiMaskCleanup(slot); continue; @@ -481,6 +491,7 @@ export class Spine extends Container { } const mesh = this.getMeshForSlot(slot); + mesh.renderable = true; mesh.zIndex = zIndex; mesh.updateFromSpineData(texture, slot.data.blendMode, slot.data.name, finalVertices, finalVerticesLength, finalIndices, finalIndicesLength, useDarkColor); } From dfa6098aa674a37beec9ec56a55ff469ce1589d8 Mon Sep 17 00:00:00 2001 From: Gordon Cummings <57897263+GordonTombola@users.noreply.github.com> Date: Mon, 12 Aug 2024 10:34:37 +0100 Subject: [PATCH 137/215] clipping mask vertices fix in the case of weighted vertices on clipping attachments, we were previously using the length of the vertices array, which is not the same as the worldVerticesLength example clipping attachment data: "vertexCount": 4, "vertices": [ 1, 15, -47.71, 34.91, 1, 1, 18, -47.86, -35.06, 1, 1, 17, 47.8, -34.9, 1, 1, 16, 47.81, 34.87, 1 ], resulting vertices length would be 12 we actually needed 8 the result is an array with 8 correct numbers and 4 trailing numbers from the vertices array --- spine-ts/spine-pixi/src/Spine.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-ts/spine-pixi/src/Spine.ts b/spine-ts/spine-pixi/src/Spine.ts index 147c93803..b22642cfb 100644 --- a/spine-ts/spine-pixi/src/Spine.ts +++ b/spine-ts/spine-pixi/src/Spine.ts @@ -341,7 +341,7 @@ export class Spine extends Container { if (!pixiMaskSource.computed) { pixiMaskSource.computed = true; const clippingAttachment = pixiMaskSource.slot.attachment as ClippingAttachment; - const world = Array.from(clippingAttachment.vertices); + const world = new Array(clippingAttachment.worldVerticesLength); clippingAttachment.computeWorldVertices(pixiMaskSource.slot, 0, clippingAttachment.worldVerticesLength, world, 0, 2); mask.clear().lineStyle(0).beginFill(0x000000).drawPolygon(world); } From 8d39c09de06828c741668f6898e2de4e0951e181 Mon Sep 17 00:00:00 2001 From: Gordon Cummings <57897263+GordonTombola@users.noreply.github.com> Date: Mon, 12 Aug 2024 10:38:35 +0100 Subject: [PATCH 138/215] formatting was auto using spaces over tabs --- spine-ts/spine-pixi/src/Spine.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-ts/spine-pixi/src/Spine.ts b/spine-ts/spine-pixi/src/Spine.ts index b22642cfb..608b79332 100644 --- a/spine-ts/spine-pixi/src/Spine.ts +++ b/spine-ts/spine-pixi/src/Spine.ts @@ -341,7 +341,7 @@ export class Spine extends Container { if (!pixiMaskSource.computed) { pixiMaskSource.computed = true; const clippingAttachment = pixiMaskSource.slot.attachment as ClippingAttachment; - const world = new Array(clippingAttachment.worldVerticesLength); + const world = new Array(clippingAttachment.worldVerticesLength); clippingAttachment.computeWorldVertices(pixiMaskSource.slot, 0, clippingAttachment.worldVerticesLength, world, 0, 2); mask.clear().lineStyle(0).beginFill(0x000000).drawPolygon(world); } @@ -491,7 +491,7 @@ export class Spine extends Container { } const mesh = this.getMeshForSlot(slot); - mesh.renderable = true; + mesh.renderable = true; mesh.zIndex = zIndex; mesh.updateFromSpineData(texture, slot.data.blendMode, slot.data.name, finalVertices, finalVerticesLength, finalIndices, finalIndicesLength, useDarkColor); } From 29369493db5c594ec53a1eb2246993b7c4b6a287 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Tue, 13 Aug 2024 09:04:52 +0200 Subject: [PATCH 139/215] [ts][pixi] Fix existing meshes when attachments are remove, and clippings for slot objects. --- spine-ts/spine-pixi/src/Spine.ts | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/spine-ts/spine-pixi/src/Spine.ts b/spine-ts/spine-pixi/src/Spine.ts index 608b79332..6cc92f29d 100644 --- a/spine-ts/spine-pixi/src/Spine.ts +++ b/spine-ts/spine-pixi/src/Spine.ts @@ -143,6 +143,7 @@ export class Spine extends Container { private lightColor = new Color(); private darkColor = new Color(); + private clippingVertAux = new Float32Array(6); constructor (skeletonData: SkeletonData, options?: ISpineOptions) { super(); @@ -225,6 +226,7 @@ export class Spine extends Container { } /** + * Check the existence of a mesh for the given slot. * If you want to manually handle which meshes go on which slot and how you cache, overwrite this method. */ protected hasMeshForSlot(slot: Slot) { @@ -232,6 +234,7 @@ export class Spine extends Container { } /** + * Search the mesh corresponding to the given slot or create it, if it does not exists. * If you want to manually handle which meshes go on which slot and how you cache, overwrite this method. */ protected getMeshForSlot(slot: Slot): ISlotMesh { @@ -341,9 +344,15 @@ export class Spine extends Container { if (!pixiMaskSource.computed) { pixiMaskSource.computed = true; const clippingAttachment = pixiMaskSource.slot.attachment as ClippingAttachment; - const world = new Array(clippingAttachment.worldVerticesLength); - clippingAttachment.computeWorldVertices(pixiMaskSource.slot, 0, clippingAttachment.worldVerticesLength, world, 0, 2); - mask.clear().lineStyle(0).beginFill(0x000000).drawPolygon(world); + const worldVerticesLength = clippingAttachment.worldVerticesLength; + if (this.clippingVertAux.length < worldVerticesLength) this.clippingVertAux = new Float32Array(worldVerticesLength); + clippingAttachment.computeWorldVertices(pixiMaskSource.slot, 0, worldVerticesLength, this.clippingVertAux, 0, 2); + mask.clear().lineStyle(0).beginFill(0x000000); + mask.moveTo(this.clippingVertAux[0], this.clippingVertAux[1]); + for (let i = 2; i < worldVerticesLength; i+=2) { + mask.lineTo(this.clippingVertAux[i], this.clippingVertAux[i+1]); + } + mask.finishPoly(); } pixiObject.mask = mask; } else if (pixiObject.mask) { @@ -351,13 +360,13 @@ export class Spine extends Container { } } - /* + /* * Colors in pixi are premultiplied. * Pixi blending modes are modified to work with premultiplied colors. We cannot create custom blending modes. * Textures are loaded as premultiplied (see assers/atlasLoader.ts: alphaMode: `page.pma ? ALPHA_MODES.PMA : ALPHA_MODES.UNPACK`): * - textures non premultiplied are premultiplied on GPU on upload * - textures premultiplied are uploaded on GPU as is since they are already premultiplied - * + * * We need to take this into consideration and calculates final colors for both light and dark color as if textures were always premultiplied. * This implies for example that alpha for dark tint is always 1. This is way in DarkTintRenderer we have only the alpha of the light color. * If we ever want to load texture as non premultiplied on GPU, we must add a new dark alpha parameter to the TintMaterial and set the alpha. @@ -418,7 +427,7 @@ export class Spine extends Container { continue; } else { if (this.hasMeshForSlot(slot)) { - this.getMeshForSlot(slot).renderable = false; + this.getMeshForSlot(slot).visible = false; } Spine.clipper.clipEndWithSlot(slot); this.pixiMaskCleanup(slot); From d8e0ca097e54613cbb6b9dea72b21f9334cb5e97 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Tue, 13 Aug 2024 09:11:17 +0200 Subject: [PATCH 140/215] [ts][pixi] Formatting --- spine-ts/spine-pixi/src/Spine.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spine-ts/spine-pixi/src/Spine.ts b/spine-ts/spine-pixi/src/Spine.ts index 6cc92f29d..afc40f28e 100644 --- a/spine-ts/spine-pixi/src/Spine.ts +++ b/spine-ts/spine-pixi/src/Spine.ts @@ -229,7 +229,7 @@ export class Spine extends Container { * Check the existence of a mesh for the given slot. * If you want to manually handle which meshes go on which slot and how you cache, overwrite this method. */ - protected hasMeshForSlot(slot: Slot) { + protected hasMeshForSlot (slot: Slot) { return this.meshesCache.has(slot); } @@ -237,7 +237,7 @@ export class Spine extends Container { * Search the mesh corresponding to the given slot or create it, if it does not exists. * If you want to manually handle which meshes go on which slot and how you cache, overwrite this method. */ - protected getMeshForSlot(slot: Slot): ISlotMesh { + protected getMeshForSlot (slot: Slot): ISlotMesh { if (!this.hasMeshForSlot(slot)) { let mesh = this.slotMeshFactory(); this.addChild(mesh); @@ -349,8 +349,8 @@ export class Spine extends Container { clippingAttachment.computeWorldVertices(pixiMaskSource.slot, 0, worldVerticesLength, this.clippingVertAux, 0, 2); mask.clear().lineStyle(0).beginFill(0x000000); mask.moveTo(this.clippingVertAux[0], this.clippingVertAux[1]); - for (let i = 2; i < worldVerticesLength; i+=2) { - mask.lineTo(this.clippingVertAux[i], this.clippingVertAux[i+1]); + for (let i = 2; i < worldVerticesLength; i += 2) { + mask.lineTo(this.clippingVertAux[i], this.clippingVertAux[i + 1]); } mask.finishPoly(); } From ed26c35d479b561bc99b8bb7f444d89b84a386d2 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Tue, 13 Aug 2024 10:04:38 +0200 Subject: [PATCH 141/215] [ts] Release 4.2.58 --- spine-ts/package-lock.json | 38 +++++++++++++-------------- spine-ts/package.json | 2 +- spine-ts/spine-canvas/package.json | 4 +-- spine-ts/spine-canvaskit/package.json | 4 +-- spine-ts/spine-core/package.json | 2 +- spine-ts/spine-phaser/package.json | 8 +++--- spine-ts/spine-pixi/package.json | 4 +-- spine-ts/spine-player/package.json | 4 +-- spine-ts/spine-threejs/package.json | 4 +-- spine-ts/spine-webgl/package.json | 4 +-- 10 files changed, 37 insertions(+), 37 deletions(-) diff --git a/spine-ts/package-lock.json b/spine-ts/package-lock.json index 4df696ed9..42a4ac836 100644 --- a/spine-ts/package-lock.json +++ b/spine-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.57", + "version": "4.2.58", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@esotericsoftware/spine-ts", - "version": "4.2.57", + "version": "4.2.58", "license": "LicenseRef-LICENSE", "workspaces": [ "spine-core", @@ -3036,18 +3036,18 @@ }, "spine-canvas": { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.57", + "version": "4.2.58", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.57" + "@esotericsoftware/spine-core": "4.2.58" } }, "spine-canvaskit": { "name": "@esotericsoftware/spine-canvaskit", - "version": "4.2.57", + "version": "4.2.58", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.57", + "@esotericsoftware/spine-core": "4.2.58", "canvaskit-wasm": "0.39.1" }, "devDependencies": { @@ -3057,25 +3057,25 @@ }, "spine-core": { "name": "@esotericsoftware/spine-core", - "version": "4.2.57", + "version": "4.2.58", "license": "LicenseRef-LICENSE" }, "spine-phaser": { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.57", + "version": "4.2.58", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-canvas": "4.2.57", - "@esotericsoftware/spine-core": "4.2.57", - "@esotericsoftware/spine-webgl": "4.2.57" + "@esotericsoftware/spine-canvas": "4.2.58", + "@esotericsoftware/spine-core": "4.2.58", + "@esotericsoftware/spine-webgl": "4.2.58" } }, "spine-pixi": { "name": "@esotericsoftware/spine-pixi", - "version": "4.2.57", + "version": "4.2.58", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.57" + "@esotericsoftware/spine-core": "4.2.58" }, "peerDependencies": { "@pixi/assets": "^7.2.4", @@ -3088,26 +3088,26 @@ }, "spine-player": { "name": "@esotericsoftware/spine-player", - "version": "4.2.57", + "version": "4.2.58", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.57" + "@esotericsoftware/spine-webgl": "4.2.58" } }, "spine-threejs": { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.57", + "version": "4.2.58", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.57" + "@esotericsoftware/spine-core": "4.2.58" } }, "spine-webgl": { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.57", + "version": "4.2.58", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.57" + "@esotericsoftware/spine-core": "4.2.58" } } } diff --git a/spine-ts/package.json b/spine-ts/package.json index baac95bcc..92cd5d723 100644 --- a/spine-ts/package.json +++ b/spine-ts/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.57", + "version": "4.2.58", "description": "The official Spine Runtimes for the web.", "type": "module", "files": [ diff --git a/spine-ts/spine-canvas/package.json b/spine-ts/spine-canvas/package.json index edd770613..2486b1aa9 100644 --- a/spine-ts/spine-canvas/package.json +++ b/spine-ts/spine-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.57", + "version": "4.2.58", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.57" + "@esotericsoftware/spine-core": "4.2.58" } } \ No newline at end of file diff --git a/spine-ts/spine-canvaskit/package.json b/spine-ts/spine-canvaskit/package.json index 29a1839d3..191f88c7c 100644 --- a/spine-ts/spine-canvaskit/package.json +++ b/spine-ts/spine-canvaskit/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-canvaskit", - "version": "4.2.57", + "version": "4.2.58", "description": "The official Spine Runtimes for CanvasKit for NodeJS", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.57", + "@esotericsoftware/spine-core": "4.2.58", "canvaskit-wasm": "0.39.1" }, "devDependencies": { diff --git a/spine-ts/spine-core/package.json b/spine-ts/spine-core/package.json index a51a2e4a7..7e36755e6 100644 --- a/spine-ts/spine-core/package.json +++ b/spine-ts/spine-core/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-core", - "version": "4.2.57", + "version": "4.2.58", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/spine-ts/spine-phaser/package.json b/spine-ts/spine-phaser/package.json index 10f1d4945..20da37fa2 100644 --- a/spine-ts/spine-phaser/package.json +++ b/spine-ts/spine-phaser/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.57", + "version": "4.2.58", "description": "The official Spine Runtimes for the Phaser.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,8 +31,8 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.57", - "@esotericsoftware/spine-webgl": "4.2.57", - "@esotericsoftware/spine-canvas": "4.2.57" + "@esotericsoftware/spine-core": "4.2.58", + "@esotericsoftware/spine-webgl": "4.2.58", + "@esotericsoftware/spine-canvas": "4.2.58" } } \ No newline at end of file diff --git a/spine-ts/spine-pixi/package.json b/spine-ts/spine-pixi/package.json index 2131cd5af..44f8efc87 100644 --- a/spine-ts/spine-pixi/package.json +++ b/spine-ts/spine-pixi/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-pixi", - "version": "4.2.57", + "version": "4.2.58", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.57" + "@esotericsoftware/spine-core": "4.2.58" }, "peerDependencies": { "@pixi/core": "^7.2.4", diff --git a/spine-ts/spine-player/package.json b/spine-ts/spine-player/package.json index 0ee16f7a1..5baaf9c9d 100644 --- a/spine-ts/spine-player/package.json +++ b/spine-ts/spine-player/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-player", - "version": "4.2.57", + "version": "4.2.58", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.57" + "@esotericsoftware/spine-webgl": "4.2.58" } } \ No newline at end of file diff --git a/spine-ts/spine-threejs/package.json b/spine-ts/spine-threejs/package.json index 11a550638..31db06a82 100644 --- a/spine-ts/spine-threejs/package.json +++ b/spine-ts/spine-threejs/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.57", + "version": "4.2.58", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.57" + "@esotericsoftware/spine-core": "4.2.58" } } \ No newline at end of file diff --git a/spine-ts/spine-webgl/package.json b/spine-ts/spine-webgl/package.json index 5f048a85b..9d9810e3a 100644 --- a/spine-ts/spine-webgl/package.json +++ b/spine-ts/spine-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.57", + "version": "4.2.58", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.57" + "@esotericsoftware/spine-core": "4.2.58" } } \ No newline at end of file From d774632ccf13433922e0880597695308f580d239 Mon Sep 17 00:00:00 2001 From: Gordon Cummings <57897263+GordonTombola@users.noreply.github.com> Date: Tue, 13 Aug 2024 09:28:33 +0100 Subject: [PATCH 142/215] replaces setTransform on slotObject setTransform on pixi displayObjects performs: ``` this.scale.x = !scaleX ? 1 : scaleX; this.scale.y = !scaleY ? 1 : scaleY; ``` meaning any transformations to scale 0 will become scale 1 --- spine-ts/spine-pixi/src/Spine.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spine-ts/spine-pixi/src/Spine.ts b/spine-ts/spine-pixi/src/Spine.ts index afc40f28e..3c8b38017 100644 --- a/spine-ts/spine-pixi/src/Spine.ts +++ b/spine-ts/spine-pixi/src/Spine.ts @@ -329,7 +329,9 @@ export class Spine extends Container { } } private updatePixiObject (pixiObject: Container, slot: Slot, zIndex: number) { - pixiObject.setTransform(slot.bone.worldX, slot.bone.worldY, slot.bone.getWorldScaleX(), slot.bone.getWorldScaleX(), slot.bone.getWorldRotationX() * MathUtils.degRad); + pixiObject.position.set(slot.bone.worldX, slot.bone.worldY); + pixiObject.scale.set(slot.bone.getWorldScaleX(), slot.bone.getWorldScaleX()); + pixiObject.rotation = slot.bone.getWorldRotationX() * MathUtils.degRad; pixiObject.zIndex = zIndex + 1; pixiObject.alpha = this.skeleton.color.a * slot.color.a; } From 80fb9f3c5aa28dbd044971b9dcbd434b8506be69 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 16 Aug 2024 18:11:19 +0200 Subject: [PATCH 143/215] [unity] Fixed URP shader compile errors on Unity 6. Closes #2603. --- .../Shaders/Include/Spine-Common-URP.hlsl | 6 ++++++ .../Shaders/Include/Spine-SkeletonLit-ForwardPass-URP.hlsl | 7 ++++++- .../Shaders/Include/Spine-Sprite-ForwardPass-URP.hlsl | 7 ++++++- .../com.esotericsoftware.spine.urp-shaders/package.json | 2 +- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Common-URP.hlsl b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Common-URP.hlsl index 21c062e23..69f7b9985 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Common-URP.hlsl +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Common-URP.hlsl @@ -14,6 +14,12 @@ #endif #if IS_URP_14_OR_NEWER && !defined(_USE_WEBGL1_LIGHTS) #define IS_URP_15_OR_NEWER 1 + #include "Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolume.hlsl" + #if defined(_APVWorldOffset) + #define IS_URP_17_OR_NEWER 1 + #else + #define IS_URP_17_OR_NEWER 0 + #endif #else #define IS_URP_15_OR_NEWER 0 #endif diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-SkeletonLit-ForwardPass-URP.hlsl b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-SkeletonLit-ForwardPass-URP.hlsl index 1dcb508d1..f1f5551aa 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-SkeletonLit-ForwardPass-URP.hlsl +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-SkeletonLit-ForwardPass-URP.hlsl @@ -149,7 +149,12 @@ VertexOutput vert(appdata v) { half3 vertexSH; #if IS_URP_15_OR_NEWER #ifdef OUTPUT_SH4 - OUTPUT_SH4(positionWS, normalWS.xyz, GetWorldSpaceNormalizeViewDir(positionWS), vertexSH); + #if IS_URP_17_OR_NEWER + float4 ignoredProbeOcclusion; + OUTPUT_SH4(positionWS, normalWS.xyz, GetWorldSpaceNormalizeViewDir(positionWS), vertexSH, ignoredProbeOcclusion); + #else // 15 or newer + OUTPUT_SH4(positionWS, normalWS.xyz, GetWorldSpaceNormalizeViewDir(positionWS), vertexSH); + #endif #else OUTPUT_SH(positionWS, normalWS.xyz, GetWorldSpaceNormalizeViewDir(positionWS), vertexSH); #endif diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Sprite-ForwardPass-URP.hlsl b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Sprite-ForwardPass-URP.hlsl index fe5c3198f..aa2cc4bd5 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Sprite-ForwardPass-URP.hlsl +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Sprite-ForwardPass-URP.hlsl @@ -313,7 +313,12 @@ VertexOutputLWRP ForwardPassVertexSprite(VertexInput input) #if IS_URP_15_OR_NEWER #ifdef OUTPUT_SH4 - OUTPUT_SH4(positionWS, normalWS.xyz, GetWorldSpaceNormalizeViewDir(positionWS), output.vertexSH); + #if IS_URP_17_OR_NEWER + float4 ignoredProbeOcclusion; + OUTPUT_SH4(positionWS, normalWS.xyz, GetWorldSpaceNormalizeViewDir(positionWS), output.vertexSH, ignoredProbeOcclusion); + #else // 15 or newer + OUTPUT_SH4(positionWS, normalWS.xyz, GetWorldSpaceNormalizeViewDir(positionWS), output.vertexSH); + #endif #else OUTPUT_SH(positionWS, normalWS.xyz, GetWorldSpaceNormalizeViewDir(positionWS), output.vertexSH); #endif diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json index a46ca9b0a..1d0dc3154 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.urp-shaders", "displayName": "Spine Universal RP Shaders", "description": "This plugin provides universal render pipeline (URP) shaders for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.2.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", - "version": "4.2.37", + "version": "4.2.38", "unity": "2019.3", "author": { "name": "Esoteric Software", From 85a4f71162391abcf537f89a72ec950cd2015d59 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 19 Aug 2024 10:57:24 +0200 Subject: [PATCH 144/215] [ue] Closes #2594, add SetSlotColor to SpineWidget. --- .../Blueprints/UmgRaptor.uasset | Bin 48534 -> 57161 bytes .../SpinePlugin/Private/SpineWidget.cpp | 10 ++++++++++ .../Source/SpinePlugin/Public/SpineWidget.h | 3 +++ 3 files changed, 13 insertions(+) diff --git a/spine-ue/Content/GettingStarted/Blueprints/UmgRaptor.uasset b/spine-ue/Content/GettingStarted/Blueprints/UmgRaptor.uasset index 965c458fab2be15cbf83e43662e7d9355948e58f..7c7a7256b0cf7cb0b62ee9331017c03a5fdf9f98 100644 GIT binary patch literal 57161 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�fI$hQ@sKY1 zX|a4>7(K>NOTCFe;_%^do$SNy`1KFX&K*^RB-YI9>6gepcN3P@{dAKLmfo>=fu(uc zn4le8y7yakCfI2ipiULf+M*?RdyThITX7dfycKikhbJgfPg8%vN34UW4fLcjd#$6% zUO_up8s}Qt7;(|V&BS7XpY~d`TaTP#m&D<5(%wle?FdkHf*T|?E|u<2tE_2C5Tt1z zp~+iM8!wQ9?qebf8toBYT5=fCSfhGI(B3H?OlB7~I0@CVPx2IbTmhHE?OH(cfKnp8 z`b$f&_Z+pF_G?P8pEgH=u^v!TUqMefOAJ1?Em40GT0)I-gT%CvihmE){zhs&EGiYM zfG4tGlJ5~3nzGxVEFx@-QLn_ zmu6k9H>2lBEx)BY;toy^T&h(%5cg*M;i3NUP>03wA07{dc;gQbh4uJ9JQVgM$QsnAK{UnC5= zHck>n=+6;#Pl<#^2uX|}fY-^a0(r#DY`i=N`6J{x4#N%Sf>p5uTrZDCRU`Zp4=bX3 zd|Y(_PR6|* zp)yb{5@?EYt2|c7qp_fI)_#i22P0#H+z2>;qj5sXSm-hhB=W(O6Rbs4dzpk73*9bZ zAZjdx$xg@Gw>EsfdxiSgug%RLA8~KhW9Lic$?}K;s8gE#XEuX!4G^L=frP2paWXSr z9)pKJ$unc!rb(D--A;M2?dnq&96#=kC7WJ;Zu&8K%wCjFdT9P$3tEeC*xkfTD z7HA*JgWVz@I^sIsOy@{8#V(K9BO?^Mc5R^cCXr%(iv_Y)%tq&6ajJv`XQ87c;7B@# zIv0-Iv0e~-&ar58)U&VBX^~dTpd`j64DgynA0&vAD$X?Vu9fG)R*t<@!7a{XB#d|Z za2X^_=e+?q4_}m6K%5JOLOM*sk&LEpL=Ar_i^C=KYg;>5C8xG literal 48534 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 + if (slot) { + slot->getColor().set(SlotColor.R / 255.f, SlotColor.G / 255.f, SlotColor.B / 255.f, SlotColor.A / 255.f); + } + } +} + void USpineWidget::GetAnimations(TArray &Animations) { CheckState(); if (skeleton) { diff --git a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h index 2836a484a..c02339638 100644 --- a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h +++ b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h @@ -141,6 +141,9 @@ public: UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") bool HasSlot(const FString SlotName); + UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") + void SetSlotColor(const FString SlotName, const FColor SlotColor); + UFUNCTION(BlueprintPure, Category = "Components|Spine|Skeleton") void GetAnimations(TArray &Animations); From e0796bf54368b61b8190a4bb6e6d8609f87c383d Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 19 Aug 2024 11:14:37 +0200 Subject: [PATCH 145/215] [c][cpp] Port: Fixed mixing out inherit timelines to the setup pose. See #2590 --- spine-c/spine-c/src/spine/Animation.c | 5 +++++ spine-cpp/spine-cpp/src/spine/InheritTimeline.cpp | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/spine-c/spine-c/src/spine/Animation.c b/spine-c/spine-c/src/spine/Animation.c index f88a0add8..56921f6f0 100644 --- a/spine-c/spine-c/src/spine/Animation.c +++ b/spine-c/spine-c/src/spine/Animation.c @@ -2163,6 +2163,11 @@ void _spInheritTimeline_apply(spTimeline *timeline, spSkeleton *skeleton, float float *frames = self->super.frames->items; if (!bone->active) return; + if (direction == SP_MIX_DIRECTION_OUT) { + if (blend == SP_MIX_BLEND_SETUP) bone->inherit = bone->data->inherit; + return; + } + if (time < frames[0]) { if (blend == SP_MIX_BLEND_SETUP || blend == SP_MIX_BLEND_FIRST) bone->inherit = bone->data->inherit; return; diff --git a/spine-cpp/spine-cpp/src/spine/InheritTimeline.cpp b/spine-cpp/spine-cpp/src/spine/InheritTimeline.cpp index d9a1ff62a..9bd593699 100644 --- a/spine-cpp/spine-cpp/src/spine/InheritTimeline.cpp +++ b/spine-cpp/spine-cpp/src/spine/InheritTimeline.cpp @@ -67,6 +67,11 @@ void InheritTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vect Bone *bone = skeleton.getBones()[_boneIndex]; if (!bone->isActive()) return; + if (direction == MixDirection_Out) { + if (blend == MixBlend_Setup) bone->setInherit(bone->_data.getInherit()); + return; + } + if (time < _frames[0]) { if (blend == MixBlend_Setup || blend == MixBlend_First) bone->_inherit = bone->_data.getInherit(); return; From dffc4484f1b97484f20968ee32e444ae0bd85397 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 19 Aug 2024 11:40:02 +0200 Subject: [PATCH 146/215] [libgdx] Ensure compatibility with Java 7. --- spine-libgdx/build.gradle | 22 ++++++++++++++-------- spine-libgdx/publish.sh | 2 +- spine-libgdx/publishing.gradle | 6 ++++-- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/spine-libgdx/build.gradle b/spine-libgdx/build.gradle index 9312019af..c9d4b93cd 100644 --- a/spine-libgdx/build.gradle +++ b/spine-libgdx/build.gradle @@ -1,9 +1,5 @@ -group = "com.esotericsoftware.spine" -version = "4.2.0" - ext { libgdxVersion = "1.12.2-SNAPSHOT" - javaVersion = 8 } allprojects { @@ -17,9 +13,11 @@ allprojects { mavenCentral() } - tasks.withType(JavaCompile) { - sourceCompatibility = javaVersion.toString() - targetCompatibility = javaVersion.toString() + // Set Java 8 compatibility using JDK 17 + tasks.withType(JavaCompile).configureEach { + sourceCompatibility = '1.7' + targetCompatibility = '1.7' + options.release.set(7) // Ensures Java 8 bytecode is produced } } @@ -46,6 +44,10 @@ project("spine-skeletonviewer") { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } } + + tasks.named('jar').configure { + dependsOn(project(":spine-libgdx").tasks.named('jar')) + } } configure(subprojects - project("spine-libgdx")) { @@ -60,4 +62,8 @@ configure(subprojects - project("spine-libgdx")) { implementation "com.badlogicgames.gdx:gdx-box2d:$libgdxVersion" implementation "com.badlogicgames.gdx:gdx-box2d-platform:$libgdxVersion:natives-desktop" } -} \ No newline at end of file +} + +tasks.withType(JavaCompile).configureEach { + println "Building with sourceCompatibility = ${sourceCompatibility}, targetCompatibility = ${targetCompatibility}" +} diff --git a/spine-libgdx/publish.sh b/spine-libgdx/publish.sh index b3cd99758..280b33467 100755 --- a/spine-libgdx/publish.sh +++ b/spine-libgdx/publish.sh @@ -11,4 +11,4 @@ # After publishing via this script, log into https://oss.sonatype.org and release it manually after # checks pass ("Close -> Release & Drop"). set -e - ./gradlew publishReleasePublicationToSonaTypeRepository --info \ No newline at end of file +./gradlew publishReleasePublicationToSonaTypeRepository \ No newline at end of file diff --git a/spine-libgdx/publishing.gradle b/spine-libgdx/publishing.gradle index c65bdf865..d0ea642bb 100644 --- a/spine-libgdx/publishing.gradle +++ b/spine-libgdx/publishing.gradle @@ -1,10 +1,12 @@ +ext { + libraryVersion = "4.2.7-SNAPSHOT" +} + project("spine-libgdx") { apply plugin: "java-library" apply plugin: "maven-publish" apply plugin: "signing" - def libraryVersion = "4.2.7-SNAPSHOT" - dependencies { implementation "com.badlogicgames.gdx:gdx:$libgdxVersion" } From b6139109e6fb5d2be7b96f8c4a458e069c39ef34 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 19 Aug 2024 11:45:29 +0200 Subject: [PATCH 147/215] [libgdx] New snapshot release 4.2.8 --- spine-libgdx/publishing.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-libgdx/publishing.gradle b/spine-libgdx/publishing.gradle index d0ea642bb..d10b2d433 100644 --- a/spine-libgdx/publishing.gradle +++ b/spine-libgdx/publishing.gradle @@ -1,5 +1,5 @@ ext { - libraryVersion = "4.2.7-SNAPSHOT" + libraryVersion = "4.2.8-SNAPSHOT" } project("spine-libgdx") { From b97fdf97ee74d74f4d3a7333b9ac5c386783d8b2 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 19 Aug 2024 13:20:01 +0200 Subject: [PATCH 148/215] [android] 4.2.6 release --- spine-android/spine-android/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index 83a620c2c..8880708d3 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -33,14 +33,14 @@ android { dependencies { implementation(libs.androidx.appcompat) api("com.badlogicgames.gdx:gdx:1.12.2-SNAPSHOT") - api("com.esotericsoftware.spine:spine-libgdx:4.2.6") + api("com.esotericsoftware.spine:spine-libgdx:4.2.7") testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) } -val libraryVersion = "4.2.6-SNAPSHOT" +val libraryVersion = "4.2.6"; tasks.register("sourceJar") { archiveClassifier.set("sources") From 59e3b58d141de0847224eb7346ad1348801a7139 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 19 Aug 2024 13:22:25 +0200 Subject: [PATCH 149/215] [android] Next snapshot. --- spine-android/spine-android/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-android/spine-android/build.gradle.kts b/spine-android/spine-android/build.gradle.kts index 8880708d3..a71e6d116 100644 --- a/spine-android/spine-android/build.gradle.kts +++ b/spine-android/spine-android/build.gradle.kts @@ -40,7 +40,7 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) } -val libraryVersion = "4.2.6"; +val libraryVersion = "4.2.7-SNAPSHOT"; tasks.register("sourceJar") { archiveClassifier.set("sources") From f3ded1ed1af11dbeac0ab22ea27721cfd9342738 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 19 Aug 2024 14:01:08 +0200 Subject: [PATCH 150/215] [godot] Godot 4.3 updates --- .github/workflows/spine-godot-v4-all.yml | 4 ++-- spine-godot/spine_godot/SpineAnimationTrack.cpp | 4 ++-- spine-godot/spine_godot/SpineSprite.cpp | 4 ++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/spine-godot-v4-all.yml b/.github/workflows/spine-godot-v4-all.yml index 47007e702..9a5a8d831 100644 --- a/.github/workflows/spine-godot-v4-all.yml +++ b/.github/workflows/spine-godot-v4-all.yml @@ -14,10 +14,10 @@ jobs: matrix: version: [ - {"tag": "4.1.4-stable", "version": "4.1.4.stable", "mono": false}, - {"tag": "4.1.4-stable", "version": "4.1.4.stable", "mono": true}, {"tag": "4.2.2-stable", "version": "4.2.2.stable", "mono": false}, {"tag": "4.2.2-stable", "version": "4.2.2.stable", "mono": true}, + {"tag": "4.2-stable", "version": "4.2.stable", "mono": false}, + {"tag": "4.2-stable", "version": "4.2.stable", "mono": true}, ] uses: ./.github/workflows/spine-godot-v4.yml with: diff --git a/spine-godot/spine_godot/SpineAnimationTrack.cpp b/spine-godot/spine_godot/SpineAnimationTrack.cpp index 4cad6e14c..4de781d47 100644 --- a/spine-godot/spine_godot/SpineAnimationTrack.cpp +++ b/spine-godot/spine_godot/SpineAnimationTrack.cpp @@ -182,8 +182,8 @@ void SpineAnimationTrack::setup_animation_player() { #if VERSION_MAJOR > 3 List animation_libraries; animation_player->get_animation_library_list(&animation_libraries); - for (int i = 0; i < animation_libraries.size(); i++) { - animation_player->remove_animation_library(animation_libraries[i]); + for (auto iter = animation_libraries.front(); iter; iter = iter->next()) { + animation_player->remove_animation_library(iter->get()); } #else List animation_names; diff --git a/spine-godot/spine_godot/SpineSprite.cpp b/spine-godot/spine_godot/SpineSprite.cpp index ae1daf1a5..49571d41f 100644 --- a/spine-godot/spine_godot/SpineSprite.cpp +++ b/spine-godot/spine_godot/SpineSprite.cpp @@ -53,8 +53,12 @@ #include "scene/main/viewport.h" #if TOOLS_ENABLED +#if VERSION_MAJOR > 4 && VERSION_MINOR > 2 +#include "editor/plugins/editor_plugin.h" +else #include "editor/editor_plugin.h" #endif +#endif Ref SpineSprite::default_materials[4] = {}; static int sprite_count = 0; From f1956d949638bbd984bc8096874367600b8108a0 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 19 Aug 2024 14:01:33 +0200 Subject: [PATCH 151/215] Formatting. --- spine-c/spine-c/src/spine/Animation.c | 8 ++++---- spine-cpp/spine-cpp/src/spine/InheritTimeline.cpp | 8 ++++---- spine-godot/spine_godot/SpineAnimationTrack.cpp | 2 +- spine-godot/spine_godot/SpineSprite.cpp | 3 ++- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/spine-c/spine-c/src/spine/Animation.c b/spine-c/spine-c/src/spine/Animation.c index 56921f6f0..331bb4f5d 100644 --- a/spine-c/spine-c/src/spine/Animation.c +++ b/spine-c/spine-c/src/spine/Animation.c @@ -2163,10 +2163,10 @@ void _spInheritTimeline_apply(spTimeline *timeline, spSkeleton *skeleton, float float *frames = self->super.frames->items; if (!bone->active) return; - if (direction == SP_MIX_DIRECTION_OUT) { - if (blend == SP_MIX_BLEND_SETUP) bone->inherit = bone->data->inherit; - return; - } + if (direction == SP_MIX_DIRECTION_OUT) { + if (blend == SP_MIX_BLEND_SETUP) bone->inherit = bone->data->inherit; + return; + } if (time < frames[0]) { if (blend == SP_MIX_BLEND_SETUP || blend == SP_MIX_BLEND_FIRST) bone->inherit = bone->data->inherit; diff --git a/spine-cpp/spine-cpp/src/spine/InheritTimeline.cpp b/spine-cpp/spine-cpp/src/spine/InheritTimeline.cpp index 9bd593699..f3326d04c 100644 --- a/spine-cpp/spine-cpp/src/spine/InheritTimeline.cpp +++ b/spine-cpp/spine-cpp/src/spine/InheritTimeline.cpp @@ -67,10 +67,10 @@ void InheritTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vect Bone *bone = skeleton.getBones()[_boneIndex]; if (!bone->isActive()) return; - if (direction == MixDirection_Out) { - if (blend == MixBlend_Setup) bone->setInherit(bone->_data.getInherit()); - return; - } + if (direction == MixDirection_Out) { + if (blend == MixBlend_Setup) bone->setInherit(bone->_data.getInherit()); + return; + } if (time < _frames[0]) { if (blend == MixBlend_Setup || blend == MixBlend_First) bone->_inherit = bone->_data.getInherit(); diff --git a/spine-godot/spine_godot/SpineAnimationTrack.cpp b/spine-godot/spine_godot/SpineAnimationTrack.cpp index 4de781d47..da0b80c5a 100644 --- a/spine-godot/spine_godot/SpineAnimationTrack.cpp +++ b/spine-godot/spine_godot/SpineAnimationTrack.cpp @@ -182,7 +182,7 @@ void SpineAnimationTrack::setup_animation_player() { #if VERSION_MAJOR > 3 List animation_libraries; animation_player->get_animation_library_list(&animation_libraries); - for (auto iter = animation_libraries.front(); iter; iter = iter->next()) { + for (auto iter = animation_libraries.front(); iter; iter = iter->next()) { animation_player->remove_animation_library(iter->get()); } #else diff --git a/spine-godot/spine_godot/SpineSprite.cpp b/spine-godot/spine_godot/SpineSprite.cpp index 49571d41f..f83bd3783 100644 --- a/spine-godot/spine_godot/SpineSprite.cpp +++ b/spine-godot/spine_godot/SpineSprite.cpp @@ -60,7 +60,8 @@ else #endif #endif -Ref SpineSprite::default_materials[4] = {}; + Ref + SpineSprite::default_materials[4] = {}; static int sprite_count = 0; static spine::Vector quad_indices; static spine::Vector scratch_vertices; From fb3d8af28154d6a123d4ae0820641937fc447ae7 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 19 Aug 2024 14:59:39 +0200 Subject: [PATCH 152/215] [godot] Fix builds < 4.3 --- spine-godot/spine_godot/SpineSprite.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/spine-godot/spine_godot/SpineSprite.cpp b/spine-godot/spine_godot/SpineSprite.cpp index f83bd3783..542cdb596 100644 --- a/spine-godot/spine_godot/SpineSprite.cpp +++ b/spine-godot/spine_godot/SpineSprite.cpp @@ -53,15 +53,21 @@ #include "scene/main/viewport.h" #if TOOLS_ENABLED -#if VERSION_MAJOR > 4 && VERSION_MINOR > 2 + +#if VERSION_MAJOR > 3 +#if VERSION_MINOR > 2 #include "editor/plugins/editor_plugin.h" -else +#else #include "editor/editor_plugin.h" #endif +#else +#include "editor/editor_plugin.h" #endif - Ref - SpineSprite::default_materials[4] = {}; +#endif + +Ref + SpineSprite::default_materials[4] = {}; static int sprite_count = 0; static spine::Vector quad_indices; static spine::Vector scratch_vertices; From 9473c1b3a6ea2b0e00c001d9edccafe922cebe09 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 19 Aug 2024 15:07:00 +0200 Subject: [PATCH 153/215] [libgdx] Upgrade to JDK 17 for GH builds --- .github/workflows/spine-libgdx.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/spine-libgdx.yml b/.github/workflows/spine-libgdx.yml index fb56a8dcf..ae6f71263 100644 --- a/.github/workflows/spine-libgdx.yml +++ b/.github/workflows/spine-libgdx.yml @@ -10,12 +10,12 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: Set up JDK 1.8 + - uses: actions/checkout@v2 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: - distribution: 'zulu' - java-version: "8" + java-version: '17' + distribution: 'temurin' - name: Cache Gradle packages uses: actions/cache@v3 From d0e94ba3fb7e9a8656f464167e9ed9449af39169 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 20 Aug 2024 10:18:39 +0200 Subject: [PATCH 154/215] [godot] Add 4.3 to build matrix. --- .github/workflows/spine-godot-v4-all.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/spine-godot-v4-all.yml b/.github/workflows/spine-godot-v4-all.yml index 9a5a8d831..cb10cc40a 100644 --- a/.github/workflows/spine-godot-v4-all.yml +++ b/.github/workflows/spine-godot-v4-all.yml @@ -14,10 +14,10 @@ jobs: matrix: version: [ + {"tag": "4.3-stable", "version": "4.3.stable", "mono": false}, + {"tag": "4.3-stable", "version": "4.3.stable", "mono": true}, {"tag": "4.2.2-stable", "version": "4.2.2.stable", "mono": false}, {"tag": "4.2.2-stable", "version": "4.2.2.stable", "mono": true}, - {"tag": "4.2-stable", "version": "4.2.stable", "mono": false}, - {"tag": "4.2-stable", "version": "4.2.stable", "mono": true}, ] uses: ./.github/workflows/spine-godot-v4.yml with: From 6fa31a29032611337479ce1f63ac8d7b0d005be6 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 20 Aug 2024 16:14:50 +0200 Subject: [PATCH 155/215] =?UTF-8?q?[libgdx]=C2=A0Remove=20dependency=20on?= =?UTF-8?q?=20gdx-lwjgl3-glfw-awt-macos=20in=20SkeletonViewer,=20use=20LWJ?= =?UTF-8?q?GL=20glfw=5Fasync=20instead?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same deficiency: when resizing, it will eventually crash with ``` UNSUPPORTED (log once): setPrimitiveRestartEnabled:index: unsupported! -[AGXG13XFamilyCommandBuffer renderCommandEncoderWithDescriptor:]:888: failed assertion `A command encoder is already encoding to this command buffer' ``` Not sure how to work around this. JGLFW does not have this issue. --- spine-libgdx/build.gradle | 14 ++++++++++---- .../com/esotericsoftware/spine/SkeletonViewer.java | 3 +++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/spine-libgdx/build.gradle b/spine-libgdx/build.gradle index c9d4b93cd..7663b2e13 100644 --- a/spine-libgdx/build.gradle +++ b/spine-libgdx/build.gradle @@ -13,7 +13,6 @@ allprojects { mavenCentral() } - // Set Java 8 compatibility using JDK 17 tasks.withType(JavaCompile).configureEach { sourceCompatibility = '1.7' targetCompatibility = '1.7' @@ -43,10 +42,18 @@ project("spine-skeletonviewer") { from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } + + dependsOn(project(":spine-libgdx").tasks.named('jar')) } - tasks.named('jar').configure { - dependsOn(project(":spine-libgdx").tasks.named('jar')) + tasks.named('build').configure { + dependsOn(tasks.named('jar')) + } + + tasks.withType(JavaCompile).configureEach { + sourceCompatibility = '1.8' + targetCompatibility = '1.8' + options.release.set(8) // Ensures Java 8 bytecode is produced } } @@ -58,7 +65,6 @@ configure(subprojects - project("spine-libgdx")) { implementation "com.badlogicgames.gdx:gdx:$libgdxVersion" implementation "com.badlogicgames.gdx:gdx-platform:$libgdxVersion:natives-desktop" implementation "com.badlogicgames.gdx:gdx-backend-lwjgl3:$libgdxVersion" - implementation "com.badlogicgames.gdx:gdx-lwjgl3-glfw-awt-macos:$libgdxVersion" implementation "com.badlogicgames.gdx:gdx-box2d:$libgdxVersion" implementation "com.badlogicgames.gdx:gdx-box2d-platform:$libgdxVersion:natives-desktop" } diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java index 15a57cb9c..b91f898d5 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java @@ -54,6 +54,7 @@ import com.esotericsoftware.spine.AnimationState.AnimationStateAdapter; import com.esotericsoftware.spine.AnimationState.TrackEntry; import com.esotericsoftware.spine.Skeleton.Physics; import com.esotericsoftware.spine.utils.TwoColorPolygonBatch; +import org.lwjgl.system.Configuration; import java.awt.Toolkit; @@ -377,6 +378,8 @@ public class SkeletonViewer extends ApplicationAdapter { float dpiScale = 1; if (os.contains("Windows")) dpiScale = Toolkit.getDefaultToolkit().getScreenResolution() / 96f; if (os.contains("OS X")) { + Configuration.GLFW_CHECK_THREAD0.set(false); + Configuration.GLFW_LIBRARY_NAME.set("glfw_async"); Object object = Toolkit.getDefaultToolkit().getDesktopProperty("apple.awt.contentScaleFactor"); if (object instanceof Float && ((Float)object).intValue() >= 2) dpiScale = 2; } From 7066fd939f9573f6d397e488e07524c7d1d1b517 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 22 Aug 2024 17:35:53 +0200 Subject: [PATCH 156/215] [unity] Fixed SkeletonRenderTexture meshFilter null when fix prefab override enabled. Closes #2608. --- .../SkeletonRenderTexture/SkeletonRenderTexture.cs | 2 ++ spine-unity/Assets/Spine Examples/package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/spine-unity/Assets/Spine Examples/Scripts/Sample Components/SkeletonRenderTexture/SkeletonRenderTexture.cs b/spine-unity/Assets/Spine Examples/Scripts/Sample Components/SkeletonRenderTexture/SkeletonRenderTexture.cs index bafe6ee4a..a04063b9f 100644 --- a/spine-unity/Assets/Spine Examples/Scripts/Sample Components/SkeletonRenderTexture/SkeletonRenderTexture.cs +++ b/spine-unity/Assets/Spine Examples/Scripts/Sample Components/SkeletonRenderTexture/SkeletonRenderTexture.cs @@ -128,6 +128,8 @@ namespace Spine.Unity.Examples { } void RenderOntoQuad (SkeletonRenderer skeletonRenderer) { + if (meshFilter == null) + meshFilter = this.GetComponent(); Vector3 size = meshFilter.sharedMesh.bounds.size; if (size.x == 0f || size.y == 0f) { AssignNullMeshAtQuad(); diff --git a/spine-unity/Assets/Spine Examples/package.json b/spine-unity/Assets/Spine Examples/package.json index 705bb9ab6..9508667f8 100644 --- a/spine-unity/Assets/Spine Examples/package.json +++ b/spine-unity/Assets/Spine Examples/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity-examples", "displayName": "spine-unity Runtime Examples", "description": "This plugin provides example scenes and scripts for the spine-unity runtime.", - "version": "4.2.35", + "version": "4.2.36", "unity": "2018.3", "author": { "name": "Esoteric Software", From b214801a0a95b4f69dd5f6f70b341c96ea83097f Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 23 Aug 2024 11:57:21 +0200 Subject: [PATCH 157/215] [unity] SkeletonRenderTexture: Changed default shader passes to only 0 instead of -1 (all passes) preventing common issues. --- .../Other Examples/RenderTexture FadeOut Transparency.unity | 4 ++-- .../SkeletonRenderTexture/SkeletonRenderTextureBase.cs | 4 ++-- spine-unity/Assets/Spine Examples/package.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spine-unity/Assets/Spine Examples/Other Examples/RenderTexture FadeOut Transparency.unity b/spine-unity/Assets/Spine Examples/Other Examples/RenderTexture FadeOut Transparency.unity index 596dd690e..57ff07b00 100644 --- a/spine-unity/Assets/Spine Examples/Other Examples/RenderTexture FadeOut Transparency.unity +++ b/spine-unity/Assets/Spine Examples/Other Examples/RenderTexture FadeOut Transparency.unity @@ -1059,7 +1059,7 @@ MonoBehaviour: quadMaterial: {fileID: 2100000, guid: 4c507f887c6274a44a603d96e0eabf2a, type: 2} renderTexture: {fileID: 0} targetCamera: {fileID: 0} - shaderPasses: ffffffff + shaderPasses: 00000000 --- !u!114 &1786065615 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1357,7 +1357,7 @@ MonoBehaviour: quadMaterial: {fileID: 2100000, guid: afeb0ae2ea2cda94796515bf8d1b3cb1, type: 2} renderTexture: {fileID: 0} targetCamera: {fileID: 0} - shaderPasses: ffffffff + shaderPasses: 00000000 customRenderRect: {fileID: 1089682727} meshRendererMaterialForTexture: - texture: {fileID: 2800000, guid: 4ea2c33e839afb34c98f66e892b3b2d2, type: 3} diff --git a/spine-unity/Assets/Spine Examples/Scripts/Sample Components/SkeletonRenderTexture/SkeletonRenderTextureBase.cs b/spine-unity/Assets/Spine Examples/Scripts/Sample Components/SkeletonRenderTexture/SkeletonRenderTextureBase.cs index 6c4c9de86..d3d4c6d14 100644 --- a/spine-unity/Assets/Spine Examples/Scripts/Sample Components/SkeletonRenderTexture/SkeletonRenderTextureBase.cs +++ b/spine-unity/Assets/Spine Examples/Scripts/Sample Components/SkeletonRenderTexture/SkeletonRenderTextureBase.cs @@ -48,8 +48,8 @@ namespace Spine.Unity.Examples { public Camera targetCamera; [Tooltip("Shader passes to render to the RenderTexture. E.g. set the first element " + "to -1 to render all shader passes, or set it to 0 to only render the first " + - "shader pass, which may be required when using URP.")] - public int[] shaderPasses = new int[1] { -1 }; + "shader pass, which may be required when using URP or shadow-casting shaders.")] + public int[] shaderPasses = new int[1] { 0 }; protected CommandBuffer commandBuffer; protected Vector2Int screenSize; diff --git a/spine-unity/Assets/Spine Examples/package.json b/spine-unity/Assets/Spine Examples/package.json index 9508667f8..9f15b3a28 100644 --- a/spine-unity/Assets/Spine Examples/package.json +++ b/spine-unity/Assets/Spine Examples/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity-examples", "displayName": "spine-unity Runtime Examples", "description": "This plugin provides example scenes and scripts for the spine-unity runtime.", - "version": "4.2.36", + "version": "4.2.37", "unity": "2018.3", "author": { "name": "Esoteric Software", From 4ad2380455a97292cac91ee8d0e6591ec5f5454d Mon Sep 17 00:00:00 2001 From: Anurag Devanapally <6226493+andeart@users.noreply.github.com> Date: Mon, 26 Aug 2024 03:42:25 -0700 Subject: [PATCH 158/215] Standardize header search paths in iOS and Mac podspecs. (#2609) --- spine-flutter/ios/spine_flutter.podspec | 2 +- spine-flutter/macos/spine_flutter.podspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-flutter/ios/spine_flutter.podspec b/spine-flutter/ios/spine_flutter.podspec index 7c725addc..908ab41b2 100644 --- a/spine-flutter/ios/spine_flutter.podspec +++ b/spine-flutter/ios/spine_flutter.podspec @@ -19,7 +19,7 @@ A new Flutter FFI plugin project. # `../src/*` so that the C sources can be shared among all target platforms. s.source = { :path => '.' } s.source_files = 'Classes/**/*.{cpp}' - s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"' + __dir__ + '/Classes/spine-cpp/include"' } + s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(PODS_TARGET_SRCROOT)/Classes/spine-cpp/include"' } s.dependency 'Flutter' s.platform = :ios, '9.0' diff --git a/spine-flutter/macos/spine_flutter.podspec b/spine-flutter/macos/spine_flutter.podspec index 931b9f54f..7c68ee67e 100644 --- a/spine-flutter/macos/spine_flutter.podspec +++ b/spine-flutter/macos/spine_flutter.podspec @@ -19,7 +19,7 @@ A new Flutter FFI plugin project. # `../src/*` so that the C sources can be shared among all target platforms. s.source = { :path => '.' } s.source_files = 'Classes/**/*.{cpp}' - s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"' + __dir__ + '/Classes/spine-cpp/include"' } + s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(PODS_TARGET_SRCROOT)/Classes/spine-cpp/include"' } s.dependency 'FlutterMacOS' s.platform = :osx, '10.11' From 4e5e47d375474c241d215666bf6b7d2d4389a780 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 27 Aug 2024 13:47:21 +0200 Subject: [PATCH 159/215] [flutter] Release 4.2.32 --- spine-flutter/CHANGELOG.md | 3 +++ spine-flutter/example/macos/Podfile.lock | 4 ++-- spine-flutter/example/macos/Runner.xcodeproj/project.pbxproj | 2 +- spine-flutter/pubspec.yaml | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/spine-flutter/CHANGELOG.md b/spine-flutter/CHANGELOG.md index 9776f19b6..d47f0eaf1 100644 --- a/spine-flutter/CHANGELOG.md +++ b/spine-flutter/CHANGELOG.md @@ -1,3 +1,6 @@ +# 4.2.32 +- Fix spine-flutter spec checksum in `Podfile.lock`, keeping version control cleaner. See https://github.com/EsotericSoftware/spine-runtimes/pull/2609 + # 4.2.31 - Fix bug in IKConstraint leading to NaNs. diff --git a/spine-flutter/example/macos/Podfile.lock b/spine-flutter/example/macos/Podfile.lock index a13caa1c6..57fc42d38 100644 --- a/spine-flutter/example/macos/Podfile.lock +++ b/spine-flutter/example/macos/Podfile.lock @@ -15,8 +15,8 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - spine_flutter: 9cf72fc0088c2820e80a4d3dc83ba29ac58f40d1 + spine_flutter: 75f9d54a630ac150d238210f9c211529c37c11ba PODFILE CHECKSUM: 353c8bcc5d5b0994e508d035b5431cfe18c1dea7 -COCOAPODS: 1.11.3 +COCOAPODS: 1.15.2 diff --git a/spine-flutter/example/macos/Runner.xcodeproj/project.pbxproj b/spine-flutter/example/macos/Runner.xcodeproj/project.pbxproj index d04bbf466..ab041705e 100644 --- a/spine-flutter/example/macos/Runner.xcodeproj/project.pbxproj +++ b/spine-flutter/example/macos/Runner.xcodeproj/project.pbxproj @@ -203,7 +203,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 33CC10EC2044A3C60003C045 = { diff --git a/spine-flutter/pubspec.yaml b/spine-flutter/pubspec.yaml index 5856fd261..12c8dc7e0 100644 --- a/spine-flutter/pubspec.yaml +++ b/spine-flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: spine_flutter description: The official Spine Flutter Runtime to load, display and interact with Spine animations. -version: 4.2.31 +version: 4.2.32 homepage: https://esotericsoftware.com repository: https://github.com/esotericsoftware/spine-runtimes issue_tracker: https://github.com/esotericsoftware/spine-runtimes/issues From 4fe9e4582d541061d9dc1da8772b2f60aaf17efc Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Wed, 28 Aug 2024 15:21:36 +0200 Subject: [PATCH 160/215] [unity] Fixed physics constraints ignoring Z movement when Y-rotated. Closes #2614. --- .../Runtime/spine-unity/Components/SkeletonRenderer.cs | 8 ++++---- spine-unity/Assets/Spine/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs index c41645618..8f9ade241 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs @@ -303,7 +303,7 @@ namespace Spine.Unity { [SerializeField] protected Transform physicsMovementRelativeTo = null; /// Used for applying Transform translation to skeleton PhysicsConstraints. - protected Vector2 lastPosition; + protected Vector3 lastPosition; /// Used for applying Transform rotation to skeleton PhysicsConstraints. protected float lastRotation; @@ -520,8 +520,8 @@ namespace Spine.Unity { public virtual void ApplyTransformMovementToPhysics () { if (Application.isPlaying) { if (physicsPositionInheritanceFactor != Vector2.zero) { - Vector2 position = GetPhysicsTransformPosition(); - Vector2 positionDelta = position - lastPosition; + Vector3 position = GetPhysicsTransformPosition(); + Vector3 positionDelta = position - lastPosition; positionDelta = transform.InverseTransformVector(positionDelta); if (physicsMovementRelativeTo != null) { @@ -541,7 +541,7 @@ namespace Spine.Unity { } } - protected Vector2 GetPhysicsTransformPosition () { + protected Vector3 GetPhysicsTransformPosition () { if (physicsMovementRelativeTo == null) { return transform.position; } else { diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index bfc24e12b..9a49c9912 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.2.80", + "version": "4.2.81", "unity": "2018.3", "author": { "name": "Esoteric Software", From a2ecb59f1ff7c3b64edf71cb61066211ff22b2bf Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 29 Aug 2024 08:38:50 +0200 Subject: [PATCH 161/215] [ue] Fix 01-basic-animation --- .../GettingStarted/01-basic-animation.umap | Bin 226322 -> 227371 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/spine-ue/Content/GettingStarted/01-basic-animation.umap b/spine-ue/Content/GettingStarted/01-basic-animation.umap index 44c329f582decd506634acee285bd483a773bd71..a31a2f0ee3e6345cbfdf46112bb1e9252059cf9d 100644 GIT binary patch literal 227371 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 literal 226322 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

    s9LmWQRdy)eW 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 From 3a1d2c7d98ee5cbbf0db3d517e6761e59fd75be4 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 29 Aug 2024 08:54:46 +0200 Subject: [PATCH 162/215] [ue] Fix 06-cpp example --- .../GettingStarted/01-basic-animation.umap | Bin 227371 -> 228937 bytes spine-ue/Content/GettingStarted/06-cpp.umap | Bin 212763 -> 212828 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/spine-ue/Content/GettingStarted/01-basic-animation.umap b/spine-ue/Content/GettingStarted/01-basic-animation.umap index a31a2f0ee3e6345cbfdf46112bb1e9252059cf9d..570296ae125665274e0745d0cec4f89aa19a16bf 100644 GIT binary patch literal 228937 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

    CxtIvOZpqHa5_2%@T}7Thmkgcdkk!`j~zs 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 BzP11W literal 227371 zcmeEv2YeJo`~RSbfS`y7h#*IiUQ#F_2y7}HLJC#nF3BZ1Npc}~Ap}8A1T0u6iWQA0 zii(OTDvGjT!G?Yj_%CKa!8@9CG(A{O!**O$FsfJY z2QqeC*R#pZ-`649XJrSwc22$DKXYf3l}A49(cxU8T|MHrzJwkRMfqLI9U>mNS(XCTmqNPvWJ!#nRn5MHP&3bO};pa-~6Kzq;HueQ$bJu?U ze)C5@+IFPzBBEXO;au0F31h$fX55HJx;*pjOXWms|6%6cFOBWACiTpAx9phzw4(>n zKH79*<-|H;htF@?Zr`2i;)O^b_(mU!7+pQMg{vE!PxO&3(O$lV)Dw4(*<4jfLr<;SyjN3TkFA+=W*q7~%S z|7zl>4%1669I#;NWu2NgMtU7}BJt~{Uq6HZYmmm+FXaMF8jBImPN1QRD8J)69)Q(5r8wVJ?ChPA>+-rw z)14l7S!s^b(|eRFzrZ^@$6f5{oiUByq?DGrOIiMBx34~x2EV<@<<~VsJ{dWst`cwW zBzLJZYi#!A&KxiMb$HLg0KDXBMPZASg~KnP7#D_XvULP%xP*PIr zo&|6_Gc@dbn0wZmFL=xVkBXI$lS6HgQ^DL%9D3wz#4Ig!R8ZrTI7_`1Z1}qUE?z8iDJgIg#L9~Kz-9AR=5NzV=cVCO;!P;?x-$!0In$lRi2BMcM;-u_ zvq8@&ag-O2c6mI+p@Em|@H$x2UwaM#qOubm)16xBLC+ke%cx%qc6R zKBj?KO5=Of*yPdfTpBC!lXH`K9SKH7)B}lS+1Z88G*@x4GndWib@3>kcnEX6%i|&$ zHm>6(mjEc)KwudubzUQC1Zb+lGTw1T=iZ=RsFR5xvf{g!e><0plsb6<3kxX&nhyp) zJpBYOTC%&0^5fk$)afpAdP^(V%8QcT0eZ4iiqIf4ooM{wX^+S7z9gbIwXCo(*_mCI z&s$>Zq}**hmy}`$B}P3ga(VvhKh`(k32{a)>soZh3XUgDGEBprF)MxnZxoGBz;zTB zIt!`&(P5pJY+20vQ{!g1ib@Jyc{G}xX%3Hvb?)*WS$IDg2Fh^;wHh?^=vPZqf zm?*MSW>KUZmp9WX_KXro=1I6vWiF+9JR^2l@* zS5PZbHIFy{F^f0A@M0Rhxz6FF*=SZN^{}V1M?T9lALYy^RXN7#%*}MCm6hf@Gp0KW z)17%9cJpJG4g?|+N2QEOo;J3`F{8}MX61dd77drkbsQm{{r<~ot9XBpa+dO{7dGk4 zTQae*%vnM|( zoDF;kjCOhng0374fscpIdjqpYwgxJYu8+CrNe0J+v{}~u_>)~kFX)FvBiZI5*SG|m!eB3rSUY%i<}X9hl`_jqJ;k1Xrt%O9L);9msT190#kn4K_SLPjd12CAGu_@a zH{m3~JK0(4W>3sJat$AeG{!w>(*)9E?4d^4m-3OA21rRgS07q9hLWEy0gsV#DL?YyGR?spC4G=ifd!e zrLxR)xyw8}ZP{h4b>dfjc~R5dW%&igPLBueyz_}6pTR^(EG?rcqt{Q(b1|>+yP$3H z+@$<0-booWdysaPlfc-ufA3B_-}sZ@Qy`dMF3_vFDBl zvp4{R&Vso8fp<1?otfovLLVj+=NCFN3#d5@+%&-_{QTVuTyYV5l!H1W$5G-;BJGa! zPA^$^9-knIDbbKz>L?E&;kWH;wza4FWRrj>hcj1lxdo9?;K+5Cdsx>$hjY`FOOi?C zEX6EIg`h5LJuKD7YecCCV=s~BNR;5dqqncOi3~_Rkokbo8PIlejI-PKkIUrap~CA7 zjE67B^i)Aiaukg%^%l4%yJ_6bEFJV5+K7m0ZV%aLG#Ngd)O?|!rMtbFZP(ua8n+Bd zE~_M$w0$ni{h`w~l#@&kShBo+WAnzloaO9>&MlS#T1kbDq7ptFl3g_8b9EN~!Mpo; zG&wDzyPTo?Th#Ob5!DQ0U4phWWvMnfWK582cBQ#RqS?BiB{t zVfVcpvl&PcEX<_TeQ8cwQWbk?T(aak_w?X#U3qzBfo|qHW7@DsHbCJdQ=%OHjzT{6 zg5zUbR@Zr$(+F85h17Pa3}M^DE_-9!>ln3qM%MVG0tZ=Gv{cC|-idD2xD{h)rOamE z`eh?7>dBRf(?PHPY&<6!TTdD(@5g+@nVtU%E@#W z5`1W-%AW6WUmT{m@Emy?zB(Y~AV*PH4qyX1)Cu}Ux_iZSQP`ggPcLh{u+*rlMER#x zDsy9NDI6b9I3!DIqPAi1p8D-HXb_$cO@|qzeYpbU#a=US&xIYUoxtB$%cgsyFrzUwFK=El78QE@tDte*4jEFl}y}hN6z$22btDhHs!BDS3*gq zMB>KBW4X-QE`B@#N>c1yJzFRFOPFvem`_5oTBPjxK})O(CqAC^A@pD_d-Bo0KG4co zRuoXM<33)gv_q1@c+QpUQ<`0{pF;DChTGK@q~+wGT|J2~KPzQr+(9dEWzE@$wx8zPA?8 z-^0k_!bB<3Z|;Bl<0zzmQc=pJu-sAM;et&4a9?k(kb?bAiEtoreH7~v^dqyX*slER~}NI(Ay zq$;@rj^FRfdJUF!YN6ZV4Z!30L!bYNsfAYTa$aS_o?hie0&+c-OZFIT3@oZYF%#_* z&>hKSz-wk+|Ex;~!1Nwk=+1T&2DCM+o4?^Ev>UgP_@Z^y{I_QEw7LEasJrY&Py7cp z3e|#>hw<)bF?UWbLZk5%lG1)Jz)U~1jJBgnx$Seuf2O|5E1{8S-R5LhmzUa6+6dPA zns+|zgwh5#HaOPUcgMdTiLwo&gQ=WjVZ9Ti3BG%Z4{ZjX{vRu&dwiHv;7x>2#KaL1ysNxvO9vRzIa5_~WwU(0-#F z9&f14;$e+0I&B9G7QR+XEOQm+!Y&z}%kJngV`6}zEfD$GWSg?w$50sE$}wPuu`%b~ zvI%X#nJ{Ot0^^oZM)pPpT~Nhz?GaTr3OM3qj)J$ZYt&i0y#=WboKLVbn_jvA4Ng2-dXnMog&JVTPCUdg z$VNMhvYn;e=D(rsQ_rBqH4+t>^cuVJ@Z3u4z`_h?CA zS4=x`VD~(_FcG}~QRv&iqI&R_op15Bu4=Res_fa?<{MrylAuiVs~XlKp?5zhQP?F^ zIcS*}5JrHgCr|IwWE+7`4 z+yb0;J2<9mmDKjZ0tYowzofmT<)kr!bB~k#y7cw;cokg5W6IDEWApgn@?^UC7-R!l zU;Py{i?&a`Gye8GUNCoVS)o(T34C2q(tfdncN5M^GH7v)=`taK{qRAH@1a0QI3_vJBe1bdRIxTd0Ik88JJ3m&o=4hgDki z*n_f7<+Iy*T#%0jsmdN7%?fW?e~{Q%Vq8doy!t*!g0B+%Z+BvzVwly5&k!oxQHbyp#8QaUK4 zbNN>r!@Sc>A$H};lz~SS|w_xBLy=r168Rt!AISz81LB=z56Uu(C}X zG@DpM%Bdh>&r?T`P~coqWUysl|7SQ|+u97E@b%Q}yMaR8_GW;0cZWsSqmgwyeF=tL zv@;ovEZBP1Z%^HEC2Bvm)I}qk{rKIA?!2trg2KTW-y~^Nw2YsQYUUF+w`_0Bn*w#O zk+Avy_NCJv0CpnopDD|{N6|czDOIC~eeukmm)j60jjVFoKjF&XHJjTkK)Huo3QfHg z*8&TnTKKg0uIBbzfI8km+X$>h#yYHAxM58u5 zyNK7Oo!>*x2y7+3u<5g|7(D5G-!nbf zyWX|&6ZA!3dpUsfbIx>J3y1|cdMFQ>d-D*~KICDB!(%>u4NaTjnCZ-g88bF7&qE8p zIj?_{9H3*nG@*zac+;BS_y(|(kyGF-a_VWayjt z?28-E;pOFL8e&KE%O@P$d4tfg7fy!da|GWM*ZY&#gVRMa?D$hN9_3~6mJ&=$__GNE zx0H6|b@P^%UopFV0MTB8ma1`fM3@;v;$WD7WY8)CpAi|H@`9X;G zpaX69u@9fy*({h2mB~rx$h1%Ht)Q8i`kzD!7cCi%dTZ&>+EH6%Ty)TW8%8YZ!L|%g zTxfFK1RCs>c<-}-C5YNsWA&BUZ=n~0ByFpGS)I>1V0H$bw#cif%Dvsr;AbWgxpb7A z{MKl6mSFRR+&f3RU5?Qiq{$Wd<;R{G+c^>koA((cMaMB(DR@F#U$|*2s_89o7Sn#_ zP9MOMSwL1)vBOo!&FuA~VxPjiCeL;ePdrP4CjQ~B)qiq;(Ai+7tAuSha^_1Ig8Uqh zA9(1-ZF}eZBRmJWL`OHU7YAR_lh>xyMV+i)qTl<$em-Qg$f(Q5`9T`ZP9D~(!>U;H zSr#qpVq*e5@_CQA5zu^D#k5P{E+l0m_i(gsm^kB^Jvc7R8Xv_jZn6BZ7LI1i8vcBf z7LH*fd$eq)g=5(t(Q{J)Y5hK&P#ROq9W9`u#*+dfZTVp9y178Ob{mt-vZ4wbU}g@U zRk~hy_c08d39jPY5cB=~k#DU*n@n(*7Ul*F;kwtY*oFi&DxP9m^5Fdkx)CMtC>ejE zEHH=n=8{9{a8;66o7baT^+JqDPwmkTF`Y^G&Y;IyoZ0S*-X0NPty*n+A?8$L^(>*| z({sOXep&z8#uO;@1T&t{WY%&3O+Kdt?bD=dS_v~zN^nHYE> zysQ+qsKuSHq0uEB$Z!;<!&hGf-_U6|F6@ifO}6K2H^B%5JmHIll&Z`D|4{ zeovPMH+HH%ea%1(NDn=u`7UUvGu(YCt#_g?Jo3ux5Ff~ zOX$;OQEW~9tGUIWNGE66ZaSw8&KS!-JzfukDA@Yq`4h3b)%C8Do&aXh)M~Kl<_csI zddwWf&M6*z3`NnbJ#YD}rP%Wn>;GxfA{Kx6o0F$vWCx_Qlk7WxE`FRJ+G$6L)23BD zy<_Lpk4_Ge&~2z_ZPBUkIo&bo1d;{fp*ZuTV z2#R~nOqn(^hCR3C_QseJQm~h)$xdBeXDX(Skug~IOyeBpSvdJZw2bzQtf1`)G6}Inf8*}DJ)s-NILm{u4WNS!+%)}dOh@90U+2i9 zbpTkgoMWD$*PahdiF=yEw60#+;{hk9<54Jj6sXwCM-7{MTKl(wNILPT@UZthNuNWC zgMptV@wtPYIe+uBKu%!h$Zfr%0$7&>J}IoZ_>!VPY?^42N=nk`*+(`x{>PoD5lrdr9^ffmhSi7lHn!^+e zHzqDjKJ7jjL!1+8As+1&GaV1x<3jmx!R{dAP7kYI;Tpe}PE*3_!gZQVO1tI%V{|kg zoKNKBQrAqfq-+kGN5IFHM^C)jlDc=dxjZ%x&iI|}8aHg*FvIDzk%epHO&`Rd&0TCO zaF^S>Zd)#;<)oCjbX710nlG4s4k>d~k%~*M9l4~qq?CSmpCKhRxnIA8*o5Sy{>iZk zsR^;sv9YPKsjP^EB3fb*nkAeRU$rs$+|ettKInz+rR+kl|36Eq>semh(?y|yLR_EG zTNPIbq53*uDK|&ZULm>1Ymjqj$+34yZhj4N*+TA5lA9Mn4*iYGCwT9X+_kloyS^53 zJ1D)SwUoQN7ILWX>{`mnHrKav)%qem+2$vcn_J6#udJnO%H3Sce3#Tx?w4BTTUpEWo~WhVx?0Muuce%vy=ubCJB0f? zYmwe|l6$b0au3%+?rlo%fm+DDMRHF^kdt~+Vjbi6>Kf#(5`7B2dt(i95}QbGK@D;@ z3Eqb!_f#$9-Xyt4Y9aRq$vs*Nxz|ZzCa!(50&T7hs-D7!SHBv$Hh=TR! z)q;VyVynAE@|;asoTyIj3c=9l2hvp{foKY2@ri3|4f$yj+W(sJ!^#%d&$=>UZzo`j z()+|YT!OK8b@`z<(t%yu`b`mO{iMsU1JMFDE#;@JI2em56~ZF@zms1lk;IRb-#5BE z(SNv5|8YFTm|d5jAcc6cj+9Kb{U_V=2c1lNN(Htb;sY-?h*Y1fAwQWHL~F`Vu78f{ z@&i5{FS66gB>H=^G8&GuK(!r(US~4yI0UrzdJ6W~5^=xQKj2lz_BjWq!x63(Z4+cdGdv*7YCuTbAn*!1%|tZ?Wb_ z`mYnOv3_#C)#r!(+go)B$ozizm-1^y`P~*Fzq)dwk5ECK_$k-#d`eG_aU?D4cfNu7 z{if?b=)!2I@BsUP-^ux3JjO-11^zlCn9xoTU#hC=WQU4Ax7bG4u& zKUu9gw^oxGk!zdZwIT_BmHgJ|@{3)s4Zub#{&{}gMOt6#@&jHL>+*YBWHV%#oDswG zt!@2Y5m687^6Nmfz}lQX&bNYMYHa7Ph_z7bOf_i=)ZbU;HG zC$$LwL2+=e57RBL$EU;t{cLjQ2pYmDH|}wPkGi5vwYd-%=i>ScwB3}Ko)#%A+e_L| zkz}gUP`;X;Il{aiek4jyJKa1MUz(GL*D!Cw#n@dW)O`l==t54_rq-F5@<}o6Mblo@ zJq3kcLM!tV_rUWMFH+?b6X+T~Y<%8?qSA3$y^H#%rjDH9a>aQ2_l*V1TRwU8gx&=s zCsm}E&x|fhh|Nuoo;|LdI7vf?CPwEMqzsr|I;MYS>WtC}v%0&-6wv!82`M9-MFR?k zW@blCpE0sLqhQ$diIc~~%|?0&bFe`IX?1++_Vd;sJ zV$)~lKZawVjsa+#t5kmpT9l>teAh0@1yeqtiZmC|=+c2SmA$Ap9sS_q$~7M8A- z2hyRq5z3=48y8|gP)L_*&#u{sTm=|mkCy=r0krV9Gmuz>@4`T_@?`N%4i6vi(J^s- z`uB^8(q1Lw&;9T>jj91O$lB9E@@ZNAbUINPRup6C37VOB$e5nz(aJxNsIvUJF9Y`C z+|H6CAYZj+o%ztD7pu~p_>`4{-ZBLVV2%e);6^Oq5y|JAj3b_M6Z?+S(_SyO#Y^%_8}KA`FNI}ND00c z1y;!5=Yz2yQN!n=u%~#!MMBg1yNU#}Jv{~IBsD>wP^9kyU@0CG71O6zRKH$PeR@X4 z_39H%4`gvODAkq7pZx4YX90D|aKPWIWPHHy!T)PC{BIDrZz)1U+2zd5oNNUBPok%s zX0kjsgLyc$jE!O0M9*dgMD@r)8)o(iu+&I9jQ~ zDW@Bp*H~(UV#=)!*(+LW1}U=5gY`OF$c&s z)ghx)Ym4gmvaN#UI7`F`M_L`$MDWHEvVwKZqPr4m6`*VeNz@loU8#*wiagehC}#?4 zFsHv)W0?-pcJf*W)7H~uDdfmHO*gV6ZxoB=WkfoWddwc^SsIO==~ObL9vOQW(Xtg2xm*b$U?9uj zvGS-)KxPuT0t&n7xKYDy9kPS8Tq5yg4@p0m$Ej%|nMX3u)l2x4trN^Y5>L~Mb!f9l zwu)@YV4KzGW{j8zVw&GqKTGFelqJr{CL7Z66?nXkiO|lynghTN|adQ1;_b6t*b1zUKa*? zt!A$5k(%q=RMa_@S}>?X^!eEt`m_!$uC*Tir*)DVV;JFZHrM1qjiIMW?N)R7TZmEx z%Z{2{PGb~fueWYCuv35bXB8wbQ~akjku4G|btdIIo9dNEvsWI4gRNGRjO+thF8#O) zjx{-V=<65EuMU}O#`KRwRj|a#)RslOJ%d^~GPjv1L(MhmEu^}VW*kht(woLl@UJJ~ zFcLK>A~i7r74w_a+yAtWWqh&Hpd5N)S%uunOrMTE}3p*eISt*#VuuNX-1L8a|`<- zkNPfXht#1hR%0}Tv{J_jJOyq1AfL6>FM(8UeeBysQLT(|*xD3bBhwN$$9?I?~3I>&|Fy5!GQ`Yn7*L zVIUl{b{)RH2L_EAN13E2bEq{nZ5*zLs^fRBRr%%W-$`wRe4vZ!uq#-5+GlT1{Wyh9 zrCqu9)SucNI59ljo_e}H=k*cyeZ_r0em{k$B4zsvUYw8}Anv0@KF9%iXnDz4SoKMo z%q5yoC}~;D?>~m zznDONv4Q+z1Np^@{PO6L;6l=ePF~Yko_9RS&!u~P+XhoRSq>;OTJ7XHObyEgBU+0s zTTQlEuwP<%3;g%{C05tQ|J(f%+Vim-QE2aA&&Ni>v~ z=hA4OOMCY?%CGXBStpUI9ESzYEhyI+o^wAw>X&!w$ z)i8}b2lekapjV&%J#3Q((a~tHsHh&c$%FdE#r2Ad?#fRxbTI=TM8j7A5VvP+zqnp~ zV-clqzbGE%f8$gXPm9n`kkHSvRPc`*@FU_bM66}+^2gis3Gl-uJg0$Q?!c$meYd}O z;j*+DG(e-c9@TA1Qx(ydF{0Qa4;$Bt)xBB?J@I8c3n((F9B)%F3t=F_m zJHgc2;RZoNjr9-x;Grin&$UaRcT$&*KejnAV)->UJ$C4^d)~aAON)eBrJR6z$MAoL!?H?jz06l2jW(y z7TvHheQ5rlhxj*3k&zy|0b}Ep(kI`6l7R(I5*2F+8UINNRh*tcqw_$ZA&@W0zpmdf**=c2fCg^O}x$A}ufO)3dH# zDBq6LCy+1T1CQ%RkqPDyt>u*xh0_|X(tPD+rH6>5PpJ1v5>lNb8}S5^FPW$^dgbw% zRTrsYjonwI5(cp2q~FgJ%qA2a7jE@}Knt$~o)&>Uhwqi)3Tw(O8ol;9?1Sqvl&d=I z9Qp8#4Rh`t^2B=~1%D<&YKH|4Wz_53RL~CzroQkTQom3wzY@&j!iUFuqN}LB%sWE} zRIOc;2L)rT@X@c2h;Y^Ngv|ku3PC)pi7PDiE*d?YQCE~tuh%C+I1{dbz8F+YAN9eP zgL1_Wh1lr#GHm7ai9F(XZP`v+4t^dow^u{@&UwDgotI~$j|Y12`Jilk>fe?pe$>u^ zpZw^>&JY>uVOZl#^k(a>CpPt1mweNPl|y=eou$Z@L?I>kft^F|H2AGiI(|lR-H#hT znSNg+S~HP3;__#9sq463N4{&PPaRVHLJ!N1l(gFTA&&(kYhCtX@loFLBfdFDTewHB zJ5YSvt{bo9KigQ9Hc^*IXdRvvX-2FAc-1mQ#7N#L)q(w&MwNU;SyrgpQB_Yg)(&0O z_@I5A2-c7bUmrA~cBwx<_m_;QpMM*+Ise+*-dWP~DcQ_uM5z~{syCne^6te-y%9HT zRX^UeJm$tow0|(f4XJZz3y#0_H8KG6N&c!^N>S%TiiY~ zA=hb7Sn0SuuI|D5k42(kyF^|AwSng!`Ogd5#P16>U0s~W|53i)z?F!Di8OF zkAW7|D=OfFj_Z{Ah~ZT`Tw(KWYa)KcSrM36PJUP&6NURgFl#*z?ND#bY`D!oba7PI z-;eLkJX^k^6IQNHl(N2g@a_<&k>7zF76YK66gCkqUu{ITVGV#Ke~KuNG*uwGSkMrbY6K*1C|xR;$-)oQ*qH05i7cU| zaN$;;Jx_@fiSa%p=+X=8d;4aM%@ffV=U&i}$Pyu-k93JB0X%7aKnz&txyK3teWZeF zBB5kF5>k*?A0fO+63FLM7Gu865?As)dwu1(5cV~Oh?r@*6nHR65cFkxMbN5Nh?lKl z!#5xMvuW4SPfxn%oGZNDM#$`WoYtbCVP)7w{hukANCp>f_1R_!K0JNnw*mo<2dYH+ zg6?rujWiF$-|>&GFcUlp;&h#-dGvUWc7d#I>4c}qdqow3Zwr5i@Zs^srh1-`O>&{g zC9E~JlF)M^roIJgY;)>j)nhDH)A{hl)Jh6{82M5?leNV?b3IqNBxxb*Qs^$$5uE0*Si@T zIj7vs?G{`;;HD2pv8!(RdHI^cYiFEVH-BVx^MAdYajJ64-F*ADgP*;BeeyTUr(D#x zeQwe>5xY5z_zwy7sH8A0Fv-0^4p#?qf#3D9X`c_rm#6t}oaDJn#W%~buYqV+ki&&! z=+|_de6uei15(hb;BWLVqFf-_s~v@7`}L2GijJdCekTv;pV}`4U;pkGHy|#dZ(@H6_X}Md@my>8 zXIC_4(0^pq#6z>6nXd4SV`55Q2y$`gPh9Abw!)Y9@KIbiX?*u-+N0T9J$5eHyT9?P zzkS_`AJ>Ge;SlNXU9x!6S9HnfiwRJoxVWS*T2&*`|Bv=R(#BOU{oGd1E&1@1%A7dP z=qT7}0WmFrHzW9^HwOm_8oaRO3y2|lBIE{X=?PE?biEvOzRjEx_~(-g5kc{778TRQ z3B*ql>A=^AAYh2)o@(LwVKk#UKJ^rX|p;c#@oUS1?C%gB8n2;{^S zXkU~~mPLl854t{#dw%K5dpc2!DKC=NFvBwm{L|WAhhLOQUoQQ<3`?JgRs*g8^;!;_5%m{k zT(Kqh;i3IkjhOsEeO7UO10k$G0mHs1-#4oA+ZgN}A&iu8VPNam;#|uk%XZ{=@gSkU zc+y1B$Ku`e8Z~gdkPc(MO3YaznYF@4HaChe;+-zS@Z=r`!n}oULWnNetJ)p?$BGhH zbv5F#kvs~{PvC1KjAst8C4uXtDPvKS_%;#2iK; z#-4eC8WhA%BK7JLxLEM3CUEyXlmL!9E)oLzTu*jn?|ZK}ML{vdWqWK%snXzYBqS3c z|GU8an;IdZj)DeH-wymyhT#z+oU95VIm%+d491nFdBOh@h%*IA-&m4{LICCR!Z_g% zuVqIlUV)%hjf8F#O5%CZAh!(3`Fjb-f-si*PZMzd(*$G#{vEU_Z|!fX1S>;l5=&-S zXrl)CH_*1x>}adp`|u^I9&G~`&$Q5HFxnm$y3O=x^Cf)UR?(yFv&H2W+WsZ9nSLf! zE7HaSZIyT2u@NKCcHLVg7TSzO+nTR6-KOp``%KDyUEN8KHulEr#TMF(MceB~EVPLg zQ_Jh3Rcc(R+t~K2Jr>&jCA94@yKYn6`xHfow#x61crCOUi?+Z_YI?NUmp@l1(DnxO zz3NtSEVLPmwzzM^O!}?ab(^n6g8_Q9`L2C$vV}Hd(e~XT3vHU+rWRb>N2SIkyG_$= zhnrexZJYlpvvixWx=qfc7TT2c$43HfN^I==(D%y0 z{=+S_8HqOkO}89G%lbz*H2r>?Z^Mbv3Q#7{#x{PPYN5?Yv?9-ttSV5^P7mH$B>X zD`#A)N1M|2+3ptF3`HCBakME(zR%2Vx3Rw*A!ze8IPfwEwmYlHpZSifEKo9Qd%kX>;1hRZR)ZeA5|kSr9c`^isX+{T!%yk*v(Rnq6VszDYWOfc+A2%k7TOHeZEE~XVYgXm zQ&+F&@5{(X)-Y@bgfWRWX8MyWHo99| z6<8B!^L70+-$EO;hJk4F^VL43X?nET*!GZ_wDOmiEVLPHw@I}5Oh1#d9>eOZH0eaKXuLT;6HsxIlZQ8r?%2IWh9&NTO zzMf^-ZKUK4wA&=w)Gy7h+tdazz4T~PzrUrzLYuK@lQXG>Hnr&o{eU)KUY_>!e5cnf zyUo~{wBewmm`QCvesj?5y3JR=C|c2>jXk-_vfGSB8{5IrW{)ZV%Is)U8g+>YL0j<@ z3vK@j+H7++n;vbpHT4GR(N?*Bp!Mq<{|eeF^N)UQcHO2v^>_%{{KbD*zs~WmpiTAm z{Ko8Pv$eaqpI*25+P-a}%~-S@ev;d5>Y5RzN1KwcJ5;yrZ)QDlWGLFy-J3Yt*k5P= z$LzXIslS`Q1tWJr)LY66t^GDyq#L%o>&uv_p^d4g|H?DFriedrB+=%(@$2ap+Kfb- zy1Jo-Hfm7(o}qns$qfRO-;O# zqfH&$`>5INHr4UsC_UQL!!4~fsj+BNi#4>3>~8usseS&1X?nEzHny{NcMV0Gzxid_ zO!~`trr+K5zf_Q}N1N?QpY`h;hN6wJVH|D#$L}-!)0F-JsTq2-v2)+EepT&XL7VTL zQHRWKw<({bXX?@ByQaW8mH$`Jrfzw{^iNazY)Z&X>icMe_3W;pX!Aem)9g0pJ79L* z=8I`GCPcUG{@6mBv1mK~w1qY%etUV_^mcl*DeuHsGpV6yQ%2?TvjqR@`%M3QoBCwY zi+GM%o+YR^Mq8@{L(%3>E#+ua&Uni7Yf^U3@t%qvZKr>3?d}?iHg)SQ9Bq|Z7n^=} zxALo(PuI_+?4|+M?yjL|Qz9j#=1Wk2e3553QNhP_(hi3pL&L?fa(R zZ}Z=I#fT8JT|313?PWvJ=G*kBwkDl-k?GN<4BwZmN1L+YMQbKC6m9-bUer#mPTO$A z?E7u(hgk#kX!BocJ#oYgMVr!SKS!IgeTM0uII7GW9P-4G|LgCp{We3<=AZF|K%2|- zCs($cJ{qjoZR!W7TVG}{6m7oJ^R-pNyLXr#ZNBT%n<^~0yX$-973{;qD>j8oysdW zPB8t+mF>+Lo%Cq4|1`#WcGpm}+0!rKy3JR&%=9}T>iP8(^k`Gs&bMY#L(x|0eplPw zox)5%liCLT7OzJeyZ%$_EWuE;*`I02b(?+QHq$?G#BNV+0ko-i+;JFB9;xZpD#6&@ zUB;TchnA(bHT{M;MxvqW2E{RHbQ!Cnbbm?Z^mZ+3<%r)HeWgUn#C-%zHvm#-mouf z+5a5-JnS~x^NqHe{TUG7@TTV})D{wL%KB#)SZJg6Fbr+#{Wrb@wE1rQ;7zlm&Hr`% zfeN*SM4Nrob5~nvqxLWkZ7+4%4761i4c=*Xw5bpD>Z?#&NVM4|ZMSrrp>~_UGFjy_ z=}i~EZFaQz%F|QzXk%}bS!gp9ZL|Zj1!(g(dT58)(dO^ILi>GExk|XThc%P_D`>Mt z&-%#pXls7MSiNqmT(xq(Ww((kGR$sM*bRIptyB^|F+18S)6W~DN1HFXwS_iAb({T% z_xLKo-e&JEv!l)SL62d2w6P!7U1jMuBXyf^{YL)n3)`2E>^3{ve0N+sRF5`wS+37Q zn~`W!4s?2fuM%2B?KL~v)R#I9*P~5&^4OIY+Kfb-E&I)le7`L0{#p8YX#p(j`Ox0`LD%}BKQwjO*2GbvrB|1tx!+m3BU zONet)<&7V$XLk*qNqtYB`>2IB?VIAhvS|KZLI7>AzioZN-cYpJb|l}$(bi;`>FqY9 zN7Q&#r`yy;jVi2}lp4gaQ+ZoL=5nA-nLgX}J0R-r376^7X8WSTvfB*RZ7efq0np~# zm*hA54v77e_p|kA^Le*iVd*vkhhe&n(y{|>{slLGYId}-JN7#DXj5K!z&cAXR<{YX zDKDRCJxv+4D^HI$`_L@wi6djtc6aPz=r+}U#PshaC^7wW^k`EbnrS^vX(-y%xHzyk@(Podm zo1;y+x53M1*KM}(bL}B$b4{|)W+>Ve)$tggNf~>=>}XS(m50ovm7o7+q0LaVv5n22 zw$P@XT-l~K>Zg!ZAy2NJ%~-TuH=RFCS(y<1f!TGN`deZXJ=**)Hni5HhN8{p zF6ZwhsBJ$n{eGKo?PYPQUbhYUz(Sj$Xk#m0f0nOFS)S>?I^*x;=id|$%%l@~SazGC zX!8$hz;zod`|%C4&!o!MGecGhO43pbZHA(aU9#XQ=r%>UT{Sz}*!BHG(8l6#wPsR7 z(Pm#z@&wSPUVGC!W=ETEVSk6-ZnO6)v(8BkMVs0ng`Zsc9(lm@U(~W6c}+XT6Hkh> ziTf?I8H={7Uw96>&7acwW3%fvcI|m7dfle{_LhY|-WqCs%h5eBbP7W0~`&>d~g=C0S@Q7Hx~ad4R7HZoIm4{OMgo z>^AlCt1Pq`iZ=DPf!uEMA6jbJZR1CU*loUDZ7j4IiZ(XyMsBw$zDA};oBxRgA>XF7 zopZi*mS8N}7Hr|aJjA{zG5uGbeKW5arMKH`U7xbvCp8vr7d^5XYf|OevrYePN~L*5 zh8}JH_G_&#Y8i?)TbI990d1A9^fUceo-03mCFE3Iz3G^RHbc?oo7eVUpw0K-y3fqM zyQ@rDHAS!6*x0ca+Kffp!+UQ9+WhYwF+JK?|3@wjL0iv3mfdD3+U)n7xddoa3znIF zCiOMGb+R69N^-LGjUz+RrVeV((dJvQ-}K)&s+_PrWOvuM>?-T~ZHA()@|@@SOlrIS zBJ2BYudWFBHl=;x9TwUQMVsxFn^y8QX`O3Kk2c?h2S?~XsCN&go{$($(0or{2)~4Ux^*u9Tq8@E5ZKw6?9EPGzxnW%; z&}O^hH0#@xIV+~=(Wai$%F=CyqRoHw;u|>H&X{WY{Wg1_KEw2A^A8$t*=>fR&9Nb8H=_V>Ds&UNiSKymykDQltNa8d{W$Y<01=fhN4Y< ze;|KSTvZ=1J=%QD9!=DvjScl#s{~`w*8BwjovX^I{-&Qv)%Q{}RZ?wIx2Yv-t#eXi z(H1|HuSu1@4%44p+4k(2q(_^5T&aaNL(x`Q_$EKOs(f*e=}+bDO`CGN&BoYwSf|^6 zUSRz?hoNX=tl%58EIkEc&7}2T>#kBu*aX^C+j?sU#9*|2cf>-Q_T61}Y3p=7+Ssst zmTvo((5CD*`?I_DsPxnIXj5;RY`x)UFxuoyYN1Ve+}8nUQ}4Lrd+2***~510H~gp} zjQkBh`FjaIv+Fj+_cnjxNTSWR_^87|+rNaijb=xiZCu_ZDm88ZZ4WPXTWB*FZT$C1 zDNWO(O<8xKm!d|xe3vEWCP5tEPJ7`&d zoO7+&XHw;txo0cX7IuL)+bxrlEwmYlHva{k-v!#(h4-v8JKFrNzgjEQ6cTN$v~Hq> zHfj*#)}(h{rlGCq=k;bso4T*<#d@^)mn}@N&}Jms{5LP>X!D&YdCKf)^Ig$CN{=?% zKT( z^&uR*_@hhwHZ?**9d!xS3r1p>BRo7pgj(br%uy!TUj))5LHhMY4l@NoUq?xUh`x?> z>AwC6y0Rk_uRzeMMrwjcJQEFVq}^UIJK7j~vW-G*63}gTzSzb>8#RbwXsg^=psh(Q zv@!eY-+QY%wE0HPZ*8H?NVKWHe7~LBZ9mSlblZKe@#otDy6v9gRuptun|ycI z(rrxb^H>Pllpi0p_S>qOVE@o=)6iyX{G7Gl*5i-iAv5Xm^T#UID#1Xz&G*_vZ)v)X z-EQ_(g7Ws|o%Lw5UvY4Zg*GE+QrrIS{8XOOG(FmU8;Z^Y+UR}KA29-LyR-5vv{6GC zwkGv2KX!n(>|66q|2`?Ze^Nt*8dsvt|Hd=97TSzN8@s&IK{1nBXxmsn1a0=tPi9+a zGZJl;ZSpO&QG@cG?!PVwnMsw4ue08QF?3C;_E^i&=KFe{>2;fbV|fpikSAwSmi*0S zmTsf=FwAbVuX=~0&40YP>A!?pnX|m79&NrK{<_pcn~`W^6-PPR)a7k0v>mO-Pp+hH zQ)ZP;w$NrI+H48Uzr-rR_gy#Bqs{kVY6#j`mz5JNv>Ayu|I#FmHhV=6)1ys2x|hEz zFLj$QHF74kXD`-f(h03ik2a-nW(eBU zYkFH>oiS9m`AS-IwE26TZF;n+w{{Fcn=N;4hNat#)NQ`Ti?rR{-+n(}_L;QuM#kTQ zk-NLf!*^Kcq=xD?b#OCnclXWp7TO+MHCDe$P@^YV&$k(iwg=bqXF!yrolTE6Tj7wA zdbBBPx?0cf8j3dCm9se7Y(Ly(?SOppGykTzoJrMl23zkX7>YLKm%iHbZKIc)9&PG( z?+(@LHrvi|);m|mqOIfy{?3)JS#Q&$%~v)jL65e|6>IaYH7PUjNpZ$r=V)U`a;=lA zE${WwqfK4(sD(B|b(=(6<@NJTe=5&L-IJG(N^hcV0yGw-o7*hZS2)K*6yyMGpTRa`Ic^@;fuGIl^JIy ztK`ca5XIkhnx)&QJq&xFl>Pc9-vMF$o;Lj|L7nsz|Du*eo2}JQ>o@!i)oseoTR7S( z2V8FYnbg^X}!H{sBW|WIZ{L0_R}ogw*J;ow6$Adtw{|1R^k&i!#AXxsRzwF6=(+WhUeXlT24 zi|NtE=Kdb~d|S+g)|%8%wAs?1=V-G%wchkQAgty6q0jE7F1747L(!%_so8C|&epTL z{@=3F^fRe#yDQV$0bvH7CD^0O`I^+9H`Me`irdTn2+?i6OBxTe&}JmsY|cM9+St@6 z)1%E7|8U4z0_%2~^rQ3|uZR#bXINJQr zoM(Epv9(h}(56fo=(NygB-;Efn{%|Wbq!6AHl=@Z$V_T``!VY+7(-`L^^>podkK}B z=9(UD{%@AXsx*}46GzHl^{pq43`LtQ^KQ*>vX4Ow;75y<-#M} zZd28>Oh1$Q=KK=!UV?w%h1QoD3`Lt770-2>Z|3`^UnQ`?O-G05wol*cV(ox115d74 zj~leF1@3##^r!N^$2Ww0nSsr2(c40sk!bTxo5#_n6y{mFZC$@;y>3&AS|(a(GZbyB zdvLU=|4A~v-Bx+mH=`A5+{(PXpYe+&>W<3U7TSzN8+}V$JC$d?kInuiRAwver|Qtg zzB*EFq0Lydt&nqmn{X1x5JIt=zDigXX3N@~rN$tD#&$ZBI zEZXEuYN1WB?HH$0<0_2(3cHP6^~O~e+Nd22`wob2*zeqKt4!W*{a!-P#e7XF(dKLZ zn}s$*cX!!IHsvq(I6d0b2d}kso1wamF+WFJy`DNm$-ZFaQTzSuibk2d8jmxVS%b(^~Ha*j6Nv)@^0 z>;L3fJ=*NA44h}_HY0VLa>aO#Ha2kSQM2nd-^|yB>e1$Ry>0F88mikWqkqtLK$_YA zV|KKuIXNL{v;Eb7j-}fS)omTOaJ11A58s*{ZEVq5J@vXxiSk?Lq=xD?`>9bv|Rl@24A*b^G{zoj`W+>X!7Hv4%?8U3UF}vNSoN6v(_Y#an+szu<)O}qo zyKVmd5ZzX}X-b8)-^L7l2E_J9oTl4aJYssZ`OkgWsn>1FPhVMfo1wZ*{`Ru(uZ^aE z;;7PjOTHd$>T4UXv~-)1x=o_Zf9a!Nntn~X=~#$vtK7cDI+Zt6xA~LL*S-UCb_dg= zt@8VkIeOj3W}j(2abzgk*eVxCo4w^+)1yr(+icgP&3;=C3vGs?&Hsw_TQJJw@0%WN zYKsS^>Cxsp{SOOmhN8{(_!-(+!q<11{tZ9-LvyC;(WYLKXuX$UDB3DF_R&t|ncehg zW5>6q>e0p)ylL%#7>YLE^y@j=Y`z;!e@@EQALhSvrO0>X^P;RB5JS;s-{91A+hdQK z{+%mZ`4gFX-DX>I+}Zm7l_HMIGDdcgF%yXt{E)AeZctypQT5)4I~ZTlLo+k72f zH~p6xl(@!2L(n$uEemaiqRrl}rS_!w@)4%jZOV>K7wFN(zOvB93`HA@Ud_>_E}wDO z>?c?DXBH_6)4iAATWaYxL(!(b(m{KBdCdvauM(8xV2;fJ&f(^&ZYH(29$=x(P_(HD;_c=4 zH<*5v;5+jCP(9jg(J2<%j78fgz4VG^T?&N*!SL~6IrnlQ{!&-;F;dk&?OSc({HlHhsqs_n3ZlO)R zOVQ7y{y$n+J0OOlt@4`-`B?(%c*yim94Ymhjnbpd*Yg4kZHA&vS^Flp+t_FErbnCa z;Fn2ywAr^Dx9m1!(Kg+$q3yP9)(*(r%F`4Ue40{yVv)7GYb@F(Ez+J8Z*z_5*Q6|Q z?O;9H*otWu+6+Zo<*Y9`+H8~On*M!Kb=>FY>e1%k`+{Y+8HzT0M|#%^v&a0srnlSJ zq}|O_Y774zcl^fNq-BpH>-%lgAcp-uDPzwaLCey!;=9fM77V+v^H`NyLZXeGad5hY zHfj(9(YE8Tg*L|OQ==*$T)>~ElxS0Ce_m>#?O#IM4zuev`;%j1Rcc&`Hvj4KJr>%G zMO$Ddwb1tE^GOOdt}izBIM?^@Je+5t%~-Ul)=WwbikVdH)H^{XU!qM(J>6-cjT*#2 zyKRZ~Yq-`bfhl$Khw0JAMznHUX#022rkH*vRnM(AK%vH!y3Jo;FR{>OEZXEu`oD!X z8+Ik>YNC1k<0*DQ1F0n#XVleZ2}wVlXmZx52R=CxVP}%VJ;DviH6Vwn_bhRbFw#4R zTr+a#ihG2cihG356ZZ%=C)b!<3vy?ZJD(ilg9aXGjmTXr5_=Tvu^FK+rk~x)fDIZT^)DP(*9%SIaN50^7C)bT!PjZRmdXeivE{Pmy z@IglyJQ)AI$$^Hjq(uoj;v!AN10VT;2YHkOH29!PKFR_a!~qYoNCV{u4L;}yqs+Jm zA8i6U?$O2yxuN7hN8h47(ANk{8ss1Y9{K|91-_(#jxczN@No~BPUH}O1i9hlhLIa7 z?h(G8++1>3lABJ>Nv>EpH~AhBhF>be@Mnm7&}RyVa5*`oGlpCtIiv+y&}1CQBMiTc z9O7k@LtGa*$X+gd$d!mNe9%EdJg*4D2X7WR@DWB@Nb_oP3&_n8Vca8p1-bcxHk*9N zgNHKV9%0Bp7VU#}0v)vLgbyC*puq>df*jJ7X`q})6LioZ13u`;1MNPK9Oy^`_Xwj- zkhxYkgb@$vfPayHD_`n8ukj)|o8f5I`P(Iuv3_kh{GH?iwCx<$r zkL=_okOOU^a0pKlG{{dDVfdiK2mKlmhQEm16mgF*_`t-aA`BmLa0o*da=1qrWkI>^ zp;=Vx+ zX>HKmgZ`4Z2OVJL*YhW`pVr1vzrSIL2odxRkmKH@?a zycfwKUC>qwhcM*eAonsk@NoYiInWRfbU1{!l0zQI_ch@Veu^CU$ZHch$l)GgIM5Lf zVfcuPe2^~kfqzAZMu7e;Xq$c4sj4yCHF8n+#`(m z&yxcWKJF0@_sCn8A9N`L{_DaajP!92|4DL4UnTbexkt$1UWVbXCHE*f@DN76?~_x> z$vhB-EPU`FgFJTX?hytJd9D*-_)-S`?r6-0$Q-hYWn&BMkp@ z;qMh;_`i|!lLP-OO8Zw4h7TU-@F5F+Lm>kiWN_~%ANMj0{|mZDc@PI_943eQpf2Dw zAo@P?!ABTz>WQ$V;l4h(Uq}vN(9aY!-2Y5;+{-Y0$Rc0x5Jnu_BMjLe$VZw7$lp)y z7&(ODA0&4=@!+3EeqC~CZ_vIa8u|n@$krhrGVsAi82S7`4tYZcd4Z4o5C&}*x$nvS zCBpFkB!|@}(neZ{gL{O*J3;Oza!3Po@Im{L9O&>t2md>A;2~Z3NE1AyBWa+6hIk00 zZjeK{5MRn63?Ax)aw83d;Uiy!;mdxIWkEY5ZIov>ImCr5!tl{fXbZF%+8SZ>1=kP%xI&r;18ca4`+~y28_I*S>>+nH-8UxJ zh}=2kaF1|Pa_5q3Lhd|qk8po-xKe}lP_ph zBeWzrRE9mfq>n-#75eKT%N2?v6FTd*8D&a>$o(3mCN7@q z;XVoeJKIz!vaT(KU=tyPTlAy6cqH66BR5M>p`dZ0A#UU$tkxW)?EG+msJ!R4jtK!GW-{rX2oMaQM|Nl6~i zKeb;iZksR^;sv9YPK zseB=qT!3 zC~*}#v)vU*B_(N&@?smsC~%kCylz`ArRAiQxU@(uq1aXA@VeZ^N$#Q&cd@hB8%#gP zo$Kty(nUS>jXV?er3);5BcsRaZ{EE5M4^bZ2~y$$lVyBzZ({cdDV}sJu_ZUFA|cIN za=p?cLPEU-4W7Pefk7Ea#5Z1%;V{5X5~+j%wlhUpCZg#Fl)iO18b}6d=*P0}Myd-M^z!eeRw{1104R%Qr-KB3w-fG#z+2#598U+?rBS}K@nx(GZdo6V{Z z>E{2j{!#vFQJ_#SSH7|JPWZOdzrFd?@wWB6-CG76jZ%kYp0zXoj`1ob#II`c#+25n z{|eq@&LRH4KYnVePrw@aJL4y$9`eSjk8Fu5{@=pe|7`zAy^Tg{qHigf;keQ?FZiFY zx9B!(K5Rq8H-(%`3iFJolmx|doZ1y?h;mW}+s$*hkxkS=o1#Vp( zV@!37Y1J{}L;>_B@p2(twMt0FPTxFnU~q z8P;HoDaw8kL!Z??L93e8hBJsUUZf@qkK3oJiNKBA2_iz4@bx*ptBa_&zYwuLuL0F! zw1^m?{FTbLB83P{HspK33|sYZ`n4}BuT>x0r(nsAD^k)ds`^5)A&s<%kz)?2DJGW6 zxFY1~8-jImwM@PesV?T{TExI23<=#PXb9^KPu^*M!AuaozPGOzw1^QE!NgFv4u9V5LuM%(HbKEXKU0f2oIT&Emy*x!wa zT_0ShoMZIg&9SkT;i>1SoNA88=h4pftD~-2{daT378b5kZXE1;{jG>+Y4J`yM>%&N z5eY<6D~cmRv1(kiQ(`B+tUkrcgl#o26R|spD{QX9)P`+DTzY-;ghmRR`M9E5Czv~h zua9_ZO%YcJW+&lSRaE?h6}&J;W_2<0t7CMljxn_wMw5bS82qdnysD*Ya$$8bE~|#o z0#iHnLrlFz`49+n zA)dYoCHleR!($CXbZykU$k{(%6B7pkxFVMAYK<4(SfI}r%qGG|Vf8rpkB+XdM4-*2 z_L4r%KT>LnYx7bQy7;Xk^3}K7$U9JQ&1cJkFTEg3J4?!U#bsi9BcK2 zMzK~;0ved513Ml62Ubr@sJv5-KfTFJtEX2*Uxk?wn0G%DOuZR#zo22f>n$6p2f*g$ z*#kmwu&_nKasWS02&D;MdQG}k!{85gf>$*Le=0m8V_0=b4XuXJS9f< zF4p$9M-6HxV(F`ThoB)|jT-b$A$WOpIS_wHKOq!Wn->KmtTx-^>0ztQwKBN(gQjeps9RPK?=t8P+VcGc@Fz>Y3`0 z1JyJ8Bn}kJs@3I>hJvSW=~Ld^`J?)*eMA1NiFwMiVw2xQa$&6pdQZ_m;Y_l2_KTQ$ z6=*(rB%f#kjCe8qpBYAhmib;Qzo{neTUzF|}IsuwL`ks*e8$PZ~Xy4-;n7VFMQD&TMeU0Om&PY)iC(m;NXSL!}5sXN)aU*sGu|JnNB~NM!UK7glnzLo3o1zr1s+8JDnw3NN1z%(hJ!4J0g$B};+E-Z zYj=CaFX4N5aOv}dcd#vL7Xj%2sSeLC%1H@MEhzymDlgVGgnI)d4+b!Qfj9@7wdPI# fwzNUd`p89)wK8B82%_wsMIg(m{h9_)A&`0iqJhW! diff --git a/spine-ue/Content/GettingStarted/06-cpp.umap b/spine-ue/Content/GettingStarted/06-cpp.umap index 16ccfaa52061235c4de5c0ae5aff10f4fc0ba884..1a4d9c873b840fdc6e2e005f2e47cf8c2f76b485 100644 GIT binary patch literal 212828 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 literal 212763 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 X)kq47blTV5hgE%lT`RfxhW!5ngUTc5 From 70be289f9c78ec94dc12b0eb78ae5eb4f7cc6a8d Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Tue, 27 Aug 2024 20:18:03 -1000 Subject: [PATCH 163/215] [libgdx] Fixed boolean box warning. --- .../src/com/esotericsoftware/spine/SkeletonViewer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java index b91f898d5..056761fb3 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java @@ -378,7 +378,7 @@ public class SkeletonViewer extends ApplicationAdapter { float dpiScale = 1; if (os.contains("Windows")) dpiScale = Toolkit.getDefaultToolkit().getScreenResolution() / 96f; if (os.contains("OS X")) { - Configuration.GLFW_CHECK_THREAD0.set(false); + Configuration.GLFW_CHECK_THREAD0.set(Boolean.FALSE); Configuration.GLFW_LIBRARY_NAME.set("glfw_async"); Object object = Toolkit.getDefaultToolkit().getDesktopProperty("apple.awt.contentScaleFactor"); if (object instanceof Float && ((Float)object).intValue() >= 2) dpiScale = 2; From d769c1a9308799f529428531606ec7932e6e4316 Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Tue, 27 Aug 2024 13:35:42 -1000 Subject: [PATCH 164/215] [libgdx] Fixed noRotationOrReflection with skeleton scale. --- .../src/com/esotericsoftware/spine/Bone.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java index cb955d3ac..d8026e043 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java @@ -153,11 +153,12 @@ public class Bone implements Updatable { break; } case noRotationOrReflection: { + float sx = 1 / skeleton.scaleX, sy = 1 / skeleton.scaleY; + pa *= sx; + pc *= sy; float s = pa * pa + pc * pc, prx; if (s > 0.0001f) { - s = Math.abs(pa * pd - pb * pc) / s; - pa /= skeleton.scaleX; - pc /= skeleton.scaleY; + s = Math.abs(pa * pd * sy - pb * sx * pc) / s; pb = pc * s; pd = pa * s; prx = atan2Deg(pc, pa); @@ -441,10 +442,8 @@ public class Bone implements Updatable { switch (inherit) { case noRotationOrReflection: { float s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc); - float sa = pa / skeleton.scaleX; - float sc = pc / skeleton.scaleY; - pb = -sc * s * skeleton.scaleX; - pd = sa * s * skeleton.scaleY; + pb = -pc * skeleton.scaleX * s / skeleton.scaleY; + pd = pa * skeleton.scaleY * s / skeleton.scaleX; pid = 1 / (pa * pd - pb * pc); ia = pd * pid; ib = pb * pid; From 54e463048a6bed88ab183ccd7dd1f540284d4885 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 29 Aug 2024 17:27:07 +0200 Subject: [PATCH 165/215] [unity] SpineVisualElement improvements. Now supports settings reference mesh bounds via a different bounds animation. --- .../Editor/Utility/SpineInspectorUtility.cs | 12 +- spine-unity/Assets/Spine/package.json | 2 +- .../Editor.meta | 8 ++ .../SpineVisualElementAttributeDrawers.cs | 119 +++++++++++++++++ ...SpineVisualElementAttributeDrawers.cs.meta | 2 + .../Runtime/SpineVisualElement.cs | 125 +++++++++++++++--- .../package.json | 8 +- 7 files changed, 251 insertions(+), 25 deletions(-) create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor.meta create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs.meta diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineInspectorUtility.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineInspectorUtility.cs index c1e4dcf3f..4290fd2fa 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineInspectorUtility.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineInspectorUtility.cs @@ -149,10 +149,20 @@ namespace Spine.Unity.Editor { } } } - newPropertyPath = propertyPath.Remove(propertyPath.Length - localPathLength, localPathLength) + propertyName; relativeProperty = property.serializedObject.FindProperty(newPropertyPath); } + // If this fails as well, try at any base property up the hierarchy + if (relativeProperty == null) { + int dotIndex = propertyPath.Length - property.name.Length - 1; + while (relativeProperty == null) { + dotIndex = propertyPath.LastIndexOf('.', dotIndex - 1); + if (dotIndex < 0) + break; + newPropertyPath = propertyPath.Remove(dotIndex + 1) + propertyName; + relativeProperty = property.serializedObject.FindProperty(newPropertyPath); + } + } } return relativeProperty; diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index 9a49c9912..a87d36d21 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.2.81", + "version": "4.2.82", "unity": "2018.3", "author": { "name": "Esoteric Software", diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor.meta new file mode 100644 index 000000000..6c2c3ce8a --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 020c4dfc4cd28f8409ea82818e31d040 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs new file mode 100644 index 000000000..b8c1681c5 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs @@ -0,0 +1,119 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated July 28, 2023. Replaces all prior versions. + * + * Copyright (c) 2013-2024, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software or + * otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE + * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +//#define CHANGE_BOUNDS_ON_ANIMATION_CHANGE + +using UnityEditor; +using UnityEditor.UIElements; +using UnityEngine; +using UnityEngine.UIElements; + +namespace Spine.Unity.Editor { + + [CustomPropertyDrawer(typeof(BoundsFromAnimationAttribute))] + public class BoundsFromAnimationAttributeDrawer : PropertyDrawer { + + protected BoundsFromAnimationAttribute TargetAttribute { get { return (BoundsFromAnimationAttribute)attribute; } } + + public override VisualElement CreatePropertyGUI (SerializedProperty boundsProperty) { + var container = new VisualElement(); + PropertyField referenceMeshBounds = new PropertyField(); + referenceMeshBounds.BindProperty(boundsProperty); + + var parentPropertyPath = boundsProperty.propertyPath.Substring(0, boundsProperty.propertyPath.LastIndexOf('.')); + var parent = boundsProperty.serializedObject.FindProperty(parentPropertyPath); + SerializedProperty animationProperty = parent.FindPropertyRelative(TargetAttribute.animationField); + SerializedProperty skeletonDataProperty = parent.FindPropertyRelative(TargetAttribute.dataField); + SerializedProperty skinProperty = parent.FindPropertyRelative(TargetAttribute.skinField); + +#if !CHANGE_BOUNDS_ON_ANIMATION_CHANGE + Button updateBoundsButton = new Button(() => { + UpdateMeshBounds(boundsProperty, animationProperty.stringValue, + (SkeletonDataAsset)skeletonDataProperty.objectReferenceValue, skinProperty.stringValue); + }); + updateBoundsButton.text = "Update Bounds"; + container.Add(updateBoundsButton); +#else + referenceMeshBounds.TrackPropertyValue(animationProperty, prop => { + UpdateMeshBounds(boundsProperty, animationProperty.stringValue, + (SkeletonDataAsset)skeletonDataProperty.objectReferenceValue, skinProperty.stringValue); + }); +#endif + container.Add(referenceMeshBounds); + + container.Bind(boundsProperty.serializedObject); + return container; + } + + protected void UpdateMeshBounds (SerializedProperty boundsProperty, string boundsAnimation, + SkeletonDataAsset skeletonDataAsset, string skin) { + if (!skeletonDataAsset) + return; + + Bounds bounds = CalculateMeshBounds(boundsAnimation, skeletonDataAsset, skin); + if (bounds.extents.x == 0 || bounds.extents.y == 0) { + Debug.LogWarning("Please select different Initial Skin and Bounds Animation. Not setting reference " + + "bounds as current combination (likely no attachments visible) leads to zero Mesh bounds."); + bounds.center = Vector3.zero; + bounds.extents = Vector3.one * 2f; + } + boundsProperty.boundsValue = bounds; + boundsProperty.serializedObject.ApplyModifiedProperties(); + } + + protected Bounds CalculateMeshBounds (string animationName, SkeletonDataAsset skeletonDataAsset, string skin) { + SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(false); + Skeleton skeleton = new Skeleton(skeletonData); + if (!string.IsNullOrEmpty(skin) && !string.Equals(skin, "default", System.StringComparison.Ordinal)) + skeleton.SetSkin(skin); + skeleton.SetSlotsToSetupPose(); + + Spine.Animation animation = skeletonData.FindAnimation(animationName); + if (animation != null) + animation.Apply(skeleton, -1, 0, false, null, 1.0f, MixBlend.First, MixDirection.In); + + skeleton.Update(0f); + skeleton.UpdateWorldTransform(Skeleton.Physics.Update); + + float x, y, width, height; + SkeletonClipping clipper = new SkeletonClipping(); + float[] vertexBuffer = null; + skeleton.GetBounds(out x, out y, out width, out height, ref vertexBuffer, clipper); + if (x == int.MaxValue) { + return new Bounds(); + } + + Bounds bounds = new Bounds(); + Vector2 halfSize = new Vector2(width * 0.5f, height * 0.5f); + bounds.center = new Vector3(x + halfSize.x, -y - halfSize.y, 0.0f); + bounds.extents = new Vector3(halfSize.x, halfSize.y, 0.0f); + return bounds; + } + } +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs.meta new file mode 100644 index 000000000..26a1f0bae --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: eb5762c450311694e84304e790546805 \ No newline at end of file diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Runtime/SpineVisualElement.cs b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Runtime/SpineVisualElement.cs index 04116f32a..5ab96d790 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Runtime/SpineVisualElement.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Runtime/SpineVisualElement.cs @@ -29,17 +29,42 @@ using System; using Unity.Collections; -using Unity.Jobs; using UnityEngine; -using UnityEngine.Profiling; using UnityEngine.UIElements; using UIVertex = UnityEngine.UIElements.Vertex; namespace Spine.Unity { + public class BoundsFromAnimationAttribute : PropertyAttribute { + + public readonly string animationField; + public readonly string dataField; + public readonly string skinField; + + public BoundsFromAnimationAttribute (string animationField, string skinField, string dataField = "skeletonDataAsset") { + this.animationField = animationField; + this.skinField = skinField; + this.dataField = dataField; + } + } + [UxmlElement] public partial class SpineVisualElement : VisualElement { + [UxmlAttribute] + public SkeletonDataAsset SkeletonDataAsset { + get { return skeletonDataAsset; } + set { + if (skeletonDataAsset == value) return; + skeletonDataAsset = value; +#if UNITY_EDITOR + if (!Application.isPlaying) + Initialize(true); +#endif + } + } + public SkeletonDataAsset skeletonDataAsset; + [SpineAnimation(dataField: "SkeletonDataAsset", avoidGenericMenu: true)] [UxmlAttribute] public string StartingAnimation { @@ -55,7 +80,7 @@ namespace Spine.Unity { } public string startingAnimation = ""; - [SpineSkin(dataField: "SkeletonDataAsset", avoidGenericMenu: true)] + [SpineSkin(dataField: "SkeletonDataAsset", defaultAsEmptyString: true, avoidGenericMenu: true)] [UxmlAttribute] public string InitialSkinName { get { return initialSkinName; } @@ -73,19 +98,42 @@ namespace Spine.Unity { [UxmlAttribute] public bool startingLoop { get; set; } = true; [UxmlAttribute] public float timeScale { get; set; } = 1.0f; + [SpineAnimation(dataField: "SkeletonDataAsset", avoidGenericMenu: true)] [UxmlAttribute] - public SkeletonDataAsset SkeletonDataAsset { - get { return skeletonDataAsset; } + public string BoundsAnimation { + get { return boundsAnimation; } set { - if (skeletonDataAsset == value) return; - skeletonDataAsset = value; + boundsAnimation = value; #if UNITY_EDITOR - if (!Application.isPlaying) - Initialize(true); + if (!Application.isPlaying) { + if (!this.IsValid) + Initialize(true); + else { + UpdateAnimation(); + } + } #endif } } - public SkeletonDataAsset skeletonDataAsset; + public string boundsAnimation = ""; + + [UxmlAttribute] + [BoundsFromAnimation(animationField: "BoundsAnimation", + skinField: "InitialSkinName", dataField: "SkeletonDataAsset")] + public Bounds ReferenceBounds { + get { return referenceMeshBounds; } + set { + if (referenceMeshBounds == value) return; +#if UNITY_EDITOR + if (!Application.isPlaying && (value.size.x == 0 || value.size.y == 0)) return; +#endif + referenceMeshBounds = value; + if (!this.IsValid) return; + + AdjustOffsetScaleToMeshBounds(rendererElement); + } + } + public Bounds referenceMeshBounds; public AnimationState AnimationState { get { @@ -93,21 +141,22 @@ namespace Spine.Unity { return state; } } + [UxmlAttribute] public bool freeze { get; set; } + [UxmlAttribute] public bool unscaledTime { get; set; } ///

    Update mode to optionally limit updates to e.g. only apply animations but not update the mesh. public UpdateMode UpdateMode { get { return updateMode; } set { updateMode = value; } } protected UpdateMode updateMode = UpdateMode.FullUpdate; - protected AnimationState state; - protected Skeleton skeleton; + protected AnimationState state = null; + protected Skeleton skeleton = null; protected SkeletonRendererInstruction currentInstructions = new();// to match existing code better protected Spine.Unity.MeshGeneratorUIElements meshGenerator = new MeshGeneratorUIElements(); protected VisualElement rendererElement; IVisualElementScheduledItem scheduledItem; - protected Bounds referenceMeshBounds; protected float scale = 100; protected float offsetX, offsetY; @@ -131,6 +180,10 @@ namespace Spine.Unity { } void OnGeometryChanged (GeometryChangedEvent evt) { + if (!this.IsValid) return; + if (referenceMeshBounds.size.x == 0 || referenceMeshBounds.size.y == 0) { + AdjustReferenceMeshBounds(); + } AdjustOffsetScaleToMeshBounds(rendererElement); } @@ -154,7 +207,6 @@ namespace Spine.Unity { return; } #endif - if (freeze) return; Update(unscaledTime ? Time.unscaledDeltaTime : Time.deltaTime); rendererElement.MarkDirtyRepaint(); @@ -212,17 +264,44 @@ namespace Spine.Unity { if (!string.IsNullOrEmpty(initialSkinName)) skeleton.SetSkin(initialSkinName); - if (!string.IsNullOrEmpty(startingAnimation)) { - var animationObject = SkeletonDataAsset.GetSkeletonData(false).FindAnimation(startingAnimation); + string displayedAnimation = Application.isPlaying ? startingAnimation : boundsAnimation; + if (!string.IsNullOrEmpty(displayedAnimation)) { + var animationObject = skeletonData.FindAnimation(displayedAnimation); if (animationObject != null) { state.SetAnimation(0, animationObject, startingLoop); } } + if (referenceMeshBounds.size.x == 0 || referenceMeshBounds.size.y == 0) { + AdjustReferenceMeshBounds(); + AdjustOffsetScaleToMeshBounds(rendererElement); + } - AdjustReferenceMeshBounds(); if (scheduledItem == null) scheduledItem = schedule.Execute(Update).Every(1); + if (!Application.isPlaying) + Update(0.0f); + + rendererElement.MarkDirtyRepaint(); + } + + protected void UpdateAnimation () { + this.state.ClearTracks(); + skeleton.SetToSetupPose(); + + string displayedAnimation = Application.isPlaying ? startingAnimation : boundsAnimation; + if (!string.IsNullOrEmpty(displayedAnimation)) { + var animationObject = SkeletonDataAsset.GetSkeletonData(false).FindAnimation(displayedAnimation); + if (animationObject != null) { + state.SetAnimation(0, animationObject, startingLoop); + } + } + if (referenceMeshBounds.size.x == 0 || referenceMeshBounds.size.y == 0) { + AdjustReferenceMeshBounds(); + AdjustOffsetScaleToMeshBounds(rendererElement); + } + Update(0.0f); + rendererElement.MarkDirtyRepaint(); } @@ -320,6 +399,8 @@ namespace Spine.Unity { } public void AdjustReferenceMeshBounds () { + if (skeleton == null) + return; // Need one update to obtain valid mesh bounds Update(0.0f); @@ -332,12 +413,18 @@ namespace Spine.Unity { var submeshInstructionItem = currentInstructions.submeshInstructions.Items[i]; meshGenerator.AddSubmesh(submeshInstructionItem); } - - referenceMeshBounds = meshGenerator.GetMeshBounds(); + Bounds meshBounds = meshGenerator.GetMeshBounds(); + if (meshBounds.extents.x == 0 || meshBounds.extents.y == 0) { + ReferenceBounds = new Bounds(Vector3.zero, Vector3.one * 2f); + } else { + ReferenceBounds = meshBounds; + } } void AdjustOffsetScaleToMeshBounds (VisualElement visualElement) { Rect targetRect = visualElement.layout; + if (float.IsNaN(targetRect.width)) return; + float xScale = targetRect.width / referenceMeshBounds.size.x; float yScale = targetRect.height / referenceMeshBounds.size.y; this.scale = Math.Min(xScale, yScale); diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/package.json b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/package.json index c1e6f761b..186be6214 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/package.json +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/package.json @@ -1,9 +1,9 @@ { "name": "com.esotericsoftware.spine.ui-toolkit", "displayName": "Spine UI Toolkit [Experimental]", - "description": "This plugin provides UI Toolkit integration for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.2.75 or newer.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", - "version": "4.2.0-preview.1", - "unity": "2023.2", + "description": "This plugin provides UI Toolkit integration for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.2.82 or newer and Unity 6000.0.16 or newer (requires [this bugfix](https://issuetracker.unity3d.com/issues/some-default-uxmlconverters-are-dependent-on-the-current-culture)).\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", + "version": "4.2.0-preview.2", + "unity": "6000.0", "author": { "name": "Esoteric Software", "email": "contact@esotericsoftware.com", @@ -11,7 +11,7 @@ }, "dependencies": { "com.unity.modules.uielements": "1.0.0", - "com.esotericsoftware.spine.spine-unity": "4.2.75" + "com.esotericsoftware.spine.spine-unity": "4.2.82" }, "keywords": [ "spine", From cff6943c3aca4d9e1954abbde3b1690b6433ba37 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 29 Aug 2024 17:44:36 +0200 Subject: [PATCH 166/215] [unity] Minor: fixed formatting or last commit 54e4630. --- .../Editor/spine-unity/Editor/Utility/SpineInspectorUtility.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineInspectorUtility.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineInspectorUtility.cs index 4290fd2fa..f2360e2fa 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineInspectorUtility.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineInspectorUtility.cs @@ -159,7 +159,7 @@ namespace Spine.Unity.Editor { dotIndex = propertyPath.LastIndexOf('.', dotIndex - 1); if (dotIndex < 0) break; - newPropertyPath = propertyPath.Remove(dotIndex + 1) + propertyName; + newPropertyPath = propertyPath.Remove(dotIndex + 1) + propertyName; relativeProperty = property.serializedObject.FindProperty(newPropertyPath); } } From 4038bc9ba1963fea4d46d61f6f1ecff952d6fc82 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 30 Aug 2024 18:18:21 +0200 Subject: [PATCH 167/215] [unity] Fixed Perforce auto check-out of unchanged files upon re-import, performing rever unchanged automatically. Closes #2618. --- .../Editor/Utility/AssetUtility.cs | 31 ++++++++++++++++++- spine-unity/Assets/Spine/package.json | 2 +- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs index a9f583af0..98afec85a 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs @@ -61,6 +61,7 @@ using System.Linq; using System.Reflection; using System.Text; using UnityEditor; +using UnityEditor.VersionControl; using UnityEngine; using CompatibilityProblemInfo = Spine.Unity.SkeletonDataCompatibility.CompatibilityProblemInfo; @@ -218,7 +219,7 @@ namespace Spine.Unity.Editor { } else { // On a "Reimport All" the order of imports can be wrong, thus LoadAssetAtPath() above could return null. // as a workaround, we provide a fallback reader. - input = File.Open(skeletonDataPath, FileMode.Open, FileAccess.Read); + input = File.Open(skeletonDataPath, System.IO.FileMode.Open, FileAccess.Read); } binary.ReadSkeletonData(input); } finally { @@ -493,6 +494,8 @@ namespace Spine.Unity.Editor { } } } + + RevertUnchangedOnPerforce(atlasPaths, skeletonPaths, newAtlases); } static void AddDependentAtlasIfImageChanged (List atlasPaths, List imagePaths) { @@ -526,6 +529,32 @@ namespace Spine.Unity.Editor { } } + /// Prevents automatic check-out of unchanged, identically re-created assets (e.g. when re-imported) + /// when using Perforce VCS. + static void RevertUnchangedOnPerforce (List atlasPaths, List skeletonPaths, List newAtlases) { + Plugin versionControl = Provider.GetActivePlugin(); + if (versionControl != null && versionControl.name == "Perforce") { + AssetList assets = new AssetList(); + + foreach (string atlasPath in atlasPaths) { + assets.Add(Provider.GetAssetByPath(atlasPath)); + } + foreach (PathAndProblemInfo skeletonPathInfo in skeletonPaths) { + if (skeletonPathInfo.compatibilityProblems == null) + assets.Add(Provider.GetAssetByPath(skeletonPathInfo.path)); + } + foreach (AtlasAssetBase atlas in newAtlases) { + if (atlas != null) + assets.Add(Provider.GetAssetByPath(AssetDatabase.GetAssetPath(atlas))); + foreach (Material atlasMaterial in atlas.Materials) { + if (atlasMaterial != null) + assets.Add(Provider.GetAssetByPath(AssetDatabase.GetAssetPath(atlasMaterial))); + } + } + Provider.Revert(assets, RevertMode.Unchanged); + } + } + static void ReloadSkeletonData (string skeletonJSONPath, CompatibilityProblemInfo compatibilityProblemInfo) { string dir = Path.GetDirectoryName(skeletonJSONPath).Replace('\\', '/'); TextAsset textAsset = AssetDatabase.LoadAssetAtPath(skeletonJSONPath); diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index a87d36d21..ccfb0254d 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.2.82", + "version": "4.2.83", "unity": "2018.3", "author": { "name": "Esoteric Software", From c85000b5f81bd93bcdd9cd2ae6e3789ac2907492 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Fri, 30 Aug 2024 13:39:15 +0200 Subject: [PATCH 168/215] [ue] Add ResetPhysicsConstraints() to SpineSkeletonComponent and SpineWidget, closes #2615 --- CHANGELOG.md | 1 + .../lib/assets/libspine_flutter.wasm | Bin 417918 -> 417940 bytes .../Private/SpineSkeletonComponent.cpp | 24 ++++++++++++++++++ .../SpinePlugin/Private/SpineWidget.cpp | 24 ++++++++++++++++++ .../Public/SpineSkeletonComponent.h | 9 +++++++ .../Source/SpinePlugin/Public/SpineWidget.h | 9 +++++++ 6 files changed, 67 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index daa028312..acac4b6ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,6 +88,7 @@ - **Breaking**: Starting with Unreal Engine 5.3 imported `.skel`/`.json` and `.atlas` files in the same folder must NOT have a common prefix. E.g. `skeleton.json` and `skeleton.atlas` will not work. Make sure to rename at least one of the two files so there is no prefix collision, e.g. `skeleton-data.json` and `skeleton.atlas`. - Added compatibility with UE 5.3 - Added more example maps +- Added blueprint-callable methods `PhysicsTranslate()`, `PhysicsRotate()` and `ResetPhysicsConstraints()` (which will reset all physics constraints in the skeleton) to `SpineSkeletonComponent` and `SpineWidget`. ### Godot diff --git a/spine-flutter/lib/assets/libspine_flutter.wasm b/spine-flutter/lib/assets/libspine_flutter.wasm index cffc6246ba57442b30e518fb9d07e8fb31129ee1..89b0c594a93b46510e52913b59a0f7ad75e26754 100755 GIT binary patch delta 78 zcmex&Kyu1K$qgALOufgNvr5{tN*IBdX?s=)^CKn3&(nRUGh2%>GSw@vJ2JYlI4H33 gGAS@>FtKPb*-THI%c9V}VmdPrvus~6o%PxY0BS`V_y7O^ delta 61 zcmbPoQ1aga$qgALOy7?-XO*;Pl`sM^)ApuC*}if*>+2H$Fz*>c diff --git a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonComponent.cpp b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonComponent.cpp index 58aabe0d9..a48e786d3 100644 --- a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonComponent.cpp +++ b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonComponent.cpp @@ -287,6 +287,30 @@ float USpineSkeletonComponent::GetAnimationDuration(FString AnimationName) { return 0; } +void USpineSkeletonComponent::PhysicsTranslate(float x, float y) { + CheckState(); + if (skeleton) { + skeleton->physicsTranslate(x, y); + } +} + +void USpineSkeletonComponent::PhysicsRotate(float x, float y, float degrees) { + CheckState(); + if (skeleton) { + skeleton->physicsRotate(x, y, degrees); + } +} + +void USpineSkeletonComponent::ResetPhysicsConstraints() { + CheckState(); + if (skeleton) { + Vector &constraints = skeleton->getPhysicsConstraints(); + for (int i = 0, n = (int) constraints.size(); i < n; i++) { + constraints[i]->reset(); + } + } +} + void USpineSkeletonComponent::BeginPlay() { Super::BeginPlay(); } diff --git a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineWidget.cpp b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineWidget.cpp index dcdaac900..a6034adf4 100644 --- a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineWidget.cpp +++ b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineWidget.cpp @@ -524,3 +524,27 @@ void USpineWidget::ClearTrack(int trackIndex) { state->clearTrack(trackIndex); } } + +void USpineWidget::PhysicsTranslate(float x, float y) { + CheckState(); + if (skeleton) { + skeleton->physicsTranslate(x, y); + } +} + +void USpineWidget::PhysicsRotate(float x, float y, float degrees) { + CheckState(); + if (skeleton) { + skeleton->physicsRotate(x, y, degrees); + } +} + +void USpineWidget::ResetPhysicsConstraints() { + CheckState(); + if (skeleton) { + Vector &constraints = skeleton->getPhysicsConstraints(); + for (int i = 0, n = (int) constraints.size(); i < n; i++) { + constraints[i]->reset(); + } + } +} \ No newline at end of file diff --git a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonComponent.h b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonComponent.h index c040110ce..94dcf9eef 100644 --- a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonComponent.h +++ b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonComponent.h @@ -127,6 +127,15 @@ public: UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") float GetAnimationDuration(FString AnimationName); + UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") + void PhysicsTranslate(float x, float y); + + UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") + void PhysicsRotate(float x, float y, float degrees); + + UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") + void ResetPhysicsConstraints(); + UPROPERTY(BlueprintAssignable, Category = "Components|Spine|Skeleton") FSpineBeforeUpdateWorldTransformDelegate BeforeUpdateWorldTransform; diff --git a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h index c02339638..0019a6eea 100644 --- a/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h +++ b/spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h @@ -153,6 +153,15 @@ public: UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") float GetAnimationDuration(FString AnimationName); + UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") + void PhysicsTranslate(float x, float y); + + UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") + void PhysicsRotate(float x, float y, float degrees); + + UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") + void ResetPhysicsConstraints(); + UPROPERTY(BlueprintAssignable, Category = "Components|Spine|Skeleton") FSpineWidgetBeforeUpdateWorldTransformDelegate BeforeUpdateWorldTransform; From c9c6b9821163890c44ae142750afbed0826ad5e9 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Mon, 2 Sep 2024 13:50:01 +0200 Subject: [PATCH 169/215] [csharp] Port of commit d769c1a: Fixed noRotationOrReflection with skeleton scale. --- spine-csharp/src/Bone.cs | 14 +++++++------- spine-csharp/src/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/spine-csharp/src/Bone.cs b/spine-csharp/src/Bone.cs index 93624c0f4..e05f0290a 100644 --- a/spine-csharp/src/Bone.cs +++ b/spine-csharp/src/Bone.cs @@ -221,11 +221,12 @@ namespace Spine { break; } case Inherit.NoRotationOrReflection: { + float sx = 1 / skeleton.scaleX, sy = 1 / skeleton.ScaleY; + pa *= sx; + pc *= sy; float s = pa * pa + pc * pc, prx; if (s > 0.0001f) { - s = Math.Abs(pa * pd - pb * pc) / s; - pa /= skeleton.scaleX; - pc /= skeleton.ScaleY; + s = Math.Abs(pa * pd * sy - pb * sx * pc) / s; pb = pc * s; pd = pa * s; prx = MathUtils.Atan2Deg(pc, pa); @@ -334,10 +335,9 @@ namespace Spine { switch (inherit) { case Inherit.NoRotationOrReflection: { float s = Math.Abs(pa * pd - pb * pc) / (pa * pa + pc * pc); - float sa = pa / skeleton.scaleX; - float sc = pc / skeleton.ScaleY; - pb = -sc * s * skeleton.scaleX; - pd = sa * s * skeleton.ScaleY; + float skeletonScaleY = skeleton.ScaleY; + pb = -pc * skeleton.scaleX * s / skeletonScaleY; + pd = pa * skeletonScaleY * s / skeleton.scaleX; pid = 1 / (pa * pd - pb * pc); ia = pd * pid; ib = pb * pid; diff --git a/spine-csharp/src/package.json b/spine-csharp/src/package.json index 6a83e51bb..b922e8219 100644 --- a/spine-csharp/src/package.json +++ b/spine-csharp/src/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-csharp", "displayName": "spine-csharp Runtime", "description": "This plugin provides the spine-csharp core runtime.", - "version": "4.2.29", + "version": "4.2.30", "unity": "2018.3", "author": { "name": "Esoteric Software", From fbcc080e7e45b3f576ba08640097acdda42f2df5 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 5 Sep 2024 18:04:39 +0200 Subject: [PATCH 170/215] [unity] Fixed clipping end attachment ignored when alpha is 0. Closes #2623. --- .../Spine/Runtime/spine-unity/Mesh Generation/MeshGenerator.cs | 2 +- spine-unity/Assets/Spine/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Mesh Generation/MeshGenerator.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Mesh Generation/MeshGenerator.cs index 36303dde8..8d01c43dc 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Mesh Generation/MeshGenerator.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Mesh Generation/MeshGenerator.cs @@ -364,7 +364,7 @@ namespace Spine.Unity { Slot slot = drawOrderItems[i]; if (!slot.Bone.Active #if SLOT_ALPHA_DISABLES_ATTACHMENT - || slot.A == 0f + || (slot.A == 0f && slot.Data != clippingEndSlot) #endif ) { workingAttachmentsItems[i] = null; diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index ccfb0254d..97a3bff82 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.2.83", + "version": "4.2.84", "unity": "2018.3", "author": { "name": "Esoteric Software", From e4f344f22bd57c07382c56ba2b8b12b9766037cd Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Sun, 8 Sep 2024 21:22:13 -1000 Subject: [PATCH 171/215] [libgdx] Update for latest libgdx, gdx-lwjgl3-glfw-awt-macos removal. --- spine-libgdx/spine-skeletonviewer/.classpath | 1 - 1 file changed, 1 deletion(-) diff --git a/spine-libgdx/spine-skeletonviewer/.classpath b/spine-libgdx/spine-skeletonviewer/.classpath index e8bc7f783..cff8c1499 100644 --- a/spine-libgdx/spine-skeletonviewer/.classpath +++ b/spine-libgdx/spine-skeletonviewer/.classpath @@ -10,6 +10,5 @@ - From cd69a7c78a03fb9f560c91fa2721fc0717b22458 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Mon, 9 Sep 2024 11:09:27 +0200 Subject: [PATCH 172/215] [ts] Port of commit d769c1a: Fixed noRotationOrReflection with skeleton scale. --- spine-ts/spine-core/src/Bone.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/spine-ts/spine-core/src/Bone.ts b/spine-ts/spine-core/src/Bone.ts index f2b7272be..fc082520d 100644 --- a/spine-ts/spine-core/src/Bone.ts +++ b/spine-ts/spine-core/src/Bone.ts @@ -200,12 +200,13 @@ export class Bone implements Updatable { break; } case Inherit.NoRotationOrReflection: { + let sx = 1 / this.skeleton.scaleX, sy = 1 / this.skeleton.scaleY; + pa *= sx; + pc *= sy; let s = pa * pa + pc * pc; let prx = 0; if (s > 0.0001) { - s = Math.abs(pa * pd - pb * pc) / s; - pa /= this.skeleton.scaleX; - pc /= this.skeleton.scaleY; + s = Math.abs(pa * pd * sy - pb * sx * pc) / s; pb = pc * s; pd = pa * s; prx = Math.atan2(pc, pa) * MathUtils.radDeg; @@ -311,10 +312,8 @@ export class Bone implements Updatable { switch (this.inherit) { case Inherit.NoRotationOrReflection: { let s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc); - let sa = pa / this.skeleton.scaleX; - let sc = pc / this.skeleton.scaleY; - pb = -sc * s * this.skeleton.scaleX; - pd = sa * s * this.skeleton.scaleY; + pb = -pc * this.skeleton.scaleX * s / this.skeleton.scaleY; + pd = pa * this.skeleton.scaleY * s / this.skeleton.scaleX; pid = 1 / (pa * pd - pb * pc); ia = pd * pid; ib = pb * pid; From 44c7b9120a0c7538ccfe34e5f8b6e31a705f9b92 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Mon, 9 Sep 2024 11:16:29 +0200 Subject: [PATCH 173/215] [haxe] Port of commit d769c1a: Fixed noRotationOrReflection with skeleton scale. --- spine-haxe/spine-haxe/spine/Bone.hx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/spine-haxe/spine-haxe/spine/Bone.hx b/spine-haxe/spine-haxe/spine/Bone.hx index bc0428228..1b0d326a0 100644 --- a/spine-haxe/spine-haxe/spine/Bone.hx +++ b/spine-haxe/spine-haxe/spine/Bone.hx @@ -173,10 +173,14 @@ class Bone implements Updatable { c = Math.sin(rx) * scaleX; d = Math.sin(ry) * scaleY; case Inherit.noRotationOrReflection: + var sx:Float = 1 / skeleton.scaleX; + var sy:Float = 1 / skeleton.scaleY; + pa *= sx; + pc *= sy; s = pa * pa + pc * pc; var prx:Float = 0; if (s > 0.0001) { - s = Math.abs(pa * pd - pb * pc) / s; + s = Math.abs(pa * pd * sy - pb * sx * pc) / s; pb = pc * s; pd = pa * s; prx = Math.atan2(pc, pa) * MathUtils.radDeg; @@ -280,10 +284,8 @@ class Bone implements Updatable { switch (inherit) { case Inherit.noRotationOrReflection: var s:Float = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc); - var sa:Float = pa / skeleton.scaleX; - var sc:Float = pc / skeleton.scaleY; - pb = -sc * s * skeleton.scaleX; - pd = sa * s * skeleton.scaleY; + pb = -pc * skeleton.scaleX * s / skeleton.scaleY; + pd = pa * skeleton.scaleY * s / skeleton.scaleX; pid = 1 / (pa * pd - pb * pc); ia = pd * pid; ib = pb * pid; From 0ffcc63b5e48ed515b3cde86bea8bb957e0299da Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 9 Sep 2024 11:20:08 +0200 Subject: [PATCH 174/215] [flutter] Expand debug rendering example to show how to render in canvas coordinates --- .../example/lib/debug_rendering.dart | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/spine-flutter/example/lib/debug_rendering.dart b/spine-flutter/example/lib/debug_rendering.dart index bc1bd9337..6b620b94b 100644 --- a/spine-flutter/example/lib/debug_rendering.dart +++ b/spine-flutter/example/lib/debug_rendering.dart @@ -40,7 +40,32 @@ class DebugRendering extends StatelessWidget { const debugRenderer = DebugRenderer(); final controller = SpineWidgetController(onInitialized: (controller) { controller.animationState.setAnimationByName(0, "walk", true); - }, onAfterPaint: (controller, canvas, commands) { +}, onBeforePaint: (controller, canvas) { + // Save the current transform and other canvas state + canvas.save(); + + // Get the current canvas transform an invert it, so we can work in the + // canvas coordinate system. + final currentMatrix = canvas.getTransform(); + final invertedMatrix = Matrix4.tryInvert(Matrix4.fromFloat64List(currentMatrix)); + if (invertedMatrix != null) { + canvas.transform(invertedMatrix.storage); + } + + // Draw something. + final Paint paint = Paint() + ..color = Colors.black + ..strokeWidth = 2.0; + + canvas.drawLine( + Offset(0, 0), + Offset(canvas.getLocalClipBounds().width, canvas.getLocalClipBounds().height), + paint, + ); + + // Restore the old transform and canvas state + canvas.restore(); +}, onAfterPaint: (controller, canvas, commands) { debugRenderer.render(controller.drawable, canvas, commands); }); From 03826796b6688de80f90886e75550aa83104021a Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 9 Sep 2024 11:20:49 +0200 Subject: [PATCH 175/215] [cpp] Closes #2622, fix memory leak in case of version mismatch. --- spine-cpp/spine-cpp/src/spine/SkeletonJson.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/spine-cpp/spine-cpp/src/spine/SkeletonJson.cpp b/spine-cpp/spine-cpp/src/spine/SkeletonJson.cpp index 3ac46564f..117fe55ee 100644 --- a/spine-cpp/spine-cpp/src/spine/SkeletonJson.cpp +++ b/spine-cpp/spine-cpp/src/spine/SkeletonJson.cpp @@ -156,6 +156,7 @@ SkeletonData *SkeletonJson::readSkeletonData(const char *json) { if (!skeletonData->_version.startsWith(SPINE_VERSION_STRING)) { char errorMsg[255]; snprintf(errorMsg, 255, "Skeleton version %s does not match runtime version %s", skeletonData->_version.buffer(), SPINE_VERSION_STRING); + delete skeletonData; setError(NULL, errorMsg, ""); return NULL; } From 77ab726b3fd801e903e1488b557447d6ba1eb080 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 9 Sep 2024 11:32:39 +0200 Subject: [PATCH 176/215] [godot] Try to fix web template packing for Godot >= 4.3 --- .github/workflows/spine-godot-v4.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/spine-godot-v4.yml b/.github/workflows/spine-godot-v4.yml index 4b15f1538..4332373b1 100644 --- a/.github/workflows/spine-godot-v4.yml +++ b/.github/workflows/spine-godot-v4.yml @@ -391,9 +391,24 @@ jobs: aws s3 cp godot-editor-windows.zip s3://spine-godot/$BRANCH/$GODOT_TAG/ aws s3 cp godot-editor-linux.zip s3://spine-godot/$BRANCH/$GODOT_TAG/ aws s3 cp godot-editor-macos.zip s3://spine-godot/$BRANCH/$GODOT_TAG/ + echo "$GODOT_VERSION" > version.txt + # Extract the major and minor version from GODOT_VERSION + GODOT_MAJOR_MINOR=$(echo "$GODOT_VERSION" | awk -F. '{print $1 "." $2}') + + # Check if the version is >= 4.3 + if [[ $(echo "$GODOT_MAJOR_MINOR >= 4.3" | bc) -eq 1 ]]; then + mv web_release.zip web_nothreads_release.zip + mv web_debug.zip web_nothreads_debug.zip + WEB_RELEASE_FILE="web_nothreads_release.zip" + WEB_DEBUG_FILE="web_nothreads_debug.zip" + else + WEB_RELEASE_FILE="web_release.zip" + WEB_DEBUG_FILE="web_debug.zip" + fi + ls -lah - zip spine-godot-templates-$BRANCH-$GODOT_TAG.zip ios.zip macos.zip windows_debug_x86_64.exe windows_release_x86_64.exe linux_debug.x86_64 linux_release.x86_64 web_debug.zip web_release.zip android_release.apk android_debug.apk android_source.zip version.txt + zip spine-godot-templates-$BRANCH-$GODOT_TAG.zip ios.zip macos.zip windows_debug_x86_64.exe windows_release_x86_64.exe linux_debug.x86_64 linux_release.x86_64 "$WEB_DEBUG_FILE" "$WEB_RELEASE_FILE" android_release.apk android_debug.apk android_source.zip version.txt aws s3 cp spine-godot-templates-$BRANCH-$GODOT_TAG.zip s3://spine-godot/$BRANCH/$GODOT_TAG/spine-godot-templates-$BRANCH-$GODOT_TAG.tpz upload-to-s3-mono: From eb247bbfa2d49325dd3f645710cee4b6f1908231 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 9 Sep 2024 14:22:10 +0200 Subject: [PATCH 177/215] [godot] Another attempt at fixing web template builds for Godot >= 4.3, see #2627 --- .github/workflows/spine-godot-v4.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spine-godot-v4.yml b/.github/workflows/spine-godot-v4.yml index 4332373b1..75b93af55 100644 --- a/.github/workflows/spine-godot-v4.yml +++ b/.github/workflows/spine-godot-v4.yml @@ -394,7 +394,7 @@ jobs: echo "$GODOT_VERSION" > version.txt # Extract the major and minor version from GODOT_VERSION - GODOT_MAJOR_MINOR=$(echo "$GODOT_VERSION" | awk -F. '{print $1 "." $2}') + GODOT_MAJOR_MINOR=$(echo "$GODOT_VERSION" | sed -E 's/^([0-9]+\.[0-9]+).*/\1/') # Check if the version is >= 4.3 if [[ $(echo "$GODOT_MAJOR_MINOR >= 4.3" | bc) -eq 1 ]]; then From 167470fb16a505a1105d152d9e1c72eaf3b71f86 Mon Sep 17 00:00:00 2001 From: Richard Fu Date: Wed, 4 Sep 2024 18:19:20 +1000 Subject: [PATCH 178/215] [ts][pixi] Fix atlas src cannot be resolved for preferred texture --- spine-ts/index.html | 1 + .../spine-pixi/example/assets-bundle.html | 57 +++++++++++ .../assets/spineboy-bundle/manifest.json | 30 ++++++ .../assets/spineboy-bundle/spineboy-pro.json | 1 + .../assets/spineboy-bundle/spineboy.png | Bin 0 -> 13740 bytes .../assets/spineboy-bundle/spineboy.png.atlas | 94 ++++++++++++++++++ .../assets/spineboy-bundle/spineboy.webp | Bin 0 -> 18692 bytes .../spineboy-bundle/spineboy.webp.atlas | 94 ++++++++++++++++++ .../assets/spineboy-bundle/spineboy@2x.png | Bin 0 -> 37880 bytes .../spineboy-bundle/spineboy@2x.png.atlas | 94 ++++++++++++++++++ .../assets/spineboy-bundle/spineboy@2x.webp | Bin 0 -> 49572 bytes .../spineboy-bundle/spineboy@2x.webp.atlas | 94 ++++++++++++++++++ .../assets/spineboy-bundle/spineboy@3x.png | Bin 0 -> 63828 bytes .../spineboy-bundle/spineboy@3x.png.atlas | 94 ++++++++++++++++++ .../assets/spineboy-bundle/spineboy@3x.webp | Bin 0 -> 72646 bytes .../spineboy-bundle/spineboy@3x.webp.atlas | 94 ++++++++++++++++++ spine-ts/spine-pixi/src/assets/atlasLoader.ts | 14 ++- 17 files changed, 666 insertions(+), 1 deletion(-) create mode 100644 spine-ts/spine-pixi/example/assets-bundle.html create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/manifest.json create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy-pro.json create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy.png create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy.png.atlas create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy.webp create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy.webp.atlas create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy@2x.png create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy@2x.png.atlas create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy@2x.webp create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy@2x.webp.atlas create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy@3x.png create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy@3x.png.atlas create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy@3x.webp create mode 100644 spine-ts/spine-pixi/example/assets/spineboy-bundle/spineboy@3x.webp.atlas diff --git a/spine-ts/index.html b/spine-ts/index.html index f5daeba5d..8ca5a5ba0 100644 --- a/spine-ts/index.html +++ b/spine-ts/index.html @@ -53,6 +53,7 @@
  11. Physics III
  12. Physics IV
  13. Slot Objects
  14. +
  15. Assets Bundle
  16. Phaser
  17. Phaser