From 6d174dbce4a1afda67ce2c46288b0a9bdb0290dc Mon Sep 17 00:00:00 2001 From: c0ffee Date: Fri, 3 May 2024 18:21:06 -0700 Subject: [PATCH 1/4] Patches for downed pawns with anims not playing + pawn downed wiggler interfering with anims --- 1.5/Assemblies/Rimworld-Animations.dll | Bin 49152 -> 49664 bytes .../AnimationWorker_KeyframesExtended.cs | 5 +++ .../HarmonyPatch_PawnRenderer.cs | 32 ++++++++++++++++++ .../Assemblies/Patch_HumanoidAlienRaces.dll | Bin 4096 -> 4096 bytes .../Assemblies/Patch_SexToysMasturbation.dll | Bin 5120 -> 5120 bytes Rimworld-Animations.csproj | 1 + 6 files changed, 38 insertions(+) create mode 100644 1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs diff --git a/1.5/Assemblies/Rimworld-Animations.dll b/1.5/Assemblies/Rimworld-Animations.dll index dd3d63cba405e27312db92eb959446cee0bef148..713827beaf00bf9794cda14bdc118a402a70ed7f 100644 GIT binary patch delta 15273 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 ZeP8yATGuN-%Tl;Qt#|KPv9z`Me*xQsE)xI% diff --git a/1.5/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs b/1.5/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs index 3894b1a..395a16f 100644 --- a/1.5/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs +++ b/1.5/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs @@ -15,6 +15,11 @@ namespace Rimworld_Animations { } + public override bool Enabled() + { + return true; + } + public override Vector3 OffsetAtTick(int tick, PawnDrawParms parms) { //Todo: Use this for bodyoffsets diff --git a/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs b/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs new file mode 100644 index 0000000..6d1e2b8 --- /dev/null +++ b/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs @@ -0,0 +1,32 @@ +using HarmonyLib; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + + [HarmonyPatch(typeof(PawnRenderer), "BodyAngle")] + + public class HarmonyPatch_PawnRenderer2 + { + public static bool Prefix(ref Pawn ___pawn, ref float __result) + { + //stop using cache when animating, for when downed (downed disables cache) + if (___pawn.Drawer.renderer.renderTree.rootNode.AnimationWorker is AnimationWorker_KeyframesExtended) + { + __result = 0; + return false; + + } + + return true; + + } + } + + +} diff --git a/Patch_HumanoidAlienRaces/1.5/Assemblies/Patch_HumanoidAlienRaces.dll b/Patch_HumanoidAlienRaces/1.5/Assemblies/Patch_HumanoidAlienRaces.dll index dc151310748a11bfce9a81ff5f81c22c3aab5320..7656a26dbff115d9a30e06b566670abe6d75afe8 100644 GIT binary patch delta 47 zcmV+~0MP${Ab=o{hy=AWde^axFa!j-B12KLzyurv5P7h#dGU-lN0Ln-WeG9Ple6px F6bQEK5-k7# delta 47 zcmV+~0MP${Ab=o{hyhFa!juA~FlJzyurv5Hv#E4jGw?Nx$sA#8hAifwSxf F6bPgY5z_zw diff --git a/Patch_SexToysMasturbation/1.5/Assemblies/Patch_SexToysMasturbation.dll b/Patch_SexToysMasturbation/1.5/Assemblies/Patch_SexToysMasturbation.dll index abfae70b07947ce717fcd7fc9bf700d598c2f32c..18ddee3fb282d888e3ebdf91fc91a6cc97f45906 100644 GIT binary patch delta 47 zcmV+~0MP${D1a!Chy>~Az{atR@C5|9B12KLfCdZ&5VLy;h$6;8K&}9@^}k+d0JEG6 FWC-ny6N~@= delta 47 zcmV+~0MP${D1a!Chy;V`zP_=H@C5{_A~FlJfCdZ&5Medt;MWnWK!gVRs}8@^U$dMG FWC-G!6cPXc diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj index 294fcea..4051883 100644 --- a/Rimworld-Animations.csproj +++ b/Rimworld-Animations.csproj @@ -104,6 +104,7 @@ + From d36c2b8314daf26cf5efec06a725a76f4e53a067 Mon Sep 17 00:00:00 2001 From: c0ffee Date: Fri, 3 May 2024 19:47:25 -0700 Subject: [PATCH 2/4] patch for NALS facial animation using rendersubworker --- 1.5/Assemblies/Rimworld-Animations.dll | Bin 49664 -> 50176 bytes .../PawnRenderSubWorker_HideWhenAnimating.cs | 39 ++++++++++++++++++ LoadFolders.xml | 1 + .../AnimationPatch_HideHeadWhenAnimating.xml | 27 ++++++++++++ Rimworld-Animations.csproj | 2 + 5 files changed, 69 insertions(+) create mode 100644 1.5/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs create mode 100644 Patch_FacialAnimation/1.5/Patches/AnimationPatch_HideHeadWhenAnimating.xml diff --git a/1.5/Assemblies/Rimworld-Animations.dll b/1.5/Assemblies/Rimworld-Animations.dll index 713827beaf00bf9794cda14bdc118a402a70ed7f..8685c9d799bf17debea5cde6a8ba57471ee84f47 100644 GIT binary patch delta 12763 zcma)i33yah(srGDZ{J?iTRK~(6X|p(X+j7=f)EIsVJ8A1tg_3#?=m4kC$bC#WSNUP z2r5jFMZ;!rWEB*Q=(qr*Bb&-P4vP4LI5YSO{#A85AsPSqocB4C2o9EAE*bk5pr%E`eog?db&f}9=U@!tlg1A;)vEu2^n&* zW3*PO__S;#TAQo5#Zj$X35jEZ!l3o+Y-_@HW0+%Z{vRMj!@vQ>PnrKL9te1d7rx(#3nMFTWSGsc;w{fG=^-9?Nt zW4fPev(w)dZ)hz-jZC{}4%JXq)x=Pd5PP+^8^$62t>IwAM>Be)pW;DD3ue)v56QF}MDnfOxsXJ(oBO8Z^oX5wqDvhfyi zp{g+J4?E>|_o4w=F@(b3s5jKX&lfD7c3;pn+!D7hboFvp53(fF}C;*yCd zUbqO;No^dLw(uEjJW#JuPWhNlYAI<#$vE;xBF>^_I>697)Co1yI#afgks^g!bKc*A z6sz@X*}{n#sDR^ywv<7ri?*TV1<^&Dn|nTdJu>>mG>kgCA zPPOtozvCR_1%utFpwsk=C(#l)= zVtS)s0ZyZ%=TeO?^bp3ln^C$-~w+2SwS-Ml(VYm4Ay40YvHAI9w<@fRyQB~`fF@PvQ#n$Q_AqpdP+OqF2gej)y=F@tUeG+ zBV+8WGn!~0BhG4Z?Ki2TP+c-wJJP;IIBV8b9DFI&E!84VKt@~nVYPc6$PX2d$x;aw z-?X0CDWhkEN%N^@rs2I#&B&T{gZxp|J?!QUjlqZy`7o)3%BQ3fOUqI+7IpHpab$so zrVZ&3Y}2w4Kmb>53%*x|uw68J=7g!^@Tv#s-5204UWb8xMbHsT&55!=mww$k;(K4@ zC$u9S8ifZV!x(@?2)Mj_XT}ix-X3`;e98F2YmjfsMtpCBFEjyafi zjY>~c;SY=f+YYY-MkbQHhi$4y1ydB^4Q>~QnRH?t##qXV7B&;Qh++JQB^zx0ohp3i zzvfmUNgiRaz(U7cRy!CgkZCoG>W`{rUd^CwBZ}+*^UAzL^uqKT{ zu1+VsZpcql;j}cu5VpV~_W^VfG!VY+IDn>SyOR979RGXgYv3aTM#^0=JT=J&uz;ZXnCA zIPjM|qyO|%eSF7tR?M^2Dw^y6Z8s@K$I^v#F`m|D5ii6dD}}s)re643qA`8I;g|5# zonWVXq9}>|9tvC#q&d?}y8|i=O57d5nvYpxjD?IOD%)u>Q$4Xz#O-<5R>2r^EsR$Mfw!~%jx|aB=;4D|ymd`d1H2s>m>pJ$ zMdQ;6Sw3MQ76Vo&L-s9ui32<8!cI8MG#sg<23Vpn4E=w=T1z{6}(!kVP#kR>te zfow0{`RlGEK$X zE@j#9 z3Uy96fB}h(VO`%iosDJoV?;Ne*~PG|D<^Wt{}ZdT$;|HJQjnV|Z2DJBO=pzoVXli@ zn8v!iNHR0H-@kG6WI2o3S%c1Iv*jY5(Oj4VrI_fR)Ud9c%XFQQSSy&vrfYERiIp&G z8qv*XR{Y4Cq<^EXl-aL1haI3bE(Fy~5$b-y)qRFpGh`szz#?XEG@yR%U@0>-v?h!l zJHYRmUP>o7`S@{6Zo+8#3)aDMW_^%>=mh1=6n4`MRxvB*dFl?UnVsYC1+a$MJ`P_1 zYnfS)&A^Izj@k9(HA&%n&>Nm-T8*>}*^A7w`8p_qP0TjnH8Ml=h0V-%`S7YhwuM<) z(wd}VF$}gbTZ)rE1KI05`5Smh!(b=t#&O9GgMFw2Xh78!hSBh6R<38|Sa=I$T$$-u zjvZhu>}U2SvvF{+4jYdfNwWNqbrawy$bKh;4AgHTyjzD&h4<^Q>DYt%;gdaDhG)XZ zb?7YIP>^z$M9SH4hM9!fcECC~&#Wcu7QjVjlknjP-N0AO^kmB55qdVe9#BTC^#E#1SD3Y7(u}}a}c526BdkG}kRhVZ=Wz4V(_`ymw z@nmWfY(H}nWRyGYbbE<};u&QZ8+A8V#y z{V|w;!Kn56%kh!Zq-+!57b%)u10{SPf= z2(Sr;wX!AWIe8yam$38^Om+_i2Q@2qQ}q z^sQrQ2E1{w8v}($8ewE=ff2eXB*kcUD=cERm`7-Xm37?MU}HV@YAx$5Y_N}6HFQ;T z@Kfbvgjw7J@iuoY!10&DRo8mE8x{vC{!;kDwaFe0!Bm~ycWtwKU{jjTesJxw$AAy_ znmBsV(Yy*} zNT)}X{}cVGJpqbo-Mud^mRCu=5lGqEitcfEPw%6&G z2FG+32I`mwmzl1OpW|)rNQ1k&QruK?k@=eQ2*tA4auI@@2!4b`}dYYR7PO`AK~f~Ot1c^*!ttwr`EGd;ETFuGRvqN6<=u4P*t zkAtZ__0ugof`=J-*&TLtgkL*6RCWi`jRr=b@v?MK5(Jq!|?s!8Z!!SaQ1`vPI`z>)1sUMU|lUs zat?w+%=Cay!iid4(D@_`?4tMk!k_6J49l76#XSVJM|3CCg3clM{M+?m_@OYJ+4Jye zS~KTRcqPKhz zf66%#jxjp{6Y+y~5~Os0=yVc1T937^$2!(yPt>v|mPs(4*1ba1hA zK3EFLl5|Zh3n0ksgy@RNl)?y|@r;(ierAiI;*k~3GHB3;KmQg(reULV5#;r$aiijP zu`9D`IG^$-)Kx}UrstyN_mE!n(6St|nN{fi&)2V&QQZK!7$YVx{-m;YQ0Wprh z8d~BlVgTnVFv2OVFzx8^~-Ce1_lDyaY3ug>}=Hp(LUl zkII+fxjG$RftTxads82OrjK_kbY-RwVk;CzEc=0G-wIReSZ;&j zI+okunTTb06-2qVL3thJc32ltUK2U69d1V0Cfq=7hw>pb3O(R<{1SrLBDjW+@Y`Wq ztxh0&m)T{Z;nC&}I1yn{X*tMphEc!E=1bvVv}*_C=~Q$|A=CVbvPo)ZWCao3p@amq zTpeLH?@-jez)VkO2W(=t2sX<>wES}&-D_|(qT7l0nb+V}tq%7;ufxA1$_dhR=j$+F zIOV20t%MQG7Qrg)SP9da>65<`=GU>@2}>fDc(U!<3D4Eh?Shvhx?bW@*Dk1xuw`<~ zuxmFQW2!sd10U7txCcIum?lXrU3=hS9o=5I9?{Jc2W)#WWq~^(3C~8e1A6=a2gCnq zwA4Z0p?8X*Z+%`*#V?=Wx`}KG-6ZdrRMXZa{~dphB1;`#H&A<1GxmRROd!RN7+%11J7H%h;TaF%++=bw1@X6SlF;ba$C7rMmn>VUPN!T?LNg?zHwg#U z-Q#qI4H5M~>_#1^^M7mWTG|H+SY;&4#Y8bEK1~bU3sYO4A)2%L^7n9FWu8lgZ4B@Q z?x=A8``gaHb*e8%7Ec<5sR>qBzB%qcLq7DZ+Y3ldsOekdA*>sH$?N(WW+cHqTrC+i zuhXf(kr=1b0Ha+_+!KwqI-N%N25W)}jVy=aLdf97eXB0{@A9{B^#4z7m{(d?>yuV@ z0{^ou<7p2$((!*!;_(J#`Ov4#*M$O0cmOqWtbZ8`flSA-LSNk)HECyK&kTwsshoB>TW;}_DTat{I7uy=>K~>ZkWxM^V#w? zh@_2TK3Rt8kQp5{6tsU&ke>}@NwcBSFEF9x__mTudN;14bXn|UZis87#h5xh#GQAXlGbtHjU4zgel&d}4U&H!`c}FO3zL74 z!k2}^d{-JNPcq%ZZbuClU?Y!U3wN$WM~Cpdewn+8JOR74lMk~bL7p7wC*KpFn>NTo zJRP?Q(TjfWiNkn6Gef-R*(%QvJ7Oy3<#N9F4SB6x5jY~Rmy1)YApBM8Nu25} z-U{WMY>eNo_@yV4cPckzYx*0?U9N*NSl~Ra+?G%I-&cO&$y5ZDl_DsW**w)YL3Q9^ z`D|!y4j4SF^$DsKpP(fUa{HcaQwJJ?EXfpS!l;yDd6*@5A3%e~%Rhokq zD!FTe?P2Mi)%AGuDnNV{kD=GYHpFfU&DIVvLhXg^UDp0+KPh&oTFCN3l#E8peD5Um zFfqMzn4Qi<(Zuv(H9@HelwpVDv}NibWpnIm)vO%Gt>}6l(*eYF>H$Fq6MMyFJl{W! z5+{sQ64JL|`;YF|RI~W2W1m4_eNbWMCSO6x7ir(9Lfm)XRE6|`6^ug4N;etJ(!7wz z7&c22)4eGAhc#$i57#Yo6(OxKlhF}tVBqX_T~B?!XAdO{XId!_QKOHFu$WfioyJWGQ(#vkLIK&3%UW%j?_Qb`Dy81 z`W3@`Rxf6?P>gBY3^bWN&8MZM_(jV~4zrHKY~=P9Zg1g`>liQd1$kT0mfkF$59GjU zWn%h8^KC)f`UBE?{`=@jq>;6h{p!EkVAdN%Ep)Jyd#jTg=ke zzV{Kc(ob0~OSFx@Op6tU8xoy>-r$wHjd;s)TRQIh$+AQAR*lx%5^c_JOSCE9$8#f; zR_Te>drHsP=GJr4mH5_HmtnJIjPxONwVSufhp~Nu8 zdXtyzCf~)1rLRnLY=aD&-E(Y(hGFURY!eK>7#G`$4a>dH+lr<4jGJuB4HWFOv?6tf zZLMLcW4G;|Yz>aF=7yD{$@^^U4bKJ+*i3K)K0rK;D8aMh6U4QM26&F!>%}Qs7XF4~ zx+@ERo>7dL2!BKjz-Gioa1gN>V{68ImiK^TC@*5kV8&5!7A2EFa%Vw!7C79aq(v~u zT_F=*l~*9jiU#}K0mRhke8iWcM}79l?CsZch66muNg#W7bAFU80P4O+(r5I4l; zBmOgX6k<`_BE$o66^QZi#}OCCUq!qUFRQ3cC{;_s6wFM4^UWoQqZk)4RxloCyvitB z$R@y;&p3*45n~18amK5RvX$)_^BG4mZo)H$VeUij$b%M3jy2AR6HP$x5R$;T@L!}RYY*PgECDz-{wl3V=tAq^$k0W;Q z^g!(EDndLKJpi#&%n(GyJ`!v1$Q<0yj%Ns%x1>D z4LtxG;6O@#p{@|P^ZU=gatlce_>^zPXJh^EU3NuJ@=`>CKRr&TX8jng@R6MV_&_Vt zp2-foqst!nDnO@C;HxJ->Gr~b_Qpr;Lag9Ekc|V%#*g7#{OwLI^vBl#{3*#m{2j<3 z=#0PF>5M7u=KQWNWX{5;!$uQIr8Z6e*aeksP;FkoKW+~LEshi5}xr_mE; zKQVIln3)qsPHy`Y3#17XQZ;Si zIoUjJ%w5%;{F~pQD zU(2GS_Qdw@MOUr$j#iG|?$Wc=wXbAC9H=ecu|W)}YVg_;(bS9qccPavDcUI{3G+x2 z$-u&7kPH@qDl8(`GYixPLg1VB>gzqlXzlLngT-X6cjX~bpxJhYF~yZTdx)TRcITX? zK}V(qnsyIRHersjwmLrjSHcThLL y)Azn?(wqmK_95pZWr}Z4pVzVudZqE_tGXZDBdY9&f0m_Xt*Ttdeh_Q3jsF+^XVx76 delta 12378 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 V*8b*yWvQrZZS=t(L}jM&{{gb7#wGv& diff --git a/1.5/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs b/1.5/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs new file mode 100644 index 0000000..002dffc --- /dev/null +++ b/1.5/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderSubWorker_HideWhenAnimating : PawnRenderSubWorker + { + /* hides the entire head node don't use unless you want to do that + public override bool CanDrawNowSub(PawnRenderNode node, PawnDrawParms parms) + { + + if (node.tree.rootNode.AnimationWorker is AnimationWorker_KeyframesExtended + || node.tree.rootNode.children.Any(x => x.AnimationWorker is AnimationWorker_KeyframesExtended)) + { + return false; + + } + + return base.CanDrawNowSub(node, parms); + } + */ + + public override void EditMaterial(PawnRenderNode node, PawnDrawParms parms, ref Material material) + { + if (node.tree.rootNode.AnimationWorker is AnimationWorker_KeyframesExtended + || node.tree.rootNode.children.Any(x => x.AnimationWorker is AnimationWorker_KeyframesExtended)) + { + material.color = Color.clear; + } + } + + } + +} diff --git a/LoadFolders.xml b/LoadFolders.xml index 8364c97..153b40d 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -29,6 +29,7 @@
  • 1.5
  • Patch_HumanoidAlienRaces/1.5
  • Patch_SexToysMasturbation/1.5
  • +
  • Patch_FacialAnimation/1.5
  • diff --git a/Patch_FacialAnimation/1.5/Patches/AnimationPatch_HideHeadWhenAnimating.xml b/Patch_FacialAnimation/1.5/Patches/AnimationPatch_HideHeadWhenAnimating.xml new file mode 100644 index 0000000..b8c72df --- /dev/null +++ b/Patch_FacialAnimation/1.5/Patches/AnimationPatch_HideHeadWhenAnimating.xml @@ -0,0 +1,27 @@ + + + + + Always + +
  • + /Defs/PawnRenderTreeDef[defName="Humanlike"]/root/children/li[debugLabel="Head"]/subworkerClasses + Always + + /Defs/PawnRenderTreeDef[defName="Humanlike"]/root/children/li[debugLabel="Head"] + + + + +
  • + +
  • + /Defs/PawnRenderTreeDef[defName="Humanlike"]/root/children/li[debugLabel="Head"]/subworkerClasses + +
  • Rimworld_Animations.PawnRenderSubWorker_HideWhenAnimating
  • + + +
    +
    + +
    \ No newline at end of file diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj index 4051883..8120d61 100644 --- a/Rimworld-Animations.csproj +++ b/Rimworld-Animations.csproj @@ -134,6 +134,7 @@ + @@ -320,6 +321,7 @@ + From a491c1dade760bfbf44566113fed93b48acfd290 Mon Sep 17 00:00:00 2001 From: c0ffee Date: Fri, 3 May 2024 20:34:58 -0700 Subject: [PATCH 3/4] fixes to bodyangle throwing null ref errors, and prop animation offsets --- 1.5/Assemblies/Rimworld-Animations.dll | Bin 50176 -> 50688 bytes .../Cowgirl/AnimationPropDef_Cowgirl_Xray.xml | 4 ++ .../HarmonyPatch_PawnRenderer.cs | 4 +- ...awnRenderNodeProperties_GraphicVariants.cs | 1 + .../PawnRenderNodeWorker_GraphicVariants.cs | 44 +++++++++++++++++- .../PawnRenderNode_GraphicVariants.cs | 2 +- .../PawnRenderSubWorker_HideWhenAnimating.cs | 14 ------ 7 files changed, 51 insertions(+), 18 deletions(-) diff --git a/1.5/Assemblies/Rimworld-Animations.dll b/1.5/Assemblies/Rimworld-Animations.dll index 8685c9d799bf17debea5cde6a8ba57471ee84f47..9135a27fb6a046b3e1e82ec9efbba14ef2d7a0e2 100644 GIT binary patch delta 15495 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 Kd@rqSZT^3Z9Zwkm delta 14773 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 O$6ek-UyIch*8c-`7~wHead 95 TexPathVariants_Cowgirl_Xray + + PropOffsetDef_Cowgirl_Xray + + diff --git a/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs b/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs index 6d1e2b8..a013ea7 100644 --- a/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs +++ b/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs @@ -11,12 +11,12 @@ namespace Rimworld_Animations [HarmonyPatch(typeof(PawnRenderer), "BodyAngle")] - public class HarmonyPatch_PawnRenderer2 + public class HarmonyPatch_PawnRenderer { public static bool Prefix(ref Pawn ___pawn, ref float __result) { //stop using cache when animating, for when downed (downed disables cache) - if (___pawn.Drawer.renderer.renderTree.rootNode.AnimationWorker is AnimationWorker_KeyframesExtended) + if (___pawn?.Drawer?.renderer?.renderTree?.rootNode?.AnimationWorker is AnimationWorker_KeyframesExtended) { __result = 0; return false; diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs index bd2213f..1b74ba1 100644 --- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs +++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs @@ -10,6 +10,7 @@ namespace Rimworld_Animations public class PawnRenderNodeProperties_GraphicVariants : PawnRenderNodeProperties { + public AnimationOffsetDef propOffsetDef = null; public TexPathVariantsDef texPathVariantsDef = null; public bool absoluteTransform = false; diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs index 1192bb0..4a8b195 100644 --- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs +++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs @@ -61,9 +61,51 @@ namespace Rimworld_Animations return material; - } + public override Vector3 OffsetFor(PawnRenderNode node, PawnDrawParms parms, out Vector3 pivot) + { + Vector3 regularOffsets = base.OffsetFor(node, parms, out pivot); + if ((node.Props as PawnRenderNodeProperties_GraphicVariants)?.propOffsetDef?.offsets is List offsets) + { + foreach (BaseAnimationOffset offset in offsets) + { + if (offset.appliesToPawn(node.tree.pawn)) + { + //modify offset of prop for animationOffset position + regularOffsets += offset.getOffset(node.tree.pawn) ?? Vector3.zero; + return regularOffsets; + + } + } + } + + //unmodified; no offsets found + return regularOffsets; + } + + public override Quaternion RotationFor(PawnRenderNode node, PawnDrawParms parms) + { + Quaternion rotation = base.RotationFor(node, parms); + + if ((node.Props as PawnRenderNodeProperties_GraphicVariants)?.propOffsetDef?.offsets is List offsets) + { + foreach (BaseAnimationOffset offset in offsets) + { + if (offset.appliesToPawn(node.tree.pawn)) + { + //modify offset of prop for animationOffset rotation + rotation *= Quaternion.AngleAxis(offset.getRotation(node.tree.pawn) ?? 0, Vector3.up); + return rotation; + + } + } + } + + //unmodified; no rotation offsets found + return rotation; + + } } } diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs index 3dd665c..7b625b4 100644 --- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs +++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs @@ -41,7 +41,7 @@ namespace Rimworld_Animations return GenerateVariants(pawn, props.texPathVariantsDef); - } + } protected override void EnsureMaterialsInitialized() { diff --git a/1.5/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs b/1.5/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs index 002dffc..2656a1e 100644 --- a/1.5/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs +++ b/1.5/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs @@ -10,20 +10,6 @@ namespace Rimworld_Animations { public class PawnRenderSubWorker_HideWhenAnimating : PawnRenderSubWorker { - /* hides the entire head node don't use unless you want to do that - public override bool CanDrawNowSub(PawnRenderNode node, PawnDrawParms parms) - { - - if (node.tree.rootNode.AnimationWorker is AnimationWorker_KeyframesExtended - || node.tree.rootNode.children.Any(x => x.AnimationWorker is AnimationWorker_KeyframesExtended)) - { - return false; - - } - - return base.CanDrawNowSub(node, parms); - } - */ public override void EditMaterial(PawnRenderNode node, PawnDrawParms parms, ref Material material) { From 8ed52c06963c33731523d9a7e98357302cf66e7e Mon Sep 17 00:00:00 2001 From: c0ffee Date: Fri, 3 May 2024 21:15:59 -0700 Subject: [PATCH 4/4] commented out test code throwing errors --- .../AnimationDefs/Cowgirl/AnimationPropDef_Cowgirl_Xray.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1.5/Defs/AnimationDefs/Cowgirl/AnimationPropDef_Cowgirl_Xray.xml b/1.5/Defs/AnimationDefs/Cowgirl/AnimationPropDef_Cowgirl_Xray.xml index f804252..d41bde0 100644 --- a/1.5/Defs/AnimationDefs/Cowgirl/AnimationPropDef_Cowgirl_Xray.xml +++ b/1.5/Defs/AnimationDefs/Cowgirl/AnimationPropDef_Cowgirl_Xray.xml @@ -20,7 +20,7 @@ 95 TexPathVariants_Cowgirl_Xray - PropOffsetDef_Cowgirl_Xray +