From 00b9ae60ebcc69506705dc51fecc54e3a782e49b Mon Sep 17 00:00:00 2001 From: badlogic Date: Wed, 14 Dec 2016 16:57:09 +0100 Subject: [PATCH] [ue4] Added RuntimeMeshComponent for better performance and debugging. Added blending test scene. Fixed renderer component, can do normal and additive blending, mulit-page atlases --- spine-ue4/Content/Maps/example2.umap | Bin 0 -> 636647 bytes .../Content/Test/Textures/skeleton.uasset | Bin 47739 -> 124016 bytes .../Content/Test/Textures/skeleton2.uasset | Bin 33056 -> 65023 bytes spine-ue4/Content/Test/images/head.uasset | Bin 0 -> 124916 bytes .../Test/images/hoverboard_board.uasset | Bin 0 -> 64311 bytes spine-ue4/Content/Test/skeleton.atlas | 26 + spine-ue4/Content/Test/skeleton.json | 40 + spine-ue4/Content/Test/skeleton.png | Bin 0 -> 57659 bytes spine-ue4/Content/Test/skeleton.uasset | Bin 4228 -> 4181 bytes spine-ue4/Content/Test/skeleton2.png | Bin 0 -> 41788 bytes .../Content/SpineUnlitMultiplyMaterial.uasset | Bin 76918 -> 81383 bytes .../SpineSkeletonRendererComponent.cpp | 17 +- .../Public/SpineSkeletonRendererComponent.h | 4 +- .../Source/SpinePlugin/SpinePlugin.Build.cs | 3 +- .../UE4RuntimeMeshComponent/.gitignore | 58 + .../Plugins/UE4RuntimeMeshComponent/LICENSE | 21 + .../Plugins/UE4RuntimeMeshComponent/README.md | 49 + .../Resources/Icon128.png | Bin 0 -> 18496 bytes .../RuntimeMeshComponent.uplugin | 29 + .../Private/RuntimeMeshComponent.cpp | 2134 +++++++++++++++++ .../Private/RuntimeMeshComponentPlugin.cpp | 38 + .../RuntimeMeshComponentPluginPrivatePCH.h | 14 + .../Private/RuntimeMeshCore.cpp | 51 + .../Private/RuntimeMeshGenericVertex.cpp | 30 + .../Private/RuntimeMeshLibrary.cpp | 561 +++++ .../Private/TessellationUtilities.cpp | 156 ++ .../Private/TessellationUtilities.h | 178 ++ .../Public/RuntimeMeshAsync.h | 1215 ++++++++++ .../Public/RuntimeMeshBuilder.h | 983 ++++++++ .../Public/RuntimeMeshComponent.h | 1295 ++++++++++ .../Public/RuntimeMeshComponentPlugin.h | 38 + .../Public/RuntimeMeshCore.h | 422 ++++ .../Public/RuntimeMeshGenericVertex.h | 1270 ++++++++++ .../Public/RuntimeMeshLibrary.h | 129 + .../Public/RuntimeMeshProfiling.h | 74 + .../Public/RuntimeMeshRendering.h | 187 ++ .../Public/RuntimeMeshSection.h | 812 +++++++ .../Public/RuntimeMeshSectionProxy.h | 228 ++ .../Public/RuntimeMeshUpdateCommands.h | 257 ++ .../Public/RuntimeMeshVersion.h | 27 + .../RuntimeMeshComponent.Build.cs | 24 + .../Private/RuntimeMeshComponentDetails.cpp | 265 ++ .../Private/RuntimeMeshComponentDetails.h | 27 + .../RuntimeMeshComponentEditorPlugin.cpp | 31 + .../RuntimeMeshComponentEditorPrivatePCH.h | 15 + .../IRuntimeMeshComponentEditorPlugin.h | 36 + .../RuntimeMeshComponentEditor.Build.cs | 33 + 47 files changed, 10766 insertions(+), 11 deletions(-) create mode 100644 spine-ue4/Content/Maps/example2.umap create mode 100644 spine-ue4/Content/Test/images/head.uasset create mode 100644 spine-ue4/Content/Test/images/hoverboard_board.uasset create mode 100644 spine-ue4/Content/Test/skeleton.atlas create mode 100644 spine-ue4/Content/Test/skeleton.json create mode 100644 spine-ue4/Content/Test/skeleton.png create mode 100644 spine-ue4/Content/Test/skeleton2.png create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/.gitignore create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/LICENSE create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/README.md create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Resources/Icon128.png create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/RuntimeMeshComponent.uplugin create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponent.cpp create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponentPlugin.cpp create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponentPluginPrivatePCH.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshCore.cpp create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshGenericVertex.cpp create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshLibrary.cpp create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/TessellationUtilities.cpp create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/TessellationUtilities.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshAsync.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshBuilder.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshComponent.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshComponentPlugin.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshCore.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshGenericVertex.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshLibrary.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshProfiling.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshRendering.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshSection.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshSectionProxy.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshUpdateCommands.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshVersion.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/RuntimeMeshComponent.Build.cs create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentDetails.cpp create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentDetails.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentEditorPlugin.cpp create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentEditorPrivatePCH.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Public/IRuntimeMeshComponentEditorPlugin.h create mode 100644 spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/RuntimeMeshComponentEditor.Build.cs diff --git a/spine-ue4/Content/Maps/example2.umap b/spine-ue4/Content/Maps/example2.umap new file mode 100644 index 0000000000000000000000000000000000000000..a8a5881ddb33180607aa83df08b2dc69ebb7600f GIT binary patch literal 636647 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 z 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

HG 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𝔍r2g?A=a<4<5$90{l}WgqbOHFs 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 literal 0 HcmV?d00001 diff --git a/spine-ue4/Content/Test/Textures/skeleton.uasset b/spine-ue4/Content/Test/Textures/skeleton.uasset index 17321689a9a9c62d054f45454bc2791180513aa0..d333cef68aaada822b54a324ba1d966a8e249d45 100644 GIT binary patch delta 122908 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

K<00?% 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 Zk@&i}RsaA107*qo2}G_!V1mJeDxT%fp>zNM delta 46017 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ΞrKwIhCuNc_n)~MFe*HBt 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 diff --git a/spine-ue4/Content/Test/Textures/skeleton2.uasset b/spine-ue4/Content/Test/Textures/skeleton2.uasset index ca772d2ca669e659ae31e3473db3fab1921d7630..3588494949f81f5120a96c79b117e73cc7177b1f 100644 GIT binary patch delta 63463 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%0Ay;JIA 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 nLR+ybe|FVL_GgO`@)#ee!tlmuH=_BueT<%OfS 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 delta 31236 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�T17=@xXa-y?jV`o%qDx%IufZcPGRT+5%k41!L5u z$%HJ3bI_<(33>clM57WwPV4KR`6Au_d9wxZ2X2hPG3_d_fk7%MmTc36X0c{nPJ&~GA8 z=B+Rtv0^>zdUe+|w@vQ6NamZ->=rD=6o_o>9akQgyIjfp=JRQj=Rzc$U8U;S z+KZ)zc>Ju4JonXij*Q|9&ds|LiP{p*Fpu+ZCH`pmkeFYw-2iC70-XobAY2Ln)2O|4 z-3_kL-9rX0y^ux|N*qOEhpE!ds)bzZfvmZfZ|v*9$^c4Q^FBOn-zp{dTC-* zaqc-N)Y>LOW4mCVQBP@>-XjT{AyFJVvv(%?U;Sy~^-~l)`Aa^^{@uk$8?)0J{YvsXnHrHZUZTCG#UUQue#PL@2pC5uDW)yK!1g8#bFj%8Q3{_QS~5 zc|>IRT|$>$bL}r^qHQZMec%x331SIyXH&>?KsfZxtp(q+QM}Yd457X9WZjJ7y|@&1 z6iu-7E@~ZWp?4o_IN3?SVfyn?nQfeHlq3QMTy9N*cHY2{fX}p;lZ^=V&#A-7kCf|x zT^9~Ebp-OK@v{Xbgi%-+UC5O{8LYP`CxF`3ssP$ka824v6pDr%N4aEsaisbzIwZc8 z{mSoT!n5e)bYf)l@~ak*c#T!M1n9C9iN~YhZ{saQ_MdG#x#LHl(FK)*PP`Zn6u&v= zhK2X+$|%r1xgaY}4b(9XF68zFxg}SiL2E zj9C;&&TwBV&$I6L!o<`Hs3s0>SYosT>D)&fX;D2eH97h6i4^mD$hf1N(@F&el4vTD z<0|sGfqm0L7Iz2+MiOx>oj%2e_OHMP8^Ytvtqx08ZCTcKr+Gc1{E_OFXp+%3S!gZo z<4(l-+_-?5+)bgD(Z>T!H}nG|bxl_aJivBqXDI_I_qLzJ;ABd3CwHOUIlJM8BAtFG zr5dtj5*%BsJ?eJ5Ur4A=U71WBRsQ|;`0Hme&!On%+fm#C|67KtkH%%WyUMw>Ti{W& z4G8s5xYOBS_x!fHtM8eF1cy$-*L$(fw6sw`4RB}ftRw3^*aEiKWH)lJ@E5eCE@!rt z5aCs9Y+ycWy-M^@|`T6@XU%D$uX~~BJQ5PFJrQAroL74YjbcU8f#H`uRqPtSK8<4 z-M`G(S{V+WJ-Ai7MO`D$-DSRw%7)+`;phR0BIlJ<(=(BvrY=klg$hPd^FWz8$wvm- zV@#pVljn)$i;@=UHpI>e4wuWUm$lY$5+uYZX&<2nrWepHSFqEHN)vYT;V;-Drq(Kc zb&7WRfbVdNl;DH4JLlX48pQ!^((90XK&2)$-;idM`M?3*Q*RV4AT%zrBDu<9d4JMQ z>@plngD`I}uneYj=$Y7pL8ns)mSqn0tw?I=r#?%AA20l3a9WRu{H;E*1UOG5=-c=x zp?y|o{%f-oI2)r$1Bn}bP4Cx!bfmv*??NSs#dr;b z69ueTSvsiavvQrug<|auh>|a5iF;X+Q%R4Dcqjs_sZ@;Ht{a={c7;B#A-bI0e>0Ev zG?lZTH9KdK9QY6(2>(l;)>9ENn{Z{L(eC($}BYeg?5uh^aX_4aR9Rh zcu7qXU=w$#0z7|#)jtf9+5^8|IE~c|%q+?4SC96K{dPiAFI0c`1&9^IdjpkYXI6=p zzmw4!=2bogsZ09U#xP+-;&50weU(VQ=(e_H+JtPX(O-2U`z*S_w@(_2vl>#mmA!Ip`sq-`65{4NwdOrA-F{E zKYUdWW8of3K6aEjRSt9HsIb>opgKh#7KIps=3&}ugL*O~x4)j#ugxc{9E3y`U64x7 z`hT!#sVS$N$So|6pg-oS?fgjZIe-^?FVGEJkTAvxgc>^gW;C!UxLeYClWF%Q+y|+1 zMAqkv!9|u4=&EcD6ba6W8`CPD*(~KNUAa{KwjJ-EXW7ECJ9%EGZM)ZQ4^fPC6?Ei) zSO~*GDXZBAwXUvBi(Xn~<_G}OtoZxBL_@L}Vu-_l$9Pt07n-em;|z?MScHM>Y7SQMzN_7 zO@~dW@ii0?IU|ePnmbsIAx{u99ye(E@aSgkW&wgLWNrWN*~NJ zK#m*NKjf%x1&yc3%|(WINCBS{yjN%|jhJfjg)j$Ehj84Bd^z5W!sqDA0O7Uqn#N`z zY~5kP`&Js+ay`oY`d*5M8XMMpIRbfOEzY;q1*|Wbl;w7pa@deo=&V?uCu-xd5FFr6 z=g{=PabYxJd0ezjvc{#EZV{T%;SXwaQobt>)r_lYUE*>!`gZo zs$Y~mq0T_IPXl`;f1(UPZ|UlX{JswO9V2P^Qew8ltRCL}7YvWKBPwj$M*#1yK3zyC z97-fWS;3q~o)F(Ef|@g72~0SXT3p+J0>GZhnt2QVN4Nyv;(Je+8Q+4juN)uLndTpG zt#H(_P8R9taFctYY6asPHr=%wpSMIJXPJ4GY&Fk(+lpQkt7rk6nH$-FOcfE7D4EHz z+wwo%%A2o$E5H*+S|A}N8c^^R1BRpSChp=+$mFSuO;diLhV{9`Qt5Oy<`(7kCgZT041FGAF%PFB zp5sPrLhH2GKUxgz_NhQ$1Ysi`rWCoFT6T+suESrxB*wOmu3~u0%S)z0Dyus$p}&Jc zKag&)!p7R_;P@6h%g7{+C4jkkV4Tcq_D?84Qjp^8qm)H>q{#vNfA@Mhj>V3iX!0Y> zh5d+L|6)K$wVhldKqy(0wCuJHQfD}>oW(Gzf4=%oKuSO;{?wU>1KyJ^7XcfYz|2S@ zu?1$o{$(X=pUku`6q7v0P)2kHr2~&298m~dF>hRNZmOgCNOU>BPH@>i$x(+zdmM$b z$cxDt>--O8^A({KZ?!7_DXFh=RxFL2B0;!QYOgm`8;ibdT*CZaaK^J(Qnh|jfYZ4u%M>)utwGE-uP z(l6Kp;70CS3xY$_lcSX-4dwRu0S;+#QbP^b3tlp7FNg`ghh2)eB?$fu*1Ws=TEdwmU~W+J)MRO4}8v1 zz;B&$W^3?gIb;a9;eaC{p)x_~3MiqkPQaZW=o$rTnqSH~1*pnv^2vU+=b?`YKwwWA ztC+|$1jf!!wNT_s%Bvu}E13+^lVSmBRP#-)G$;{YDH8Q#7->J3?LMs#J$Mp5-sX<7 zU@mnwFnw6%8jriosMSD7g8)Z6=1?emhBVW3#Ir(5NbvssCFuje5H`wfkjR}$+@>2C zDk;+k(1^u+4fRlc=c^0aUf)_pB7^-Q^!+`TwdaBo+o0`pkw+=;#kJs z?$V~3sxyIMjtwdQcHUoJ@P2)g!P5N7i?mtZtd%b>{FJNR(JEzRsR$Zj2a~RNj{LKV zy6%`1@@AQ5b|RTf6$pNJ5(L2XM-glZmLGt~`cOeiDQX3z03n0A^1#o3`M{B*PG*?F z&wR-a28#Xl0)GniRff%)El4- z*_~kp##qR785JgbUds6b7)c0&w!kp0Bqnea6M1XWv2Op8h{olR(VT*`$CxluDS*|3 z>=ZPHHhL{3eM2q6B&%0+g83hkYx>cS#cEzM%UKTCyus*V*?-0PJ5{#6Y&_nJ{^(OH!Q*B-`Js@8!b()_miw ztDi%eoB6|p6AKGDx<;KL6ft~|40B~k)p}HkBVksLH&{#EKxy+LI#1qEXz{b|OAn;p zn|3HudS3$N*(mBo@qU!a4?aCybWQk=8vn#KDKPK}nu&;60txdgj1odU*k~UhlXO<8 zfldAjmN6Lr)d6WRWA++_g51(CScrSai|qa9ap~((fv|=%9#nalj6r%SImwe^A z{Ed!=ve-#REchyMUPe!4&H1$wQc66b6*WbqxX|4GyVQAw0z6d7K;)@f)$_lyykE-b zx&yRB4U45;+G%5;lL`TR;)`XTRj`0X z5g8a(5_({8EBn|j9I}92Nm^PMPb&Uju)GPJHHzlV9zpkHv$=(5>X|a>jP?eKcbHkY zi(}vg7+xt?`Fpv<#ShkGF}Na%u%f!UvY}Ar6+97a(0W*^1645or-f$C34>+VY z@Kqp$NC0}U4Mj6Dd>%R>^m)SOTZ?6lZD~k{^pQ?mE0Hgx0sgWxnhfE0z7S)k{kJ}h z1AZlsqJ4~LWMAJ~vL6Mo;TGoBnF&yQS77Ws3!;`1-E1Dr7Grw&aaIy;%WV#)ZR$*j zqRWR>AflR*HrIgiEp|x6sJT4cc^r`0^3pN|V!>xA=zN>B661!7E*fjk30)bS@oWc36bWE3;;B7mBK_NTTTl78Johevi{8Va`|CXtV z9HlyXp=Z2^X}thkbCX$0FB`R)ko%#;#St$B+t%;Vo@3FuV0Q=Y5@b5I4eX8USD@5) zg|XF#Rs-&|;DSqocMA)J)0<<3z9mOBuJq9L9Z)?W_Kw3~ z1gsihi85Vx3fb067C(!}j(oyZlN(_xC1 zCt%QjBv`!lIu2rRgZohuz9u8YZRV5_ko$_6}@iy`k?FF_3!KXyXk|lW+AwtR}?Jeos zzzWtnD`aDkG9ZP7f1KHh$`AlxA-zo`hk>*g!w;h6>`r40T@F=xQ9VYIxKWvsXu#nd zzvNx=hGh)tC<7u<+}87Lf1Pmgp)>8V?P!Ay)~i-zPfuRXOE>inVBGqpeVFOI`3nxV zghe$^R`dbh6hq`{e7Ywrk{AJd)Aro5)EcT;-M|kFs3iNb6nvPGyWaS4MAG8njYK-3EWpzR=pNgBMt zUigLYfMNZr@`5=1O-hb61Rw?yEYrRuv)PgBc5s=nNr%#GNOyX=SEGWbOW5Vd8GqXr z>`D8*0H1HX?B93~8!e?d;|EyD8(E<|%WMk$-ZwB~JV|=4*@Zy2D1i_~4`+;?18=9o zc9j}9_0>c*`i{XkowxK62TPV&R)sYOrb%T6&4rrYPXLlQa^Q$3J0TBjFpz=G#q%Oghxs)1PM_vYqIwhp zNC9Sgc=8pS`y-T9<@2PB?Qx$}hj>m}>}u8~ArVnhN#1gynco{QUf7McG7$3Dc0Hj0 zJ_xgqu+CJB!aL{UK*{-7s*%l2Sz>;2m7&q{Z%4!Tvd(H|$Vwwgg6!1H7Yd|oE;QQ( z8ZAB2y?`s=saf#Sv|GX3WcD4lFR~QN%=3lPgl+L8oHyNML`+lciqWc9cI3_vaA-ns zu9zq=Fuj;Mv7i9o=V9_UeS>AIo>MYe5<3I{z4$BnX_;F>Yj6f}r}Ye}dWbXb5A4(R zzMjW$D+F-LaJVORH7W6aDpICmM(?SCr(RpHFA3*P-oL44W_Dx2&o#?_7s=3BQ!SIBBb0b`1vn0*sgI-I*ei{~cADrH*EqA;p^8+dcQux$O9L`2Rr zB~Ddm1U^Su@a0f);+C1Arp0G;)saXT8&LNvPHYY;K(MF5Hn(Vce84RC>M<%o0pRD8 zVktNiDj>*vAwe6+W6l*lqf`a_`aAN4gZ5gTIu2h<`x3;)a9;ykFc2etTF4QdU+gdQ zK!Qj2^zcrOT%dLBNdXBY5H9Tcj5xl-1V=#bZ`qxYA<1INase*owI!D#GFie%NmeLS z!DC|UaP@b?yu4%~f$n<1ddDv$#F^}aR(USOFzooMPr5d?W!`&uuFe{??Bytt7~<$~ zhiA#Y-MjEGpS!*moTVfI=ncvG2cCcZt1O&$2CYFxiuq2=H z1Pz$2nAF(@aJBgEV`i3AV9Y{$>8+7g<&yPTk_jOFri)BDWkto3zj1eb2NlMIa=$`w zK&}PdC~K*lEYgPo;i(yQc!Zidw(;9)RahgMSv@Ge`tH>u*MifI_1yothQndjEA?u@ z3*$0_+iBi>4sbU9{g9R9n^a`|^s0S%=43R-G<%V|e z^F?;K>dnZEH2XpaefS|Dyfh*r8HCs=pYb)dAD;%|$Pj-U9@KxtZ+k?O zLra)*arp)C4(b7Kq4>77jBGrEC<5a1 zwE8RJyw~yW4=5prh4OF}(Y9lUAuN~8Q&=^X&3O5Y$)}S0hUE zJ&y2dlk9Q2n%A^;HJwyna<07lF0ff|LXY$Q0i&Q_!kRq6cpD5};B03jPeq=rVB%yN zm$D389PCr@p=`%%D5l@?O#_u14l#%8RaAbwLzI1rB9PzG^2VV zkiH`hXWuJa7qM*N{xEh$COKN|+Bp9~0+*DHD!4uc{cR~kpWUD(_C3Tr;J^tkeHtgnPjXi)ev zk!@K7SB@(ud24(#a?(03Zych zsj>iwNoMCg>rY3dW&jK%C*RYvv!?!H!)!G%0il3*P6O>OI-ke{ssKt z^he+a^Trm_o3lj-i&6n6jG4oL+vK6eON&~Fc>=M554}T^l0wYAUUeuZ4;mHrEzgou zW3U4!I1UKguaLQ-f8;a&3KC8eg6%lOp?9hnm6XI8TYAg)>Wi=Uy><7oj(?^jdwx>H zwI2zKR!F-zi0ZV$05MvufW|}p;3m?TaYqxsAW|3;8UyEML9j3ev;#yB%uO0YlZZ50 zH0O1VI`m_QIveWInW1(X5sb_;1^@}^Ln4Z1ygsiyhF$CeH*n04jF6) z@&I&xBl6)~thX{YI9uo@?J{80-EmFEfH*Yq#}GZPYbK985I=+s;Zl}CZ#IQKp?YW@ zY|Yg!Hd~SMGa*bo$f*C;A0{{2EnsArqVF)?Ei`q*iqL;Q*HTBtWOdTJXZ04XB-ZIeTo`Ly{N`sg8DUh4=+DlUD7vH^wi z_)1v2wW-h_v_B*#?L%UM!001BWNklI>h2^CU1 z@M3)o$&YkFWutynBI;m*>>8MGk8f41CX9J)qWim&m3|o(fD8J;G@)FApddZ(>Vc>r zI(z~FNQ{f$*q*?EL(Ey)WRfK0z!) z!!x!n>ItHNSyA6PV~IY4SK23v#I#d9=u0rIf_5jzQa7zdO+DHr(h!L|m|xV1 zmqXJQ-A4Xw1RCa+x>&zwOw@sP!TPE^x`q$Jk=pp0jH0@%sZLV#Bm3Lx4nWzaLno2P zB1be(kc~-6BT}10zx=^+Nte{*fY40Pv^rxRS} zBBjX-!lRA=RN{2`4R)wfL zP@MUM35JxMQu~?euUE;;(~264^h5)qpGd)esj5^#z>mRB)CE&*mi@*_k72DHriav- zT@YUAIXk9UI)fPT=%WS$1Ns#02c2P^b7XW@o?m%|lkg0E&h-tBq1r~fw`e?0oS<>iTN^Vs~g7-Hk%ZkltjED-w4D8(dEJmYJnLeIdOE^8AyT??c=Fd zvqlFp8^#McAosN0W_;Wm5r+gB z0RsO}VIT;P6l*|;)`jz_PZJIR*!&FuNW6w%d~(L@3RDedi2+g<%pfMhDkQmrBujZM~8PP0Y3uO36}#gK{l8d48$`M7z!^>_B&dNbsds0|&ArIDkFd+ya5YkhDZ$aF5o30Kl#~cBt9>C*Z#V z9gLv|XKBcv`OVzY4~UfN^}bR=kUI`H8$5VOAE&10|6UPOWX+lCt19CEP=GoNkeN7= zA&|;}FbfOoU%*N(^5Xab$TWy_V=}N$W(h3Nkg;QVQR0+m7|j5@&_g$CUz5&ph5Rx0IUtej8LJk zO8rHBWej05bF~w_4`PA{NCrC%Un&;KdZ~7Ochmb!cpD$=b=KZcBk=%&#H1iwa>36s zZTgR2nt*BHAOY!s3lb6Z0zSZ+Z{UbF0UX0p3iog_qHWMmK8zdQN;#M{i8{H)M*(aM zmO9FoV=i$nLCo3ITgt)!(5TpYm=JyepF-FcTg6zPx6=w$&!8kIL>gTx%r~cu4g98# z!xBJ@k$&_IPI>bx56;o=kW`Iu)t`=dNkocmu0vl^0?Zh(XjLAOP$d1Ej_6URY{c)v z!%BtG1P6r}L|Vq_kVGL-ITONrL74;yR9`kQVlm;Ks79#3e%+Ia4yDt-DThIRRUC@C z0)dhXgn<*W*v(cTYs=WJM;4@0HqOe}_&{KI_K@~OwZMo_HJE?^7NS|`D-klN)p#C} z5O&OHl1S2fockAJ;R6RoEyA`gB!P@z9}D<67_}G!CW%e)Q<)OF(73@s-V$O741TV%zIcy2=fI_Fz@=GN)Q4>-Y>h8r8Se5kWVyH`y@Lp`E3b(|QG1wh>H^t$@eYXIA_Db` z(OyM?GZW##prZ)@GfC8g%7q#Qve8#)+jDZG2Wt=Y5`<(7NOCxC@c2cMGulS3YZwSM zgY?7^b20?U-?z*Be^eZ#mfSX&Gl|p79LCLI;z`>Tf>oc{sz+<;_H`u)6__z*G#v0y};ZD_wDhpH>e4Bj@+%9Ps8 zk}(SA6-LMUBM6SF9qP=;n)Z{qr*A|lvC=RkW((70-WlsgiSct@JwZE2d4vPbOQbLi zjk@zm;LQ3N2e6%zcIk1|3pc#Ub4$F-c5z&EHJp=3H8~AU_2r+GL#R}38)DE2pZr8I zfvA6QO{7*dW&E`AJjYwgKtTR%T#_c3R3rlf?-hZ9kWm7q9*}!lP6oWCtgpfC$w#?4 zsku0G0;3?mF$;AHPL2J`R=R);Fc|79QlE&sq<=i)L!CMc)s0A+V}I~W{|ip!r4038 zBQqwOY}LU1t)x&VWtjtzc}b26oE5;eMiDzWa7?=BdFEVfrcK{RkVne_nrqIWLiNX4 z17(7HGC7)N1qu3^NceR0>xQm<58v5nJXEA3YIW# z_6HXVLSxQqleTy@Cd>i<25XcX5h%0dg^e7X!ZnY#NI#f->@y@Hh{!$a#ib1)Xt=uRodEQaWg_y@f1Zav zSf5lDqn|`RFI^KBisl_4ngo^0l^}8e4}O7!Bz`j{q==7#;lzGFnLOK$6cB^zj9`Vp ztVu$!sEiORlkSmh3oU9WsMV-|(m1r)51!cR>a_W&%MuwGnS;LTo1mb;cSOLpp`V-P5k?LyC}O*}hkG828) zQBZo$KEi5A#}eb>Od7~y3&Y6{qu1jMvN%s68Js;JEP%r9!LB`jdBlxsgYY{}cA7c| zhXom!P>>^6qA#?I1WKQAU~&i;W(&B*!R*Z2Mk#1}N4uLPL90vv;N(Hg zg}DcqZ&Xj(b2SV2u1Q@7CxF46%oa>Yegj#|IGx2irJY`@aU@}8(x6JU$oo+pEok9& zARMyP56P=4++pxIUZOkHGwUkkH0I0x(E!oHwX0^o+xgK^7(u zJ>MhJs=~EoKPXO=x>C|!?Zh=nFd2fjFN-Vk?AU>3TY5oyqs9aYnynAqqu;d6ZVqCH z={rjTgoR-S&<9?T$o+uCp&T>8WRQn?t~YsUK`nlsKtSro6Ae62?;B(<7K<%&pHHEQ z{`>m937{tOz9K#l1`$InuMz7Fb0ite^oKcwp|Y&TvQw8GqR!!D$vlih?a+4|GJIIt zVO&A;*{J{YgAZY-cyjeJBr{!DwgXr4C$s{EA!-bYw6hfm@BtMW&B#tP*|3i6EfB2) znFNf-P8@8$2SXpD9)LzU257*<@gX?b zPhe&(h5ZIp-a&vDcvb5~qc#~~c_CXZFbJeBgg_7l+zxm#!NhKwelM=np+#_(R%nB| z$rC0A!UEs`3c_OfrBx1r71hfkJWe9=M#mlcLVesva*k<@7Uvd;`jPI7i#i2D{h(p; zX64w)XPY4wYb3`XYeVA)2EfPu>nrq=*k+cb*n`WmMo`fTZ9f|v(z^ma_&Z33dL0Nx zumX`oVH+8E0^(yPVVeUtB!*r%?Fml+G~uRx6SV_jVt1OKKo2lk3Qe9d#>@sKstCUV zQEsHH^AV{y5I2!i5IEWq0sno9A_9+c36Dq>IWK_?YVHN$IU59EIKTm1CbEsd8w8d@ z3g-q#rk)xepI?Y$*F}>kIwnc*2{;dlNeB5d6F|U5gVSs^Q7@BboL z8~-#hM613|>I6F83J0P^ z2{bxf`k9%y#hz9s8~A}tUgE786EHqoR97C<9@O~EIZCUSS=0?CmT$l9s?^m=y@x3Q zTi`%j;lsT0LB+2q+uHoC^}#P2Aa(2n1+@t=+NNtsL)r-Kt1GF*H3WJ%^cs^2END>Q;~(`wqC~0uwHI z8W$#H?^&L^40v8rh`LcNA)G>iz@#H>IdP2vlIQ}`gg%jibBHxGqIDonq$CrFvx&Bl zE_5H28R?0Hg`l(bgK;v6cut9`QHy@;)>`gAj1TThdHOv$rClAWs)v^VM7+|dG z)gQg27^!F1FSPExNmNRW_}33B>|M;v>J_5v&jbU;nC@rLrr2C2i>W>s$S zk9X|w`pUjpzZ`-2lF6j_ZE#hCD`Gr^UUGT?fdKtOatH~oytIgXhErSY4R~Semm)Ac z!G+cb{6I!taRI#WRj^9n%jb3+7Sc`XK=|N@#9739k*s1BhM|FT*rv7{NB1N}r=(tg zM}3+AW@$t!1SpZG^t-ecR$&v!4AOTnIg+?dVUQ{PNhDLAOSqCP{_2~h2|f(MCei9% zkA$h})HrGzs;tf2^Iy45oCr3wJuCAg2 z&dbp=rF_F~a$;03E}E2$%n=*Ow_?}GJ}TF%ILbKuS@y5`6vn&OA8*?e7Rf?CeSqMB z7h?yBfnO+>t>2ryCkKc6Baf?)fqvv8GGI<$IFq(VG0`wb2s|*d&9)uQ4=ysV)6#Sp zU%q}s%TWe6X_uF9W5rz(GbeFxI}-I^X1sM}#O!ap)h0yLM;(u1<{8`FSfxO+%6oin zWOCt*U}@eq1pr0KEOt;^hYo7prU-S2&Sy>B*QZ3DLI9B?SJtBBhkMY;X-Ur^tu--- zfMk3FC_mxrfkaz2(Mek}TjQvpB~lxRyZz>iJ%#`WSTGk+dnc8jOxi-V!Vb!1Yfu+R z&BkNwP|l;#t(=Kxlp!=_LQ?Z`zdWkt54)z$BkuUUM_g0W0asnqZ4z@e!3lL5qX7`p z0!bnt!78DXvux>R^!ZEB5FewoA@ z7lvMu6n!&{ANT@Z2>}Bsg9;p&5ACvy6WY&g3qXSU z*a%)N$?sjH4eDcU^xD9xt7!O;J8|zjU3>f8dKF)rK!tkFTdCpn3=Uf~BsO|?d%i8k2!Wl z8Uwh;k|qQi66Pd$&XJ|~MM&BWGph5Do)ImKB_{@^kpfh$JaX@r4byCuYeLb}A)Iw7 ziM(sgt;@0Q28aLxp@OjxOuQoP1OnljPD8ka?O6w-*p{r(Pp`K>xfQ`jKo9@b`ue+<~ z|IW2F`W^k%3NB%Lp4WuZdkl#EYl@OIYBNaNC)WEc0C$VXp=nATh5-41rXb|q<>jN^TdN)`|lDa?XCJ<6BpAB4?r{b*m;mw}P7r*%$_sZqE8@W1$Syfm%J*$g|2wve0$W>?h<3zY~s{q){P8 zR2_>H184LssB9Y{JRO8<;K4&}1oZ-eLI4murxmapzFATf=^bpxNUKIH5FK0xmE5DS zcIJy1@oK*GMxS|JIkgSR7o;a`7=fxCe;`?Y0;Ns*hpoy7pk_-TahW`?*wsA)3-0dw zf8KQ+`bR3Pw`VO$a@wIH*-Bo|J)BHS_93*btW*(I`yO^39S^yYk&n95FaMEy<;}m8 z$9mj#Xs1zgy@J8j|4d>9m|;}F26Yc_C=NZA0(?xiKkwG0tIaq4-W`?rdLVQo%OXIL zf_R7V=CX2NxSB*(P)VRPsd@B3lN}(yio>*o!HaM7&1mJ|^FpAsJ&bX7z$-O~Fdize ztEeWL0#^|3{#=rhNoRtQYW~W8<%A9WgFqo9>P!)+?o*zq9hNmXae*Zip+VNV7#!uR zwYwkA!*4>VCbTW>>(5^{V!}g5>Ckr&%*LoLvK$lI&e}loCV-?owwu1P5-EKwmzQ;H za@C!`w&)&x?B`tPfgdotZ*^r;XBp?~O5SHMiIo*j!(gdEuQX`A-~Gc6zsC&>{Fr;` z#XoehZF3NW#8>*2U!nE4Qc4AaJTCD4Q4ew`PU*qcL{ zbw%sFm9Fz+xF0ESgg^dNT|3F zA&dWT?U0`Vuit4FB>wkI1W4j3VEqtuc5Q$ z6W&zCnKrP6R8l@Xx8x0d;u(^YcGy}L?QbYY8>OmmW-jJlIX~|ndgNcY?!(`&c3^DL z_xOYoyYWrP9p?f~$$Q-8j>=};fAD>7DbcP77oBQx^$kf#-ZJ2K#W03!30N?GK4>l2 zt}MP|m!qPwc8E5FL!1hUzxe%s!Iu+YFTm2wRd{1Lj@F|`84Tezy zMPNWv{W>s>1GNw7Wx+^VUP$%1FP}cErJs*00xV660<^de)QZUkzE8w>s#Y&iRa=JS z!6wWH`mo-{)aS6faU%oPN_R`=_ORDM|wzU&Z!hqt~egZyz|6+*5C)Anrj)VfyZ#n|E z&6bQ%R0o7YKGuXn;u+2(97U!w8!SY8sJc1oqpXCU5eSYY2K$EA+8|EsC)xl%;8whA zgw3=_X~O*=XlaA#NqIRA1tt_2hh@-xBt9W!AX-4WP}uAqlkV7wA5wk} zRZB9PkTJ`*!lLbN<`9#3omRrqLE?e%ZbZq(!yr~!5gP{i;gc$($-AXh?Of%ttdO?%6wvBlkUCbzR?z~W8H_x=a z+l5$gd?DnE&K)pdRYPx%(B}6>+t-ZkPpIm%uk?I=c{TP`@~qL|+GyhfhJ;g5DH7GB zO|o);M53Y0j)meT{*~W=&37aL)M4$sKy6&oVCgvbKzaxY0_7W3g2@P5ymBIn>V|-s zFl!iet5>c&^F)eQ`DZ>8o?$KTK-v>6dYtqG#r#yxYKoYJ>;%j z{(E=!^*?ddrI&3RS0ih!a>g+y(f&pIWPQ{;+mt8aZIiD8-~yUa2uoyM!6%$1NE+sy zxxjX&9$i{Jw8aN4h^Q`9KfcM2Im7&tcefHS03VTv#FOJlgNdEcHb%aI4~a1lgfTB1 zx}+T~m;-EDpsPXfSVsM!|2QBidtCLf`;y;K^(vR8yxRM2I}-@5Ct)rtcfxK3p!!mHt8mT&2k0mV)W&%=CMWn z%HEVG7?p?PvuPKAA$b8P)iS976#JLu9L54CWS0&|!aXldJ+iP91O`%Dl}^CaM?eMr zppIw)P*ZZKj7(Ly_dWSDYO`F#>`!wD`9l98&T!3y^2to$dGtQ_vgL&sf|il}d9;@G z*MuGNDbl)lO-+Zp>+Ta6KwidjojX;pZ`P>2HW96bwhgWjp74S^ zz{-+36o$t=Vv_YLqG<88Yx3$7pbk@}Zpu*`4izK}r$AiKmaw%33%i1$pxPttFrzs4 z7yQDf(%!5C^9V#xY%vMEAitgPAY7#5g!M5m29W>^<>ell8KI|~EXejW;&gG4Dok+t z8!ue^^w{*$OTynIFs+HSKRO(nHe*c?35af(rEgSA^}{A(JstY`Y>6YIYO6wp*|ZAq zXGA#R>{})W8aFsiZsFRdpPV*8{nSZa5GUuhf-d|UFeMiy3!3)*%--5; ziTR-UaZ*1{S)^#2mKo7H{`Q&ke|6^K$mb;t^LiUGLRq(Np>ZUIaWnx3pc}w5TedDz zNYY7p5aBXtQ;9Oza}Xmo3+LWI2uw5s!P^S#gOq}Qa?ON$nV7vn2#!#~Nxkp%NOyyk zp&n=iwS-+XOm09D93tT*!ztS{Nx*)$2oXAPPjCm)001BWNklfHNNdB3>&i9w>MGCg3JK5A^UzS|S4*MHh z`pXyzw3ya@_CFdH4kXS_ zwv!5lH|5f5Q2m%A`o?(Ir6er4kA_wu2_+=5Im6^YvT)z_y^1mHWMW?E4oh-GUtJXA z9;#3V^H(9B!Na~8&v05gQbo8e|FrgUsIEZM+2u^t^jV)B6 z$qxi#_(MgihZnZOglrd&elrdd_c+TnqiOp|Jy!=7-JSRRkSi^3()iXq<-QFsQ5YK^ zs)SM4Gpn6HdJz8FrE=+i3LbXP&wZOcV9wuR4)7Y6R@+Rdbm7D!%Rc?f-E3%aoi)t*UWIg&Vs7@vzjXS&pV>!qH)zxvwQf7jYr^9{?p z!5`svtXRm}X3mu)H0(zRjFUFbnlrBfSh z{}P#ms_Yy4w?`9H-SA%5+Wv@gV>^4Bi>g;wllj$mey4qsHCYb*3E$i{%Pd*6sF;Gf zXQoN=X0oj1HRj2EpD*%gTP{~u7q#nVMAAivJ|B3}wYJ^w4jlR}*K_G_-K+8jw>Icq zJCX+8(FP;&kzTwHbWyPIM69_JGBba$Fy_*<8_gv+K<_DsWS&(%oJpUtQBmhfD~)9!1XG+v~5 z%|;M0GzpR$qBDwcGgXX1dtj3%bkw+tI4hAVNKw`w4L-?oNV{-eQu3Cy0W=x3HKn$g z98_icQ(3M)f$>Uw*9$=82R7{FNByMTXgfYHo;Nu-R7dC^2tz*3%b_2rG!S>t6j0R& z`Zup`q(UYc!tUvhyN4couk5%^)#14>U4uY<7gagG>8?Kho`+KsW2}AUN~*$1q!sR= z8iN>~K-D9YzUJ*Rgr6WW!12~+3rJ3hmxq9LA ze{=d*h9~C!NPBycZUrT=5Obag25X#(kU$cH&X(+P5;_p1Kx4$xC&x`tgUCa9>{0Y` zh?L)%bEY`+$4-rQdf~Uq7w$gKBlqn_lKCdy9jznPcAb6OS*Mw1x394{e3?ouF=p;n-XA{Gd%Zz7T8dqH;?@Mb00$I8AOOS#Jrm-uA@MK z8U%(qOL!w{IscifnErqd5GVxI*;oQoju9%AGmAcxKQDpmIc+2PIVB%SjL?Db zpLzMpD^Gp<+|Tuo%zjmx!;;70jn~#SG#A&a8lbUK<8r!T12&*~6_8BX68QiM>Hrgh z;T_%*hFSrD8JMz|=asysQfE}ggz%wdz5onsoK=+(gp8D7;yDWkV9-X^q}%?~2=55< zWAp2?a8=r2l7piRuQA>|m;(R~iF_~}&ZT+i-H*D;>Vs}}#*Up)cd@^fQ<;M8Y2`Ft zU_%PaPP9)@lc{y8-iTF`7Z-7smg=~aa-@Eek*K{@g%|P)4MXrHkCbLw2mz50Y=!}z zmiSUX=_?-)i4?y5udV*2Jw;KisQ*QJ`PQNTUZI8`k_!CS?z!jwz+HOrc}a^JceuOF zyqui;z!^m#JafbD4iFWHa5M@BpY!H8U>f=#<{onfEyjGL8Uxx3a|}_~m^F5@ccmef zY3^u?0fW2%0K#3X6XF+KMI24_euoJV2n1#z3UJbW&M_JhPT_Us{AHYDI29|jtU?)J z8Nf|FS(D}QZ**wa1`in5q{2$+^9yILz3}vRF8%cM!phSsyK35lE`UcNDX#NoV!}6x zEuWoX`@wpoSvT3r7di~G&C7!e7abUx)!LSSr60&b0#HMeuI4~eXR{?H4P=C9nAkbh zWfLh1$ZQ*_j2(&tDw_nQeqhfShy#Y8`3)`8Cng=6iFS~X$!=O6PFZZz}77Y%M zxW!nTJ9Okjie%FJFO`s>szyoqk$7r^cKjcI8}*gPv<(54=)f=3@3>ytQC6X)p-OS~ z8U?WHxPaQ72>=+2u3L46riKTBQrksong2S4I2UwX>D@y3_k(=Wf|T5B)3PVx@GEl%4}Zk%>w1st>wQtN!OyrC&V9?(mA&q|_thy# z#J{Nyt%ztFoG-u}B4F7923{_$MRc2*%e6iy0iqeA@5XFX->9@(?*6)hw24X!P9U6U zE2qbHUFpaT)x&&;?S5AWr-nwyXTEi9aQc_^j+d7rIX8V7SG^?)WYCh)nkSXc0#G_m zr!!Lk8qaxW=-st#)&MEV+wPqZVC7Bga1J7`fYYd zQHUw5V;XbE}7G*{36!HdBvIXZPIs5l?*l07fb4A=xTVj)o�yfm8P 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 AoB#j- literal 0 HcmV?d00001 diff --git a/spine-ue4/Content/Test/images/hoverboard_board.uasset b/spine-ue4/Content/Test/images/hoverboard_board.uasset new file mode 100644 index 0000000000000000000000000000000000000000..fcb157dfb2f76346a9abbd87e8873ec9c7a84608 GIT binary patch literal 64311 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�+&sp$tV&Q_96AI?P95<`v<@mhP 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⩔HV1$lR~8s{uv3JVctI2Owh4S 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 6iWE~ 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 HP?-q;7xt}+ diff --git a/spine-ue4/Content/Test/skeleton2.png b/spine-ue4/Content/Test/skeleton2.png new file mode 100644 index 0000000000000000000000000000000000000000..6b58a6b814f5ff88be0c9f88778b23ef337a015e GIT binary patch literal 41788 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 U;wYcuym`G8WRwB5QYIn)12u$&m;e9( literal 0 HcmV?d00001 diff --git a/spine-ue4/Plugins/SpinePlugin/Content/SpineUnlitMultiplyMaterial.uasset b/spine-ue4/Plugins/SpinePlugin/Content/SpineUnlitMultiplyMaterial.uasset index 81867ab710c7f71299f3ebeedd364095bcf1922c..e09c6631b364c392d112b3def92e3a6b98a23182 100644 GIT binary patch delta 76718 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%0Dp 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 up+5i%U;C}RQ0a02 delta 72194 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 diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonRendererComponent.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonRendererComponent.cpp index b501f7965..cdd646dac 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonRendererComponent.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonRendererComponent.cpp @@ -5,7 +5,8 @@ #define LOCTEXT_NAMESPACE "Spine" -USpineSkeletonRendererComponent::USpineSkeletonRendererComponent (const FObjectInitializer& ObjectInitializer) { +USpineSkeletonRendererComponent::USpineSkeletonRendererComponent (const FObjectInitializer& ObjectInitializer) +: URuntimeMeshComponent(ObjectInitializer) { bWantsBeginPlay = true; PrimaryComponentTick.bCanEverTick = true; bTickInEditor = true; @@ -130,8 +131,8 @@ void USpineSkeletonRendererComponent::TickComponent (float DeltaTime, ELevelTick void USpineSkeletonRendererComponent::Flush (int &Idx, TArray &Vertices, TArray &Indices, TArray &Uvs, TArray &Colors, UMaterialInstanceDynamic* Material) { if (Vertices.Num() == 0) return; - CreateMeshSection(Idx, Vertices, Indices, TArray(), Uvs, Colors, TArray(), false); SetMaterial(Idx, Material); + CreateMeshSection(Idx, Vertices, Indices, TArray(), Uvs, Colors, TArray(), false); Vertices.SetNum(0); Indices.SetNum(0); Uvs.SetNum(0); @@ -167,7 +168,7 @@ void USpineSkeletonRendererComponent::UpdateMesh(spSkeleton* Skeleton) { UMaterialInstanceDynamic* material = nullptr; switch(slot->data->blendMode) { - /*case SP_BLEND_MODE_NORMAL: + case SP_BLEND_MODE_NORMAL: material = pageToNormalBlendMaterial[region->page]; break; case SP_BLEND_MODE_ADDITIVE: @@ -178,15 +179,16 @@ void USpineSkeletonRendererComponent::UpdateMesh(spSkeleton* Skeleton) { break; case SP_BLEND_MODE_SCREEN: material = pageToScreenBlendMaterial[region->page]; - break;*/ + break; default: material = pageToNormalBlendMaterial[region->page]; } - // if (lastMaterial != material) { - Flush(meshSection, vertices, indices, uvs, colors, lastMaterial); + if (lastMaterial != material) { + Flush(meshSection, vertices, indices, uvs, colors, lastMaterial); lastMaterial = material; - // } + idx = 0; + } spRegionAttachment_computeWorldVertices(regionAttachment, slot->bone, worldVertices.GetData()); @@ -227,6 +229,7 @@ void USpineSkeletonRendererComponent::UpdateMesh(spSkeleton* Skeleton) { if (lastMaterial != material) { Flush(meshSection, vertices, indices, uvs, colors, lastMaterial); lastMaterial = material; + idx = 0; } if (mesh->super.worldVerticesLength> worldVertices.Num()) { diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonRendererComponent.h b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonRendererComponent.h index c17404eec..7a649f724 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonRendererComponent.h +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonRendererComponent.h @@ -3,13 +3,13 @@ #pragma once #include "Components/ActorComponent.h" -#include "ProceduralMeshComponent.h" +#include "RuntimeMeshComponent.h" #include "SpineSkeletonAnimationComponent.h" #include "SpineSkeletonRendererComponent.generated.h" UCLASS(ClassGroup=(Spine), meta=(BlueprintSpawnableComponent)) -class SPINEPLUGIN_API USpineSkeletonRendererComponent: public UProceduralMeshComponent { +class SPINEPLUGIN_API USpineSkeletonRendererComponent: public URuntimeMeshComponent { GENERATED_BODY() public: diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/SpinePlugin.Build.cs b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/SpinePlugin.Build.cs index e2a1cefb2..62f5211e9 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/SpinePlugin.Build.cs +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/SpinePlugin.Build.cs @@ -8,8 +8,7 @@ namespace UnrealBuildTool.Rules { PublicIncludePaths.AddRange(new string[] { "SpinePlugin/Public", "SpinePlugin/Public/spine-c/include" }); PrivateIncludePaths.AddRange(new string[] { "SpinePlugin/Private", "SpinePlugin/Public/spine-c/include" }); - PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "ProceduralMeshComponent", "Paper2D" }); - PrivateDependencyModuleNames.AddRange(new string[] { "RHI", "RenderCore", "ShaderCore", "Paper2D" }); + PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "RHI", "RenderCore", "ShaderCore", "RuntimeMeshComponent" }); OptimizeCode = CodeOptimization.Never; } } diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/.gitignore b/spine-ue4/Plugins/UE4RuntimeMeshComponent/.gitignore new file mode 100644 index 000000000..247f644aa --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/.gitignore @@ -0,0 +1,58 @@ +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app +*.ipa + +# These project files can be generated by the engine +*.xcodeproj +*.sln +*.suo +*.opensdf +*.sdf + +# Precompiled Assets +SourceArt/**/*.png +SourceArt/**/*.tga + +# Binary Files +Binaries/* + +# Builds +Build/* + +# Don't ignore icon files in Build +!Build/**/*.ico + +# Configuration files generated by the Editor +Saved/* + +# Compiled source files for the engine to use +Intermediate/* + +# Cache files for the editor to use +DerivedDataCache/* diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/LICENSE b/spine-ue4/Plugins/UE4RuntimeMeshComponent/LICENSE new file mode 100644 index 000000000..eff07d502 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Chris Conway (Koderz) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/README.md b/spine-ue4/Plugins/UE4RuntimeMeshComponent/README.md new file mode 100644 index 000000000..c2e66d5e0 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/README.md @@ -0,0 +1,49 @@ +# UE4 Runtime Mesh Component + +**Branch with Slicer Support can be found here https://github.com/Koderz/UnrealEngine/tree/RMC_With_Slicer** +**Examples project can be found here https://github.com/Koderz/UE4RuntimeMeshComponentExamples** + + +**The RuntimeMeshComponent, or RMC for short, is a component designed specifically to support rendering and collision on meshes generated at runtime. This could be anything from voxel engines like Minecraft, to custom model viewers, or just supporting loading user models for things like modding. It has numerous different features to support most of the normal rendering needs of a game, as well as ability to support both static collision for things such as terrain, as well as dynamic collision for things that need to be able to move and bounce around!** + +**Now, the RMC is very similar in purpose to the ProceduralMeshComponent or CustomMeshComponent currently found in UE4, but it far surpasses both in features, and efficiency! It on average uses half the memory of the ProceduralMeshComponent, while also being more efficient to render, and far faster to update mesh data. This is shown by the ability to update a 600k+ vertex mesh in real time! The RMC is also nearly 100% compatible with the ProceduralMeshComponent, while adding many features above what the PMC offers.** + + +*Current list of features in the RMC* +* Slicer Support!! You can now use +* Collision cooking speed improvements.** (new) +* High precision normals support (new) +* Tessellation support (new) +* Navigation mesh support (new) +* Fully configurable vertex structure (new) +* Ability to save individual sections or the entire RMC to disk (new) +* RMC <-> StaticMesHComponent conversions. SMC -> RMC at runtime or in editor. RMC -> SMC in editor. (new) +* Normal/Tangent calculation. (new) (will be getting speed improvements soon) +* Multiple UV channel support (up to 8 channels) +* Fast path updates for meshes that need to update as fast as frame-by-frame +* Static render path for meshes that don't update frequently, this provides a slightly faster rendering performance. +* Collision only mesh sections. +* 50%+ memory reduction over the ProceduralMeshComponent and CustomMeshComponent +* Visibility and shadowing are configurable per section. +* Separate vertex positions for cases of only needing to update the position. +* Collision has lower overhead compared to ProceduralMeshComponent + +**The RMC has picked up the collision cooking improvements done in UE4.14. This means that by default you'll see far faster collision updates, but at the cost of a little lower performance collision. You do however have the option to prioritize quality, which will slow down updates, but make actual collision detection a little faster** + +**As a part of V2, there has also been some preliminary work done on threaded cooking. This can help to unblock the game thread from collision with large meshes. This is still a very new part, and not heavily tested or complete. To use this you'll have to use a source build of the engine. More information to come.** + + +**Some requested features that I'm looking into: (These aren't guaranteed to be added)** +* LOD (Potentially with dithering support) +* Dithered transitions for mesh updates. +* Mesh sharing, to allow multiple RMCs to have the same copy of the mesh to reduce memory overhead. This is much like how the StaticMeshComponent works. +* Instancing support. +* Multiple vertex buffer (In Addition to the current separate position vertex buffer) +* Mesh replication + +**Supported Engine Versions:** +v1.2 supports engine versions 4.10+ +v2.0 supports engine versions 4.12+ + +*The Runtime Mesh Component should support all UE4 platforms.* +*Collision MAY NOT be available on some platforms (HTML5, Mobile)* diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Resources/Icon128.png b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Resources/Icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..22f6adc5125ca733869901e2d73efc89907e1371 GIT binary patch literal 18496 zcmX7vWmpvN*T-jr2I&St%B35WT)LHJ5kxvAqy#0F?rtQOPDyEgvZT@t(j~2=bUi%R z|HVD`HS=O#+-FXF&iPJ+<|`!vTpC;e00>l+<+UGoh%*SiDl-c0p2DOpVkO6?& zIJ{dkjK_N%7iB{?0C>{%{|iJ8Q$;>Lq;^+8xa&AuyMHuuwE|qs?3~P^5 z$dOa%RhQ)Gsnqte+vv*+pOqW`hr<)!ZMy2lsnmIGBYQQ+GVX@WmC2K%Ux;(+l(5qxJpH4Rj2u^~`wQ`)C)0D)-eqUr}em^xEZM(o+>G-H5^3mDJ zcKg4tNzTn5_tH5JmYO&IeQx?Ib+(*f>55uWd(vK^N!47@vC{9WqXYSv{c#!1nnp+U z!ete%c@;H(@^E@`AA(nX9lG7`uXhzNki-#J?qi}L!h6?$-TS#wYI;ucp{$_*FXz)m zAjWH7*QM5Kzy4D;=?Yg14&k}^7N0t|QSKxop6`yXqgPGpIiHSWl2X(vxT||zJ>IRn zeyXMLK$*f&?xVEHo>EhJIrl7OZe6%Km2aB;`QG_H=M6v;dsRL_sVi0G zS~AdxFzHI2{xp<)Ib31MH_N;oY}e9OH@e{S&fHN+rTH4kBKn_^HYZP#`pP$GZ_B7N z_T*@XV1n0utoiZP>lD>df5(~1?T%Xa-K4lbOKthCyA7KuJkRNbC0%O|A4q`PmVw+- zG}yoJBz?d}R|-{UV3qXdW<4F8_p!}Oa>2?t_KHSisN;u zPukgfZ*GOLpQCrtpl04xpc-fPZ5ju1byPP;&-+bC>;rwu$I_aWbuXFrwT&Jlm#WL9 zFIK+siCFI9rdM+0$xr|xZDQ#E#)=ZXyTHC&CmPvwX^!*Ht=6dux~Z@plf|?=zpv*+ z`#zD%#3`#wq11h&2V;iCN3CS^tEDs>>Y z{ML}|G<*s?Wboa+TEbUMKmBXu+3){2VD}wmC?5!bD@1|FfkjjgTwtF6q-*e@TD#*w zz*NmUsw)7fF{l=bM)p-}sqFiEUENt^iMlQH z(Y)x8+qB@I;S*akZZ2UE5$+evEZ5J}GV+_Wx^F-8C*vGR5p2*|DFgr41ypKDQ7AEn ze+C%k=A3NqHoI!*Dps8JThulSIGRCqm{jOG?3o@4!m`yvqr{kXZf&5ljUSB8bP(ow zvCsmggs6YlYrnEl`&_56Ty$e`rugu#414vHVttHF=9hP~z!B&EidT!%XilwyhMacp zmrbfwRdO;X5aYiX66rG6F9UDRewf{n5RA?2Z1<=QgxyD6gK$8(81E5WxE2dax<4sC zO*j$*#Z|=48{8a+TGt)2nToOIxGw)m@cs(^ zjg9S>=VvG`Fy5*tvg^O*=>jswVqBHTVu<(kTxeV<(Em@0lFYk#P`z>NP^UK4Ym2j2 zx6Sgjdjun^LiV{_t>zUshqHEzJjV5pNaDJHFS_9)T4H2zD?jE5@K^LZL#V#g5UMU# zmE}T!@43m&-EF-KAJV*(Rw%!MKnsemQkRXZZ+I8+ObeV$qXE7HJ4fHQkX3T-ep#E2 zH0tXRgPeGjUB>A);wpgeFIhxgV|jzq?AaH+0|S{k7!^$)2MAOJk|qE&>jFSU1wK)% z;dnJB>(RXtbv-BXT1P|SJMxXXNS?Z_sek#_%%8fAfV<} zLu;2RUPME6?7!X=R1^(uk1AfN!tLqLpUU|YmGiF6gYFW?GLZsC<}YpDE+65n3s(_I z3#xtE`>{#uw+ee&@m(v#l&JSOgE9W^nDqCjgNkb~223P9>a)-H7zkhHPg4>LoF3|E zdNj0Vz+C#7%+37I`M3J0IrJwCh)3X=s6r=GimYm{g-v9WqD3f<2kq&o*2RYmr;mVF zFZ=PneFj61-?``C+k%wyY!9tD2czdEcfmqJU*oG`fF@IF)CqC&>*d!TvF*7+g!@XU zPm7rDqsmMh*vSq!fC@VZ5{<5%0*5~bdZ;<}Q76%@pwb*v{2M^k#M7z=s8}J!h}6ZV zmIJ7;?S6wXWD0L-fF~a#Y(B^SorDttbk+AljI7<6t&K3e%4GFP*9PkqLy=9R7FnXHg-*+%`ETS^+$*&N%DBV+!?%hWo$aNe!^o|Sd?i#J zeftMJ?gZsA68%wRhX%8v<43!PMTL+|xVzA+aV3k(*Ep8ezB(koav)cv%CIq= z19*avM+Dao{~e1xqdHTIVj|*sVbHFJ#WZN+PGog>=|aX3PY-~L{1nO6GI$L4SeNzf z-Z)3HEPV=Q+QYHO<8N!3^xiJ9$! z6-`ZdV+sX0LN+MH#RRZo=-^i5c z{*t!Otv&(ejZ08C3q2Tc!02T9t*?r2?ajo005o-2i`YEY&gmq%#}9hWQGF2XBgNNA z@BLC)G6HAXm{0D$OcMY=q~f)&5!Xi5X)NRAjq0iWVD+0S9f0rqGWk}DUxCjpRf@W| ziKXwJj+#c)QaZp+M=nF=>>h_PT6meJbJ+<+uX4Pgbb=~+3)-1(y9;5J|&N#5QZ z9Ve=PjLMz-g#)s5hn8MEa4|PpUbx+iQ{SCf6oV`7sjXfn4^HARfvQrY_q(EqhE2`EfX>cZ zhwh_oxAtb*wE`l+B7vO}mY@Hk45-|u+Jy97JD<)tchZ|nJ(%K3(eYF8iNZ})JZp#X zSgQwetKp1_DpogS;h7{|;6i^R=O}Y%A6AVYTTJPRMTpki-gEi43+lks9+**rca$(Jj184d$U7$kdlZQ@kcG%*~1)Y~9wDxg*AiVv`Wa#kl=?sE+5f<+nf z1Pm?N0QsAT|Cxv*aPROZ}W4qcUTX?w^gJTC)+&D&+#hiW2C2z%M#aDBJ}5hcpbeC$6% z5e}pHUYA&`?jwe(!@a!C6<|YS7tt1qH3+cF z2cW}QSIgBx9HC_K?-A*hfjBJ5fgmt70GI~Ht0T*olLKpBPV z_Ksgd6Qr4gry$K9(Pm~C3W&_=GK(E^s`=v&qc=rhPrv_pg7@*|vg5p6bYGqiSAzE^ z55FP`6p&79on@|m+y@S4&mD!)gwPV<1BzD&DFB5Eo}iXC70;z6ME&YfW`@YAQ<()P zo(ReHiFYSk(mXfz&ivI=3$6_ikn?TTX|x|}esj_7+f3bcc9y1>i7T(umwET+z&ziFi($UW8_Wk$M?VN` zVDlUF@YOCEAf2~ECw%<)Xb6$SeIv>6r73|J!$x+1C=dZZA6DNYb~NF>e$X3arKjI4 zkUZS>?4Xycm!Dvs&oC)BXkYiSn|ab#r^$ya7l1t=Oko-$OAI$V2H&83tTD~5G^GY? z#8GQL$gbk}1s0tz2(TcZGjiYjeB7Skyjf+c7r@7TWUZwTL)S7BUY!{nYaG~_^qIRb zKsVzWxqTOn|7eT|z|>fL%3$+zi1)<)^Cbi*lEqX`lMWx5Qs7hILj?v9F5&rFFkC29 zL@RjXDn?kRpNinO=m^1>3*nz1AJJ&3A(dv$YR>6z60H%*(I}g?OAdmVs3jk8pyB+n z#)`kbMTYzTEco*KgJ5ZDtXw)+>Z|)c|A{_L+T0!(MrM|vyI+Gyj@dMN7Iuh`hS&TB zkdBvrWZ1}|6D=N@Xa5NKE(wZg+ZcgPYnpESW(?zLDz)xs62-X#C&$ha~tt=wGy0s)X2?Nvon9vevk;E0n z|_PUl*eyPB2Ms)m*|pI^Wrrui`E zrn?3fb+b17zssD*CddDhLb>t5%gVv6;|`_X1N?y!vEIQEPq!lwkQ`m7$pqAx#|NNj zfF6Ji6Ka7o5@7D=inG8S1;E}zfZNy;Esg+K?ave40@}h8ePen(jM*ikVQeQ!)vX_D zRk5fa-(7s!>Wj`b%exU$f4nIl-x`-&gx$SLG}$9IsoHclXvy?bEEFCw?YFGjj*Tp( zI4{G5sP>&0LIASp!zLt2Z6*kSA3glBm{k;kqYYp~sWl&sgdBEC9SR}}PDfMw7LgE~ zfYqh`-_MJSi|rvY9ri76LGbOwKw_W^z$e&vP3iXFw}81zpf-YK@gHnPwQU-Jzi$fw z;*YW|fY@3faGkrT4U_R$LOd?2;e!q11*^O$TauB*;T8CZv`YyDC0{XzvR zmqFVgkQQ1Jk-e;p2=Ns|qi8_W6f6b7x#vv`&7Zgq4r^#o5<|^}FAeJ+&yn*NRbj95J6@T6n&DbV+Btpn zJs~RqP@-$G8R7kGu=(4LULrn%n>rB`BND_2VCVZz%&G}X+1Vno$9IoW%Z8Dx+>7b+pATHg{o8Hv-VbFb5i*Tej(u*$5JhZCP=~ROoxW-vgV%SuL}E*~S{&i%)l^xvpEem9dXi#2 zlPbr3>0cg@tW6yqfI)>=du5sfCHeP0DeuI%q%uRb>fR~W(7;(K!+IPxjz9yZk&Wqj zZ+=+^6!PQ1Er-1U@Eo{k!-7OXg-1fE-Iq|+XINNzKSzvJ?|(j%d)Pq+S;b7J>jH=` z{_>l#7-VsKK-xCLXuLACHLN*?8i#L}1OoO-SJGEElby{O`9k^lO$}GEiK=i&CSE$U zwFY6`7u_T)IRG!RHoIk3>wulyHh%!fjlihVnX9Z~obFKjo(QAUmBAv_8FL$8^v^?I z>7*R)+W5Tqo<$a?8<%`^)0%yF8>+zU!?ss~2_Fk{CAKCMga;o9C1RcZS`d2T6^7|Y z$);9UGR8SLSRnoS%xO!8so@yeZRn(0;y;uvjs1@hkMCtrG9DuudMfz$B*8uCv<+(Z zdm9!mCe6+SqCN;(GYWOh*yvb_8kCKBwv|jd5I*o{-I)57(BL8;w}W14&*?A#lyfw8U$D(YYdEm`bk zneTt_#=V~LceD^_d-Fw4=YEYx^z$+SVfh3$rj{5N+9p{w5}S{T$oznjR4K!Eu;A_G z5QN!Zd}jAe~Ci`DiWebUZKRJJU>$?e=3)&6kAZglw*GoyX$D{I;wW&q~NW3 zARz-rH)lX`Rh>@y_E%$T)Ie)Jrn>M2&x$X~|4R zF`bpp+A5*AFv(2uoSoFTauz(fT7GbG$KcPE(z^bA_9}?!-MFh9)iOFJ7nc1Apm6p( z-;&SnsWo?+#9t*g7N9MfG)c)P7t85&*@!>=V zs&%%isFeMC=3~u5BwECEHu)N(GwpyUCDnkZqp^Krv-tcxO6!Gt+yrqTTBE#@jbQ#H zL#lsjI7$6ZcH2Ly$a^9ycQdf2Q@5T==X%@mnL3}OYRHe)lXlR-8FLic9*6A%cUD>^ zWZ^QV#D~8iZJ}gGO%eTK2Fu7mIftwS-AHFE5BGEX@DIvRs$1v9^aj9SI zrGk}jxk)IloPY^ULYYrf<-oU}eY!#K)l#h*FnuZ}hXrz+t`*)@9<-Es9i-K#Xl3Hj za0;m_w>lI+A)i^^ORM(P(es+@U_H2gq`F^U^SW(O+8XiQIvyFJZ@(;`SezGdYbh$T zqX#j70V@2iPb!7gn!VYTw<>&;PNfZ`sCV~Km3z-*q4?P5jmf$ z=6&Zk(w+8pM%V7%`P<^B{jW;r8NnBX_+;M^Jd{( zeqHDF5bMx2Lq01+5msfG?AT$g@%=P&W@1d(Y_!iP^JcdF#aQEN?|5G)W!kLAf6dP( zZ`ZHgPop^NzVgQIe-hH-4YEHbJr<+Z8nhqc*i55PZnx6z%5fyIhpy=6FzeW-*kFDT z)ra>X2azLrH+}>=iF+I*XLu}n(mX{Ir9xzwtP6ZR$Hi78N4L)|76Ud4lsa7Eq@AfV z-0FHhH>nhRq_9l?H&xVDn6;Of{Km7&JH*`<{X%?bu=)Onx%BQHL}}k(8o79GOJ zPS(3&@AVts37=wJ495w_6$B}WnBx0R9oKQWGd33WZp6B}&Hr>ubbK~fdcRV==;qzc z=KS?F=Qj%m-P{XQmGlP(DPD#raxL80zbR52$a{aUNN`?26>hYkHf1wEwbMCR7L>hs<B5t{>n+D{of3zPS#du~N@*%d!X zMq{Nf1oW4hxp3uXsLOWZ8vMA|fBTy*n#)fzJJs3UUE)Fh^=Qz$FF8_&MjIQ|fB#x7 z3}(Nx)rs2W!dEVMqZL<0X*F-zKE}yhG&iA>$^4aju&B!a3rm>LlKJnbGR;Nd!Fu-^ zSn^_<4$0CNmMV(vS%=8tnW&JWDd`g+L}s`wtSbvY$)dv5plm(e=|96s-mT@0jXcj= z@lMLr;4W@)l+La)G%8IyHpu{?{jyuxJLVk}|l=oir@Lg|lrcOp-bo9|uaVCg@DpDA%+@cS8edb-+YA2Ww zU!qf%>n~1mGm<1HcOj8ITy?dTDZE6kN1w5|GgIa8NFY`!d9Od|T}d@rf54milcf79 zHYZEiGxRfEWc^94AnSOCPAl!!;K2JYf5NxDcylW?bDP!3z3T>4%5_cpJ?kgVm8K&P zwf1{>-vnSe$nG$TQSU!fRjOgC>~k7ht+&F)zHxmDM<2t&?KZR0EU1*Ium`oz6P@(= zQOM#5>U1a1Vv}ulT=d;1#}dvL*jy1WHKiVLbyY+d4uPA3(J~@%+98a&_s<~U4SekS zh`dia-*6rYEKnT&E9_3=1tF;p@kc4Em6As`f2b+i^p~2Ra-TDx4<`{tPJ)%^zv-Ss=3tY@j}%!rRjfcIcfC^eOB9O#krXV?HS>i zL9cFE!;)FKt1nWR|3vuDYg=0>8GIYIX`QqHe4BZzIPHIW^IouoKGO&oY3(hw!>TA* zFp3P9RenvAv%_K>me^-b59=w`p9`neCJ0rw(^47_a3_*gs%wn>!tQx*kGtuwetCx} z%@Y)(#xg{p#{ScRk#cD`Xx)}nmvBt;X=T?LL`>}AFU{sVGPd8rh&QnYTc~^gh`Kr2 zlucV+VrfUV7glsZE1s~Muj(Sor$;8cwpsBM9tx6s=RY-H@X9=UP?{l{Z0?c#jI?>u zOx@>DxMMR#k6HCFm-Z__3MKivv7x`>36hi?_&i;X(->}DhNK@0HLfD_vrA7NJZl>K zx1K>BB|P@w_ae5CipdB+nNfHkh$vgtVprXVkt~L!Ry$eut50yB*?+JhSW3f{esWBa zg&u`Q{Zi>95*Qq~yAM|TefgcRr=RlnwKvQS%RxNH7)V2kL8VQH zr)qeBSD4mdvZc^l$%;pq4|K?vUbLL{xgR8_JlbmsxN8QAzPp#p;U4Sv_bsqgvuir| zrMgcI&orBAis9B5cDyjcte2d~eV?+%$ZYg4@F)c#ty-dWspaa8?s2=RU&C;K!3sXm(Zd17#STA-NMrbL7WBS-yaj6>EC`mWB8P)r z5j_Hdf~Ar@`vuSA6aAjhKkwh#tdq@1-6lTHl(;ZqGSTk0u(|fMyKRtlZ83DsxfgXJ zH0=Z%=YIJ~654vDXL3F(JhG7FWh8J(To~RI7^I5Y=+yPJ3dOLaTR_a4DPr z@#(+jS0Sxp^wH}oMLRI-OEe7<(r3D0HNdfL%jhYa&m#V1dvK(We=gfT>1(FLp{93J zPHt>Z3P2{7`s!_UC7FFB_0f+0)7kZ{O@~+S-oW}1LGQI&!)9=%xRis10e~XdH9`+y zz2V~wk1Yz)VpH$t&kA}Tg3<4krsd^~A0ot0U6|;36ep`N>^#|dYrngg|yz0SsL4j%p!n%8)}r0=^>d>LPSrxtJbAglkDm$w}I zTN!dI?g{WZWo2>{_7$7lpXi6{Em02+e6Hhm{ot+1Q@Ni;>iV|sCD(wM!Y!NLDhB}? z+Z>4PCD!EmPG~7Oph(mp_aHda`o@bjiZ*9>)ML6;hG68?)XI)+l+sSJ{!^A-=C>tJ zbb+I)9W#PWg^ALKe%q%Hy$u!#h3|~TbviOA6c^4b(Aw@b{J)&`!=Z zT+WYC)uT;x5MI~MPY2X|=MNPi`ta1aTm0;@5OYRC=cnYGSW0ad9h|9A9ThvQxSZWN z9tm;k;$V#k?jheda1GiVnx}qeAQvYC13QQEHD{hl_a|!4;E)ev{NY->>H}??IEDrIG7{ilm(Iy5Mw(J?myaH)fRo`l*Dhs! z3kDmgwj9$)e?2&)NxCpKgC~}iv1n_}BF#zKN1NqP9?4f0C zv2w<(GUjg(ipi-~@$sE|(%x=AOF3BXegMwPhwjPAYAFB_8@ZV)DQ>dO6^N5G#!4Y0 zcj+cJApin*5_^z4wM&k(nq+S8+MxH2 zz5y+fXlU;QreBlY1^{I=1-?pr>>{Z$o3Sia__NZm>diIE1x1$-uwao z0$skO!3uW7eRWaVa&gNEY-Lj~*+m;6iG>tlu>Cb{5b!{V;1&eEza6EFlQu~TW3KrV zv7IaVY;MPgDNq3bh%`1(Vq!_jaezHy11c)REY6u3&`srg^T|%Vv3VWuAK|nc{`RUd zEbx_pL6>(e#S9W@EN-i-CU*t%ZopJ@C#trke#x#aLg)}E;;l)_x_$69arnF?P257V zhss?77cK+KcrXRSB11b(0T|r{005X>hbua3pK9RwJ~`l2M=ccRpis$z@p~wrDRy#D zovF&aEf@M>jjcb}i&D1T+pzGT$E-mPU%8b3I7Y(Zw!Ry{w@=mIvuCV@E2_S-c5VtX zCNTB-d2w~S-(GrplxAVRYxA+xx%>KWEY)cg>`92sk~`0g#;{MGV)^2*I2EUSYFYO0 zkMHAS-P;rg5>nE^DAnLmce3r@^;fTxG1`QR#ovDWb9+-2rx<6mIsP8@E=W=-V=*G= z5DWjSQom-rCr{TRu0s`hFVS503j`Y@Bd~d30gsI01Na^r{j2wyOla08h{(TMq@zVcuFGY^abmrAz+&HhQRp@ z6OcfGngCxCe2)Diqz#it6+y2XPcohyxY%K|LT0) z60UZ|pkJq{FsmWt!K?v+Zw0se5H8QYB|HQ@^F#yLwE6oc{yI}UpU?1tRpEyAyksv^ z_m1BuK~;!vON4ZYU58!~Y2-sgXB8lo9Ol)(zBnF*D5A!JPI2!bDs%Sv z1~;jkKqcnk!cQ=$4Zj9%7Wj}kZ`z$>;rA$I1ql&YfPU40Fwqj-Rq7?5o8loLsoWPx zgDF>oYE&GU|{9TM9v+V~E zC{lFgr%1db7hH)%qgu`|dOz;nDw_?D_NIcU`6fKeTY@w4$D5&#uFl_E=@fa{58z40w5IDFhH}FcdK(5G*=@^A!N5Gc z%|-3f$C%=u8ZFFRi+}~MMq3oM{)xK^euV@P6}TtAK8I3WX5aB+!kbJs!rUhlVYI*) z0K7aFT&FK!MA2YJmAB>5Wlc}jzTSw#jEM*pt~Vd}%vYn-c8tvpnCg9B@W8(4%JUh- zehgBHq4_Ut<3^0gXIBYZXQsYNPH)-&;e%v=0n}ukd4;W^Wo)n8)9>9R)(!GYLxe8; zz~M;b>q0O=1lQHh>KwYI{G1PKjhCRo3E& z?rG>mSYj5M0RbDDBCBiHKcAv3t4M1A^OVJhEk zOIE5FfS_r5H$5G*)B86Cu|YzK&?(^nR_gCPr?-tRfHw)|5((BhM|vwI#q4 zP`jX>KAh#S7-s{zNu|v&1C5MvW=9(Gj4SEl<5O#^dno~06kvNzKr|*28x)|t8_o() z0;`Kl-Z3APAt1g(1{A^MywqnLR(3v~lvW7JrL2Y~sImUTNgy*8vZCANlSiXQ*}Q-M zo|eRvV!;lSCRR_zL8D(Er*u)6E9s@#vSYn~fNF^xN>z*mV*`v**O3ZH3qZO-o&e~# zQV0LtUw#I&MM}Cq(GsMPE721KIR$0{I%C(KD*3)&hvGJ~H=h9{BJ2IXHPkIQN74|L zhPb$a7aR@w2)6j6=2;x_J<1-Yt-}@*V+IE*B2&_o?m!=FM=m9!mkjtnz0-Mr3Ikwm zo6x+|&Dx(6ElzddMJgofEA|<<{0p?T>hE=11>HefuTdN$u$}o?fj5-(p}@GZg*-B9qOl^=M$s(BtH%#>m=EcN1{LGTL2g}rWDXwFrsqf#e;pr zZ=Vm1m)$=U#_vBBscS#?*}}<|oF7O{VZ5T(X5#oV#PMM&MOjsPJ1fG=iQ zL6yPkL16MSM*ac1MI$pI4mTaj^r;tN4p@JhC-z+VtBX1@z?j2+=G>fCKN?A683Ejo zU7g7@*ETSELW&H#+>TG~zcCJiF4@Z`U(K#ibk||$HQ31`wMeXrFl!J901!}B7y|`B zl!`O9E8;WsP>Ca$Xh#=Un($(^`E~fm$5R*IJmu)1^eyRjp>$^?be3;9BPFqA#7Ke? zsIg@4#~ok4|ARrl|;}qImQ;A2c}*4<*S5L9YsS z)Ms1l(wfr*s$Rzs%j0U+3-z8J9|IJFCCf5mc-R2I&V;rmP_w0rhYcsOPY-7Fu6ISY zn%r%E_4Re&)evp>VoY_Liaso;MX=JFv*X++W9HjJ%Y#WkP;`xPM(ipbGGG({Dabu4 z7#K}stU8}$L5PU?#y=nf9^T45)gY3$A>zued>jtn|L|+qW*&PHkRYNhTOI;SzlxTh zDvU-3U4u@k)9jQ^Pr_0Q7SZE3(|UmJd_=CIq31R~HGpLE5@G|e{}7@crSb1mbc~Dn zX-t8!W()*~5`N_!#_=JbE|&Hm(-Lz-Z`bh|#r_zNG2KuxI?m&@I9rPt_U~)vJD$Lg z!DYEwdHMl~nsk(}`;*08%d&_uN^43LPasA-b+ zdEb7ob9N*!U;Yr+rX7ztpl?Tx|g{M%amDbz#rj`>75s!tCdfV~2O=tHP#!05n`XGo-@I|q7=E(;IO z>=*gNsLf6i_R~EU=h4~Wh#h)X9rEAwe$kbAh(1j0WNfmxj72NEKlS$Bf#912?|4eP z_Ncnpo+x_`VhLl*w~R?7NdILeD(Y6bv&91%nlUay*4g9pe3DJ>EJ;4Uk8Tm63W~-y z9ga!Mzkk$y@Ts)uE1}KYz0YD=z%8((g#9!g$vU99`@+8t zCjFaCPSc`=|MU+CAbYJ9gqin347;_PiHL@Ph^t0+ZTeBqMgS10PjvoX7?TuqhOxW3 zVRFHFVh7EP+N$l$YEM)RwWZQ%%2r8GA2EZE9>&mKOY(AFXe~;zs-FH+@OYCri-LIOBQJoQK+X1cxiobw!RA&zkieX-K1xIcb3_Q7U@jFdGbm%Ri%16qD=eW`S4b(@4>QAM+I{?+C!>wd%M;onF8Kd2`m6@*#|x<7mU7&~ zy{F-N%HC$cMWc3k<(H!Bsk;pb){}3#x*nFPH`-;n|3qIk_Z0|LQYz$oaWPb|XfTej%`o9r{t7HQXbQzyz2XkSFG%JWA?NR`TZa3zTHg~}CO0yJRefG3gjpkz z41<-~iKRBH7_LJ}IVKRE4}uUkVup_K&OV4pj{ZrtO4N$iA&}>97URkhA&vsHt8g~g zMr*C>&+T8PpAh>&82K=qg8ZPrqhnhQb-z{=L~u(QF*nJ#{%Dw_SOg<~6(0|O((na2 zPvY*XH2w@=)Fct>8dN&H%AMj=Fz-kdU%C_M(pF_Bx_Ud*g)t5XdG8twb~7DJ8ka`aE45s008X+ z?cd95xVs!NmZ1xGyF((8giRRO;bx{hR^Lz#1zc0Q>0*O&nC!I^ZGz#0dJjfDSNXa ztp{eFuTMGH?cakI(B{S+YI6a9{4 z)vN&_g&VeISL0#cFe>D4N9gh`?1gN~?Gxn}sV~6r4^FoNdhIn9*>9S!Rb4+RP7qaE z|I>}ZEAA<&>l-Z2&{CIxe+uUWpzfs;wwflTJcTA~4RZUL-cDn|oLCTh+gyk3Pg)Y+ zzc^fbaOd7>aM2={c9aD2eKS8mujVG`wk#!-RiZDR@x?q5Va^G_z`hR0BU?SoyaH%` zrDpzop33_;+tB1#?2uU44HWdDhzpEw%H#XJ zzfLUx!t?<+0W=2eOGDXy0h2weXAHBa!Ib;&)SE!l2lrNmr(;pUG>(Xr*skZ3M1ahz z*IB?OGvaVanL3Yohe~YM6yP(Hj_oxE$ST34Kr@{%vRvH3m?ON%LKx~j-BiNd13^e9 zNAg;&1V}n%&Qs*hcEl*FrbsJ|Y5;gHSI)_!9yKC;pI-8Z7%dRR<_%ZA#Hz#;B$?Ed zHY-f9XS`q8=3$1zHSug)6yd}2h?&!o#8}HDJmXzAfuzr*5zK_h3jnDbwMaZF#tH$L zEOA+eoS8$qxlul37+u`jjj`g0ZAPp|l5%#J$o}ytXxT0qw*>m#KmKbKi3#19lfm)$ zYqE+>3%?-Kz(&>3mHYDnos4?2xUw`t#jZgD)PAUOrKgPsKZLLsTo`Jow!xY;OmhU7a{6+LL5J_wFoTn8y`J+2a9>~n#vDO4nI?id zYiYJMwoOw@1+#aiwU;yi%6Peh)$sY@>)+YVEJ~puu3z;6rCR@aEOsVKy4|^&XDgRX zerN^-3IIsLMfug@i6W`wlCakfSgmiwNS~*^rDp$f!uLpK%5Sik$+}3 zN(C1S_D9sKKOeCuu)(7z)Yq_c39!Er%B=OhZ~RIF+$!c0snvuMgZOtDLgl2*<&FON z>qHdql(9!&oldYD1Els#f>A=<b2RkrZo}2jMl%(U~&yn84)6@-QNEwz!qOO&VG_8dJqN?8H zVc~HTq`CHAfnS8P3KT&A#|$6q!1Ftn@B**CZo$lrn2Ds_M9Z)@54ZJGzWfA#e)<2` zt!j}WhS4vvl=c#zYDJVBhpuV7}$@A}+PD8g#h1nDIoMjJFKXXR{1ysJ&_$gwF z+KMT_d(q?Qae=%t3I(o#;os{Y%htu$hk2;F84A?v-;;@vM&E|k5iim^mhciSSnCox ztZCz8H>&|i4AMcqqG(q>h@3H@-iR1RqXQO17un)m@*A&ysfItu8Na9V>FewJhnD>R zeDxJHlssEt;s4dVT-X$g?usr_cE_X$$ZZ@c*FRtTsorZ8#tcNB7LdWi@YcPdEeOM{ z^7R`%ZM$J?p%hoENqz#{mZn(HGY-2R2p=#r>ag^wv0qiAX~zf59w|k*b0v0{{8<$S z!274aIpLcw*j9j$qX2;HqWgyz$wuBMIo}Kd2WgG2`m5yDnlA>#1fa{C^+UY{3xl9R z$;j;-Hkluv3~2{jBRSoel%J&pJT&I#Fn6?%6Pi%X!sDX~15it1Sc8w*aMcv|-lHek z3E->Pc-T=l2b^TzR&@P&x+6X4cK>GDTy;Y=gEn7F*m{PKug6R5->3~0%DJh{H|9h* zfa?sOY;2>~N_`ezV!XRzzd>RClXm#71@?suFO~dNd5bj?O{fIw@9D6TM2HTQBjrJVM%y2P+62Tp+ z9xeX5J3WQ$ax(k!&Hsm6?5FV|MU5VUa))CPA!z^BZ;7rGLwhF)fdDC)e#A?^ z9N_@Y1rQ)35RE))n^yhhB)0{Ckb>o6s1K29A8;_2_II1a&uLzzzFh=&OQfoQ_XND& zaou;-mSKk3)4WnjkE^6ewyrcqmg8_1CHHpr_js;3j9h*2lIXfPo!se8%r`> z$ji9dC{Cqoc20I`NxkN-|9CAp&^K0Htb2T0qrUe6LG1(#+*RfjF#qh=zEf97dXS%k zQ95jk&jubXkvX7O-#nHDg+z+PIGc4bcSMMQUpS^?PobN%7AVcoK{ICaEbsQ1Wa3w$ z;VKqNuVc&uZn=H{e{MotuNoleu*7~!&px%PWA{MAGWO4GM3?k3Fd# zxFUp8<6g7IcWrB7_Borgj)@B8L<%cwW*z28?u7d9@^R&GJo9$veZ8c~XnV9R%AIy) zzdJb+B2Nt$qU}$6U#X%~S=t)mvEV;xB2{2nMbCFcpGW@<2Zd5kHdiesz=k9L)8s>& zN;jIF`TWo`y#m7WTn6^=tETzYsETxe{8X7TqlNg%_ZUZ{Z9eR2lfi$4-z>i^y@}e; z)_BEleTRv(H>2&y=tb$)vys*x*aOE);8J@$vzUcW(L@n`CS_1atU25=Ava#qPu(+w znp&SSWi{tBM^H4bY&IV_F5bY?R-3eK52JhqIB<|I<)*CI;oZ$S0f z`#TSa>ho#V@OJY58{z*W_ZfhEUn*_~!JwLBJjsN%029Oxzuau?Z8WX`L5{1i8#MeK zMK*85jGk*ILo@r|Pq%vHXLMJaB6sy0LEq~A9A4}wd0Y2aYGhdN!Wcr_=wxjsUiyf* z9A%7jN>8x6)6m<`1Qt;NJB)qc9WEbMKRQh`{_mMZ&b0pF$UY!lXke+S8Cvv^BOkN~c`Cn!?<|5J2={BYKG|V)*;ug6Th5MpCJ&ssF2QmfeSVxcBC`Iz z7jywhSpZ+8UWtRY*m3*b;=X^HL~GGVa*S8@XUETu7r!<6SgrP#0~S)8G@{}>#5>Hh zz$17RQ42y>u8938q=C9K1|*D2W(P5$G;d+_mjBe0#v_^mGRLOW1d(U%R0+Zq^3ece zY6VmGpPFK=`45F!(WEd==-V%rLeqcXa6kp#{~%R`TGL=AeM;DRJNuLFymJpE_IKUw zF|9O?vt9QFN>v}9{tZ*XR`M>`(wf8uH2A#<)rI`M!D^f^;8zo00``C`LHqK@bO2f!yyvF8O-Du zol}b~MvkYjBO#V9oQf&v!pk&D;hL>@q$ILhZkNe){x?y|1LOAu5dPqsxVAaLlu-eo z;N9LRSGX+zx22pNZJ;i-W4NIr8ak{mmPEV&8qJANsF>SOz;nJ+s)oU_NYeQ6AGfpj zN(6|sk2YERX0n_017e`%nz%-;kN)EN*ap+F zoqpl^*_VCz%qkXebS5U$z@Nu%`1+D#|shVNJ)eFKdp)%Gif0AppQX z4w6P;{fzrl8N_-Bs0a`nSI80#8gVCd_&2n3!-i$jt62^~Apc{^w{}&FwZ+=Xn*QJz zlxx>&%0;k#+6=(W2-x3_vHjSGeK`kfz+eR;p20YgZkE{CY0;?WYq{JyFp#`3Q;pn;Z7vE3}l06@dAY^b{$0H#>hP$B@KBj`*z#X86=A7(&_2pR{n@O%V`QX?jShxIxoF4QL4haVd{z$0q9+Nh#aw0Kk8v*qMq)Xp0#D zVts*9xkiq)>!eL=vuj7u?8mtgJ{uVLjs9W{DCkqxj#0GFA5Ep?^Xc^CwGml9XL6|B5aMPGT`oNCo|!ec3K)a@ zyCv7FAXq5ZC>T%z3gWtFD%`{rUkw1-fnfb+@dg6gMjHoNq^Pl~05S;nBrlvD*>+5?(?+iNP%UjcRciygX01d+eQ6i0|1B@O~IE_VF zbP65Db`v_ms2=4SgRq@rI5#O6kua9d`T3nrMA)D02*0kXxacjHnveNW$2aC>UvFKLtYch zJUgBvL=d&~aw*k~$eYvYf4Vf4`eZ|CRE|&7x$Cc1@Jum|Ym|#(VHRT;C=^;n_#LIQ51%;(kl22J2ln7tXMrjV_cGu^d6jn`G}R49w_Gt{ zgnI=hE|mqPu75nUtE+WhvGZ?t<@?=ry_~|IiO1!MOyG!L@U#D7e{&&5&Gs1}un%IOuzdgxDb_a=iU0ky?|=D`bo$E=H8x&wcRW7# zN(FSKX|?5Wmn-6#$59*|Yt}qdOySkSz9s;G<54b3HY>Hf8333yS1WWT08IGZl&_R6 zO5H#Hf$!h<{suW95$ibA0n6=K7YGrZ`6iuK;RI3aA3qF&AAKXA|IuUF z>|HA7e{f{v`~$D{E7EGq;Vo~mFKWx-Ex)~S0rks2I+$`z@Y^uNcf(K~EfjvP>)XHB z&~W>0!^3B3z?ZFA^($Up-4{guy36*2m1OpRW{d_+EQC;OKtggvDEzX>vr+H{|nlt VQN})mB#;0A002ovPDHLkV1fgun3Vtk literal 0 HcmV?d00001 diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/RuntimeMeshComponent.uplugin b/spine-ue4/Plugins/UE4RuntimeMeshComponent/RuntimeMeshComponent.uplugin new file mode 100644 index 000000000..17bbe74d6 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/RuntimeMeshComponent.uplugin @@ -0,0 +1,29 @@ +{ + "FileVersion": 3, + "Version": 2, + "VersionName": "2.0", + "FriendlyName": "Runtime Mesh Component", + "Description": "A renderable component with utilities for creating and modifying mesh geometry procedurally at runtime.", + "Category": "Rendering", + "CreatedBy" : "Chris Conway (Koderz)", + "CreatedByURL" : "https://forums.unrealengine.com/member.php?141752-Koderz", + "DocsURL": "https://github.com/Koderz/UE4RuntimeMeshComponent/wiki", + "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/content/ad0b45a6a31e462aba7cf7c790a9c125", + "SupportURL": "https://github.com/Koderz/UE4RuntimeMeshComponent/issues", + "EnabledByDefault": true, + "CanContainContent": false, + "IsBetaVersion": false, + "Installed": false, + "Modules": [ + { + "Name": "RuntimeMeshComponent", + "Type": "Runtime", + "LoadingPhase": "Default" + }, + { + "Name" : "RuntimeMeshComponentEditor", + "Type" : "Editor", + "LoadingPhase" : "Default" + } + ] +} \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponent.cpp b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponent.cpp new file mode 100644 index 000000000..fb7b05ed7 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponent.cpp @@ -0,0 +1,2134 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#include "RuntimeMeshComponentPluginPrivatePCH.h" +#include "RuntimeMeshComponent.h" +#include "RuntimeMeshCore.h" +#include "RuntimeMeshGenericVertex.h" +#include "RuntimeMeshVersion.h" +#include "PhysicsEngine/PhysicsSettings.h" + + +/** Runtime mesh scene proxy */ +class FRuntimeMeshSceneProxy : public FPrimitiveSceneProxy +{ +private: + // Temporarily holds all section creation data until this proxy is passsed to the RT. + // After this data is applied this array is cleared. + TArray SectionCreationData; + +public: + + FRuntimeMeshSceneProxy(URuntimeMeshComponent* Component) + : FPrimitiveSceneProxy(Component) + , BodySetup(Component->GetBodySetup()) + { + bStaticElementsAlwaysUseProxyPrimitiveUniformBuffer = true; + + + // Get the proxy for all mesh sections + + const int32 NumSections = Component->MeshSections.Num(); + Sections.AddDefaulted(NumSections); + + for (int32 SectionIdx = 0; SectionIdx < NumSections; SectionIdx++) + { + RuntimeMeshSectionPtr& SourceSection = Component->MeshSections[SectionIdx]; + if (SourceSection.IsValid()) + { + UMaterialInterface* Material = Component->GetMaterial(SectionIdx); + if (Material == nullptr) + { + Material = UMaterial::GetDefaultMaterial(MD_Surface); + } + + + // Get the section creation data + auto* SectionData = SourceSection->GetSectionCreationData(&GetScene(), Material); + SectionData->SetTargetSection(SectionIdx); + SectionCreationData.Add(SectionData); + + } + } + + // Update material relevancy information needed to control the rendering. + UpdateMaterialRelevance(); + } + + virtual ~FRuntimeMeshSceneProxy() + { + for (FRuntimeMeshSectionProxyInterface* Section : Sections) + { + if (Section) + { + delete Section; + } + } + } + + void CreateRenderThreadResources() override + { + FPrimitiveSceneProxy::CreateRenderThreadResources(); + + for (auto Section : SectionCreationData) + { + CreateSection_RenderThread(Section); + } + // The individual items are deleted by CreateSection_RenderThread so just clear the array. + SectionCreationData.Empty(); + } + + /** Called on render thread to create a new dynamic section. (Static sections are handled differently) */ + void CreateSection_RenderThread(FRuntimeMeshSectionCreateDataInterface* SectionData) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_CreateSection_RenderThread); + + check(IsInRenderingThread()); + check(SectionData); + + int32 SectionIndex = SectionData->GetTargetSection(); + + // Make sure the array is big enough + if (SectionIndex >= Sections.Num()) + { + Sections.SetNum(SectionIndex + 1, false); + } + + // If a section already exists... destroy it! + if (FRuntimeMeshSectionProxyInterface* Section = Sections[SectionIndex]) + { + delete Section; + } + + // Get the proxy and finish the creation here on the render thread. + FRuntimeMeshSectionProxyInterface* Section = SectionData->NewProxy; + Section->FinishCreate_RenderThread(SectionData); + + // Save ref to new section + Sections[SectionIndex] = Section; + + delete SectionData; + + // Update material relevancy information needed to control the rendering. + UpdateMaterialRelevance(); + } + + /** Called on render thread to assign new dynamic data */ + void UpdateSection_RenderThread(FRuntimeMeshRenderThreadCommandInterface* SectionData) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateSection_RenderThread); + + check(IsInRenderingThread()); + check(SectionData); + + if (SectionData->GetTargetSection() < Sections.Num() && Sections[SectionData->GetTargetSection()] != nullptr) + { + Sections[SectionData->GetTargetSection()]->FinishUpdate_RenderThread(SectionData); + } + + delete SectionData; + } + + void UpdateSectionPositionOnly_RenderThread(FRuntimeMeshRenderThreadCommandInterface* SectionData) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateSectionPositionOnly_RenderThread); + + check(IsInRenderingThread()); + check(SectionData); + + if (SectionData->GetTargetSection() < Sections.Num() && Sections[SectionData->GetTargetSection()] != nullptr) + { + Sections[SectionData->GetTargetSection()]->FinishPositionUpdate_RenderThread(SectionData); + } + + delete SectionData; + } + + void UpdateSectionProperties_RenderThread(FRuntimeMeshRenderThreadCommandInterface* SectionData) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateSectionProperties_RenderThread); + + check(IsInRenderingThread()); + check(SectionData); + + int32 SectionIndex = SectionData->GetTargetSection(); + + if (SectionIndex < Sections.Num() && Sections[SectionIndex] != nullptr) + { + Sections[SectionIndex]->FinishPropertyUpdate_RenderThread(SectionData); + } + } + + + void DestroySection_RenderThread(int32 SectionIndex) + { + check(IsInRenderingThread()); + + if (SectionIndex < Sections.Num() && Sections[SectionIndex] != nullptr) + { + delete Sections[SectionIndex]; + Sections[SectionIndex] = nullptr; + } + + // Update material relevancy information needed to control the rendering. + UpdateMaterialRelevance(); + } + + void ApplyBatchUpdate_RenderThread(FRuntimeMeshBatchUpdateData* BatchUpdateData) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_ApplyBatchUpdate_RenderThread); + + check(IsInRenderingThread()); + check(BatchUpdateData); + + // Destroy flagged sections + for (auto& SectionIndex : BatchUpdateData->DestroySections) + { + DestroySection_RenderThread(SectionIndex); + } + + // Create new sections + for (auto& SectionToCreate : BatchUpdateData->CreateSections) + { + CreateSection_RenderThread(static_cast(SectionToCreate)); + } + + // Update sections + for (auto& SectionToUpdate : BatchUpdateData->UpdateSections) + { + UpdateSection_RenderThread(SectionToUpdate); + } + + // Apply section property updates + for (auto& SectionToUpdate : BatchUpdateData->PropertyUpdateSections) + { + UpdateSectionProperties_RenderThread(SectionToUpdate); + } + + delete BatchUpdateData; + + } + + + bool HasDynamicSections() const + { + for (FRuntimeMeshSectionProxyInterface* Section : Sections) + { + if (Section && !Section->WantsToRenderInStaticPath()) + { + return true; + } + } + return false; + } + + bool HasStaticSections() const + { + for (FRuntimeMeshSectionProxyInterface* Section : Sections) + { + if (Section && Section->WantsToRenderInStaticPath()) + { + return true; + } + } + return false; + } + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 11 + virtual FPrimitiveViewRelevance GetViewRelevance(const FSceneView* View) const override +#else + virtual FPrimitiveViewRelevance GetViewRelevance(const FSceneView* View) override +#endif + { + FPrimitiveViewRelevance Result; + Result.bDrawRelevance = IsShown(View); + Result.bShadowRelevance = IsShadowCast(View); + + bool bForceDynamicPath = IsRichView(*View->Family) || View->Family->EngineShowFlags.Wireframe || IsSelected() || !IsStaticPathAvailable(); + Result.bStaticRelevance = !bForceDynamicPath && HasStaticSections(); + Result.bDynamicRelevance = bForceDynamicPath || HasDynamicSections(); + + Result.bRenderInMainPass = ShouldRenderInMainPass(); +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 11 + Result.bUsesLightingChannels = GetLightingChannelMask() != GetDefaultLightingChannelMask(); +#endif + Result.bRenderCustomDepth = ShouldRenderCustomDepth(); + MaterialRelevance.SetPrimitiveViewRelevance(Result); + return Result; + } + + void CreateMeshBatch(FMeshBatch& MeshBatch, FRuntimeMeshSectionProxyInterface* Section, FMaterialRenderProxy* WireframeMaterial) const + { + Section->CreateMeshBatch(MeshBatch, WireframeMaterial, IsSelected()); + + MeshBatch.ReverseCulling = IsLocalToWorldDeterminantNegative(); + MeshBatch.bCanApplyViewModeOverrides = true; + + FMeshBatchElement& BatchElement = MeshBatch.Elements[0]; + BatchElement.PrimitiveUniformBufferResource = &GetUniformBuffer(); + } + + virtual void DrawStaticElements(FStaticPrimitiveDrawInterface* PDI) override + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_DrawStaticElements); + + for (FRuntimeMeshSectionProxyInterface* Section : Sections) + { + if (Section && Section->ShouldRender() && Section->WantsToRenderInStaticPath()) + { + FMeshBatch MeshBatch; + CreateMeshBatch(MeshBatch, Section, nullptr); + PDI->DrawMesh(MeshBatch, FLT_MAX); + } + } + } + + virtual void GetDynamicMeshElements(const TArray& Views, const FSceneViewFamily& ViewFamily, uint32 VisibilityMap, FMeshElementCollector& Collector) const override + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_GetDynamicMeshElements); + + // Set up wireframe material (if needed) + const bool bWireframe = AllowDebugViewmodes() && ViewFamily.EngineShowFlags.Wireframe; + + FColoredMaterialRenderProxy* WireframeMaterialInstance = nullptr; + if (bWireframe) + { + WireframeMaterialInstance = new FColoredMaterialRenderProxy( + GEngine->WireframeMaterial ? GEngine->WireframeMaterial->GetRenderProxy(IsSelected()) : nullptr, + FLinearColor(0, 0.5f, 1.f) + ); + + Collector.RegisterOneFrameMaterialProxy(WireframeMaterialInstance); + } + + // Iterate over sections + for (FRuntimeMeshSectionProxyInterface* Section : Sections) + { + if (Section && Section->ShouldRender()) + { + // Add the mesh batch to every view it's visible in + for (int32 ViewIndex = 0; ViewIndex < Views.Num(); ViewIndex++) + { + if (VisibilityMap & (1 << ViewIndex)) + { + bool bForceDynamicPath = IsRichView(*Views[ViewIndex]->Family) || Views[ViewIndex]->Family->EngineShowFlags.Wireframe || IsSelected() || !IsStaticPathAvailable(); + + if (bForceDynamicPath || !Section->WantsToRenderInStaticPath()) + { + FMeshBatch& MeshBatch = Collector.AllocateMesh(); + CreateMeshBatch(MeshBatch, Section, WireframeMaterialInstance); + + Collector.AddMesh(ViewIndex, MeshBatch); + } + } + } + } + } + + // Draw bounds +#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) + for (int32 ViewIndex = 0; ViewIndex < Views.Num(); ViewIndex++) + { + if (VisibilityMap & (1 << ViewIndex)) + { +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 13 + // Draw simple collision as wireframe if 'show collision', and collision is enabled, and we are not using the complex as the simple + if (ViewFamily.EngineShowFlags.Collision && IsCollisionEnabled() && BodySetup->GetCollisionTraceFlag() != ECollisionTraceFlag::CTF_UseComplexAsSimple) + { + FTransform GeomTransform(GetLocalToWorld()); + BodySetup->AggGeom.GetAggGeom(GeomTransform, GetSelectionColor(FColor(157, 149, 223, 255), IsSelected(), IsHovered()).ToFColor(true), NULL, false, false, UseEditorDepthTest(), ViewIndex, Collector); + } +#endif + + // Render bounds + RenderBounds(Collector.GetPDI(ViewIndex), ViewFamily.EngineShowFlags, GetBounds(), IsSelected()); + } + } +#endif + } + + + virtual bool CanBeOccluded() const override + { + return !MaterialRelevance.bDisableDepthTest; + } + + virtual uint32 GetMemoryFootprint(void) const + { + return(sizeof(*this) + GetAllocatedSize()); + } + + uint32 GetAllocatedSize(void) const + { + return(FPrimitiveSceneProxy::GetAllocatedSize()); + } + + void UpdateMaterialRelevance() + { + FMaterialRelevance NewMaterialRelevance; + for (FRuntimeMeshSectionProxyInterface* Section : Sections) + { + if (Section) + { + NewMaterialRelevance |= Section->GetMaterialRelevance(); + } + } + MaterialRelevance = NewMaterialRelevance; + } + +private: + /** Array of sections */ + TArray Sections; + UBodySetup* BodySetup; + FMaterialRelevance MaterialRelevance; +}; + + + + +void FRuntimeMeshComponentPrePhysicsTickFunction::ExecuteTick( float DeltaTime, ELevelTick TickType, ENamedThreads::Type CurrentThread, const FGraphEventRef& MyCompletionGraphEvent) +{ + /* Ensure target still exists */ + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 11 + bool bIsValid = Target && !Target->IsPendingKillOrUnreachable(); +#else + bool bIsValid = Target && !Target->HasAnyFlags(RF_PendingKill | RF_Unreachable); +#endif + + if (bIsValid) + { + FScopeCycleCounterUObject ActorScope(Target); + Target->BakeCollision(); + } +} + +FString FRuntimeMeshComponentPrePhysicsTickFunction::DiagnosticMessage() +{ + return Target->GetFullName() + TEXT("[PrePhysicsTick]"); +} + + + +/* Helper for converting an array of FLinearColor to an array of FColors*/ +void ConvertLinearColorToFColor(const TArray& LinearColors, TArray& Colors) +{ + Colors.SetNumUninitialized(LinearColors.Num()); + for (int32 Index = 0; Index < LinearColors.Num(); Index++) + { + Colors[Index] = LinearColors[Index].ToFColor(false); + } +} + + + + +URuntimeMeshComponent::URuntimeMeshComponent(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer) + , bUseComplexAsSimpleCollision(true) + , bShouldSerializeMeshData(true) + , bCollisionDirty(true) + , CollisionMode(ERuntimeMeshCollisionCookingMode::CookingPerformance) +{ + // Setup the collision update ticker + PrePhysicsTick.TickGroup = TG_PrePhysics; + PrePhysicsTick.bCanEverTick = true; + PrePhysicsTick.bStartWithTickEnabled = true; + + // Reset the batch state + BatchState.ResetBatch(); + + SetNetAddressable(); +} + +TSharedPtr URuntimeMeshComponent::CreateOrResetSectionLegacyType(int32 SectionIndex, int32 NumUVChannels) +{ + if (NumUVChannels == 1) + { + return CreateOrResetSection>(SectionIndex, false, true); + } + else if (NumUVChannels == 2) + { + return CreateOrResetSection>(SectionIndex, false, true); + } + else + { + check(false && "Legacy sections only support standard vertex formats wit 1 or 2 uv channels"); + return nullptr; + } +} + + +void URuntimeMeshComponent::CreateSectionInternal(int32 SectionIndex, ESectionUpdateFlags UpdateFlags) +{ + RuntimeMeshSectionPtr Section = MeshSections[SectionIndex]; + check(Section.IsValid()); + + // Update normal/tangents if requested... + if (!!(UpdateFlags & ESectionUpdateFlags::CalculateNormalTangent)) + { + Section->GenerateNormalTangent(); + } + + // calculate tessellation if requested... + if (!!(UpdateFlags & ESectionUpdateFlags::CalculateTessellationIndices)) + { + Section->GenerateTessellationIndices(); + } + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + // Mark section created + BatchState.MarkSectionCreated(SectionIndex, Section->UpdateFrequency == EUpdateFrequency::Infrequent); + + // Flag collision if this section affects it + if (Section->CollisionEnabled) + { + BatchState.MarkCollisionDirty(); + } + + // Flag bounds update + BatchState.MarkBoundsDirty(); + + // bail since we don't update directly in this case. + return; + } + + // Enqueue the RT command if we already have a SceneProxy + if (SceneProxy && Section->UpdateFrequency != EUpdateFrequency::Infrequent) + { + // Gather all needed update info + auto* SectionData = Section->GetSectionCreationData(GetScene(), GetSectionMaterial(SectionIndex)); + SectionData->SetTargetSection(SectionIndex); + + // Enqueue update on RT + ENQUEUE_UNIQUE_RENDER_COMMAND_TWOPARAMETER( + FRuntimeMeshSectionCreate, + FRuntimeMeshSceneProxy*, RuntimeMeshSceneProxy, (FRuntimeMeshSceneProxy*)SceneProxy, + FRuntimeMeshSectionCreateDataInterface*, SectionData, SectionData, + { + RuntimeMeshSceneProxy->CreateSection_RenderThread(SectionData); + } + ); + } + else + { + // Mark the render state dirty so it's recreated when necessary. + MarkRenderStateDirty(); + } + + // Mark collision dirty so it's re-baked at the end of this frame + if (Section->CollisionEnabled) + { + MarkCollisionDirty(); + } + + // Update overall bounds + UpdateLocalBounds(); + +} + +void URuntimeMeshComponent::UpdateSectionInternal(int32 SectionIndex, bool bHadVertexPositionsUpdate, bool bHadVertexUpdates, bool bHadIndexUpdates, bool bNeedsBoundsUpdate, ESectionUpdateFlags UpdateFlags) +{ + // Ensure that something was updated + check(bHadVertexPositionsUpdate || bHadVertexUpdates || bHadIndexUpdates || bNeedsBoundsUpdate); + + check(SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid()); + RuntimeMeshSectionPtr Section = MeshSections[SectionIndex]; + + // Update normal/tangents if requested... + if (!!(UpdateFlags & ESectionUpdateFlags::CalculateNormalTangent)) + { + Section->GenerateNormalTangent(); + } + + // calculate tessellation if requested... + if (!!(UpdateFlags & ESectionUpdateFlags::CalculateTessellationIndices)) + { + Section->GenerateTessellationIndices(); + } + + /* Make sure this is only flagged if the section is dual buffer */ + bHadVertexPositionsUpdate = Section->IsDualBufferSection() && bHadVertexPositionsUpdate; + bool bNeedsCollisionUpdate = Section->CollisionEnabled && (bHadVertexPositionsUpdate || (!Section->IsDualBufferSection() && bHadVertexUpdates)); + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + // Mark update for section or promote to proxy recreate if static section + if (Section->UpdateFrequency == EUpdateFrequency::Infrequent) + { + BatchState.MarkRenderStateDirty(); + } + else + { + ERuntimeMeshSectionBatchUpdateType UpdateType = ERuntimeMeshSectionBatchUpdateType::None; + UpdateType |= bHadVertexPositionsUpdate ? ERuntimeMeshSectionBatchUpdateType::PositionsUpdate : ERuntimeMeshSectionBatchUpdateType::None; + UpdateType |= bHadVertexUpdates ? ERuntimeMeshSectionBatchUpdateType::VerticesUpdate : ERuntimeMeshSectionBatchUpdateType::None; + UpdateType |= bHadIndexUpdates ? ERuntimeMeshSectionBatchUpdateType::IndicesUpdate : ERuntimeMeshSectionBatchUpdateType::None; + + BatchState.MarkUpdateForSection(SectionIndex, UpdateType); + } + + // Flag collision if this section affects it + if (bNeedsCollisionUpdate) + { + BatchState.MarkCollisionDirty(); + } + + // Flag bounds update if needed. + if (bNeedsBoundsUpdate) + { + BatchState.MarkBoundsDirty(); + } + + // bail since we don't update directly in this case. + return; + } + + + // Send the update to the render thread if the scene proxy exists + if (SceneProxy && Section->UpdateFrequency != EUpdateFrequency::Infrequent) + { + auto* SectionData = Section->GetSectionUpdateData(bHadVertexPositionsUpdate, bHadVertexUpdates, bHadIndexUpdates); + SectionData->SetTargetSection(SectionIndex); + + // Enqueue update on RT + ENQUEUE_UNIQUE_RENDER_COMMAND_TWOPARAMETER( + FRuntimeMeshSectionUpdate, + FRuntimeMeshSceneProxy*, RuntimeMeshSceneProxy, (FRuntimeMeshSceneProxy*)SceneProxy, + FRuntimeMeshRenderThreadCommandInterface*, SectionData, SectionData, + { + RuntimeMeshSceneProxy->UpdateSection_RenderThread(SectionData); + } + ); + } + else + { + // Mark the renderstate dirty so it's recreated when necessary. + MarkRenderStateDirty(); + } + + // Mark collision dirty so it's re-baked at the end of this frame + if (bNeedsCollisionUpdate) + { + MarkCollisionDirty(); + } + + // Update overall bounds if needed + if (bNeedsBoundsUpdate) + { + UpdateLocalBounds(); + } +} + +void URuntimeMeshComponent::UpdateSectionVertexPositionsInternal(int32 SectionIndex, bool bNeedsBoundsUpdate) +{ + check(SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid()); + RuntimeMeshSectionPtr Section = MeshSections[SectionIndex]; + + if (SceneProxy) + { + auto SectionData = Section->GetSectionPositionUpdateData(); + SectionData->SetTargetSection(SectionIndex); + + // Enqueue command to modify render thread info + ENQUEUE_UNIQUE_RENDER_COMMAND_TWOPARAMETER( + FRuntimeMeshSectionPositionUpdate, + FRuntimeMeshSceneProxy*, RuntimeMeshSceneProxy, (FRuntimeMeshSceneProxy*)SceneProxy, + FRuntimeMeshRenderThreadCommandInterface*, SectionData, SectionData, + { + RuntimeMeshSceneProxy->UpdateSectionPositionOnly_RenderThread(SectionData); + } + ); + } + else + { + MarkRenderStateDirty(); + } + + if (bNeedsBoundsUpdate) + { + UpdateLocalBounds(); + } +} + +void URuntimeMeshComponent::UpdateSectionPropertiesInternal(int32 SectionIndex, bool bUpdateRequiresProxyRecreateIfStatic) +{ + check(SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid()); + RuntimeMeshSectionPtr Section = MeshSections[SectionIndex]; + + bool bRequiresRecreate = bUpdateRequiresProxyRecreateIfStatic && Section->UpdateFrequency == EUpdateFrequency::Infrequent; + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + if (bRequiresRecreate) + { + BatchState.MarkRenderStateDirty(); + } + else + { + BatchState.MarkUpdateForSection(SectionIndex, ERuntimeMeshSectionBatchUpdateType::PropertyUpdate); + } + + // bail since we don't update directly in this case. + return; + } + + + + if (SceneProxy && !bRequiresRecreate) + { + auto SectionData = new FRuntimeMeshSectionPropertyUpdateData(); + SectionData->SetTargetSection(SectionIndex); + SectionData->bIsVisible = Section->bIsVisible; + SectionData->bCastsShadow = Section->bCastsShadow; + + + // Enqueue command to modify render thread info + ENQUEUE_UNIQUE_RENDER_COMMAND_TWOPARAMETER( + FRuntimeMeshSectionPropertyUpdate, + FRuntimeMeshSceneProxy*, RuntimeMeshSceneProxy, (FRuntimeMeshSceneProxy*)SceneProxy, + FRuntimeMeshRenderThreadCommandInterface*, SectionData, SectionData, + { + RuntimeMeshSceneProxy->UpdateSectionProperties_RenderThread(SectionData); + } + ); + } + else + { + MarkRenderStateDirty(); + } +} + + +void URuntimeMeshComponent::UpdateMeshSectionPositionsImmediate(int32 SectionIndex, TArray& VertexPositions, ESectionUpdateFlags UpdateFlags) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSectionPositionsImmediate); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_DUALBUFFER(SectionIndex, /*VoidReturn*/); + + // Get section + RuntimeMeshSectionPtr& Section = MeshSections[SectionIndex]; + + // Check dual buffer section status + if (VertexPositions.Num() != Section->PositionVertexBuffer.Num()) + { + Log(TEXT("UpdateMeshSection() - Positions cannot change length unless the vertexdata is updated as well."), true); + return; + } + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + bool bNeedsBoundsUpdate = false; + + // Update vertex positions if supplied + bool bUpdatedVertexPositions = false; + if (VertexPositions.Num() > 0) + { + bNeedsBoundsUpdate = Section->UpdateVertexPositionBuffer(VertexPositions, nullptr, bShouldUseMove); + bUpdatedVertexPositions = true; + } + else + { + Log(TEXT("UpdatemeshSection() - Vertex positions empty. They will not be updated.")); + } + + // Finalize section update if we have anything to apply + if (bUpdatedVertexPositions) + { + UpdateSectionVertexPositionsInternal(SectionIndex, bNeedsBoundsUpdate); + } +} + +void URuntimeMeshComponent::UpdateMeshSectionPositionsImmediate(int32 SectionIndex, TArray& VertexPositions, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSectionPositionsImmediate_WithBoundinBox); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_DUALBUFFER(SectionIndex, /*VoidReturn*/); + + // Get section + RuntimeMeshSectionPtr& Section = MeshSections[SectionIndex]; + + // Check dual buffer section status + if (VertexPositions.Num() != Section->PositionVertexBuffer.Num()) + { + Log(TEXT("UpdateMeshSection() - Positions cannot change length unless the vertexdata is updated as well."), true); + return; + } + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + bool bNeedsBoundsUpdate = false; + + // Update vertex positions if supplied + bool bUpdatedVertexPositions = false; + if (VertexPositions.Num() > 0) + { + bNeedsBoundsUpdate = Section->UpdateVertexPositionBuffer(VertexPositions, &BoundingBox, bShouldUseMove); + bUpdatedVertexPositions = true; + } + else + { + Log(TEXT("UpdatemeshSection() - Vertex positions empty. They will not be updated.")); + } + + // Finalize section update if we have anything to apply + if (bUpdatedVertexPositions) + { + UpdateSectionVertexPositionsInternal(SectionIndex, bNeedsBoundsUpdate); + } +} + + +TArray* URuntimeMeshComponent::BeginMeshSectionPositionUpdate(int32 SectionIndex) +{ + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_DUALBUFFER(SectionIndex, nullptr); + + // Get section + RuntimeMeshSectionPtr& Section = MeshSections[SectionIndex]; + + return &Section->PositionVertexBuffer; +} + +void URuntimeMeshComponent::EndMeshSectionPositionUpdate(int32 SectionIndex) +{ + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_DUALBUFFER(SectionIndex, /*VoidReturn*/); + + // TODO: Validate that the position buffer is still the same length + + UpdateSectionVertexPositionsInternal(SectionIndex, true); +} + +void URuntimeMeshComponent::EndMeshSectionPositionUpdate(int32 SectionIndex, const FBox& BoundingBox) +{ + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_DUALBUFFER(SectionIndex, /*VoidReturn*/); + + RuntimeMeshSectionPtr& Section = MeshSections[SectionIndex]; + + bool bNeedsBoundingBoxUpdate = !(Section->LocalBoundingBox == BoundingBox); + if (bNeedsBoundingBoxUpdate) + { + Section->LocalBoundingBox = BoundingBox; + } + + // TODO: Validate that the position buffer is still the same length + + UpdateSectionVertexPositionsInternal(SectionIndex, bNeedsBoundingBoxUpdate); +} + + + + +void URuntimeMeshComponent::EndMeshSectionUpdate(int32 SectionIndex, ERuntimeMeshBuffer UpdatedBuffers, ESectionUpdateFlags UpdateFlags) +{ + // Bail if we have no buffers to update. + if (UpdatedBuffers == ERuntimeMeshBuffer::None) + { + return; + } + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + + // Get section and update bounding box + RuntimeMeshSectionPtr& Section = MeshSections[SectionIndex]; + Section->RecalculateBoundingBox(); + + // Finalize section update + UpdateSectionInternal(SectionIndex, + !!(UpdatedBuffers & ERuntimeMeshBuffer::Positions), + !!(UpdatedBuffers & ERuntimeMeshBuffer::Vertices), + !!(UpdatedBuffers & ERuntimeMeshBuffer::Triangles), true, UpdateFlags); +} + + +void URuntimeMeshComponent::EndMeshSectionUpdate(int32 SectionIndex, ERuntimeMeshBuffer UpdatedBuffers, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags) +{ + // Bail if we have no buffers to update. + if (UpdatedBuffers == ERuntimeMeshBuffer::None) + { + return; + } + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + + // Get section and update bounding box + RuntimeMeshSectionPtr& Section = MeshSections[SectionIndex]; + Section->LocalBoundingBox = BoundingBox; + + // Finalize section update + UpdateSectionInternal(SectionIndex, + !!(UpdatedBuffers & ERuntimeMeshBuffer::Positions), + !!(UpdatedBuffers & ERuntimeMeshBuffer::Vertices), + !!(UpdatedBuffers & ERuntimeMeshBuffer::Triangles), true, UpdateFlags); +} + + + +void URuntimeMeshComponent::CreateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, + const TArray& UV0, const TArray& Colors, const TArray& Tangents, bool bCreateCollision, EUpdateFrequency UpdateFrequency, + ESectionUpdateFlags UpdateFlags) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_CreateMeshSection); + + // Validate all creation parameters + RMC_VALIDATE_CREATIONPARAMETERS(SectionIndex, Vertices, Triangles, /*VoidReturn*/); + + // Create the section + auto NewSection = CreateOrResetSectionLegacyType(SectionIndex, 1); + + // Update the mesh data in the section + NewSection->UpdateVertexBufferInternal(Vertices, Normals, Tangents, UV0, TArray(), Colors); + + TArray& TrianglesRef = const_cast&>(Triangles); + NewSection->UpdateIndexBuffer(TrianglesRef, false); + + // Track collision status and update collision information if necessary + NewSection->CollisionEnabled = bCreateCollision; + NewSection->UpdateFrequency = UpdateFrequency; + + // Finalize section. + CreateSectionInternal(SectionIndex, UpdateFlags); +} + +void URuntimeMeshComponent::CreateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, + const TArray& UV0, const TArray& UV1, const TArray& Colors, const TArray& Tangents, + bool bCreateCollision, EUpdateFrequency UpdateFrequency, ESectionUpdateFlags UpdateFlags) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_CreateMeshSection_DualUV); + + // Validate all creation parameters + RMC_VALIDATE_CREATIONPARAMETERS(SectionIndex, Vertices, Triangles, /*VoidReturn*/); + + // Create the section + auto NewSection = CreateOrResetSectionLegacyType(SectionIndex, 2); + + // Update the mesh data in the section + NewSection->UpdateVertexBufferInternal(Vertices, Normals, Tangents, UV0, UV1, Colors); + + TArray& TrianglesRef = const_cast&>(Triangles); + NewSection->UpdateIndexBuffer(TrianglesRef, false); + + // Track collision status and update collision information if necessary + NewSection->CollisionEnabled = bCreateCollision; + NewSection->UpdateFrequency = UpdateFrequency; + + // Finalize section. + CreateSectionInternal(SectionIndex, UpdateFlags); +} + + + +void URuntimeMeshComponent::UpdateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Normals, const TArray& UV0, + const TArray& Colors, const TArray& Tangents, ESectionUpdateFlags UpdateFlags) +{ + UpdateMeshSection(SectionIndex, Vertices, TArray(), Normals, UV0, Colors, Tangents, UpdateFlags); +} + +void URuntimeMeshComponent::UpdateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Normals, const TArray& UV0, + const TArray& UV1, const TArray& Colors, const TArray& Tangents, ESectionUpdateFlags UpdateFlags) +{ + UpdateMeshSection(SectionIndex, Vertices, TArray(), Normals, UV0, UV1, Colors, Tangents, UpdateFlags); +} + +void URuntimeMeshComponent::UpdateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, + const TArray& UV0, const TArray& Colors, const TArray& Tangents, ESectionUpdateFlags UpdateFlags) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSection); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_INTERNALSECTION(SectionIndex, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Get section + RuntimeMeshSectionPtr& Section = MeshSections[SectionIndex]; + + // Tell the section to update the vertex buffer + bool bHadVertexUpdates = Section->UpdateVertexBufferInternal(Vertices, Normals, Tangents, UV0, TArray(), Colors); + + bool bHadTriangleUpdates = Triangles.Num() > 0; + if (bHadTriangleUpdates) + { + TArray& TrianglesRef = const_cast&>(Triangles); + + Section->UpdateIndexBuffer(TrianglesRef, false); + } + + UpdateSectionInternal(SectionIndex, false, bHadVertexUpdates, bHadTriangleUpdates, true, UpdateFlags); +} + +void URuntimeMeshComponent::UpdateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, + const TArray& UV0, const TArray& UV1, const TArray& Colors, const TArray& Tangents, ESectionUpdateFlags UpdateFlags) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSection_DualUV); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_INTERNALSECTION(SectionIndex, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Get section + RuntimeMeshSectionPtr& Section = MeshSections[SectionIndex]; + + // Tell the section to update the vertex buffer + bool bHadVertexUpdates = Section->UpdateVertexBufferInternal(Vertices, Normals, Tangents, UV0, UV1, Colors); + + bool bHadTriangleUpdates = Triangles.Num() > 0; + if (bHadTriangleUpdates) + { + TArray& TrianglesRef = const_cast&>(Triangles); + + Section->UpdateIndexBuffer(TrianglesRef, false); + } + + UpdateSectionInternal(SectionIndex, false, bHadVertexUpdates, bHadTriangleUpdates, true, UpdateFlags); +} + + +void URuntimeMeshComponent::CreateMeshSection_Blueprint(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, const TArray& Tangents, + const TArray& UV0, const TArray& UV1, const TArray& VertexColors, bool bCreateCollision, bool bCalculateNormalTangent, bool bGenerateTessellationTriangles, EUpdateFrequency UpdateFrequency) +{ + // Convert vertex colors to FColor + TArray Colors; + ConvertLinearColorToFColor(VertexColors, Colors); + + ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None; + UpdateFlags |= bCalculateNormalTangent ? ESectionUpdateFlags::CalculateNormalTangent : ESectionUpdateFlags::None; + UpdateFlags |= bGenerateTessellationTriangles ? ESectionUpdateFlags::CalculateTessellationIndices : ESectionUpdateFlags::None; + + // Create section + CreateMeshSection(SectionIndex, Vertices, Triangles, Normals, UV0, UV1, Colors, Tangents, bCreateCollision, UpdateFrequency, UpdateFlags); +} + +void URuntimeMeshComponent::UpdateMeshSection_Blueprint(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, const TArray& Tangents, + const TArray& UV0, const TArray& UV1, const TArray& VertexColors, bool bCalculateNormalTangent, bool bGenerateTessellationTriangles) +{ + // Convert vertex colors to FColor + TArray Colors; + ConvertLinearColorToFColor(VertexColors, Colors); + + ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None; + UpdateFlags |= bCalculateNormalTangent ? ESectionUpdateFlags::CalculateNormalTangent : ESectionUpdateFlags::None; + UpdateFlags |= bGenerateTessellationTriangles ? ESectionUpdateFlags::CalculateTessellationIndices : ESectionUpdateFlags::None; + + // Update section + UpdateMeshSection(SectionIndex, Vertices, Triangles, Normals, UV0, UV1, Colors, Tangents, UpdateFlags); +} + + + +void URuntimeMeshComponent::CreateMeshSection(int32 SectionIndex, IRuntimeMeshVerticesBuilder& Vertices, FRuntimeMeshIndicesBuilder& Triangles, bool bCreateCollision, + EUpdateFrequency UpdateFrequency, ESectionUpdateFlags UpdateFlags) +{ + RMC_CHECKINGAME_LOGINEDITOR((SectionIndex >= 0), "SectionIndex cannot be negative.", /**/); + RMC_CHECKINGAME_LOGINEDITOR((Vertices.Length() > 0), "Vertices length must not be 0.", /**/); + RMC_CHECKINGAME_LOGINEDITOR((Triangles.Length() > 0), "Triangles length must not be 0", /**/); + + // First we need to create the new section + TSharedPtr Section = MakeShareable(Vertices.GetVertexType()->CreateSection(Vertices.WantsSeparatePositionBuffer())); + + // Ensure sections array is long enough + if (SectionIndex >= MeshSections.Num()) + { + MeshSections.SetNum(SectionIndex + 1, false); + } + + // Set the new section + MeshSections[SectionIndex] = Section; + + // Set vertex/index buffers + Section->UpdateVertexBuffer(Vertices, nullptr, !!(UpdateFlags & ESectionUpdateFlags::MoveArrays)); + Section->UpdateIndexBuffer(Triangles, !!(UpdateFlags & ESectionUpdateFlags::MoveArrays)); + + + // Track collision status and update collision information if necessary + Section->CollisionEnabled = bCreateCollision; + Section->UpdateFrequency = UpdateFrequency; + + // Finalize section. + CreateSectionInternal(SectionIndex, UpdateFlags); +} + +void URuntimeMeshComponent::UpdateMeshSection(int32 SectionIndex, IRuntimeMeshVerticesBuilder& Vertices, FRuntimeMeshIndicesBuilder& Triangles, ESectionUpdateFlags UpdateFlags) +{ + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_INTERNALSECTION(SectionIndex, /*VoidReturn*/); + + // Get section + RuntimeMeshSectionPtr& Section = MeshSections[SectionIndex]; + + // Set vertex/index buffers + Section->UpdateVertexBuffer(Vertices, nullptr, !!(UpdateFlags & ESectionUpdateFlags::MoveArrays)); + Section->UpdateIndexBuffer(Triangles, !!(UpdateFlags & ESectionUpdateFlags::MoveArrays)); + + UpdateSectionInternal(SectionIndex, Vertices.WantsSeparatePositionBuffer(), true, true, true, UpdateFlags); +} + + + +void URuntimeMeshComponent::ClearMeshSection(int32 SectionIndex) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_ClearMeshSection); + + if (SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid()) + { + // Did this section have collision + bool HadCollision = MeshSections[SectionIndex]->CollisionEnabled; + bool bWasStaticSection = MeshSections[SectionIndex]->UpdateFrequency == EUpdateFrequency::Infrequent; + + // Clear the section + MeshSections[SectionIndex].Reset(); + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + // Mark section created + BatchState.MarkSectionDestroyed(SectionIndex, bWasStaticSection); + + // Flag collision if this section affects it + if (HadCollision) + { + BatchState.MarkCollisionDirty(); + } + + // Flag bounds update + BatchState.MarkBoundsDirty(); + + // bail since we don't update directly in this case. + return; + } + + + if (SceneProxy && !bWasStaticSection) + { + // Enqueue update on RT + ENQUEUE_UNIQUE_RENDER_COMMAND_TWOPARAMETER( + FRuntimeMeshSectionUpdate, + FRuntimeMeshSceneProxy*, RuntimeMeshSceneProxy, (FRuntimeMeshSceneProxy*)SceneProxy, + int32, SectionIndex, SectionIndex, + { + RuntimeMeshSceneProxy->DestroySection_RenderThread(SectionIndex); + } + ); + } + else + { + MarkRenderStateDirty(); + } + + // Update our collision info only if this section had any influence on it + if (HadCollision) + { + MarkCollisionDirty(); + } + + UpdateLocalBounds(); + + } +} + +void URuntimeMeshComponent::ClearAllMeshSections() +{ + MeshSections.Empty(); + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + // Mark render state dirty + BatchState.MarkRenderStateDirty(); + + // Flag collision + BatchState.MarkCollisionDirty(); + + // Flag bounds update + BatchState.MarkBoundsDirty(); + + // bail since we don't update directly in this case. + return; + } + + MarkRenderStateDirty(); + MarkCollisionDirty(); + UpdateLocalBounds(); +} + +void URuntimeMeshComponent::SetSectionTessellationTriangles(int32 SectionIndex, const TArray& TessellationTriangles, bool bShouldMoveArray) +{ + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_INTERNALSECTION(SectionIndex, /*VoidReturn*/); + + // Get section + RuntimeMeshSectionPtr& Section = MeshSections[SectionIndex]; + + // Tell the section to update the tessellation index buffer + Section->UpdateTessellationIndexBuffer(const_cast&>(TessellationTriangles), bShouldMoveArray); + + UpdateSectionInternal(SectionIndex, false, false, true, false, ESectionUpdateFlags::None); +} + + + + +bool URuntimeMeshComponent::GetSectionBoundingBox(int32 SectionIndex, FBox& OutBoundingBox) +{ + if (SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid()) + { + OutBoundingBox = MeshSections[SectionIndex]->LocalBoundingBox; + return true; + } + return false; +} + +void URuntimeMeshComponent::SetMeshSectionVisible(int32 SectionIndex, bool bNewVisibility) +{ + if (SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid()) + { + // Set game thread state + MeshSections[SectionIndex]->bIsVisible = bNewVisibility; + + // Finish the update + UpdateSectionPropertiesInternal(SectionIndex, false); + } +} + +bool URuntimeMeshComponent::IsMeshSectionVisible(int32 SectionIndex) const +{ + return SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid() && MeshSections[SectionIndex]->bIsVisible; +} + +void URuntimeMeshComponent::SetMeshSectionCastsShadow(int32 SectionIndex, bool bNewCastsShadow) +{ + if (SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid()) + { + // Set game thread state + MeshSections[SectionIndex]->bCastsShadow = bNewCastsShadow; + + // Finish the update + UpdateSectionPropertiesInternal(SectionIndex, true); + } +} + +bool URuntimeMeshComponent::IsMeshSectionCastingShadows(int32 SectionIndex) const +{ + return SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid() && MeshSections[SectionIndex]->bCastsShadow; +} + +void URuntimeMeshComponent::SetMeshSectionCollisionEnabled(int32 SectionIndex, bool bNewCollisionEnabled) +{ + if (SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid()) + { + auto& Section = MeshSections[SectionIndex]; + if (Section->CollisionEnabled != bNewCollisionEnabled) + { + Section->CollisionEnabled = bNewCollisionEnabled; + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + // Mark render state dirty + BatchState.MarkCollisionDirty(); + } + else + { + MarkCollisionDirty(); + } + } + } +} + +bool URuntimeMeshComponent::IsMeshSectionCollisionEnabled(int32 SectionIndex) +{ + return SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid() && MeshSections[SectionIndex]->CollisionEnabled; +} + + + +int32 URuntimeMeshComponent::GetNumSections() const +{ + int32 SectionCount = 0; + for (int32 Index = 0; Index < MeshSections.Num(); Index++) + { + if (MeshSections[Index].IsValid()) + { + SectionCount++; + } + } + + return SectionCount; +} + +bool URuntimeMeshComponent::DoesSectionExist(int32 SectionIndex) const +{ + return SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid(); +} + +int32 URuntimeMeshComponent::FirstAvailableMeshSectionIndex() const +{ + for (int32 Index = 0; Index < MeshSections.Num(); Index++) + { + if (!MeshSections[Index].IsValid()) + { + return Index; + } + } + return MeshSections.Num(); +} + +int32 URuntimeMeshComponent::GetLastSectionIndex() const +{ + for (int32 Index = MeshSections.Num() - 1; Index >= 0; Index--) + { + if (MeshSections[Index].IsValid()) + { + return Index; + } + } + + return -1; +} + + +void URuntimeMeshComponent::SetMeshCollisionSection(int32 CollisionSectionIndex, const TArray& Vertices, const TArray& Triangles) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_SetMeshCollisionSection); + + if (MeshCollisionSections.Num() <= CollisionSectionIndex) + { + MeshCollisionSections.SetNum(CollisionSectionIndex + 1, false); + } + + auto& Section = MeshCollisionSections[CollisionSectionIndex]; + Section.VertexBuffer = Vertices; + Section.IndexBuffer = Triangles; + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + // Mark render state dirty + BatchState.MarkCollisionDirty(); + } + else + { + MarkCollisionDirty(); + } +} + +void URuntimeMeshComponent::ClearMeshCollisionSection(int32 CollisionSectionIndex) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_ClearMeshCollisionSection); + + if (MeshCollisionSections.Num() <= CollisionSectionIndex) + return; + + MeshCollisionSections[CollisionSectionIndex].Reset(); + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + // Mark render state dirty + BatchState.MarkCollisionDirty(); + } + else + { + MarkCollisionDirty(); + } +} + +void URuntimeMeshComponent::ClearAllMeshCollisionSections() +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_ClearAllMeshCollisionSections); + + MeshCollisionSections.Empty(); + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + // Mark render state dirty + BatchState.MarkCollisionDirty(); + } + else + { + MarkCollisionDirty(); + } +} + + +void URuntimeMeshComponent::AddCollisionConvexMesh(TArray ConvexVerts) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_AddCollisionConvexMesh); + + if (ConvexVerts.Num() >= 4) + { + FRuntimeConvexCollisionSection ConvexSection; + ConvexSection.VertexBuffer = ConvexVerts; + ConvexSection.BoundingBox = FBox(ConvexVerts); + ConvexCollisionSections.Add(ConvexSection); + + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + // Mark render state dirty + BatchState.MarkCollisionDirty(); + } + else + { + MarkCollisionDirty(); + } + } +} + +void URuntimeMeshComponent::ClearCollisionConvexMeshes() +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_ClearCollisionConvexMeshes); + + // Empty simple collision info + ConvexCollisionSections.Empty(); + + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + // Mark render state dirty + BatchState.MarkCollisionDirty(); + } + else + { + MarkCollisionDirty(); + } +} + +void URuntimeMeshComponent::SetCollisionConvexMeshes(const TArray< TArray >& ConvexMeshes) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_SetCollisionConvexMeshes); + + ConvexCollisionSections.Empty(ConvexMeshes.Num()); + + // Create element for each convex mesh + for (int32 ConvexIndex = 0; ConvexIndex < ConvexMeshes.Num(); ConvexIndex++) + { + FRuntimeConvexCollisionSection ConvexSection; + ConvexSection.VertexBuffer = ConvexMeshes[ConvexIndex]; + ConvexSection.BoundingBox = FBox(ConvexSection.VertexBuffer); + ConvexCollisionSections.Add(ConvexSection); + } + + + // Use the batch update if one is running + if (BatchState.IsBatchPending()) + { + // Mark render state dirty + BatchState.MarkCollisionDirty(); + } + else + { + MarkCollisionDirty(); + } +} + + +void URuntimeMeshComponent::UpdateLocalBounds(bool bMarkRenderTransform) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateLocalBounds); + + FBox LocalBox(0); + + for (const RuntimeMeshSectionPtr& Section : MeshSections) + { + if (Section.IsValid() && Section->bIsVisible) + { + LocalBox += Section->LocalBoundingBox; + } + } + + LocalBounds = LocalBox.IsValid ? FBoxSphereBounds(LocalBox) : FBoxSphereBounds(FVector(0, 0, 0), FVector(0, 0, 0), 0); // fallback to reset box sphere bounds + + // Update global bounds + UpdateBounds(); + + if (bMarkRenderTransform) + { + // Need to send to render thread + MarkRenderTransformDirty(); + } +} + +FPrimitiveSceneProxy* URuntimeMeshComponent::CreateSceneProxy() +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_CreateSceneProxy); + + return new FRuntimeMeshSceneProxy(this); +} + +int32 URuntimeMeshComponent::GetNumMaterials() const +{ + return MeshSections.Num(); +} + +FBoxSphereBounds URuntimeMeshComponent::CalcBounds(const FTransform& LocalToWorld) const +{ + return LocalBounds.TransformBy(LocalToWorld); +} + + + + + +void URuntimeMeshComponent::EndBatchUpdates() +{ + // Bail if we have no pending updates + if (!BatchState.IsBatchPending()) + return; + + // Handle all pending rendering updates.. + if (BatchState.RequiresSceneProxyRecreate()) + { + MarkRenderStateDirty(); + } + else + { + auto* BatchUpdateData = new FRuntimeMeshBatchUpdateData; + + for (int32 Index = 0; Index <= BatchState.GetMaxSection(); Index++) + { + // Skip this section if it has no updates. + if (!BatchState.HasAnyFlagSet(Index)) + { + continue; + } + + // Check that we don't have both create and destroy flagged + check(!(BatchState.HasFlagSet(Index, ERuntimeMeshSectionBatchUpdateType::Create) && BatchState.HasFlagSet(Index, ERuntimeMeshSectionBatchUpdateType::Destroy))); + + // Handle section created + if (BatchState.HasFlagSet(Index, ERuntimeMeshSectionBatchUpdateType::Create)) + { + // Validate section exists + check(MeshSections.Num() >= Index && MeshSections[Index].IsValid()); + + UMaterialInterface* Material = GetMaterial(Index); + if (Material == nullptr) + { + Material = UMaterial::GetDefaultMaterial(MD_Surface); + } + + // Get the section create data and add it to the list + auto SectionCreateData = MeshSections[Index]->GetSectionCreationData(GetScene(), Material); + SectionCreateData->SetTargetSection(Index); + + BatchUpdateData->CreateSections.Add(SectionCreateData); + } + // Handle destroy + else if (BatchState.HasFlagSet(Index, ERuntimeMeshSectionBatchUpdateType::Destroy)) + { + BatchUpdateData->DestroySections.Add(Index); + } + // Handle vertex/index updates + else if (BatchState.HasFlagSet(Index, ERuntimeMeshSectionBatchUpdateType::VerticesUpdate) || BatchState.HasFlagSet(Index, ERuntimeMeshSectionBatchUpdateType::IndicesUpdate)) + { + // Validate section exists + check(MeshSections.Num() >= Index && MeshSections[Index].IsValid()); + + // Get the section update data and add it to the list. + bool bHadPositionUpdates = BatchState.HasFlagSet(Index, ERuntimeMeshSectionBatchUpdateType::PositionsUpdate); + bool bHadVertexUpdates = BatchState.HasFlagSet(Index, ERuntimeMeshSectionBatchUpdateType::VerticesUpdate); + bool bHadIndexUpdates = BatchState.HasFlagSet(Index, ERuntimeMeshSectionBatchUpdateType::IndicesUpdate); + auto SectionUpdateData = MeshSections[Index]->GetSectionUpdateData(bHadPositionUpdates, bHadVertexUpdates, bHadIndexUpdates); + SectionUpdateData->SetTargetSection(Index); + + BatchUpdateData->UpdateSections.Add(SectionUpdateData); + } + // Handle property updates + else if (BatchState.HasFlagSet(Index, ERuntimeMeshSectionBatchUpdateType::PropertyUpdate)) + { + // Validate section exists + check(MeshSections.Num() >= Index && MeshSections[Index].IsValid()); + + auto SectionProperties = new(BatchUpdateData->PropertyUpdateSections) FRuntimeMeshSectionPropertyUpdateData; + + auto& Section = MeshSections[Index]; + + SectionProperties->SetTargetSection(Index); + SectionProperties->bIsVisible = Section->bIsVisible; + SectionProperties->bCastsShadow = Section->bCastsShadow; + } + else + { + // Unknown update type. + checkNoEntry(); + } + } + + + + // Enqueue update on RT + ENQUEUE_UNIQUE_RENDER_COMMAND_TWOPARAMETER( + FRuntimeMeshBatchUpdateCommand, + FRuntimeMeshSceneProxy*, RuntimeMeshSceneProxy, (FRuntimeMeshSceneProxy*)SceneProxy, + FRuntimeMeshBatchUpdateData*, BatchUpdateData, BatchUpdateData, + { + RuntimeMeshSceneProxy->ApplyBatchUpdate_RenderThread(BatchUpdateData); + } + ); + + + } + + // Update collision if necessary + if (BatchState.RequiresCollisionUpdate()) + { + MarkCollisionDirty(); + } + + // Update local bounds if necessary + if (BatchState.RequiresBoundsUpdate()) + { + UpdateLocalBounds(!BatchState.RequiresSceneProxyRecreate()); + } + + // Clear batch info + BatchState.ResetBatch(); +} + + + + +void URuntimeMeshComponent::GetSectionMesh(int32 SectionIndex, const IRuntimeMeshVerticesBuilder*& Vertices, const FRuntimeMeshIndicesBuilder*& Indices) +{ + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + + IRuntimeMeshVerticesBuilder* TempVertices; + FRuntimeMeshIndicesBuilder* TempIndices; + + MeshSections[SectionIndex]->GetSectionMesh(TempVertices, TempIndices); + + Vertices = TempVertices; + Indices = TempIndices; +} + +void URuntimeMeshComponent::BeginMeshSectionUpdate(int32 SectionIndex, IRuntimeMeshVerticesBuilder*& Vertices, FRuntimeMeshIndicesBuilder*& Indices) +{ + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + + // Get mesh + MeshSections[SectionIndex]->GetSectionMesh(Vertices, Indices); +} + +bool URuntimeMeshComponent::GetPhysicsTriMeshData(struct FTriMeshCollisionData* CollisionData, bool InUseAllTriData) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_GetPhysicsTriMeshData); + int32 VertexBase = 0; // Base vertex index for current section + + bool HadCollision = false; + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 13 + // See if we should copy UVs + bool bCopyUVs = UPhysicsSettings::Get()->bSupportUVFromHitResults; + if (bCopyUVs) + { + CollisionData->UVs.AddZeroed(1); // only one UV channel + } +#endif + + // For each section.. + for (int32 SectionIdx = 0; SectionIdx < MeshSections.Num(); SectionIdx++) + { + const RuntimeMeshSectionPtr& Section = MeshSections[SectionIdx]; + + if (Section.IsValid() && Section->CollisionEnabled) + { + // Copy vertex data +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 13 + Section->GetCollisionInformation(CollisionData->Vertices, CollisionData->UVs, bCopyUVs); +#else + Section->GetCollisionInformation(CollisionData->Vertices); +#endif + + // Copy indices + const int32 NumTriangles = Section->IndexBuffer.Num() / 3; + for (int32 TriIdx = 0; TriIdx < NumTriangles; TriIdx++) + { + // Add the triangle + FTriIndices& Triangle = *new (CollisionData->Indices) FTriIndices; + Triangle.v0 = Section->IndexBuffer[(TriIdx * 3) + 0] + VertexBase; + Triangle.v1 = Section->IndexBuffer[(TriIdx * 3) + 1] + VertexBase; + Triangle.v2 = Section->IndexBuffer[(TriIdx * 3) + 2] + VertexBase; + + // Add material info + CollisionData->MaterialIndices.Add(SectionIdx); + } + + // Update the vertex base index + VertexBase = CollisionData->Vertices.Num(); + HadCollision = true; + } + } + + for (int32 SectionIdx = 0; SectionIdx < MeshCollisionSections.Num(); SectionIdx++) + { + auto& Section = MeshCollisionSections[SectionIdx]; + if (Section.VertexBuffer.Num() > 0 && Section.IndexBuffer.Num() > 0) + { + CollisionData->Vertices.Append(Section.VertexBuffer); + + const int32 NumTriangles = Section.IndexBuffer.Num() / 3; + for (int32 TriIdx = 0; TriIdx < NumTriangles; TriIdx++) + { + // Add the triangle + FTriIndices& Triangle = *new (CollisionData->Indices) FTriIndices; + Triangle.v0 = Section.IndexBuffer[(TriIdx * 3) + 0] + VertexBase; + Triangle.v1 = Section.IndexBuffer[(TriIdx * 3) + 1] + VertexBase; + Triangle.v2 = Section.IndexBuffer[(TriIdx * 3) + 2] + VertexBase; + + // Add material info + CollisionData->MaterialIndices.Add(SectionIdx); + } + + + VertexBase = CollisionData->Vertices.Num(); + HadCollision = true; + } + } + + CollisionData->bFlipNormals = true; + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 14 + if (CollisionMode == ERuntimeMeshCollisionCookingMode::CookingPerformance) + { + CollisionData->bFlipNormals = true; + } +#endif + + return HadCollision; + } + + bool URuntimeMeshComponent::ContainsPhysicsTriMeshData(bool InUseAllTriData) const + { + for (const RuntimeMeshSectionPtr& Section : MeshSections) + { + if (Section.IsValid() && Section->IndexBuffer.Num() >= 3 && Section->CollisionEnabled) + { + return true; + } + } + + for (const auto& Section : MeshCollisionSections) + { + if (Section.VertexBuffer.Num() > 0 && Section.IndexBuffer.Num() > 0) + { + return true; + } + } + + return false; + } + + +void URuntimeMeshComponent::EnsureBodySetupCreated() +{ + if (BodySetup == nullptr) + { + BodySetup = NewObject(this, NAME_None, (IsTemplate() ? RF_Public : RF_NoFlags)); + BodySetup->BodySetupGuid = FGuid::NewGuid(); + + BodySetup->bGenerateMirroredCollision = false; + BodySetup->bDoubleSidedGeometry = true; + } +} + +void URuntimeMeshComponent::UpdateCollision() +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateCollision); + + bool NeedsNewPhysicsState = false; + + // Destroy physics state if it exists + if (bPhysicsStateCreated) + { + DestroyPhysicsState(); + NeedsNewPhysicsState = true; + } + + // Ensure we have a BodySetup + EnsureBodySetupCreated(); + + // Fill in simple collision convex elements + BodySetup->AggGeom.ConvexElems.SetNum(ConvexCollisionSections.Num()); + for (int32 Index = 0; Index < ConvexCollisionSections.Num(); Index++) + { + FKConvexElem& NewConvexElem = BodySetup->AggGeom.ConvexElems[Index]; + + NewConvexElem.VertexData = ConvexCollisionSections[Index].VertexBuffer; + NewConvexElem.ElemBox = FBox(NewConvexElem.VertexData); + } + + // Set trace flag + BodySetup->CollisionTraceFlag = bUseComplexAsSimpleCollision ? CTF_UseComplexAsSimple : CTF_UseDefault; + + // New GUID as collision has changed + BodySetup->BodySetupGuid = FGuid::NewGuid(); + + +#if WITH_RUNTIME_PHYSICS_COOKING || WITH_EDITOR + // Clear current mesh data + BodySetup->InvalidatePhysicsData(); + // Create new mesh data + BodySetup->CreatePhysicsMeshes(); +#endif // WITH_RUNTIME_PHYSICS_COOKING || WITH_EDITOR + + // Recreate physics state if necessary + if (NeedsNewPhysicsState) + { + CreatePhysicsState(); + } + + UpdateNavigation(); +} + +UBodySetup* URuntimeMeshComponent::GetBodySetup() +{ + EnsureBodySetupCreated(); + return BodySetup; +} + +void URuntimeMeshComponent::MarkCollisionDirty() +{ + if (!bCollisionDirty) + { + bCollisionDirty = true; + PrePhysicsTick.SetTickFunctionEnable(true); + } +} + +void URuntimeMeshComponent::CookCollisionNow() +{ + if (bCollisionDirty) + { + BakeCollision(); + } +} + + +void URuntimeMeshComponent::BakeCollision() +{ + // Bake the collision + UpdateCollision(); + + bCollisionDirty = false; + PrePhysicsTick.SetTickFunctionEnable(false); +} + + +void URuntimeMeshComponent::UpdateNavigation() +{ + if (UNavigationSystem::ShouldUpdateNavOctreeOnComponentChange() && IsRegistered()) + { + UWorld* MyWorld = GetWorld(); + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 13 + if (MyWorld != nullptr && MyWorld->GetNavigationSystem() != nullptr && + (MyWorld->GetNavigationSystem()->ShouldAllowClientSideNavigation() || !MyWorld->IsNetMode(ENetMode::NM_Client))) +#else + + if (MyWorld != nullptr && MyWorld->IsGameWorld() && MyWorld->GetNetMode() < ENetMode::NM_Client) +#endif + { + UNavigationSystem::UpdateComponentInNavOctree(*this); + } + } +} + +void URuntimeMeshComponent::RegisterComponentTickFunctions(bool bRegister) +{ + Super::RegisterComponentTickFunctions(bRegister); + + if (bRegister) + { + if (SetupActorComponentTickFunction(&PrePhysicsTick)) + { + PrePhysicsTick.Target = this; + PrePhysicsTick.SetTickFunctionEnable(bCollisionDirty); + } + } + else + { + if (PrePhysicsTick.IsTickFunctionRegistered()) + { + PrePhysicsTick.UnRegisterTickFunction(); + } + } +} + +void URuntimeMeshComponent::SerializeLegacy(FArchive& Ar) +{ + if (Ar.CustomVer(FRuntimeMeshVersion::GUID) >= FRuntimeMeshVersion::Initial) + { + int32 SectionsCount = bShouldSerializeMeshData ? MeshSections.Num() : 0; + Ar << SectionsCount; + if (Ar.IsLoading() && MeshSections.Num() < SectionsCount) + { + MeshSections.SetNum(SectionsCount); + } + + for (int32 Index = 0; Index < SectionsCount; Index++) + { + bool IsSectionValid = MeshSections[Index].IsValid(); + + // WE can only load/save internal types (we don't know how to serialize arbitrary vertex types. + if (Ar.IsSaving() && (IsSectionValid && !MeshSections[Index]->bIsLegacySectionType)) + { + IsSectionValid = false; + } + + Ar << IsSectionValid; + + if (IsSectionValid) + { + if (Ar.CustomVer(FRuntimeMeshVersion::GUID) >= FRuntimeMeshVersion::TemplatedVertexFix) + { + int32 NumUVChannels; + bool WantsHalfPrecisionUVs; + + if (Ar.IsSaving()) + { + MeshSections[Index]->GetInternalVertexComponents(NumUVChannels, WantsHalfPrecisionUVs); + } + + Ar << NumUVChannels; + Ar << WantsHalfPrecisionUVs; + + if (Ar.IsLoading()) + { + CreateOrResetSectionLegacyType(Index, NumUVChannels); + } + + } + else + { + bool bWantsNormal; + bool bWantsTangent; + bool bWantsColor; + int32 TextureChannels; + + Ar << bWantsNormal; + Ar << bWantsTangent; + Ar << bWantsColor; + Ar << TextureChannels; + + if (Ar.IsLoading()) + { + CreateOrResetSectionLegacyType(Index, TextureChannels); + } + } + + FRuntimeMeshSectionInterface& SectionPtr = *MeshSections[Index].Get(); + SectionPtr.Serialize(Ar); + + } + } + } + + if (Ar.CustomVer(FRuntimeMeshVersion::GUID) >= FRuntimeMeshVersion::SerializationOptional) + { + + if (bShouldSerializeMeshData || Ar.IsLoading()) + { + // Serialize the real data if we want it, also use this path for loading to get anything that was in the last save + + // Serialize the collision data + Ar << MeshCollisionSections; + Ar << ConvexCollisionSections; + } + else + { + // serialize empty arrays if we don't want serialization + TArray NullCollisionSections; + Ar << NullCollisionSections; + TArray NullConvexBodies; + Ar << NullConvexBodies; + } + } +} + +void URuntimeMeshComponent::Serialize(FArchive& Ar) +{ + Super::Serialize(Ar); + + SerializeInternal(Ar); +} + +void URuntimeMeshComponent::SerializeInternal(FArchive& Ar, bool bForceSaveAll) +{ + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_Serialize); + + Ar.UsingCustomVersion(FRuntimeMeshVersion::GUID); + + // Handle old serialization + if (Ar.CustomVer(FRuntimeMeshVersion::GUID) < FRuntimeMeshVersion::SerializationV2) + { + SerializeLegacy(Ar); + return; + } + + bool bSerializeMeshData = bShouldSerializeMeshData || bForceSaveAll; + + // Serialize basic settings + Ar << bSerializeMeshData; + Ar << bUseComplexAsSimpleCollision; + + // Serialize the number of sections... + int32 NumSections = bSerializeMeshData ? MeshSections.Num() : 0; + Ar << NumSections; + + // Resize the section array if we're loading. + if (Ar.IsLoading()) + { + MeshSections.Reset(NumSections); + MeshSections.SetNum(NumSections); + } + + // Next serialize all the sections... + for (int32 Index = 0; Index < NumSections; Index++) + { + SerializeRMCSection(Ar, Index); + } + + if (bSerializeMeshData || Ar.IsLoading()) + { + // Serialize the real data if we want it, also use this path for loading to get anything that was in the last save + + // Serialize the collision data + Ar << MeshCollisionSections; + Ar << ConvexCollisionSections; + } + else + { + // serialize empty arrays if we don't want serialization + TArray NullCollisionSections; + Ar << NullCollisionSections; + TArray NullConvexBodies; + Ar << NullConvexBodies; + } +} + + +void URuntimeMeshComponent::SerializeRMC(FArchive& Ar) +{ + SerializeInternal(Ar, true); +} + +void URuntimeMeshComponent::SerializeRMCSection(FArchive& Ar, int32 SectionIndex) +{ + if (Ar.IsLoading() && MeshSections.Num() <= SectionIndex) + { + MeshSections.SetNum(SectionIndex + 1); + } + + // Serialize the section validity (default it to section valid + type known for saving reasons) + bool bSectionIsValid = MeshSections[SectionIndex].IsValid(); + bool bSectionTypeFound = bSectionIsValid ? FRuntimeMeshVertexTypeRegistrationContainer::GetInstance().GetVertexType(MeshSections[SectionIndex]->GetVertexType()->TypeGuid) != nullptr : true; + bSectionIsValid = bSectionIsValid && bSectionTypeFound; + Ar << bSectionIsValid; + + // If section is invalid, skip + if (!bSectionIsValid) + { + if (!bSectionTypeFound) + { + UE_LOG(RuntimeMeshLog, Error, TEXT("Attempted to serialize a vertex of unknown type %s"), *MeshSections[SectionIndex]->GetVertexType()->TypeGuid.ToString()); + } + return; + } + + // Serialize section type info + FGuid TypeGuid; + bool bHasSeparatePositionBuffer; + + if (Ar.IsSaving()) + { + TypeGuid = MeshSections[SectionIndex]->GetVertexType()->TypeGuid; + bHasSeparatePositionBuffer = MeshSections[SectionIndex]->IsDualBufferSection(); + } + + Ar << TypeGuid; + Ar << bHasSeparatePositionBuffer; + + if (Ar.IsLoading()) + { + auto VertexTypeRegistration = FRuntimeMeshVertexTypeRegistrationContainer::GetInstance().GetVertexType(TypeGuid); + + if (VertexTypeRegistration == nullptr) + { + UE_LOG(RuntimeMeshLog, Error, TEXT("Attempted to serialize a vertex of unknown type %s"), *MeshSections[SectionIndex]->GetVertexType()->TypeGuid.ToString()); + bSectionIsValid = false; + } + else + { + auto NewSection = VertexTypeRegistration->CreateSection(bHasSeparatePositionBuffer); + MeshSections[SectionIndex] = MakeShareable(NewSection); + } + } + + // Now we save the section data to a separate archive and then write in into the main. + // This way we can recover from unknown types or mismatch sizes + + + TArray SectionData; + + if (Ar.IsSaving()) + { + FMemoryWriter SectionAr(SectionData, true); + SectionAr.UsingCustomVersion(FRuntimeMeshVersion::GUID); + + MeshSections[SectionIndex]->Serialize(SectionAr); + } + + Ar << SectionData; + + if (Ar.IsLoading() && bSectionIsValid) + { + FMemoryReader SectionAr(SectionData, true); + SectionAr.Seek(0); + SectionAr.UsingCustomVersion(FRuntimeMeshVersion::GUID); + + MeshSections[SectionIndex]->Serialize(SectionAr); + + // Was this section loaded correctly? + if (SectionAr.IsError()) + { + MeshSections[SectionIndex].Reset(); + UE_LOG(RuntimeMeshLog, Log, TEXT("Unable to load section %d of type %s. This is most likely caused by a reconfigured vertex type."), + SectionIndex, *MeshSections[SectionIndex]->GetVertexType()->TypeName); + } + } +} + + + + + + + + +void URuntimeMeshComponent::PostLoad() +{ + Super::PostLoad(); + + // Rebuild collision and local bounds. + MarkCollisionDirty(); + UpdateLocalBounds(); + + if (BodySetup && IsTemplate()) + { + BodySetup->SetFlags(RF_Public); + } +} \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponentPlugin.cpp b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponentPlugin.cpp new file mode 100644 index 000000000..bace8aece --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponentPlugin.cpp @@ -0,0 +1,38 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#include "RuntimeMeshComponentPluginPrivatePCH.h" +#include "RuntimeMeshVersion.h" +#include "RuntimeMeshComponentPlugin.h" + + +// Register the custom version with core +FCustomVersionRegistration GRegisterRuntimeMeshCustomVersion(FRuntimeMeshVersion::GUID, FRuntimeMeshVersion::LatestVersion, TEXT("RuntimeMesh")); + + + + +class FRuntimeMeshComponentPlugin : public IRuntimeMeshComponentPlugin +{ + /** IModuleInterface implementation */ + virtual void StartupModule() override; + virtual void ShutdownModule() override; +}; + +IMPLEMENT_MODULE(FRuntimeMeshComponentPlugin, RuntimeMeshComponent) + + + +void FRuntimeMeshComponentPlugin::StartupModule() +{ + +} + + +void FRuntimeMeshComponentPlugin::ShutdownModule() +{ + +} + + + +DEFINE_LOG_CATEGORY(RuntimeMeshLog); \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponentPluginPrivatePCH.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponentPluginPrivatePCH.h new file mode 100644 index 000000000..8a8def864 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshComponentPluginPrivatePCH.h @@ -0,0 +1,14 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + + +#pragma once + +#include "CoreUObject.h" +#include "Engine.h" + +#include "RuntimeMeshComponentPlugin.h" + + +#include "RuntimeMeshComponent.h" +#include "PhysicsEngine/BodySetup.h" + diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshCore.cpp b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshCore.cpp new file mode 100644 index 000000000..ad1753955 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshCore.cpp @@ -0,0 +1,51 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#include "RuntimeMeshComponentPluginPrivatePCH.h" +#include "RuntimeMeshCore.h" + + +FRuntimeMeshVertexTypeRegistrationContainer& FRuntimeMeshVertexTypeRegistrationContainer::GetInstance() +{ + static FRuntimeMeshVertexTypeRegistrationContainer Instance; + return Instance; +} + +void FRuntimeMeshVertexTypeRegistrationContainer::Register(const FRuntimeMeshVertexTypeInfo* InType) +{ + if (auto ExistingRegistration = Registrations.Find(InType->TypeGuid)) + { + // This path only exists to support hotreload + + // If you hit this then you've probably either: + // * Changed registration details during hotreload. + // * Accidentally copy-and-pasted an FRuntimeMeshVertexTypeRegistration object. + ensureMsgf(ExistingRegistration->TypeInfo->TypeName == InType->TypeName, + TEXT("Runtime mesh vertex registrations cannot change between hotreloads - \"%s\" is being reregistered as \"%s\""), + *ExistingRegistration->TypeInfo->TypeName, *InType->TypeName); + + ExistingRegistration->ReferenceCount++; + } + else + { + Registrations.Add(InType->TypeGuid, VertexRegistration(InType)); + } +} + +void FRuntimeMeshVertexTypeRegistrationContainer::UnRegister(const FRuntimeMeshVertexTypeInfo* InType) +{ + auto ExistingRegistration = Registrations.Find(InType->TypeGuid); + + check(ExistingRegistration); + + ExistingRegistration->ReferenceCount--; + if (ExistingRegistration->ReferenceCount == 0) + { + Registrations.Remove(InType->TypeGuid); + } +} + +const FRuntimeMeshVertexTypeInfo* FRuntimeMeshVertexTypeRegistrationContainer::GetVertexType(FGuid Key) const +{ + auto Registration = Registrations.Find(Key); + return (Registration ? Registration->TypeInfo : nullptr); +} \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshGenericVertex.cpp b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshGenericVertex.cpp new file mode 100644 index 000000000..9853f632e --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshGenericVertex.cpp @@ -0,0 +1,30 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#include "RuntimeMeshComponentPluginPrivatePCH.h" +#include "RuntimeMeshGenericVertex.h" +#include "RuntimeMeshBuilder.h" + +// Finish all the built in vertex types. +DEFINE_RUNTIME_MESH_VERTEX(FRuntimeMeshVertexSimple); +DEFINE_RUNTIME_MESH_VERTEX(FRuntimeMeshVertexDualUV); +DEFINE_RUNTIME_MESH_VERTEX(FRuntimeMeshVertexNoPosition); +DEFINE_RUNTIME_MESH_VERTEX(FRuntimeMeshVertexNoPositionDualUV); +DEFINE_RUNTIME_MESH_VERTEX(FRuntimeMeshVertexHiPrecisionNormals); +DEFINE_RUNTIME_MESH_VERTEX(FRuntimeMeshVertexDualUVHiPrecisionNormals); +DEFINE_RUNTIME_MESH_VERTEX(FRuntimeMeshVertexNoPositionHiPrecisionNormals); +DEFINE_RUNTIME_MESH_VERTEX(FRuntimeMeshVertexNoPositionDualUVHiPrecisionNormals); + + + + +const FRuntimeMeshVertexTypeInfo* FRuntimeMeshComponentVerticesBuilder::GetVertexType() const +{ + if (HasUVComponent(1)) + { + return &FRuntimeMeshVertexDualUV::TypeInfo; + } + else + { + return &FRuntimeMeshVertexSimple::TypeInfo; + } +} \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshLibrary.cpp b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshLibrary.cpp new file mode 100644 index 000000000..f91ed613e --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/RuntimeMeshLibrary.cpp @@ -0,0 +1,561 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#include "RuntimeMeshComponentPluginPrivatePCH.h" +#include "RuntimeMeshLibrary.h" +#include "MessageLog.h" +#include "UObjectToken.h" +#include "StaticMeshResources.h" +#include "TessellationUtilities.h" +#include "RuntimeMeshBuilder.h" +#include "RuntimeMeshComponent.h" + +#define LOCTEXT_NAMESPACE "RuntimeMeshLibrary" + + +URuntimeMeshLibrary::URuntimeMeshLibrary(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer) +{ + +} + +void URuntimeMeshLibrary::ConvertQuadToTriangles(TArray& Triangles, int32 Vert0, int32 Vert1, int32 Vert2, int32 Vert3) +{ + Triangles.Add(Vert0); + Triangles.Add(Vert1); + Triangles.Add(Vert3); + + Triangles.Add(Vert1); + Triangles.Add(Vert2); + Triangles.Add(Vert3); +} + +void URuntimeMeshLibrary::CreateGridMeshTriangles(int32 NumX, int32 NumY, bool bWinding, TArray& Triangles) +{ + Triangles.Reset(); + + if (NumX >= 2 && NumY >= 2) + { + // Build Quads + for (int XIdx = 0; XIdx < NumX - 1; XIdx++) + { + for (int YIdx = 0; YIdx < NumY - 1; YIdx++) + { + const int32 I0 = (XIdx + 0)*NumY + (YIdx + 0); + const int32 I1 = (XIdx + 1)*NumY + (YIdx + 0); + const int32 I2 = (XIdx + 1)*NumY + (YIdx + 1); + const int32 I3 = (XIdx + 0)*NumY + (YIdx + 1); + + if (bWinding) + { + ConvertQuadToTriangles(Triangles, I0, I1, I2, I3); + } + else + { + ConvertQuadToTriangles(Triangles, I0, I3, I2, I1); + } + } + } + } +} + +void URuntimeMeshLibrary::CreateBoxMesh(FVector BoxRadius, TArray& Vertices, TArray& Triangles, TArray& Normals, TArray& UVs, TArray& Tangents) +{ + // Generate verts + FVector BoxVerts[8]; + BoxVerts[0] = FVector(-BoxRadius.X, BoxRadius.Y, BoxRadius.Z); + BoxVerts[1] = FVector(BoxRadius.X, BoxRadius.Y, BoxRadius.Z); + BoxVerts[2] = FVector(BoxRadius.X, -BoxRadius.Y, BoxRadius.Z); + BoxVerts[3] = FVector(-BoxRadius.X, -BoxRadius.Y, BoxRadius.Z); + + BoxVerts[4] = FVector(-BoxRadius.X, BoxRadius.Y, -BoxRadius.Z); + BoxVerts[5] = FVector(BoxRadius.X, BoxRadius.Y, -BoxRadius.Z); + BoxVerts[6] = FVector(BoxRadius.X, -BoxRadius.Y, -BoxRadius.Z); + BoxVerts[7] = FVector(-BoxRadius.X, -BoxRadius.Y, -BoxRadius.Z); + + // Generate triangles (from quads) + Triangles.Reset(); + + const int32 NumVerts = 24; // 6 faces x 4 verts per face + + Vertices.Reset(); + Vertices.AddUninitialized(NumVerts); + + Normals.Reset(); + Normals.AddUninitialized(NumVerts); + + Tangents.Reset(); + Tangents.AddUninitialized(NumVerts); + + Vertices[0] = BoxVerts[0]; + Vertices[1] = BoxVerts[1]; + Vertices[2] = BoxVerts[2]; + Vertices[3] = BoxVerts[3]; + ConvertQuadToTriangles(Triangles, 0, 1, 2, 3); + Normals[0] = Normals[1] = Normals[2] = Normals[3] = FVector(0, 0, 1); + Tangents[0] = Tangents[1] = Tangents[2] = Tangents[3] = FRuntimeMeshTangent(0.f, -1.f, 0.f); + + Vertices[4] = BoxVerts[4]; + Vertices[5] = BoxVerts[0]; + Vertices[6] = BoxVerts[3]; + Vertices[7] = BoxVerts[7]; + ConvertQuadToTriangles(Triangles, 4, 5, 6, 7); + Normals[4] = Normals[5] = Normals[6] = Normals[7] = FVector(-1, 0, 0); + Tangents[4] = Tangents[5] = Tangents[6] = Tangents[7] = FRuntimeMeshTangent(0.f, -1.f, 0.f); + + Vertices[8] = BoxVerts[5]; + Vertices[9] = BoxVerts[1]; + Vertices[10] = BoxVerts[0]; + Vertices[11] = BoxVerts[4]; + ConvertQuadToTriangles(Triangles, 8, 9, 10, 11); + Normals[8] = Normals[9] = Normals[10] = Normals[11] = FVector(0, 1, 0); + Tangents[8] = Tangents[9] = Tangents[10] = Tangents[11] = FRuntimeMeshTangent(-1.f, 0.f, 0.f); + + Vertices[12] = BoxVerts[6]; + Vertices[13] = BoxVerts[2]; + Vertices[14] = BoxVerts[1]; + Vertices[15] = BoxVerts[5]; + ConvertQuadToTriangles(Triangles, 12, 13, 14, 15); + Normals[12] = Normals[13] = Normals[14] = Normals[15] = FVector(1, 0, 0); + Tangents[12] = Tangents[13] = Tangents[14] = Tangents[15] = FRuntimeMeshTangent(0.f, 1.f, 0.f); + + Vertices[16] = BoxVerts[7]; + Vertices[17] = BoxVerts[3]; + Vertices[18] = BoxVerts[2]; + Vertices[19] = BoxVerts[6]; + ConvertQuadToTriangles(Triangles, 16, 17, 18, 19); + Normals[16] = Normals[17] = Normals[18] = Normals[19] = FVector(0, -1, 0); + Tangents[16] = Tangents[17] = Tangents[18] = Tangents[19] = FRuntimeMeshTangent(1.f, 0.f, 0.f); + + Vertices[20] = BoxVerts[7]; + Vertices[21] = BoxVerts[6]; + Vertices[22] = BoxVerts[5]; + Vertices[23] = BoxVerts[4]; + ConvertQuadToTriangles(Triangles, 20, 21, 22, 23); + Normals[20] = Normals[21] = Normals[22] = Normals[23] = FVector(0, 0, -1); + Tangents[20] = Tangents[21] = Tangents[22] = Tangents[23] = FRuntimeMeshTangent(0.f, 1.f, 0.f); + + // UVs + UVs.Reset(); + UVs.AddUninitialized(NumVerts); + + UVs[0] = UVs[4] = UVs[8] = UVs[12] = UVs[16] = UVs[20] = FVector2D(0.f, 0.f); + UVs[1] = UVs[5] = UVs[9] = UVs[13] = UVs[17] = UVs[21] = FVector2D(0.f, 1.f); + UVs[2] = UVs[6] = UVs[10] = UVs[14] = UVs[18] = UVs[22] = FVector2D(1.f, 1.f); + UVs[3] = UVs[7] = UVs[11] = UVs[15] = UVs[19] = UVs[23] = FVector2D(1.f, 0.f); +} + + + + + +void FindVertOverlaps(int32 TestVertIndex, const IRuntimeMeshVerticesBuilder* Vertices, TArray& VertOverlaps) +{ + // Check if Verts is empty or test is outside range + if (TestVertIndex < Vertices->Length()) + { + const FVector TestVert = Vertices->GetPosition(TestVertIndex); + + for (int32 VertIdx = 0; VertIdx < Vertices->Length(); VertIdx++) + { + // First see if we overlap, and smoothing groups are the same + if (TestVert.Equals(Vertices->GetPosition(VertIdx))) + { + // If it, so we are at least considered an 'overlap' for normal gen + VertOverlaps.Add(VertIdx); + } + } + } +} + +void URuntimeMeshLibrary::CalculateTangentsForMesh(IRuntimeMeshVerticesBuilder* Vertices, const FRuntimeMeshIndicesBuilder* Triangles) +{ + if (Vertices->Length() == 0) return; + + // Number of triangles + const int32 NumTris = Triangles->TriangleLength(); + // Number of verts + const int32 NumVerts = Vertices->Length(); + + // Map of vertex to triangles in Triangles array + TMultiMap VertToTriMap; + // Map of vertex to triangles to consider for normal calculation + TMultiMap VertToTriSmoothMap; + + // Normal/tangents for each face + TArray FaceTangentX, FaceTangentY, FaceTangentZ; + FaceTangentX.AddUninitialized(NumTris); + FaceTangentY.AddUninitialized(NumTris); + FaceTangentZ.AddUninitialized(NumTris); + + // Iterate over triangles + for (int TriIdx = 0; TriIdx < NumTris; TriIdx++) + { + int32 CornerIndex[3]; + FVector P[3]; + + for (int32 CornerIdx = 0; CornerIdx < 3; CornerIdx++) + { + // Find vert index (clamped within range) + int32 VertIndex = FMath::Min(Triangles->GetIndex((TriIdx * 3) + CornerIdx), NumVerts - 1); + + CornerIndex[CornerIdx] = VertIndex; + P[CornerIdx] = Vertices->GetPosition(VertIndex); + + // Find/add this vert to index buffer + TArray VertOverlaps; + FindVertOverlaps(VertIndex, Vertices, VertOverlaps); + + // Remember which triangles map to this vert + VertToTriMap.AddUnique(VertIndex, TriIdx); + VertToTriSmoothMap.AddUnique(VertIndex, TriIdx); + + // Also update map of triangles that 'overlap' this vert (ie don't match UV, but do match smoothing) and should be considered when calculating normal + for (int32 OverlapIdx = 0; OverlapIdx < VertOverlaps.Num(); OverlapIdx++) + { + // For each vert we overlap.. + int32 OverlapVertIdx = VertOverlaps[OverlapIdx]; + + // Add this triangle to that vert + VertToTriSmoothMap.AddUnique(OverlapVertIdx, TriIdx); + + // And add all of its triangles to us + TArray OverlapTris; + VertToTriMap.MultiFind(OverlapVertIdx, OverlapTris); + for (int32 OverlapTriIdx = 0; OverlapTriIdx < OverlapTris.Num(); OverlapTriIdx++) + { + VertToTriSmoothMap.AddUnique(VertIndex, OverlapTris[OverlapTriIdx]); + } + } + } + + // Calculate triangle edge vectors and normal + const FVector Edge21 = P[1] - P[2]; + const FVector Edge20 = P[0] - P[2]; + const FVector TriNormal = (Edge21 ^ Edge20).GetSafeNormal(); + + // If we have UVs, use those to calc + if (Vertices->HasUVComponent(0)) + { + const FVector2D T1 = Vertices->GetUV(CornerIndex[0]); + const FVector2D T2 = Vertices->GetUV(CornerIndex[1]); + const FVector2D T3 = Vertices->GetUV(CornerIndex[2]); + + FMatrix ParameterToLocal( + FPlane(P[1].X - P[0].X, P[1].Y - P[0].Y, P[1].Z - P[0].Z, 0), + FPlane(P[2].X - P[0].X, P[2].Y - P[0].Y, P[2].Z - P[0].Z, 0), + FPlane(P[0].X, P[0].Y, P[0].Z, 0), + FPlane(0, 0, 0, 1) + ); + + FMatrix ParameterToTexture( + FPlane(T2.X - T1.X, T2.Y - T1.Y, 0, 0), + FPlane(T3.X - T1.X, T3.Y - T1.Y, 0, 0), + FPlane(T1.X, T1.Y, 1, 0), + FPlane(0, 0, 0, 1) + ); + + // Use InverseSlow to catch singular matrices. Inverse can miss this sometimes. + const FMatrix TextureToLocal = ParameterToTexture.Inverse() * ParameterToLocal; + + FaceTangentX[TriIdx] = TextureToLocal.TransformVector(FVector(1, 0, 0)).GetSafeNormal(); + FaceTangentY[TriIdx] = TextureToLocal.TransformVector(FVector(0, 1, 0)).GetSafeNormal(); + } + else + { + FaceTangentX[TriIdx] = Edge20.GetSafeNormal(); + FaceTangentY[TriIdx] = (FaceTangentX[TriIdx] ^ TriNormal).GetSafeNormal(); + } + + FaceTangentZ[TriIdx] = TriNormal; + } + + + // Arrays to accumulate tangents into + TArray VertexTangentXSum, VertexTangentYSum, VertexTangentZSum; + VertexTangentXSum.AddZeroed(NumVerts); + VertexTangentYSum.AddZeroed(NumVerts); + VertexTangentZSum.AddZeroed(NumVerts); + + // For each vertex.. + for (int VertxIdx = 0; VertxIdx < Vertices->Length(); VertxIdx++) + { + // Find relevant triangles for normal + TArray SmoothTris; + VertToTriSmoothMap.MultiFind(VertxIdx, SmoothTris); + + for (int i = 0; i < SmoothTris.Num(); i++) + { + int32 TriIdx = SmoothTris[i]; + VertexTangentZSum[VertxIdx] += FaceTangentZ[TriIdx]; + } + + // Find relevant triangles for tangents + TArray TangentTris; + VertToTriMap.MultiFind(VertxIdx, TangentTris); + + for (int i = 0; i < TangentTris.Num(); i++) + { + int32 TriIdx = TangentTris[i]; + VertexTangentXSum[VertxIdx] += FaceTangentX[TriIdx]; + VertexTangentYSum[VertxIdx] += FaceTangentY[TriIdx]; + } + } + + // Finally, normalize tangents and build output arrays + + for (int VertxIdx = 0; VertxIdx < NumVerts; VertxIdx++) + { + FVector& TangentX = VertexTangentXSum[VertxIdx]; + FVector& TangentY = VertexTangentYSum[VertxIdx]; + FVector& TangentZ = VertexTangentZSum[VertxIdx]; + + TangentX.Normalize(); + TangentZ.Normalize(); + + // Use Gram-Schmidt orthogonalization to make sure X is orth with Z + TangentX -= TangentZ * (TangentZ | TangentX); + TangentX.Normalize(); + + Vertices->SetTangents(VertxIdx, TangentX, TangentY, TangentZ); + } +} + +void URuntimeMeshLibrary::CalculateTangentsForMesh(const TArray& Vertices, const TArray& Triangles, const TArray& UVs, TArray& Normals, TArray& Tangents) +{ + FRuntimeMeshComponentVerticesBuilder VerticesBuilder(const_cast*>(&Vertices), &Normals, &Tangents, nullptr, const_cast*>(&UVs)); + FRuntimeMeshIndicesBuilder IndicesBuilder(const_cast*>(&Triangles)); + + CalculateTangentsForMesh(&VerticesBuilder, &IndicesBuilder); +} + + + + + +void URuntimeMeshLibrary::GenerateTessellationIndexBuffer(const IRuntimeMeshVerticesBuilder* Vertices, const FRuntimeMeshIndicesBuilder* Indices, FRuntimeMeshIndicesBuilder* OutTessellationIndices) +{ + TessellationUtilities::CalculateTessellationIndices(Vertices, Indices, OutTessellationIndices); +} + +void URuntimeMeshLibrary::GenerateTessellationIndexBuffer(const TArray& Vertices, const TArray& Triangles, const TArray& UVs, TArray& Normals, TArray& Tangents, TArray& OutTessTriangles) +{ + FRuntimeMeshComponentVerticesBuilder VerticesBuilder(const_cast*>(&Vertices), &Normals, &Tangents, nullptr, const_cast*>(&UVs)); + FRuntimeMeshIndicesBuilder IndicesBuilder(const_cast*>(&Triangles)); + FRuntimeMeshIndicesBuilder OutIndicesBuilder(&OutTessTriangles); + + GenerateTessellationIndexBuffer(&VerticesBuilder, &IndicesBuilder, &OutIndicesBuilder); +} + + + + + +static int32 GetNewIndexForOldVertIndex(int32 MeshVertIndex, TMap& MeshToSectionVertMap, const FPositionVertexBuffer* PosBuffer, const FStaticMeshVertexBuffer* VertBuffer, const FColorVertexBuffer* ColorBuffer, IRuntimeMeshVerticesBuilder* Vertices) +{ + int32* NewIndexPtr = MeshToSectionVertMap.Find(MeshVertIndex); + if (NewIndexPtr != nullptr) + { + return *NewIndexPtr; + } + else + { + // Copy position + int32 SectionVertIndex = Vertices->MoveNextOrAdd(); + + Vertices->SetPosition(PosBuffer->VertexPosition(MeshVertIndex)); + Vertices->SetNormal(VertBuffer->VertexTangentZ(MeshVertIndex)); + Vertices->SetTangent(VertBuffer->VertexTangentX(MeshVertIndex)); + if (ColorBuffer && ColorBuffer->GetNumVertices()) + { + Vertices->SetColor(ColorBuffer->VertexColor(MeshVertIndex)); + } + + // copy all uv channels + for (uint32 Index = 0; Index < VertBuffer->GetNumTexCoords(); Index++) + { + Vertices->SetUV(Index, VertBuffer->GetVertexUV(MeshVertIndex, Index)); + } + + MeshToSectionVertMap.Add(MeshVertIndex, SectionVertIndex); + + return SectionVertIndex; + } +} + +void URuntimeMeshLibrary::GetSectionFromStaticMesh(UStaticMesh* InMesh, int32 LODIndex, int32 SectionIndex, + IRuntimeMeshVerticesBuilder* Vertices, FRuntimeMeshIndicesBuilder* Triangles, FRuntimeMeshIndicesBuilder* AdjacencyTriangles) +{ + if (InMesh) + { +#if !WITH_EDITOR && (ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 13) + if (!InMesh->bAllowCPUAccess) + { + FMessageLog("PIE").Warning() + ->AddToken(FTextToken::Create(LOCTEXT("GetSectionFromStaticMeshStart", "Calling GetSectionFromStaticMesh on"))) + ->AddToken(FUObjectToken::Create(InMesh)) + ->AddToken(FTextToken::Create(LOCTEXT("GetSectionFromStaticMeshEnd", "but 'Allow CPU Access' is not enabled. This is required for converting StaticMesh to RuntimeMeshComponent in cooked builds."))); + } + else +#endif +#if WITH_EDITOR || (ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 13) + if (InMesh->RenderData != nullptr && InMesh->RenderData->LODResources.IsValidIndex(LODIndex)) + { + const FStaticMeshLODResources& LOD = InMesh->RenderData->LODResources[LODIndex]; + if (LOD.Sections.IsValidIndex(SectionIndex)) + { + // Empty output buffers + Vertices->Reset(); + Triangles->Reset(); + + // Map from vert buffer for whole mesh to vert buffer for section of interest + TMap MeshToSectionVertMap; + + const FStaticMeshSection& Section = LOD.Sections[SectionIndex]; + const uint32 OnePastLastIndex = Section.FirstIndex + Section.NumTriangles * 3; + FIndexArrayView Indices = LOD.IndexBuffer.GetArrayView(); + + + // Iterate over section index buffer, copying verts as needed + for (uint32 i = Section.FirstIndex; i < OnePastLastIndex; i++) + { + uint32 MeshVertIndex = Indices[i]; + + // See if we have this vert already in our section vert buffer, and copy vert in if not + int32 SectionVertIndex = GetNewIndexForOldVertIndex(MeshVertIndex, MeshToSectionVertMap, &LOD.PositionVertexBuffer, &LOD.VertexBuffer, &LOD.ColorVertexBuffer, Vertices); + + // Add to index buffer + Triangles->AddIndex(SectionVertIndex); + } + + if (AdjacencyTriangles != nullptr) + { + AdjacencyTriangles->Reset(); + + // Adjacency indices use 12 per triangle instead of 3. So start position and length both need to be multiplied by 4 + const uint32 SectionAdjacencyFirstIndex = Section.FirstIndex * 4; + const uint32 SectionAdjacencyOnePastLastIndex = SectionAdjacencyFirstIndex + Section.NumTriangles * (3 * 4); + FIndexArrayView AdjacencyIndices = LOD.AdjacencyIndexBuffer.GetArrayView(); + + // Iterate over section adjacency index buffer, copying any new verts as needed + for (uint32 i = SectionAdjacencyFirstIndex; i < SectionAdjacencyOnePastLastIndex; i++) + { + uint32 MeshVertIndex = AdjacencyIndices[i]; + + // See if we have this vert already in our section vert buffer, and copy vert in if not + int32 SectionVertIndex = GetNewIndexForOldVertIndex(MeshVertIndex, MeshToSectionVertMap, &LOD.PositionVertexBuffer, &LOD.VertexBuffer, &LOD.ColorVertexBuffer, Vertices); + + // Add to index buffer + AdjacencyTriangles->AddIndex(SectionVertIndex); + } + } + } + } +#endif + } +} + +void URuntimeMeshLibrary::GetSectionFromStaticMesh(UStaticMesh* InMesh, int32 LODIndex, int32 SectionIndex, TArray& Vertices, + TArray& Triangles, TArray& Normals, TArray& UVs, TArray& Tangents) +{ + FRuntimeMeshComponentVerticesBuilder VerticesBuilder(&Vertices, &Normals, &Tangents, nullptr, &UVs); + FRuntimeMeshIndicesBuilder IndicesBuilder(&Triangles); + + GetSectionFromStaticMesh(InMesh, LODIndex, SectionIndex, &VerticesBuilder, &IndicesBuilder, nullptr); +} + +void URuntimeMeshLibrary::CopyRuntimeMeshFromStaticMeshComponent(UStaticMeshComponent* StaticMeshComp, int32 LODIndex, + URuntimeMeshComponent* RuntimeMeshComp, bool bShouldCreateCollision) +{ +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 14 + UStaticMesh* StaticMesh = StaticMeshComp->GetStaticMesh(); +#else + UStaticMesh* StaticMesh = StaticMeshComp->StaticMesh; +#endif + + if (StaticMeshComp != nullptr && StaticMesh != nullptr && RuntimeMeshComp != nullptr) + { + //// MESH DATA + + // Make sure LOD index is valid + if (StaticMesh->RenderData == nullptr || !StaticMesh->RenderData->LODResources.IsValidIndex(LODIndex)) + { + return; + } + + // Get specified LOD + const FStaticMeshLODResources& LOD = StaticMesh->RenderData->LODResources[LODIndex]; + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 13 + int32 NumSections = StaticMesh->GetNumSections(LODIndex); +#else + int32 NumSections = LOD.Sections.Num(); +#endif + for (int32 SectionIndex = 0; SectionIndex < NumSections; SectionIndex++) + { + // Buffers for copying geom data + if (LOD.Sections.IsValidIndex(SectionIndex)) + { + int32 NumUVChannels = LOD.GetNumTexCoords(); + + FRuntimeMeshIndicesBuilder AdjacencyTriangles; + + if (NumUVChannels <= 1) + { + FRuntimeMeshPackedVerticesBuilder Vertices; + FRuntimeMeshIndicesBuilder Triangles; + + // Get geom data from static mesh + GetSectionFromStaticMesh(StaticMesh, LODIndex, SectionIndex, &Vertices, &Triangles, &AdjacencyTriangles); + + // Create section using data + RuntimeMeshComp->CreateMeshSection(SectionIndex, *Vertices.GetVertices(), *Triangles.GetIndices(), + bShouldCreateCollision, EUpdateFrequency::Infrequent, ESectionUpdateFlags::MoveArrays); + } + else + { + FRuntimeMeshPackedVerticesBuilder Vertices; + FRuntimeMeshIndicesBuilder Triangles; + + // Get geom data from static mesh + GetSectionFromStaticMesh(StaticMesh, LODIndex, SectionIndex, &Vertices, &Triangles, &AdjacencyTriangles); + + // Create section using data + RuntimeMeshComp->CreateMeshSection(SectionIndex, *Vertices.GetVertices(), *Triangles.GetIndices(), + bShouldCreateCollision, EUpdateFrequency::Infrequent, ESectionUpdateFlags::MoveArrays); + + } + + } + } + + //// SIMPLE COLLISION + + // Clear any existing collision hulls + RuntimeMeshComp->ClearCollisionConvexMeshes(); + + if (StaticMesh->BodySetup != nullptr) + { + // Iterate over all convex hulls on static mesh.. + const int32 NumConvex = StaticMesh->BodySetup->AggGeom.ConvexElems.Num(); + for (int ConvexIndex = 0; ConvexIndex < NumConvex; ConvexIndex++) + { + // Copy convex verts to ProcMesh + FKConvexElem& MeshConvex = StaticMesh->BodySetup->AggGeom.ConvexElems[ConvexIndex]; + RuntimeMeshComp->AddCollisionConvexMesh(MeshConvex.VertexData); + } + } + + //// MATERIALS + + for (int32 MatIndex = 0; MatIndex < StaticMeshComp->GetNumMaterials(); MatIndex++) + { + RuntimeMeshComp->SetMaterial(MatIndex, StaticMeshComp->GetMaterial(MatIndex)); + } + } +} + + + + + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/TessellationUtilities.cpp b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/TessellationUtilities.cpp new file mode 100644 index 000000000..c7ad43edb --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/TessellationUtilities.cpp @@ -0,0 +1,156 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#include "RuntimeMeshComponentPluginPrivatePCH.h" +#include "TessellationUtilities.h" + +const uint32 EdgesPerTriangle = 3; +const uint32 IndicesPerTriangle = 3; +const uint32 VerticesPerTriangle = 3; +const uint32 DuplicateIndexCount = 3; + +const uint32 PnAenDomCorner_IndicesPerPatch = 12; + + +void TessellationUtilities::AddIfLeastUV(PositionDictionary& PosDict, const Vertex& Vert, uint32 Index) +{ + auto* Pos = PosDict.Find(Vert.Position); + if (Pos == nullptr) + { + PosDict.Add(Vert.Position, Corner(Index, Vert.TexCoord)); + } + else if (Vert.TexCoord < Pos->TexCoord) + { + PosDict[Vert.Position] = Corner(Index, Vert.TexCoord); + } +} + + +void TessellationUtilities::CalculateTessellationIndices(const IRuntimeMeshVerticesBuilder* Vertices, const FRuntimeMeshIndicesBuilder* Indices, FRuntimeMeshIndicesBuilder* TessellationIndices) +{ + EdgeDictionary EdgeDict; + EdgeDict.Reserve(Indices->Length()); + PositionDictionary PosDict; + PosDict.Reserve(Indices->Length()); + + TessellationIndices->Reset(PnAenDomCorner_IndicesPerPatch * Indices->Length() / IndicesPerTriangle); + + ExpandIB(Vertices, Indices, EdgeDict, PosDict, TessellationIndices); + + ReplacePlaceholderIndices(Vertices, Indices, EdgeDict, PosDict, TessellationIndices); +} + + +void TessellationUtilities::ExpandIB(const IRuntimeMeshVerticesBuilder* Vertices, const FRuntimeMeshIndicesBuilder* Indices, + EdgeDictionary& OutEdgeDict, PositionDictionary& OutPosDict, FRuntimeMeshIndicesBuilder* OutIndices) +{ + const uint32 TriangleCount = Indices->Length() / IndicesPerTriangle; + + for (uint32 U = 0; U < TriangleCount; U++) + { + const uint32 StartInIndex = U * IndicesPerTriangle; + const uint32 StartOutIndex = U * PnAenDomCorner_IndicesPerPatch; + + Indices->Seek(StartInIndex); + const uint32 Index0 = Indices->ReadOne(); + const uint32 Index1 = Indices->ReadOne(); + const uint32 Index2 = Indices->ReadOne(); + + Vertices->Seek(Index0); + const Vertex Vertex0(Vertices->GetPosition(), Vertices->GetUV(0)); + Vertices->Seek(Index1); + const Vertex Vertex1(Vertices->GetPosition(), Vertices->GetUV(0)); + Vertices->Seek(Index2); + const Vertex Vertex2(Vertices->GetPosition(), Vertices->GetUV(0)); + + Triangle Tri(Index0, Index1, Index2, Vertex0, Vertex1, Vertex2); + + OutIndices->Seek(StartOutIndex); + OutIndices->AddTriangle(Tri.GetIndex(0), Tri.GetIndex(1), Tri.GetIndex(2)); + + OutIndices->AddIndex(Tri.GetIndex(0)); + OutIndices->AddIndex(Tri.GetIndex(1)); + + OutIndices->AddIndex(Tri.GetIndex(1)); + OutIndices->AddIndex(Tri.GetIndex(2)); + + OutIndices->AddIndex(Tri.GetIndex(2)); + OutIndices->AddIndex(Tri.GetIndex(0)); + + OutIndices->AddTriangle(Tri.GetIndex(0), Tri.GetIndex(1), Tri.GetIndex(2)); + + + Edge Rev0 = Tri.GetEdge(0).GetReverse(); + Edge Rev1 = Tri.GetEdge(1).GetReverse(); + Edge Rev2 = Tri.GetEdge(2).GetReverse(); + + OutEdgeDict.Add(Rev0, Rev0); + OutEdgeDict.Add(Rev1, Rev1); + OutEdgeDict.Add(Rev2, Rev2); + + AddIfLeastUV(OutPosDict, Vertex0, Index0); + AddIfLeastUV(OutPosDict, Vertex1, Index1); + AddIfLeastUV(OutPosDict, Vertex2, Index2); + } +} + + + +void TessellationUtilities::ReplacePlaceholderIndices(const IRuntimeMeshVerticesBuilder* Vertices, const FRuntimeMeshIndicesBuilder* Indices, + EdgeDictionary& EdgeDict, PositionDictionary& PosDict, FRuntimeMeshIndicesBuilder* OutIndices) +{ + const uint32 TriangleCount = Indices->Length() / PnAenDomCorner_IndicesPerPatch; + + for (uint32 U = 0; U < TriangleCount; U++) + { + const uint32 StartOutIndex = U * PnAenDomCorner_IndicesPerPatch; + + OutIndices->Seek(StartOutIndex); + const uint32 Index0 = OutIndices->ReadOne(); + const uint32 Index1 = OutIndices->ReadOne(); + const uint32 Index2 = OutIndices->ReadOne(); + + Vertices->Seek(Index0); + const Vertex Vertex0(Vertices->GetPosition(), Vertices->GetUV(0)); + Vertices->Seek(Index1); + const Vertex Vertex1(Vertices->GetPosition(), Vertices->GetUV(0)); + Vertices->Seek(Index2); + const Vertex Vertex2(Vertices->GetPosition(), Vertices->GetUV(0)); + + Triangle Tri(Index0, Index1, Index2, Vertex0, Vertex1, Vertex2); + + Edge* Ed = EdgeDict.Find(Tri.GetEdge(0)); + if (Ed != nullptr) + { + OutIndices->Seek(StartOutIndex + 3); + OutIndices->AddIndex(Ed->GetIndex(0)); + OutIndices->AddIndex(Ed->GetIndex(1)); + } + + Ed = EdgeDict.Find(Tri.GetEdge(1)); + if (Ed != nullptr) + { + OutIndices->Seek(StartOutIndex + 5); + OutIndices->AddIndex(Ed->GetIndex(0)); + OutIndices->AddIndex(Ed->GetIndex(1)); + } + + Ed = EdgeDict.Find(Tri.GetEdge(2)); + if (Ed != nullptr) + { + OutIndices->Seek(StartOutIndex + 7); + OutIndices->AddIndex(Ed->GetIndex(0)); + OutIndices->AddIndex(Ed->GetIndex(1)); + } + + // Deal with dominant positions. + for (uint32 V = 0; V < VerticesPerTriangle; V++) + { + Corner* Corn = PosDict.Find(Tri.GetEdge(V).GetVertex(0).Position); + if (Corn != nullptr) + { + OutIndices->Seek(StartOutIndex + 9 + V); + OutIndices->AddIndex(Corn->Index); + } + } + } +} \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/TessellationUtilities.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/TessellationUtilities.h new file mode 100644 index 000000000..794e0ee5b --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Private/TessellationUtilities.h @@ -0,0 +1,178 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once +#include "RuntimeMeshBuilder.h" + + + +/** + * + */ +class TessellationUtilities +{ +public: + static void CalculateTessellationIndices(const IRuntimeMeshVerticesBuilder* Vertices, const FRuntimeMeshIndicesBuilder* Indices, FRuntimeMeshIndicesBuilder* TessellationIndices); + + + + +private: + struct Vertex + { + FVector Position; + FVector2D TexCoord; + + Vertex() { } + Vertex(const FVector& InPosition, const FVector2D& InTexCoord) + : Position(InPosition), TexCoord(InTexCoord) + { } + + FORCEINLINE bool operator==(const Vertex& Other) const + { + return Position == Other.Position; + } + FORCEINLINE bool operator<(const Vertex& Other) const + { + return Position.X < Other.Position.X + || Position.Y < Other.Position.Y + || Position.Z < Other.Position.Z; + } + }; + + static FORCEINLINE uint32 HashValue(const FVector& Vec) + { + return 31337 * GetTypeHash(Vec.X) + 13 * GetTypeHash(Vec.Y) + 3 * GetTypeHash(Vec.Z); + } + + static FORCEINLINE uint32 HashValue(const Vertex& Vert) + { + return HashValue(Vert.Position); + } + + struct Edge + { + private: + uint32 IndexFrom; + uint32 IndexTo; + + Vertex VertexFrom; + Vertex VertexTo; + + uint32 CachedHash; + + public: + Edge() : CachedHash(0) { } + Edge(uint32 InIndexFrom, uint32 InIndexTo, const Vertex& InVertexFrom, const Vertex& InVertexTo) + : IndexFrom(InIndexFrom), IndexTo(InIndexTo), VertexFrom(InVertexFrom), VertexTo(InVertexTo) + { + // Hash should only consider position, not index. + // We want values with different indices to compare true. + CachedHash = 7 * HashValue(VertexFrom) + 2 * HashValue(VertexTo); + } + + Vertex GetVertex(uint32 I) const + { + switch (I) + { + case 0: + return VertexFrom; + case 1: + return VertexTo; + default: + checkNoEntry(); + return Vertex(); + } + } + + uint32 GetIndex(uint32 I) const + { + switch (I) + { + case 0: + return IndexFrom; + case 1: + return IndexTo; + default: + checkNoEntry(); + return 0; + } + } + + Edge GetReverse() const + { + return Edge(IndexTo, IndexFrom, VertexTo, VertexFrom); + } + + FORCEINLINE bool operator<(const Edge& Other) const + { + // Quick out, otherwise we have to compare vertices + if (IndexFrom == Other.IndexFrom && IndexTo == Other.IndexTo) + { + return false; + } + + return VertexFrom < Other.VertexFrom || VertexTo < Other.VertexTo; + } + + FORCEINLINE bool operator==(const Edge& Other) const + { + return (IndexFrom == Other.IndexFrom && IndexTo == Other.IndexTo) || + (VertexFrom == Other.VertexFrom && VertexTo == Other.VertexTo); + } + + friend FORCEINLINE uint32 GetTypeHash(const Edge& E) + { + return E.CachedHash; + } + }; + + struct Corner + { + uint32 Index; + FVector2D TexCoord; + + Corner() : Index(0) { } + Corner(uint32 InIndex, FVector2D InTexCoord) + : Index(InIndex), TexCoord(InTexCoord) + { } + }; + + class Triangle + { + Edge Edge0; + Edge Edge1; + Edge Edge2; + + public: + Triangle(uint32 Index0, uint32 Index1, uint32 Index2, const Vertex& Vertex0, const Vertex& Vertex1, const Vertex& Vertex2) + : Edge0(Index0, Index1, Vertex0, Vertex1) + , Edge1(Index1, Index2, Vertex1, Vertex2) + , Edge2(Index2, Index0, Vertex2, Vertex0) + { } + + FORCEINLINE bool operator<(const Triangle& Other) const + { + return Edge0 < Other.Edge0 || Edge1 < Other.Edge1 || Edge2 < Other.Edge2; + } + + FORCEINLINE const Edge& GetEdge(uint32 I) + { + return ((Edge*)&Edge0)[I]; + } + FORCEINLINE uint32 GetIndex(uint32 I) + { + return GetEdge(I).GetIndex(0); + } + + }; + using EdgeDictionary = TMap; + using PositionDictionary = TMap; + + static void AddIfLeastUV(PositionDictionary& PosDict, const Vertex& Vert, uint32 Index); + + static void ReplacePlaceholderIndices(const IRuntimeMeshVerticesBuilder* Vertices, const FRuntimeMeshIndicesBuilder* Indices, + EdgeDictionary& EdgeDict, PositionDictionary& PosDict, FRuntimeMeshIndicesBuilder* OutIndices); + + static void ExpandIB(const IRuntimeMeshVerticesBuilder* Vertices, const FRuntimeMeshIndicesBuilder* Indices, + EdgeDictionary& OutEdgeDict, PositionDictionary& OutPosDict, FRuntimeMeshIndicesBuilder* OutIndices); +}; diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshAsync.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshAsync.h new file mode 100644 index 000000000..217d881b4 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshAsync.h @@ -0,0 +1,1215 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "RuntimeMeshCore.h" +#include "RuntimeMeshComponent.h" + +#define RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(TaskType, DataType, DataPtr, RuntimeMesh, Code) \ + class FParallelRuntimeMeshComponentTask_##TaskType \ + { \ + TWeakObjectPtr RuntimeMeshComponent; \ + DataType* RMCCallData; \ + public: \ + FParallelRuntimeMeshComponentTask_##TaskType(TWeakObjectPtr InRMC, DataType* InData) \ + : RuntimeMeshComponent(InRMC), RMCCallData(InData) \ + { \ + } \ + \ + ~FParallelRuntimeMeshComponentTask_##TaskType() \ + { \ + if (RMCCallData != nullptr) \ + { \ + delete RMCCallData; \ + } \ + } \ + \ + FORCEINLINE TStatId GetStatId() const \ + { \ + RETURN_QUICK_DECLARE_CYCLE_STAT(FParallelRuntimeMeshComponentTask_##TaskType, STATGROUP_TaskGraphTasks); \ + } \ + \ + static ENamedThreads::Type GetDesiredThread() \ + { \ + return ENamedThreads::GameThread; \ + } \ + \ + static ESubsequentsMode::Type GetSubsequentsMode() \ + { \ + return ESubsequentsMode::FireAndForget; \ + } \ + \ + void DoTask(ENamedThreads::Type CurrentThread, const FGraphEventRef& MyCompletionGraphEvent) \ + { \ + DataType* Data = RMCCallData; \ + if (URuntimeMeshComponent* Mesh = RuntimeMeshComponent.Get()) \ + { \ + Code \ + } \ + } \ + }; \ + TGraphTask::CreateTask().ConstructAndDispatchWhenReady(RuntimeMesh, DataPtr); + + + + +class RUNTIMEMESHCOMPONENT_API FRuntimeMeshAsync +{ + + + +public: + + /** + * Create/replace a section. + * @param SectionIndex Index of the section to create or replace. + * @param Vertices Vertex buffer all vertex data for this section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void CreateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& Vertices, TArray& Triangles, + bool bCreateCollision = false, EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + TArray Triangles; + bool bCreateCollision; + EUpdateFrequency UpdateFrequency; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + CallData->Triangles = MoveTemp(Triangles); + } + else + { + CallData->Vertices = Vertices; + CallData->Triangles = Triangles; + } + CallData->bCreateCollision = bCreateCollision; + CallData->UpdateFrequency = UpdateFrequency; + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(CreateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->CreateMeshSection(Data->SectionIndex, Data->Vertices, Data->Triangles, Data->bCreateCollision, Data->UpdateFrequency, Data->UpdateFlags); + }); + } + + + /** + * Create/replace a section. + * @param SectionIndex Index of the section to create or replace. + * @param Vertices Vertex buffer all vertex data for this section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void CreateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& Vertices, TArray& Triangles, + const FBox& BoundingBox, bool bCreateCollision = false, EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + TArray Triangles; + FBox BoundingBox; + bool bCreateCollision; + EUpdateFrequency UpdateFrequency; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + CallData->Triangles = MoveTemp(Triangles); + } + else + { + CallData->Vertices = Vertices; + CallData->Triangles = Triangles; + } + CallData->BoundingBox = BoundingBox; + CallData->bCreateCollision = bCreateCollision; + CallData->UpdateFrequency = UpdateFrequency; + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(CreateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->CreateMeshSection(Data->SectionIndex, Data->Vertices, Data->Triangles, Data->BoundingBox, Data->bCreateCollision, Data->UpdateFrequency, Data->UpdateFlags); + }); + } + + /** + * Create/replace a section using 2 vertex buffers. One contains positions only, the other contains all other data. This allows for very efficient updates of the positions of a mesh. + * @param SectionIndex Index of the section to create or replace. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param VertexData Vertex buffer containing everything except position for each vertex. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void CreateMeshSectionDualBuffer(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& VertexPositions, + TArray& VertexData, TArray& Triangles, bool bCreateCollision = false, + EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray VertexPositions; + TArray Vertices; + TArray Triangles; + bool bCreateCollision; + EUpdateFrequency UpdateFrequency; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->VertexPositions = MoveTemp(VertexPositions); + CallData->Vertices = MoveTemp(VertexData); + CallData->Triangles = MoveTemp(Triangles); + } + else + { + CallData->VertexPositions = VertexPositions; + CallData->Vertices = VertexData; + CallData->Triangles = Triangles; + } + CallData->bCreateCollision = bCreateCollision; + CallData->UpdateFrequency = UpdateFrequency; + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(CreateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->CreateMeshSection(Data->SectionIndex, Data->VertexPositions, Data->Vertices, Data->Triangles, Data->bCreateCollision, Data->UpdateFrequency, Data->UpdateFlags); + }); + } + + /** + * Create/replace a section using 2 vertex buffers. One contains positions only, the other contains all other data. This allows for very efficient updates of the positions of a mesh. + * @param SectionIndex Index of the section to create or replace. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param VertexData Vertex buffer containing everything except position for each vertex. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void CreateMeshSectionDualBuffer(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& VertexPositions, + TArray& VertexData, TArray& Triangles, const FBox& BoundingBox, + bool bCreateCollision = false, EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray VertexPositions; + TArray Vertices; + TArray Triangles; + FBox BoundingBox; + bool bCreateCollision; + EUpdateFrequency UpdateFrequency; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->VertexPositions = MoveTemp(VertexPositions); + CallData->Vertices = MoveTemp(VertexData); + CallData->Triangles = MoveTemp(Triangles); + } + else + { + CallData->VertexPositions = VertexPositions; + CallData->Vertices = VertexData; + CallData->Triangles = Triangles; + } + CallData->BoundingBox = BoundingBox; + CallData->bCreateCollision = bCreateCollision; + CallData->UpdateFrequency = UpdateFrequency; + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(CreateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->CreateMeshSection(Data->SectionIndex, Data->VertexPositions, Data->Vertices, Data->Triangles, Data->BoundingBox, Data->bCreateCollision, Data->UpdateFrequency, Data->UpdateFlags); + }); + } + + + /** + * Updates a section. This is faster than CreateMeshSection. If this is a dual buffer section, you cannot change the length of the vertices. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer all vertex data for this section, or in the case of dual buffer section it contains everything but position. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& Vertices, + ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + } + else + { + CallData->Vertices = Vertices; + } + + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->Vertices, Data->UpdateFlags); + }); + } + + /** + * Updates a section. This is faster than CreateMeshSection. If this is a dual buffer section, you cannot change the length of the vertices. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer all vertex data for this section, or in the case of dual buffer section it contains everything but position. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& Vertices, + const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + FBox BoundingBox; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + } + else + { + CallData->Vertices = Vertices; + } + + CallData->BoundingBox = BoundingBox; + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->Vertices, Data->BoundingBox, Data->UpdateFlags); + }); + } + + /** + * Updates a section. This is faster than CreateMeshSection. If this is a dual buffer section, you cannot change the length of the vertices. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer all vertex data for this section, or in the case of dual buffer section it contains everything but position. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& Vertices, + TArray& Triangles, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + TArray Triangles; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + CallData->Triangles = MoveTemp(Triangles); + } + else + { + CallData->Vertices = Vertices; + CallData->Triangles = Triangles; + } + + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->Vertices, Data->Triangles, Data->UpdateFlags); + }); + } + + /** + * Updates a section. This is faster than CreateMeshSection. If this is a dual buffer section, you cannot change the length of the vertices. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer all vertex data for this section, or in the case of dual buffer section it contains everything but position. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& Vertices, + TArray& Triangles, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + TArray Triangles; + FBox BoundingBox; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + CallData->Triangles = MoveTemp(Triangles); + } + else + { + CallData->Vertices = Vertices; + CallData->Triangles = Triangles; + } + + CallData->BoundingBox = BoundingBox; + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->Vertices, Data->Triangles, Data->BoundingBox, Data->UpdateFlags); + }); + } + + + /** + * Updates a section. This is faster than CreateMeshSection. This is only for dual buffer sections. You cannot change the length of positions or vertex data unless you specify both together. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param Vertices Vertex buffer containing everything except position for each vertex. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& VertexPositions, + TArray& Vertices, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray VertexPositions; + TArray Vertices; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->VertexPositions = MoveTemp(VertexPositions); + CallData->Vertices = MoveTemp(Vertices); + } + else + { + CallData->VertexPositions = VertexPositions; + CallData->Vertices = Vertices; + } + + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->VertexPositions, Data->Vertices, Data->UpdateFlags); + }); + } + + /** + * Updates a section. This is faster than CreateMeshSection. This is only for dual buffer sections. You cannot change the length of positions or vertex data unless you specify both together. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param Vertices Vertex buffer containing everything except position for each vertex. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& VertexPositions, + TArray& Vertices, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray VertexPositions; + TArray Vertices; + FBox BoundingBox; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->VertexPositions = MoveTemp(VertexPositions); + CallData->Vertices = MoveTemp(Vertices); + } + else + { + CallData->VertexPositions = VertexPositions; + CallData->Vertices = Vertices; + } + + CallData->BoundingBox = BoundingBox; + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->VertexPositions, Data->Vertices, Data->BoundingBox, Data->UpdateFlags); + }); + } + + /** + * Updates a section. This is faster than CreateMeshSection. This is only for dual buffer sections. You cannot change the length of positions or vertex data unless you specify both together. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param Vertices Vertex buffer containing everything except position for each vertex. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& VertexPositions, + TArray& Vertices, TArray& Triangles, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray VertexPositions; + TArray Vertices; + TArray Triangles; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->VertexPositions = MoveTemp(VertexPositions); + CallData->Vertices = MoveTemp(Vertices); + CallData->Triangles = MoveTemp(Triangles); + } + else + { + CallData->VertexPositions = VertexPositions; + CallData->Vertices = Vertices; + CallData->Triangles = Triangles; + } + + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->VertexPositions, Data->Vertices, Data->Triangles, Data->UpdateFlags); + }); + } + + /** + * Updates a section. This is faster than CreateMeshSection. This is only for dual buffer sections. You cannot change the length of positions or vertex data unless you specify both together. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param Vertices Vertex buffer containing everything except position for each vertex. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, TArray& VertexPositions, + TArray& Vertices, TArray& Triangles, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray VertexPositions; + TArray Vertices; + TArray Triangles; + FBox BoundingBox; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->VertexPositions = MoveTemp(VertexPositions); + CallData->Vertices = MoveTemp(Vertices); + CallData->Triangles = MoveTemp(Triangles); + } + else + { + CallData->VertexPositions = VertexPositions; + CallData->Vertices = Vertices; + CallData->Triangles = Triangles; + } + + CallData->BoundingBox = BoundingBox; + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->VertexPositions, Data->Vertices, Data->Triangles, Data->BoundingBox, Data->UpdateFlags); + }); + } + + + /** + * Updates a sections position buffer only. This cannot be used on a non-dual buffer section. You cannot change the length of the vertex position buffer with this function. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param UpdateFlags Flags pertaining to this particular update. + */ + static void UpdateMeshSectionPositionsImmediate(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, + TArray& VertexPositions, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray VertexPositions; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->VertexPositions = MoveTemp(VertexPositions); + } + else + { + CallData->VertexPositions = VertexPositions; + } + + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSectionPositionsImmediate, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSectionPositionsImmediate(Data->SectionIndex, Data->VertexPositions, Data->UpdateFlags); + }); + } + + /** + * Updates a sections position buffer only. This cannot be used on a non-dual buffer section. You cannot change the length of the vertex position buffer with this function. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param UpdateFlags Flags pertaining to this particular update. + */ + static void UpdateMeshSectionPositionsImmediate(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, + TArray& VertexPositions, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray VertexPositions; + FBox BoundingBox; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->VertexPositions = MoveTemp(VertexPositions); + } + else + { + CallData->VertexPositions = VertexPositions; + } + + CallData->BoundingBox = BoundingBox; + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSectionPositionsImmediate, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSectionPositionsImmediate(Data->SectionIndex, Data->VertexPositions, Data->BoundingBox, Data->UpdateFlags); + }); + } + + + + + + /** + * Create/replace a section. + * @param SectionIndex Index of the section to create or replace. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + */ + static void CreateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, const TArray& Vertices, + const TArray& Triangles, const TArray& Normals, const TArray& UV0, const TArray& Colors, + const TArray& Tangents, bool bCreateCollision = false, + EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + TArray Triangles; + TArray Normals; + TArray UV0; + TArray Colors; + TArray Tangents; + bool bCreateCollision = false; + EUpdateFrequency UpdateFrequency; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + CallData->Triangles = MoveTemp(Triangles); + CallData->Normals = MoveTemp(Normals); + CallData->UV0 = MoveTemp(UV0); + CallData->Colors = MoveTemp(Colors); + CallData->Tangents = MoveTemp(Tangents); + } + else + { + CallData->Vertices = Vertices; + CallData->Triangles = Triangles; + CallData->Normals = Normals; + CallData->UV0 = UV0; + CallData->Colors = Colors; + CallData->Tangents = Tangents; + } + + CallData->bCreateCollision = bCreateCollision; + CallData->UpdateFrequency = UpdateFrequency; + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(CreateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->CreateMeshSection(Data->SectionIndex, Data->Vertices, Data->Triangles, Data->Normals, Data->UV0, Data->Colors, + Data->Tangents, Data->bCreateCollision, Data->UpdateFrequency, Data->UpdateFlags); + }); + } + + /** + * Create/replace a section. + * @param SectionIndex Index of the section to create or replace. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param UV1 Optional array of texture co-ordinates for each vertex (UV Channel 1). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + */ + static void CreateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, const TArray& Vertices, + const TArray& Triangles, const TArray& Normals, const TArray& UV0, const TArray& UV1, + const TArray& Colors, const TArray& Tangents, + bool bCreateCollision = false, EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + TArray Triangles; + TArray Normals; + TArray UV0; + TArray UV1; + TArray Colors; + TArray Tangents; + bool bCreateCollision = false; + EUpdateFrequency UpdateFrequency; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + CallData->Triangles = MoveTemp(Triangles); + CallData->Normals = MoveTemp(Normals); + CallData->UV0 = MoveTemp(UV0); + CallData->UV1 = MoveTemp(UV1); + CallData->Colors = MoveTemp(Colors); + CallData->Tangents = MoveTemp(Tangents); + } + else + { + CallData->Vertices = Vertices; + CallData->Triangles = Triangles; + CallData->Normals = Normals; + CallData->UV0 = UV0; + CallData->UV1 = UV1; + CallData->Colors = Colors; + CallData->Tangents = Tangents; + } + + CallData->bCreateCollision = bCreateCollision; + CallData->UpdateFrequency = UpdateFrequency; + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(CreateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->CreateMeshSection(Data->SectionIndex, Data->Vertices, Data->Triangles, Data->Normals, Data->UV0, Data->UV1, Data->Colors, + Data->Tangents, Data->bCreateCollision, Data->UpdateFrequency, Data->UpdateFlags); + }); + } + + + /** + * Updates a section. This is faster than CreateMeshSection. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV1 Optional array of texture co-ordinates for each vertex (UV Channel 1). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + */ + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, const TArray& Vertices, + const TArray& Normals, const TArray& UV0, const TArray& Colors, const TArray& Tangents, + ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + TArray Normals; + TArray UV0; + TArray UV1; + TArray Colors; + TArray Tangents; + bool bCreateCollision = false; + EUpdateFrequency UpdateFrequency; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + CallData->Normals = MoveTemp(Normals); + CallData->UV0 = MoveTemp(UV0); + CallData->Colors = MoveTemp(Colors); + CallData->Tangents = MoveTemp(Tangents); + } + else + { + CallData->Vertices = Vertices; + CallData->Normals = Normals; + CallData->UV0 = UV0; + CallData->Colors = Colors; + CallData->Tangents = Tangents; + } + + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->Vertices, Data->Normals, Data->UV0, Data->Colors, Data->Tangents, Data->UpdateFlags); + }); + } + + /** + * Updates a section. This is faster than CreateMeshSection. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param UV1 Optional array of texture co-ordinates for each vertex (UV Channel 1). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + */ + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, const TArray& Vertices, + const TArray& Normals, const TArray& UV0, const TArray& UV1, const TArray& Colors, + const TArray& Tangents, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + TArray Normals; + TArray UV0; + TArray UV1; + TArray Colors; + TArray Tangents; + bool bCreateCollision = false; + EUpdateFrequency UpdateFrequency; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + CallData->Normals = MoveTemp(Normals); + CallData->UV0 = MoveTemp(UV0); + CallData->UV1 = MoveTemp(UV1); + CallData->Colors = MoveTemp(Colors); + CallData->Tangents = MoveTemp(Tangents); + } + else + { + CallData->Vertices = Vertices; + CallData->Normals = Normals; + CallData->UV0 = UV0; + CallData->UV1 = UV1; + CallData->Colors = Colors; + CallData->Tangents = Tangents; + } + + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->Vertices, Data->Normals, Data->UV0, Data->UV1, Data->Colors, Data->Tangents, Data->UpdateFlags); + }); + } + + /** + * Updates a section. This is faster than CreateMeshSection. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + */ + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, const TArray& Vertices, + const TArray& Triangles, const TArray& Normals, const TArray& UV0, const TArray& Colors, + const TArray& Tangents, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + TArray Triangles; + TArray Normals; + TArray UV0; + TArray Colors; + TArray Tangents; + bool bCreateCollision = false; + EUpdateFrequency UpdateFrequency; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + CallData->Triangles = MoveTemp(Triangles); + CallData->Normals = MoveTemp(Normals); + CallData->UV0 = MoveTemp(UV0); + CallData->Colors = MoveTemp(Colors); + CallData->Tangents = MoveTemp(Tangents); + } + else + { + CallData->Vertices = Vertices; + CallData->Triangles = Triangles; + CallData->Normals = Normals; + CallData->UV0 = UV0; + CallData->Colors = Colors; + CallData->Tangents = Tangents; + } + + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->Vertices, Data->Triangles, Data->Normals, Data->UV0, Data->Colors, Data->Tangents, Data->UpdateFlags); + }); + } + + /** + * Updates a section. This is faster than CreateMeshSection. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param UV1 Optional array of texture co-ordinates for each vertex (UV Channel 1). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + */ + static void UpdateMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, const TArray& Vertices, + const TArray& Triangles, const TArray& Normals, const TArray& UV0, const TArray& UV1, + const TArray& Colors, const TArray& Tangents, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray Vertices; + TArray Triangles; + TArray Normals; + TArray UV0; + TArray UV1; + TArray Colors; + TArray Tangents; + bool bCreateCollision = false; + EUpdateFrequency UpdateFrequency; + ESectionUpdateFlags UpdateFlags; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (!!(UpdateFlags & ESectionUpdateFlags::MoveArrays)) + { + CallData->Vertices = MoveTemp(Vertices); + CallData->Triangles = MoveTemp(Triangles); + CallData->Normals = MoveTemp(Normals); + CallData->UV0 = MoveTemp(UV0); + CallData->UV1 = MoveTemp(UV1); + CallData->Colors = MoveTemp(Colors); + CallData->Tangents = MoveTemp(Tangents); + } + else + { + CallData->Vertices = Vertices; + CallData->Triangles = Triangles; + CallData->Normals = Normals; + CallData->UV0 = UV0; + CallData->UV1 = UV1; + CallData->Colors = Colors; + CallData->Tangents = Tangents; + } + + CallData->UpdateFlags = UpdateFlags | ESectionUpdateFlags::MoveArrays; // We can always use move arrays here since we either just copied it, or moved it from the original + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(UpdateMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->UpdateMeshSection(Data->SectionIndex, Data->Vertices, Data->Triangles, Data->Normals, Data->UV0, Data->UV1, Data->Colors, Data->Tangents, Data->UpdateFlags); + }); + } + + + + /** Clear a section of the procedural mesh. */ + static void ClearMeshSection(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex) + { + struct FRMCAsyncData + { + int32 SectionIndex; + }; + + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(ClearMeshSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->ClearMeshSection(Data->SectionIndex); + }); + } + + /** Clear all mesh sections and reset to empty state */ + static void ClearAllMeshSections(TWeakObjectPtr InRuntimeMeshComponent) + { + struct FRMCAsyncData + { + int32 SectionIndex; + }; + FRMCAsyncData* CallData = new FRMCAsyncData; + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(ClearAllMeshSections, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->ClearAllMeshSections(); + }); + } + + + /** Sets the tessellation triangles needed to correctly support tessellation on a section. */ + static void SetSectionTessellationTriangles(TWeakObjectPtr InRuntimeMeshComponent, int32 SectionIndex, + const TArray& TessellationTriangles, bool bShouldMoveArray = false) + { + struct FRMCAsyncData + { + int32 SectionIndex; + TArray TessellationTriangles; + }; + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->SectionIndex = SectionIndex; + + if (bShouldMoveArray) + { + CallData->TessellationTriangles = MoveTemp(TessellationTriangles); + } + else + { + CallData->TessellationTriangles = TessellationTriangles; + } + + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(SetSectionTessellationTriangles, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->SetSectionTessellationTriangles(Data->SectionIndex, Data->TessellationTriangles, true); + }); + } + + + /** Sets the geometry for a collision only section */ + static void SetMeshCollisionSection(TWeakObjectPtr InRuntimeMeshComponent, int32 CollisionSectionIndex, + const TArray& Vertices, const TArray& Triangles) + { + struct FRMCAsyncData + { + int32 CollisionSectionIndex; + TArray Vertices; + TArray Triangles; + }; + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->CollisionSectionIndex = CollisionSectionIndex; + CallData->Vertices = Vertices; + CallData->Triangles = Triangles; + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(SetMeshCollisionSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->SetMeshCollisionSection(Data->CollisionSectionIndex, Data->Vertices, Data->Triangles); + }); + } + + /** Clears the geometry for a collision only section */ + static void ClearMeshCollisionSection(TWeakObjectPtr InRuntimeMeshComponent, int32 CollisionSectionIndex) + { + struct FRMCAsyncData + { + int32 CollisionSectionIndex; + }; + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->CollisionSectionIndex = CollisionSectionIndex; + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(ClearMeshCollisionSection, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->ClearMeshCollisionSection(Data->CollisionSectionIndex); + }); + } + + /** Clears the geometry for ALL collision only sections */ + static void ClearAllMeshCollisionSections(TWeakObjectPtr InRuntimeMeshComponent) + { + struct FRMCAsyncData + { + int32 CollisionSectionIndex; + }; + FRMCAsyncData* CallData = new FRMCAsyncData; + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(ClearAllMeshCollisionSections, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->ClearAllMeshCollisionSections(); + }); + } + + + /** Add simple collision convex to this component */ + static void AddCollisionConvexMesh(TWeakObjectPtr InRuntimeMeshComponent, TArray ConvexVerts) + { + struct FRMCAsyncData + { + TArray ConvexVerts; + }; + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->ConvexVerts = ConvexVerts; + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(AddCollisionConvexMesh, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->AddCollisionConvexMesh(Data->ConvexVerts); + }); + } + + /** Add simple collision convex to this component */ + static void ClearCollisionConvexMeshes(TWeakObjectPtr InRuntimeMeshComponent) + { + struct FRMCAsyncData + { + int32 CollisionSectionIndex; + }; + FRMCAsyncData* CallData = new FRMCAsyncData; + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(ClearCollisionConvexMeshes, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->ClearCollisionConvexMeshes(); + }); + } + + /** Function to replace _all_ simple collision in one go */ + static void SetCollisionConvexMeshes(TWeakObjectPtr InRuntimeMeshComponent, const TArray< TArray >& ConvexMeshes) + { + struct FRMCAsyncData + { + TArray> ConvexMeshes; + }; + FRMCAsyncData* CallData = new FRMCAsyncData; + CallData->ConvexMeshes = ConvexMeshes; + + RUNTIMEMESHCOMPONENTASYNC_ENQUEUETASK(SetCollisionConvexMeshes, FRMCAsyncData, CallData, InRuntimeMeshComponent, + { + Mesh->SetCollisionConvexMeshes(Data->ConvexMeshes); + }); + } +}; diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshBuilder.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshBuilder.h new file mode 100644 index 000000000..b9640baf3 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshBuilder.h @@ -0,0 +1,983 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "RuntimeMeshCore.h" +#include "RuntimeMeshGenericVertex.h" + +////////////////////////////////////////////////////////////////////////// +// This is a work in progress, it's functional, but could use some improvement +////////////////////////////////////////////////////////////////////////// + +enum class ERuntimeMeshVerticesBuilderType : uint8 +{ + Component, + Packed +}; + + +class IRuntimeMeshVerticesBuilder +{ +public: + IRuntimeMeshVerticesBuilder() { } + IRuntimeMeshVerticesBuilder(const IRuntimeMeshVerticesBuilder& Other) = delete; + IRuntimeMeshVerticesBuilder& operator=(const IRuntimeMeshVerticesBuilder& Other) = delete; + virtual ~IRuntimeMeshVerticesBuilder() { } + + virtual ERuntimeMeshVerticesBuilderType GetBuilderType() const = 0; + virtual const FRuntimeMeshVertexTypeInfo* GetVertexType() const = 0; + + virtual bool HasPositionComponent() const = 0; + virtual bool HasNormalComponent() const = 0; + virtual bool HasTangentComponent() const = 0; + virtual bool HasColorComponent() const = 0; + virtual bool HasUVComponent(int32 Index) const = 0; + virtual bool HasHighPrecisionNormals() const = 0; + virtual bool HasHighPrecisionUVs() const = 0; + + virtual void SetPosition(const FVector& InPosition) = 0; + virtual void SetNormal(const FVector4& InNormal) = 0; + virtual void SetTangent(const FVector& InTangent) = 0; + virtual void SetColor(const FColor& InColor) = 0; + virtual void SetUV(int32 Index, const FVector2D& InUV) = 0; + + virtual void SetPosition(int32 VertexIndex, const FVector& InPosition) = 0; + virtual void SetNormal(int32 VertexIndex, const FVector4& InNormal) = 0; + virtual void SetTangent(int32 VertexIndex, const FVector& InTangent) = 0; + virtual void SetColor(int32 VertexIndex, const FColor& InColor) = 0; + virtual void SetUV(int32 VertexIndex, int32 Index, const FVector2D& InUV) = 0; + + void SetTangents(const FVector& InTangentX, const FVector& InTangentY, const FVector& InTangentZ) + { + SetNormal(FVector4(InTangentZ, GetBasisDeterminantSign(InTangentX, InTangentY, InTangentZ))); + SetTangent(InTangentX); + } + void SetTangents(int32 VertexIndex, const FVector& InTangentX, const FVector& InTangentY, const FVector& InTangentZ) + { + Seek(VertexIndex); + SetNormal(FVector4(InTangentZ, GetBasisDeterminantSign(InTangentX, InTangentY, InTangentZ))); + SetTangent(InTangentX); + } + + virtual FVector GetPosition() const = 0; + virtual FVector4 GetNormal() const = 0; + virtual FVector GetTangent() const = 0; + virtual FColor GetColor() const = 0; + virtual FVector2D GetUV(int32 Index) const = 0; + + virtual FVector GetPosition(int32 VertexIndex) const = 0; + virtual FVector4 GetNormal(int32 VertexIndex) const = 0; + virtual FVector GetTangent(int32 VertexIndex) const = 0; + virtual FColor GetColor(int32 VertexIndex) const = 0; + virtual FVector2D GetUV(int32 VertexIndex, int32 Index) const = 0; + + virtual int32 Length() const = 0; + virtual void Seek(int32 Position) const = 0; + void SeekEnd() const + { + Seek(Length() - 1); + } + virtual int32 MoveNext() const = 0; + virtual int32 MoveNextOrAdd() = 0; + + virtual void Reset() = 0; + + virtual IRuntimeMeshVerticesBuilder* Clone(bool bIncludeData = true) const = 0; + + virtual bool WantsSeparatePositionBuffer() const + { + return false; + } +}; + + +template +class FRuntimeMeshPackedVerticesBuilder : public IRuntimeMeshVerticesBuilder +{ +private: + TArray* Vertices; + TArray* Positions; + int32 CurrentPosition; + bool bOwnsVertexArray; +public: + + FRuntimeMeshPackedVerticesBuilder(bool bWantsSeparatePositions = false) + : Vertices(new TArray()) + , Positions(bWantsSeparatePositions? new TArray() : nullptr) + , CurrentPosition(-1) + , bOwnsVertexArray(true) + { } + FRuntimeMeshPackedVerticesBuilder(TArray* InVertices, TArray* InPositions = nullptr) + : Vertices(InVertices) + , Positions(InPositions) + , CurrentPosition(-1) + , bOwnsVertexArray(false) + { } + FRuntimeMeshPackedVerticesBuilder(const FRuntimeMeshPackedVerticesBuilder& Other) = delete; + FRuntimeMeshPackedVerticesBuilder& operator=(const FRuntimeMeshPackedVerticesBuilder& Other) = delete; + virtual ~FRuntimeMeshPackedVerticesBuilder() override + { + if (bOwnsVertexArray) + { + delete Vertices; + + if (Positions) + { + delete Positions; + } + } + } + + + virtual ERuntimeMeshVerticesBuilderType GetBuilderType() const + { + return ERuntimeMeshVerticesBuilderType::Packed; + } + virtual const FRuntimeMeshVertexTypeInfo* GetVertexType() const + { + return &VertexType::TypeInfo; + } + + + virtual bool HasPositionComponent() const override { return Positions != nullptr || FRuntimeMeshVertexTraits::HasPosition; } + virtual bool HasNormalComponent() const override { return FRuntimeMeshVertexTraits::HasNormal; } + virtual bool HasTangentComponent() const override { return FRuntimeMeshVertexTraits::HasTangent; } + virtual bool HasColorComponent() const override { return FRuntimeMeshVertexTraits::HasColor; } + virtual bool HasUVComponent(int32 Index) const override + { + switch (Index) + { + case 0: + return FRuntimeMeshVertexTraits::HasUV0; + case 1: + return FRuntimeMeshVertexTraits::HasUV1; + case 2: + return FRuntimeMeshVertexTraits::HasUV2; + case 3: + return FRuntimeMeshVertexTraits::HasUV3; + case 4: + return FRuntimeMeshVertexTraits::HasUV4; + case 5: + return FRuntimeMeshVertexTraits::HasUV5; + case 6: + return FRuntimeMeshVertexTraits::HasUV6; + case 7: + return FRuntimeMeshVertexTraits::HasUV7; + } + return false; + } + virtual bool HasHighPrecisionNormals() const override { return FRuntimeMeshVertexTraits::HasHighPrecisionNormals; } + virtual bool HasHighPrecisionUVs() const override { return FRuntimeMeshVertexTraits::HasHighPrecisionUVs; } + + virtual void SetPosition(const FVector& InPosition) override + { + if (Positions) + { + (*Positions)[CurrentPosition] = InPosition; + } + else + { + SetPositionInternal((*Vertices)[CurrentPosition], InPosition); + } + } + virtual void SetNormal(const FVector4& InNormal) override { SetNormalInternal((*Vertices)[CurrentPosition], InNormal); } + virtual void SetTangent(const FVector& InTangent) override { SetTangentInternal((*Vertices)[CurrentPosition], InTangent); } + virtual void SetColor(const FColor& InColor) override { SetColorInternal((*Vertices)[CurrentPosition], InColor); } + virtual void SetUV(int32 Index, const FVector2D& InUV) + { + switch (Index) + { + case 0: + SetUV0Internal((*Vertices)[CurrentPosition], InUV); + return; + case 1: + SetUV1Internal((*Vertices)[CurrentPosition], InUV); + return; + case 2: + SetUV2Internal((*Vertices)[CurrentPosition], InUV); + return; + case 3: + SetUV3Internal((*Vertices)[CurrentPosition], InUV); + return; + case 4: + SetUV4Internal((*Vertices)[CurrentPosition], InUV); + return; + case 5: + SetUV5Internal((*Vertices)[CurrentPosition], InUV); + return; + case 6: + SetUV6Internal((*Vertices)[CurrentPosition], InUV); + return; + case 7: + SetUV7Internal((*Vertices)[CurrentPosition], InUV); + return; + } + } + + + virtual void SetPosition(int32 VertexIndex, const FVector& InPosition) override + { + Seek(VertexIndex); + if (Positions) + { + (*Positions)[CurrentPosition] = InPosition; + } + else + { + SetPositionInternal((*Vertices)[CurrentPosition], InPosition); + } + } + virtual void SetNormal(int32 VertexIndex, const FVector4& InNormal) override { Seek(VertexIndex); SetNormalInternal((*Vertices)[CurrentPosition], InNormal); } + virtual void SetTangent(int32 VertexIndex, const FVector& InTangent) override { Seek(VertexIndex); SetTangentInternal((*Vertices)[CurrentPosition], InTangent); } + virtual void SetColor(int32 VertexIndex, const FColor& InColor) override { Seek(VertexIndex); SetColorInternal((*Vertices)[CurrentPosition], InColor); } + virtual void SetUV(int32 VertexIndex, int32 Index, const FVector2D& InUV) + { + Seek(VertexIndex); + switch (Index) + { + case 0: + SetUV0Internal((*Vertices)[CurrentPosition], InUV); + return; + case 1: + SetUV1Internal((*Vertices)[CurrentPosition], InUV); + return; + case 2: + SetUV2Internal((*Vertices)[CurrentPosition], InUV); + return; + case 3: + SetUV3Internal((*Vertices)[CurrentPosition], InUV); + return; + case 4: + SetUV4Internal((*Vertices)[CurrentPosition], InUV); + return; + case 5: + SetUV5Internal((*Vertices)[CurrentPosition], InUV); + return; + case 6: + SetUV6Internal((*Vertices)[CurrentPosition], InUV); + return; + case 7: + SetUV7Internal((*Vertices)[CurrentPosition], InUV); + return; + } + } + + + virtual FVector GetPosition() const override + { + if (Positions) + { + return (*Positions)[CurrentPosition]; + } + else + { + return GetPositionInternal((*Vertices)[CurrentPosition]); + } + } + virtual FVector4 GetNormal() const override { return GetNormalInternal((*Vertices)[CurrentPosition]); } + virtual FVector GetTangent() const override { return GetTangentInternal((*Vertices)[CurrentPosition]); } + virtual FColor GetColor() const override { return GetColorInternal((*Vertices)[CurrentPosition]); } + virtual FVector2D GetUV(int32 Index) const override + { + switch (Index) + { + case 0: + return GetUV0Internal((*Vertices)[CurrentPosition]); + case 1: + return GetUV1Internal((*Vertices)[CurrentPosition]); + case 2: + return GetUV2Internal((*Vertices)[CurrentPosition]); + case 3: + return GetUV3Internal((*Vertices)[CurrentPosition]); + case 4: + return GetUV4Internal((*Vertices)[CurrentPosition]); + case 5: + return GetUV5Internal((*Vertices)[CurrentPosition]); + case 6: + return GetUV6Internal((*Vertices)[CurrentPosition]); + case 7: + return GetUV7Internal((*Vertices)[CurrentPosition]); + } + return FVector2D::ZeroVector; + } + + + virtual FVector GetPosition(int32 VertexIndex) const override + { + Seek(VertexIndex); + if (Positions) + { + return (*Positions)[CurrentPosition]; + } + else + { + return GetPositionInternal((*Vertices)[CurrentPosition]); + } + } + virtual FVector4 GetNormal(int32 VertexIndex) const override { Seek(VertexIndex); return GetNormalInternal((*Vertices)[CurrentPosition]); } + virtual FVector GetTangent(int32 VertexIndex) const override { Seek(VertexIndex); return GetTangentInternal((*Vertices)[CurrentPosition]); } + virtual FColor GetColor(int32 VertexIndex) const override { Seek(VertexIndex); return GetColorInternal((*Vertices)[CurrentPosition]); } + virtual FVector2D GetUV(int32 VertexIndex, int32 Index) const override + { + Seek(VertexIndex); + switch (Index) + { + case 0: + return GetUV0Internal((*Vertices)[CurrentPosition]); + case 1: + return GetUV1Internal((*Vertices)[CurrentPosition]); + case 2: + return GetUV2Internal((*Vertices)[CurrentPosition]); + case 3: + return GetUV3Internal((*Vertices)[CurrentPosition]); + case 4: + return GetUV4Internal((*Vertices)[CurrentPosition]); + case 5: + return GetUV5Internal((*Vertices)[CurrentPosition]); + case 6: + return GetUV6Internal((*Vertices)[CurrentPosition]); + case 7: + return GetUV7Internal((*Vertices)[CurrentPosition]); + } + return FVector2D::ZeroVector; + } + + virtual int32 Length() const override { return Vertices->Num(); } + virtual void Seek(int32 Position) const override + { + const_cast*>(this)->CurrentPosition = Position; + } + virtual int32 MoveNext() const override + { + return ++const_cast*>(this)->CurrentPosition; + } + virtual int32 MoveNextOrAdd() override + { + CurrentPosition++; + if (CurrentPosition >= Vertices->Num()) + { + Vertices->SetNumZeroed(CurrentPosition + 1, false); + if (Positions) + { + Positions->SetNumZeroed(CurrentPosition + 1, false); + } + } + return CurrentPosition; + } + + virtual void Reset() override + { + Vertices->Reset(); + if (Positions) + { + Positions->Reset(); + } + CurrentPosition = -1; + } + + virtual IRuntimeMeshVerticesBuilder* Clone(bool bIncludeData = true) const override + { + FRuntimeMeshPackedVerticesBuilder* NewBuilder = new FRuntimeMeshPackedVerticesBuilder(Positions != nullptr); + + if (bIncludeData) + { + *NewBuilder->Vertices = *Vertices; + *NewBuilder->Positions = *Positions; + NewBuilder->Seek(0); + } + + return NewBuilder; + } + + TArray* GetVertices() + { + return Vertices; + } + + TArray* GetPositions() + { + return Positions; + } + + + virtual bool WantsSeparatePositionBuffer() const + { + return Positions != nullptr; + } + +private: + template + FORCEINLINE static typename TEnableIf::HasPosition>::Type SetPositionInternal(Type& Vertex, const FVector& Position) + { + Vertex.Position = Position; + } + template + FORCEINLINE static typename TEnableIf::HasPosition>::Type SetPositionInternal(Type& Vertex, const FVector& Position) + { + + } + template + FORCEINLINE static typename TEnableIf::HasPosition, FVector>::Type GetPositionInternal(const Type& Vertex) + { + return Vertex.Position; + } + template + FORCEINLINE static typename TEnableIf::HasPosition, FVector>::Type GetPositionInternal(const Type& Vertex) + { + return FVector::ZeroVector; + } + + + template + FORCEINLINE static typename TEnableIf::HasNormal>::Type SetNormalInternal(Type& Vertex, const FVector4& Normal) + { + Vertex.Normal = Normal; + } + template + FORCEINLINE static typename TEnableIf::HasNormal>::Type SetNormalInternal(Type& Vertex, const FVector4& Normal) + { + + } + template + FORCEINLINE static typename TEnableIf::HasNormal, FVector4>::Type GetNormalInternal(const Type& Vertex) + { + return Vertex.Normal; + } + template + FORCEINLINE static typename TEnableIf::HasNormal, FVector4>::Type GetNormalInternal(const Type& Vertex) + { + return FVector::ZeroVector; + } + + + template + FORCEINLINE static typename TEnableIf::HasTangent>::Type SetTangentInternal(Type& Vertex, const FVector4& Tangent) + { + Vertex.Tangent = Tangent; + } + template + FORCEINLINE static typename TEnableIf::HasTangent>::Type SetTangentInternal(Type& Vertex, const FVector4& Tangent) + { + + } + template + FORCEINLINE static typename TEnableIf::HasTangent, FVector4>::Type GetTangentInternal(const Type& Vertex) + { + return Vertex.Tangent; + } + template + FORCEINLINE static typename TEnableIf::HasTangent, FVector4>::Type GetTangentInternal(const Type& Vertex) + { + return FVector::ZeroVector; + } + + + template + FORCEINLINE static typename TEnableIf::HasColor>::Type SetColorInternal(Type& Vertex, const FColor& Color) + { + Vertex.Color = Color; + } + template + FORCEINLINE static typename TEnableIf::HasColor>::Type SetColorInternal(Type& Vertex, const FColor& Color) + { + + } + template + FORCEINLINE static typename TEnableIf::HasColor, FColor>::Type GetColorInternal(const Type& Vertex) + { + return Vertex.Color; + } + template + FORCEINLINE static typename TEnableIf::HasColor, FColor>::Type GetColorInternal(const Type& Vertex) + { + return FColor::Transparent; + } + + + +#define CreateUVChannelGetSetPair(Index) \ + template \ + FORCEINLINE static typename TEnableIf::HasUV##Index>::Type SetUV##Index##Internal(Type& Vertex, const FVector2D& UV##Index) \ + { \ + Vertex.UV##Index = UV##Index; \ + } \ + template \ + FORCEINLINE static typename TEnableIf::HasUV##Index>::Type SetUV##Index##Internal(Type& Vertex, const FVector2D& UV##Index) \ + { \ + } \ + template \ + FORCEINLINE static typename TEnableIf::HasUV##Index, FVector2D>::Type GetUV##Index##Internal(const Type& Vertex) \ + { \ + return Vertex.UV##Index; \ + } \ + template \ + FORCEINLINE static typename TEnableIf::HasUV##Index, FVector2D>::Type GetUV##Index##Internal(const Type& Vertex) \ + { \ + return FVector2D::ZeroVector; \ + } + + +CreateUVChannelGetSetPair(0); +CreateUVChannelGetSetPair(1); +CreateUVChannelGetSetPair(2); +CreateUVChannelGetSetPair(3); +CreateUVChannelGetSetPair(4); +CreateUVChannelGetSetPair(5); +CreateUVChannelGetSetPair(6); +CreateUVChannelGetSetPair(7); + + +#undef CreateUVChannelGetSetPair +}; + +class RUNTIMEMESHCOMPONENT_API FRuntimeMeshComponentVerticesBuilder : public IRuntimeMeshVerticesBuilder +{ +private: + TArray* Positions; + TArray* Normals; + TArray* Tangents; + TArray* Colors; + TArray* UV0s; + TArray* UV1s; + int32 CurrentPosition; + bool bOwnsBuffers; +public: + + FRuntimeMeshComponentVerticesBuilder(bool bInWantsNormal, bool bInWantsTangent, bool bInWantsColor, bool bInWantsUV0, bool bInWantsUV1) + : Positions(new TArray()) + , Normals(bInWantsNormal ? new TArray() : nullptr) + , Tangents(bInWantsTangent ? new TArray() : nullptr) + , Colors(bInWantsColor ? new TArray() : nullptr) + , UV0s(bInWantsUV0 ? new TArray() : nullptr) + , UV1s(bInWantsUV1 ? new TArray() : nullptr) + , CurrentPosition(-1) + , bOwnsBuffers(true) + { } + FRuntimeMeshComponentVerticesBuilder(TArray* InPositions, TArray* InNormals, TArray* InTangents, + TArray* InColors, TArray* InUV0s, TArray* InUV1s = nullptr) + : Positions(InPositions) + , Normals(InNormals) + , Tangents(InTangents) + , Colors(InColors) + , UV0s(InUV0s) + , UV1s(InUV1s) + , CurrentPosition(-1) + , bOwnsBuffers(false) + { } + FRuntimeMeshComponentVerticesBuilder(const FRuntimeMeshComponentVerticesBuilder& Other) = delete; + FRuntimeMeshComponentVerticesBuilder& operator=(const FRuntimeMeshComponentVerticesBuilder& Other) = delete; + virtual ~FRuntimeMeshComponentVerticesBuilder() override + { + if (bOwnsBuffers) + { + if (Positions) delete Positions; + if (Normals) delete Normals; + if (Tangents) delete Tangents; + if (Colors) delete Colors; + if (UV0s) delete UV0s; + if (UV1s) delete UV1s; + } + } + + + virtual ERuntimeMeshVerticesBuilderType GetBuilderType() const { return ERuntimeMeshVerticesBuilderType::Packed; } + virtual const FRuntimeMeshVertexTypeInfo* GetVertexType() const; + + + virtual bool HasPositionComponent() const override { return Positions != nullptr; } + virtual bool HasNormalComponent() const override { return Normals != nullptr; } + virtual bool HasTangentComponent() const override { return Tangents != nullptr; } + virtual bool HasColorComponent() const override { return Colors != nullptr; } + virtual bool HasUVComponent(int32 Index) const override + { + switch (Index) + { + case 0: + return UV0s != nullptr; + case 1: + return UV1s != nullptr; + default: + return false; + } + } + virtual bool HasHighPrecisionNormals() const override { return false; } + virtual bool HasHighPrecisionUVs() const override { return true; } + + virtual void SetPosition(const FVector& InPosition) override + { + if (CurrentPosition >= Positions->Num()) + { + Positions->SetNumZeroed(CurrentPosition + 1, false); + } + (*Positions)[CurrentPosition] = InPosition; + } + virtual void SetNormal(const FVector4& InNormal) override + { + if (Normals) + { + if (CurrentPosition >= Normals->Num()) + { + Normals->SetNumZeroed(CurrentPosition + 1, false); + } + (*Normals)[CurrentPosition] = InNormal; + (*Tangents)[CurrentPosition].bFlipTangentY = InNormal.W < 0.0f; + } + } + virtual void SetTangent(const FVector& InTangent) override + { + if (Tangents) + { + if (CurrentPosition >= Tangents->Num()) + { + Tangents->SetNumZeroed(CurrentPosition + 1, false); + } + (*Tangents)[CurrentPosition].TangentX = InTangent; + } + } + virtual void SetColor(const FColor& InColor) override + { + if (Colors) + { + if (CurrentPosition >= Colors->Num()) + { + Colors->SetNumZeroed(CurrentPosition + 1, false); + } + (*Colors)[CurrentPosition] = InColor; + } + } + virtual void SetUV(int32 Index, const FVector2D& InUV) + { + switch (Index) + { + case 0: + { + if (UV0s) + { + if (CurrentPosition >= UV0s->Num()) + { + UV0s->SetNumZeroed(CurrentPosition + 1, false); + } + (*UV0s)[CurrentPosition] = InUV; + } + } + case 1: + { + if (UV1s) + { + if (CurrentPosition >= UV1s->Num()) + { + UV1s->SetNumZeroed(CurrentPosition + 1, false); + } + (*UV1s)[CurrentPosition] = InUV; + } + } + default: + return; + } + } + + virtual void SetPosition(int32 VertexIndex, const FVector& InPosition) override + { + Seek(VertexIndex); + if (CurrentPosition >= Positions->Num()) + { + Positions->SetNumZeroed(CurrentPosition + 1, false); + } + (*Positions)[CurrentPosition] = InPosition; + } + virtual void SetNormal(int32 VertexIndex, const FVector4& InNormal) override + { + Seek(VertexIndex); + if (Normals) + { + if (CurrentPosition >= Normals->Num()) + { + Normals->SetNumZeroed(CurrentPosition + 1, false); + } + (*Normals)[CurrentPosition] = InNormal; + (*Tangents)[CurrentPosition].bFlipTangentY = InNormal.W < 0.0f; + } + } + virtual void SetTangent(int32 VertexIndex, const FVector& InTangent) override + { + Seek(VertexIndex); + if (Tangents) + { + if (CurrentPosition >= Tangents->Num()) + { + Tangents->SetNumZeroed(CurrentPosition + 1, false); + } + (*Tangents)[CurrentPosition].TangentX = InTangent; + } + } + virtual void SetColor(int32 VertexIndex, const FColor& InColor) override + { + Seek(VertexIndex); + if (Colors) + { + if (CurrentPosition >= Colors->Num()) + { + Colors->SetNumZeroed(CurrentPosition + 1, false); + } + (*Colors)[CurrentPosition] = InColor; + } + } + virtual void SetUV(int32 VertexIndex, int32 Index, const FVector2D& InUV) + { + Seek(VertexIndex); + switch (Index) + { + case 0: + { + if (UV0s) + { + if (CurrentPosition >= UV0s->Num()) + { + UV0s->SetNumZeroed(CurrentPosition + 1, false); + } + (*UV0s)[CurrentPosition] = InUV; + } + } + case 1: + { + if (UV1s) + { + if (CurrentPosition >= UV1s->Num()) + { + UV1s->SetNumZeroed(CurrentPosition + 1, false); + } + (*UV1s)[CurrentPosition] = InUV; + } + } + default: + return; + } + } + + virtual FVector GetPosition() const override + { + check(Positions && Positions->Num() > CurrentPosition); + return (*Positions)[CurrentPosition]; + } + virtual FVector4 GetNormal() const override + { + check(Normals && Normals->Num() > CurrentPosition); + float W = (Tangents && Tangents->Num() > CurrentPosition) ? ((*Tangents)[CurrentPosition].bFlipTangentY ? -1.0f : 1.0f) : 1.0f; + return FVector4((*Normals)[CurrentPosition], W); + } + virtual FVector GetTangent() const override + { + check(Tangents && Tangents->Num() > CurrentPosition); + return (*Tangents)[CurrentPosition].TangentX; + } + virtual FColor GetColor() const override + { + check(Colors && Colors->Num() > CurrentPosition); + return (*Colors)[CurrentPosition]; + } + virtual FVector2D GetUV(int32 Index) const override + { + switch (Index) + { + case 0: + check(UV0s && UV0s->Num() > CurrentPosition); + return (*UV0s)[CurrentPosition]; + case 1: + check(UV1s && UV1s->Num() > CurrentPosition); + return (*UV1s)[CurrentPosition]; + } + return FVector2D::ZeroVector; + } + + virtual FVector GetPosition(int32 VertexIndex) const override + { + Seek(VertexIndex); + check(Positions && Positions->Num() > CurrentPosition); + return (*Positions)[CurrentPosition]; + } + virtual FVector4 GetNormal(int32 VertexIndex) const override + { + Seek(VertexIndex); + check(Normals && Normals->Num() > CurrentPosition); + float W = (Tangents && Tangents->Num() > CurrentPosition) ? ((*Tangents)[CurrentPosition].bFlipTangentY ? -1.0f : 1.0f) : 1.0f; + return FVector4((*Normals)[CurrentPosition], W); + } + virtual FVector GetTangent(int32 VertexIndex) const override + { + Seek(VertexIndex); + check(Tangents && Tangents->Num() > CurrentPosition); + return (*Tangents)[CurrentPosition].TangentX; + } + virtual FColor GetColor(int32 VertexIndex) const override + { + Seek(VertexIndex); + check(Colors && Colors->Num() > CurrentPosition); + return (*Colors)[CurrentPosition]; + } + virtual FVector2D GetUV(int32 VertexIndex, int32 Index) const override + { + Seek(VertexIndex); + switch (Index) + { + case 0: + check(UV0s && UV0s->Num() > CurrentPosition); + return (*UV0s)[CurrentPosition]; + case 1: + check(UV1s && UV1s->Num() > CurrentPosition); + return (*UV1s)[CurrentPosition]; + } + return FVector2D::ZeroVector; + } + + + virtual int32 Length() const override { return Positions->Num(); } + virtual void Seek(int32 Position) const override + { + const_cast(this)->CurrentPosition = Position; + } + virtual int32 MoveNext() const override + { + return ++const_cast(this)->CurrentPosition; + } + virtual int32 MoveNextOrAdd() override + { + return ++CurrentPosition; + } + + + TArray* GetPositions() const { return Positions; } + TArray* GetNormals() const { return Normals; } + TArray* GetTangents() const { return Tangents; } + TArray* GetColors() const { return Colors; } + TArray* GetUV0s() const { return UV0s; } + TArray* GetUV1s() const { return UV1s; } + + virtual void Reset() override + { + Positions->Reset(); + Normals->Reset(); + Tangents->Reset(); + Colors->Reset(); + UV0s->Reset(); + UV1s->Reset(); + CurrentPosition = -1; + } + + virtual IRuntimeMeshVerticesBuilder* Clone(bool bIncludeData = true) const override + { + FRuntimeMeshComponentVerticesBuilder* NewBuilder = new FRuntimeMeshComponentVerticesBuilder(Normals != nullptr, Tangents != nullptr, Colors != nullptr, UV0s != nullptr, UV1s != nullptr); + + if (bIncludeData) + { + *NewBuilder->Positions = *Positions; + *NewBuilder->Normals = *Normals; + *NewBuilder->Tangents = *Tangents; + *NewBuilder->Colors = *Colors; + *NewBuilder->UV0s = *UV0s; + *NewBuilder->UV1s = *UV1s; + NewBuilder->Seek(0); + } + + return NewBuilder; + } +}; + + + +class FRuntimeMeshIndicesBuilder +{ + bool bOwnsIndexArray; + TArray* Indices; + int32 CurrentPosition; +public: + + FRuntimeMeshIndicesBuilder() + : bOwnsIndexArray(true), Indices(new TArray()), CurrentPosition(0) + { } + FRuntimeMeshIndicesBuilder(TArray* InVertices) + : bOwnsIndexArray(false), Indices(InVertices), CurrentPosition(0) + { } + FRuntimeMeshIndicesBuilder(const FRuntimeMeshIndicesBuilder& Other) = delete; + FRuntimeMeshIndicesBuilder& operator=(const FRuntimeMeshIndicesBuilder& Other) = delete; + virtual ~FRuntimeMeshIndicesBuilder() + { + if (bOwnsIndexArray) + { + delete Indices; + } + } + + virtual ERuntimeMeshVerticesBuilderType GetBuilderType() const { return ERuntimeMeshVerticesBuilderType::Component; } + + + void AddTriangle(int32 Index0, int32 Index1, int32 Index2) + { + if ((CurrentPosition + 3) >= Indices->Num()) + { + Indices->SetNum(CurrentPosition + 3); + } + + (*Indices)[CurrentPosition++] = Index0; + (*Indices)[CurrentPosition++] = Index1; + (*Indices)[CurrentPosition++] = Index2; + } + + void AddIndex(int32 Index) + { + if ((CurrentPosition + 1) >= Indices->Num()) + { + Indices->SetNum(CurrentPosition + 1); + } + (*Indices)[CurrentPosition++] = Index; + } + int32 ReadOne() const + { + return (*Indices)[const_cast(this)->CurrentPosition++]; + } + + int32 GetIndex(int32 Position) const + { + const_cast(this)->CurrentPosition = Position; + return (*Indices)[CurrentPosition]; + } + + int32 TriangleLength() const { return Length() / 3; } + int32 Length() const { return Indices->Num(); } + + bool HasRemaining() const { return CurrentPosition < Indices->Num(); } + + void Seek(int32 Position) const + { + const_cast(this)->CurrentPosition = Position; + } + void SeekEnd() const + { + Seek(Length()); + } + void Reset(int32 NewSize = 0) + { + Indices->Reset(NewSize); + CurrentPosition = 0; + } + void SetNum(int32 NewSize) + { + Indices->SetNum(NewSize); + } + + FRuntimeMeshIndicesBuilder* Clone(bool bIncludeData = true) const + { + FRuntimeMeshIndicesBuilder* NewBuilder = new FRuntimeMeshIndicesBuilder(); + + if (bIncludeData) + { + *NewBuilder->Indices = *Indices; + } + + return NewBuilder; + } + + TArray* GetIndices() + { + return Indices; + } +}; diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshComponent.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshComponent.h new file mode 100644 index 000000000..dc18de776 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshComponent.h @@ -0,0 +1,1295 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "Components/MeshComponent.h" +#include "RuntimeMeshCore.h" +#include "RuntimeMeshSection.h" +#include "RuntimeMeshGenericVertex.h" +#include "RuntimeMeshBuilder.h" +#include "PhysicsEngine/ConvexElem.h" +#include "RuntimeMeshComponent.generated.h" + +// This set of macros is only meant for argument validation as it will return out of whatever scope. +#if WITH_EDITOR +#define RMC_CHECKINGAME_LOGINEDITOR(Condition, Message, RetVal) \ + { if (!(Condition)) \ + { \ + Log(TEXT(Message), true); \ + return RetVal; \ + } } +#else +#define RMC_CHECKINGAME_LOGINEDITOR(Condition, Message, RetVal) \ + check(Condition && Message); +#endif + + +#define RMC_VALIDATE_CREATIONPARAMETERS(SectionIndex, Vertices, Triangles, RetVal) \ + RMC_CHECKINGAME_LOGINEDITOR((SectionIndex >= 0), "SectionIndex cannot be negative.", RetVal); \ + RMC_CHECKINGAME_LOGINEDITOR((Vertices.Num() > 0), "Vertices length must not be 0.", RetVal); \ + RMC_CHECKINGAME_LOGINEDITOR((Triangles.Num() > 0), "Triangles length must not be 0", RetVal); + +#define RMC_VALIDATE_CREATIONPARAMETERS_DUALBUFFER(SectionIndex, Vertices, Triangles, Positions, RetVal) \ + RMC_VALIDATE_CREATIONPARAMETERS(SectionIndex, Vertices, Triangles, RetVal) \ + RMC_CHECKINGAME_LOGINEDITOR((Positions.Num() == Vertices.Num()), "Positions must be the same length as Vertices", RetVal); + +#define RMC_VALIDATE_BOUNDINGBOX(BoundingBox, RetVal) \ + RMC_CHECKINGAME_LOGINEDITOR(BoundingBox.IsValid, "BoundingBox must be valid.", RetVal); + +#define RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, RetVal) \ + RMC_CHECKINGAME_LOGINEDITOR((SectionIndex >= 0), "SectionIndex cannot be negative.", RetVal); \ + RMC_CHECKINGAME_LOGINEDITOR((SectionIndex < MeshSections.Num() && MeshSections[SectionIndex].IsValid()), "Invalid SectionIndex.", RetVal); + +#define RMC_VALIDATE_UPDATEPARAMETERS_INTERNALSECTION(SectionIndex, RetVal) \ + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, RetVal) \ + RMC_CHECKINGAME_LOGINEDITOR((MeshSections[SectionIndex]->bIsLegacySectionType), "Section is not of legacy type.", RetVal); + +#define RMC_VALIDATE_UPDATEPARAMETERS_DUALBUFFER(SectionIndex, RetVal) \ + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, RetVal) \ + RMC_CHECKINGAME_LOGINEDITOR((MeshSections[SectionIndex]->IsDualBufferSection()), "Section is not dual buffer.", RetVal); + + + +/* +* This tick function is used to drive the collision cooker. It is enabled for one frame when we need to update collision. +* This keeps from cooking on each individual create/update section as the original PMC did +*/ +USTRUCT() +struct RUNTIMEMESHCOMPONENT_API FRuntimeMeshComponentPrePhysicsTickFunction : public FTickFunction +{ + GENERATED_USTRUCT_BODY() + + /* Target RMC to tick */ + class URuntimeMeshComponent* Target; + + virtual void ExecuteTick(float DeltaTime, ELevelTick TickType, ENamedThreads::Type CurrentThread, + const FGraphEventRef& MyCompletionGraphEvent) override; + + virtual FString DiagnosticMessage() override; +}; + +/** +* Component that allows you to specify custom triangle mesh geometry for rendering and collision. +*/ +UCLASS(HideCategories = (Object, LOD), Meta = (BlueprintSpawnableComponent)) +class RUNTIMEMESHCOMPONENT_API URuntimeMeshComponent : public UMeshComponent, public IInterface_CollisionDataProvider +{ + GENERATED_BODY() + +private: + + /* Creates an mesh section of a specified type at the specified index. */ + template + TSharedPtr CreateOrResetSection(int32 SectionIndex, bool bWantsSeparatePositionBuffer, bool bInIsLegacySectionType = false) + { + // Ensure sections array is long enough + if (SectionIndex >= MeshSections.Num()) + { + MeshSections.SetNum(SectionIndex + 1, false); + } + + // Create new section + TSharedPtr NewSection = MakeShareable(new SectionType(bWantsSeparatePositionBuffer)); + NewSection->bIsLegacySectionType = bInIsLegacySectionType; + + // Store section at index + MeshSections[SectionIndex] = NewSection; + + return NewSection; + } + + /* Creates a mesh section of an internal type meant for the generic vertex and the old PMC style API */ + TSharedPtr CreateOrResetSectionLegacyType(int32 SectionIndex, int32 NumUVChannels); + + /* Gets the material for a section or the default material if one's not provided. */ + UMaterialInterface* GetSectionMaterial(int32 Index) + { + auto Material = GetMaterial(Index); + return Material ? Material : UMaterial::GetDefaultMaterial(MD_Surface); + } + + + /* Finishes creating a section, including entering it for batch updating, or updating the RT directly */ + void CreateSectionInternal(int32 SectionIndex, ESectionUpdateFlags UpdateFlags); + + /* Finishes updating a section, including entering it for batch updating, or updating the RT directly */ + void UpdateSectionInternal(int32 SectionIndex, bool bHadVertexPositionsUpdate, bool bHadVertexUpdates, bool bHadIndexUpdates, bool bNeedsBoundsUpdate, ESectionUpdateFlags UpdateFlags); + + /* Finishes updating a sections positions (Only used if section is dual vertex buffer), including entering it for batch updating, or updating the RT directly */ + void UpdateSectionVertexPositionsInternal(int32 SectionIndex, bool bNeedsBoundsUpdate); + + /* Finishes updating a sections properties, like visible/casts shadow, a*/ + void UpdateSectionPropertiesInternal(int32 SectionIndex, bool bUpdateRequiresProxyRecreateIfStatic); + + /* Internal log helper for the templates to be able to use the internal logger */ + static void Log(FString Text, bool bIsError = false) + { + if (bIsError) + { + UE_LOG(RuntimeMeshLog, Error, TEXT("%s"), *Text); + } + else + { + UE_LOG(RuntimeMeshLog, Warning, TEXT("%s"), *Text); + } + } + +public: + URuntimeMeshComponent(const FObjectInitializer& ObjectInitializer); + + /** + * Create/replace a section. + * @param SectionIndex Index of the section to create or replace. + * @param Vertices Vertex buffer all vertex data for this section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void CreateMeshSection(int32 SectionIndex, TArray& Vertices, TArray& Triangles, bool bCreateCollision = false, + EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + // It is only safe to call these functions from the game thread. + check(IsInGameThread()); + + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_CreateMeshSection_VertexType); + + // Validate all creation parameters + RMC_VALIDATE_CREATIONPARAMETERS(SectionIndex, Vertices, Triangles, /*VoidReturn*/); + + // Create the section + TSharedPtr> Section = CreateOrResetSection>(SectionIndex, false); + + // Set the vertex and index buffers + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + Section->UpdateVertexBuffer(Vertices, nullptr, bShouldUseMove); + Section->UpdateIndexBuffer(Triangles, bShouldUseMove); + + // Track collision status and update collision information if necessary + Section->CollisionEnabled = bCreateCollision; + Section->UpdateFrequency = UpdateFrequency; + + // Finalize section. + CreateSectionInternal(SectionIndex, UpdateFlags); + } + + /** + * Create/replace a section. + * @param SectionIndex Index of the section to create or replace. + * @param Vertices Vertex buffer all vertex data for this section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void CreateMeshSection(int32 SectionIndex, TArray& Vertices, TArray& Triangles, const FBox& BoundingBox, bool bCreateCollision = false, + EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + // It is only safe to call these functions from the game thread. + check(IsInGameThread()); + + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_CreateMeshSection_VertexType_WithBoundingBox); + + // Validate all creation parameters + RMC_VALIDATE_CREATIONPARAMETERS(SectionIndex, Vertices, Triangles, /*VoidReturn*/); + RMC_VALIDATE_BOUNDINGBOX(BoundingBox, /*VoidReturn*/); + + // Create the section + TSharedPtr> Section = CreateOrResetSection>(SectionIndex, false); + + // Set the vertex and index buffers + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + Section->UpdateVertexBuffer(Vertices, &BoundingBox, bShouldUseMove); + Section->UpdateIndexBuffer(Triangles, bShouldUseMove); + + // Track collision status and update collision information if necessary + Section->CollisionEnabled = bCreateCollision; + Section->UpdateFrequency = UpdateFrequency; + + // Finalize section. + CreateSectionInternal(SectionIndex, UpdateFlags); + } + + /** + * Create/replace a section using 2 vertex buffers. One contains positions only, the other contains all other data. This allows for very efficient updates of the positions of a mesh. + * @param SectionIndex Index of the section to create or replace. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param VertexData Vertex buffer containing everything except position for each vertex. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void CreateMeshSectionDualBuffer(int32 SectionIndex, TArray& VertexPositions, TArray& VertexData, TArray& Triangles, bool bCreateCollision = false, + EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_CreateMeshSectionDualBuffer_VertexType); + + // Validate all creation parameters + RMC_VALIDATE_CREATIONPARAMETERS_DUALBUFFER(SectionIndex, VertexData, Triangles, VertexPositions, /*VoidReturn*/); + + TSharedPtr> Section = CreateOrResetSection>(SectionIndex, true); + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + Section->UpdateVertexPositionBuffer(VertexPositions, nullptr, bShouldUseMove); + Section->UpdateVertexBuffer(VertexData, nullptr, bShouldUseMove); + Section->UpdateIndexBuffer(Triangles, bShouldUseMove); + + // Track collision status and update collision information if necessary + Section->CollisionEnabled = bCreateCollision; + Section->UpdateFrequency = UpdateFrequency; + + // Finalize section. + CreateSectionInternal(SectionIndex, UpdateFlags); + } + + /** + * Create/replace a section using 2 vertex buffers. One contains positions only, the other contains all other data. This allows for very efficient updates of the positions of a mesh. + * @param SectionIndex Index of the section to create or replace. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param VertexData Vertex buffer containing everything except position for each vertex. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void CreateMeshSectionDualBuffer(int32 SectionIndex, TArray& VertexPositions, TArray& VertexData, TArray& Triangles, const FBox& BoundingBox, + bool bCreateCollision = false, EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_CreateMeshSectionDualBuffer_VertexType_WithBoundingBox); + + // Validate all creation parameters + RMC_VALIDATE_CREATIONPARAMETERS_DUALBUFFER(SectionIndex, VertexData, Triangles, VertexPositions, /*VoidReturn*/); + RMC_VALIDATE_BOUNDINGBOX(BoundingBox, /*VoidReturn*/); + + TSharedPtr> Section = CreateOrResetSection>(SectionIndex, true); + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + Section->UpdateVertexPositionBuffer(VertexPositions, &BoundingBox, bShouldUseMove); + Section->UpdateVertexBuffer(VertexData, nullptr, bShouldUseMove); + Section->UpdateIndexBuffer(Triangles, bShouldUseMove); + + // Track collision status and update collision information if necessary + Section->CollisionEnabled = bCreateCollision; + Section->UpdateFrequency = UpdateFrequency; + + // Finalize section. + CreateSectionInternal(SectionIndex, UpdateFlags); + } + + + /** + * Updates a section. This is faster than CreateMeshSection. If this is a dual buffer section, you cannot change the length of the vertices. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer all vertex data for this section, or in the case of dual buffer section it contains everything but position. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void UpdateMeshSection(int32 SectionIndex, TArray& Vertices, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSection_VertexType); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + // Check dual buffer section status + if (Section->IsDualBufferSection() && Vertices.Num() != Section->VertexBuffer.Num()) + { + Log(TEXT("UpdateMeshSection() - Vertices cannot change length unless the positions are updated as well."), true); + return; + } + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + bool bNeedsBoundsUpdate = false; + + // Update vertices if supplied + bool bUpdatedVertices = false; + if (Vertices.Num() > 0) + { + bNeedsBoundsUpdate = Section->UpdateVertexBuffer(Vertices, nullptr, bShouldUseMove); + bUpdatedVertices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Vertices empty. They will not be updated.")); + } + + // Finalize section update if we have anything to apply + if (bUpdatedVertices) + { + UpdateSectionInternal(SectionIndex, false, bUpdatedVertices, false, bNeedsBoundsUpdate, UpdateFlags); + } + } + + /** + * Updates a section. This is faster than CreateMeshSection. If this is a dual buffer section, you cannot change the length of the vertices. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer all vertex data for this section, or in the case of dual buffer section it contains everything but position. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void UpdateMeshSection(int32 SectionIndex, TArray& Vertices, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSection_VertexType_WithBoundingBox); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + RMC_VALIDATE_BOUNDINGBOX(BoundingBox, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + // Check dual buffer section status + if (Section->IsDualBufferSection() && Vertices.Num() != Section->VertexBuffer.Num()) + { + Log(TEXT("UpdateMeshSection() - Vertices cannot change length unless the positions are updated as well."), true); + return; + } + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + bool bNeedsBoundsUpdate = false; + + // Update vertices if supplied + bool bUpdatedVertices = false; + if (Vertices.Num() > 0) + { + bNeedsBoundsUpdate = Section->UpdateVertexBuffer(Vertices, &BoundingBox, bShouldUseMove); + bUpdatedVertices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Vertices empty. They will not be updated.")); + } + + // Finalize section update if we have anything to apply + if (bUpdatedVertices) + { + UpdateSectionInternal(SectionIndex, false, bUpdatedVertices, false, bNeedsBoundsUpdate, UpdateFlags); + } + } + + /** + * Updates a section. This is faster than CreateMeshSection. If this is a dual buffer section, you cannot change the length of the vertices. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer all vertex data for this section, or in the case of dual buffer section it contains everything but position. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void UpdateMeshSection(int32 SectionIndex, TArray& Vertices, TArray& Triangles, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSection_VertexType_WithTriangles); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + // Check dual buffer section status + if (Section->IsDualBufferSection() && Vertices.Num() != Section->VertexBuffer.Num()) + { + Log(TEXT("UpdateMeshSection() - Vertices cannot change length unless the positions are updated as well."), true); + return; + } + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + bool bNeedsBoundsUpdate = false; + + // Update vertices if supplied + bool bUpdatedVertices = false; + if (Vertices.Num() > 0) + { + bNeedsBoundsUpdate = Section->UpdateVertexBuffer(Vertices, nullptr, bShouldUseMove); + bUpdatedVertices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Vertices empty. They will not be updated.")); + } + + // Update triangles if supplied + bool bUpdatedIndices = false; + if (Triangles.Num() > 0) + { + Section->UpdateIndexBuffer(Triangles, bShouldUseMove); + bUpdatedIndices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Triangles empty. They will not be updated.")); + } + + // Finalize section update if we have anything to apply + if (bUpdatedVertices || bUpdatedIndices) + { + UpdateSectionInternal(SectionIndex, false, bUpdatedVertices, bUpdatedIndices, bNeedsBoundsUpdate, UpdateFlags); + } + } + + /** + * Updates a section. This is faster than CreateMeshSection. If this is a dual buffer section, you cannot change the length of the vertices. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer all vertex data for this section, or in the case of dual buffer section it contains everything but position. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void UpdateMeshSection(int32 SectionIndex, TArray& Vertices, TArray& Triangles, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSection_VertexType_WithTrianglesAndBoundinBox); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + RMC_VALIDATE_BOUNDINGBOX(BoundingBox, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + // Check dual buffer section status + if (Section->IsDualBufferSection() && Vertices.Num() != Section->VertexBuffer.Num()) + { + Log(TEXT("UpdateMeshSection() - Vertices cannot change length unless the positions are updated as well."), true); + return; + } + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + bool bNeedsBoundsUpdate = false; + + // Update vertices if supplied + bool bUpdatedVertices = false; + if (Vertices.Num() > 0) + { + bNeedsBoundsUpdate = Section->UpdateVertexBuffer(Vertices, &BoundingBox, bShouldUseMove); + bUpdatedVertices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Vertices empty. They will not be updated.")); + } + + // Update indices if supplied + bool bUpdatedIndices = false; + if (Triangles.Num() > 0) + { + Section->UpdateIndexBuffer(Triangles, bShouldUseMove); + bUpdatedIndices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Triangles empty. They will not be updated.")); + } + + // Finalize section update if we have anything to apply + if (bUpdatedVertices || bUpdatedIndices) + { + UpdateSectionInternal(SectionIndex, false, bUpdatedVertices, bUpdatedIndices, bNeedsBoundsUpdate, UpdateFlags); + } + } + + + /** + * Updates a section. This is faster than CreateMeshSection. This is only for dual buffer sections. You cannot change the length of positions or vertex data unless you specify both together. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param VertexData Vertex buffer containing everything except position for each vertex. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void UpdateMeshSection(int32 SectionIndex, TArray& VertexPositions, TArray& VertexData, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSection_Dual_VertexType); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_DUALBUFFER(SectionIndex, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + // Check dual buffer section status + if (Section->IsDualBufferSection() && + VertexData.Num() != Section->VertexBuffer.Num() && + VertexPositions.Num() != VertexData.Num()) + { + Log(TEXT("UpdateMeshSection() - Vertices cannot change length unless the positions are updated as well."), true); + return; + } + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + bool bNeedsBoundsUpdate = false; + + // Update vertex positions if supplied + bool bUpdatedVertexPositions = false; + if (VertexPositions.Num() > 0) + { + bNeedsBoundsUpdate = Section->UpdateVertexPositionBuffer(VertexPositions, nullptr, bShouldUseMove); + bUpdatedVertexPositions = true; + } + else + { + Log(TEXT("UpdatemeshSection() - Vertex positions empty. They will not be updated.")); + } + + // Update vertices if supplied + bool bUpdatedVertices = false; + if (VertexData.Num() > 0) + { + Section->UpdateVertexBuffer(VertexData, nullptr, bShouldUseMove); + bUpdatedVertices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Vertices empty. They will not be updated.")); + } + + // Finalize section update if we have anything to apply + if (bUpdatedVertexPositions || bUpdatedVertices) + { + UpdateSectionInternal(SectionIndex, bUpdatedVertexPositions, bUpdatedVertices, false, bNeedsBoundsUpdate, UpdateFlags); + } + } + + /** + * Updates a section. This is faster than CreateMeshSection. This is only for dual buffer sections. You cannot change the length of positions or vertex data unless you specify both together. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param VertexData Vertex buffer containing everything except position for each vertex. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void UpdateMeshSection(int32 SectionIndex, TArray& VertexPositions, TArray& VertexData, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSection_Dual_VertexType_WithBoundingBox); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_DUALBUFFER(SectionIndex, /*VoidReturn*/); + RMC_VALIDATE_BOUNDINGBOX(BoundingBox, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + // Check dual buffer section status + if (Section->IsDualBufferSection() && + VertexData.Num() != Section->VertexBuffer.Num() && + VertexPositions.Num() != VertexData.Num()) + { + Log(TEXT("UpdateMeshSection() - Vertices cannot change length unless the positions are updated as well."), true); + return; + } + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + bool bNeedsBoundsUpdate = false; + + // Update vertex positions if supplied + bool bUpdatedVertexPositions = false; + if (VertexPositions.Num() > 0) + { + bNeedsBoundsUpdate = Section->UpdateVertexPositionBuffer(VertexPositions, &BoundingBox, bShouldUseMove); + bUpdatedVertexPositions = true; + } + else + { + Log(TEXT("UpdatemeshSection() - Vertex positions empty. They will not be updated.")); + } + + // Update vertices if supplied + bool bUpdatedVertices = false; + if (VertexData.Num() > 0) + { + Section->UpdateVertexBuffer(VertexData, nullptr, bShouldUseMove); + bUpdatedVertices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Vertices empty. They will not be updated.")); + } + + // Finalize section update if we have anything to apply + if (bUpdatedVertexPositions || bUpdatedVertices) + { + UpdateSectionInternal(SectionIndex, bUpdatedVertexPositions, bUpdatedVertices, false, bNeedsBoundsUpdate, UpdateFlags); + } + } + + /** + * Updates a section. This is faster than CreateMeshSection. This is only for dual buffer sections. You cannot change the length of positions or vertex data unless you specify both together. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param VertexData Vertex buffer containing everything except position for each vertex. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void UpdateMeshSection(int32 SectionIndex, TArray& VertexPositions, TArray& VertexData, TArray& Triangles, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSection_Dual_VertexType_WithTriangles); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_DUALBUFFER(SectionIndex, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + // Check dual buffer section status + if (Section->IsDualBufferSection() && + VertexData.Num() != Section->VertexBuffer.Num() && + VertexPositions.Num() != VertexData.Num()) + { + Log(TEXT("UpdateMeshSection() - Vertices cannot change length unless the positions are updated as well."), true); + return; + } + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + bool bNeedsBoundsUpdate = false; + + // Update vertex positions if supplied + bool bUpdatedVertexPositions = false; + if (VertexPositions.Num() > 0) + { + bNeedsBoundsUpdate = Section->UpdateVertexPositionBuffer(VertexPositions, nullptr, bShouldUseMove); + bUpdatedVertexPositions = true; + } + else + { + Log(TEXT("UpdatemeshSection() - Vertex positions empty. They will not be updated.")); + } + + // Update vertices if supplied + bool bUpdatedVertices = false; + if (VertexData.Num() > 0) + { + Section->UpdateVertexBuffer(VertexData, nullptr, bShouldUseMove); + bUpdatedVertices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Vertices empty. They will not be updated.")); + } + + // Update triangles if supplied + bool bUpdatedIndices = false; + if (Triangles.Num() > 0) + { + Section->UpdateIndexBuffer(Triangles, bShouldUseMove); + bUpdatedIndices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Triangles empty. They will not be updated.")); + } + + // Finalize section update if we have anything to apply + if (bUpdatedVertexPositions || bUpdatedVertices || bUpdatedIndices) + { + UpdateSectionInternal(SectionIndex, bUpdatedVertexPositions, bUpdatedVertices, bUpdatedIndices, bNeedsBoundsUpdate, UpdateFlags); + } + } + + /** + * Updates a section. This is faster than CreateMeshSection. This is only for dual buffer sections. You cannot change the length of positions or vertex data unless you specify both together. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param VertexData Vertex buffer containing everything except position for each vertex. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param UpdateFlags Flags pertaining to this particular update. + */ + template + void UpdateMeshSection(int32 SectionIndex, TArray& VertexPositions, TArray& VertexData, TArray& Triangles, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None) + { + SCOPE_CYCLE_COUNTER(STAT_RuntimeMesh_UpdateMeshSection_Dual_VertexType_WithTrianglesAndBoundinBox); + + // Validate all update parameters + RMC_VALIDATE_UPDATEPARAMETERS_DUALBUFFER(SectionIndex, /*VoidReturn*/); + RMC_VALIDATE_BOUNDINGBOX(BoundingBox, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + // Check dual buffer section status + if (Section->IsDualBufferSection() && + VertexData.Num() != Section->VertexBuffer.Num() && + VertexPositions.Num() != VertexData.Num()) + { + Log(TEXT("UpdateMeshSection() - Vertices cannot change length unless the positions are updated as well."), true); + return; + } + + bool bShouldUseMove = (UpdateFlags & ESectionUpdateFlags::MoveArrays) != ESectionUpdateFlags::None; + bool bNeedsBoundsUpdate = false; + + // Update vertex positions if supplied + bool bUpdatedVertexPositions = false; + if (VertexPositions.Num() > 0) + { + bNeedsBoundsUpdate = Section->UpdateVertexPositionBuffer(VertexPositions, &BoundingBox, bShouldUseMove); + bUpdatedVertexPositions = true; + } + else + { + Log(TEXT("UpdatemeshSection() - Vertex positions empty. They will not be updated.")); + } + + // Update vertices if supplied + bool bUpdatedVertices = false; + if (VertexData.Num() > 0) + { + Section->UpdateVertexBuffer(VertexData, nullptr, bShouldUseMove); + bUpdatedVertices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Vertices empty. They will not be updated.")); + } + + // Update indices if supplied + bool bUpdatedIndices = false; + if (Triangles.Num() > 0) + { + Section->UpdateIndexBuffer(Triangles, bShouldUseMove); + bUpdatedIndices = true; + } + else + { + Log(TEXT("UpdateMeshSection() - Triangles empty. They will not be updated.")); + } + + // Finalize section update if we have anything to apply + if (bUpdatedVertexPositions || bUpdatedVertices || bUpdatedIndices) + { + UpdateSectionInternal(SectionIndex, bUpdatedVertexPositions, bUpdatedVertices, bUpdatedIndices, bNeedsBoundsUpdate, UpdateFlags); + } + } + + + /** + * Updates a sections position buffer only. This cannot be used on a non-dual buffer section. You cannot change the length of the vertex position buffer with this function. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param UpdateFlags Flags pertaining to this particular update. + */ + void UpdateMeshSectionPositionsImmediate(int32 SectionIndex, TArray& VertexPositions, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + /** + * Updates a sections position buffer only. This cannot be used on a non-dual buffer section. You cannot change the length of the vertex position buffer with this function. + * @param SectionIndex Index of the section to update. + * @param VertexPositions Vertex buffer containing only the position information for each vertex. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + * @param UpdateFlags Flags pertaining to this particular update. + */ + void UpdateMeshSectionPositionsImmediate(int32 SectionIndex, TArray& VertexPositions, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + + /** + * Starts an in place update of vertex positions. + * @param SectionIndex Index of the section to update. + */ + TArray* BeginMeshSectionPositionUpdate(int32 SectionIndex); + + /** + * Finishes an in place update of vertex positions. + * This will push the update to the GPU and calculate the new Bounding Box + * @param SectionIndex Index of the section to update. + */ + void EndMeshSectionPositionUpdate(int32 SectionIndex); + + /** + * Finishes an in place update of vertex positions. + * This will push the update to the GPU + * @param SectionIndex Index of the section to update. + * @param BoundingBox The bounds of this section. Faster than the RMC automatically calculating it. + */ + void EndMeshSectionPositionUpdate(int32 SectionIndex, const FBox& BoundingBox); + + + template + void BeginMeshSectionUpdate(int32 SectionIndex, TArray*& Vertices) + { + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + Vertices = &Section->VertexBuffer; + } + + template + void BeginMeshSectionUpdate(int32 SectionIndex, TArray*& Vertices, TArray*& Triangles) + { + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + Vertices = &Section->VertexBuffer; + Triangles = &Section->IndexBuffer; + } + + template + void BeginMeshSectionUpdate(int32 SectionIndex, TArray*& Positions, TArray*& Vertices) + { + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + Positions = &Section->PositionVertexBuffer; + Vertices = &Section->VertexBuffer; + } + + template + void BeginMeshSectionUpdate(int32 SectionIndex, TArray*& Positions, TArray*& Vertices, TArray*& Triangles) + { + RMC_VALIDATE_UPDATEPARAMETERS(SectionIndex, /*VoidReturn*/); + + // Validate section type + MeshSections[SectionIndex]->GetVertexType()->EnsureEquals(); + + // Cast section to correct type + TSharedPtr> Section = StaticCastSharedPtr>(MeshSections[SectionIndex]); + + Positions = &Section->PositionVertexBuffer; + Vertices = &Section->VertexBuffer; + Triangles = &Section->IndexBuffer; + } + + + void BeginMeshSectionUpdate(int32 SectionIndex, IRuntimeMeshVerticesBuilder*& Vertices, FRuntimeMeshIndicesBuilder*& Indices); + + void EndMeshSectionUpdate(int32 SectionIndex, ERuntimeMeshBuffer UpdatedBuffers, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + void EndMeshSectionUpdate(int32 SectionIndex, ERuntimeMeshBuffer UpdatedBuffers, const FBox& BoundingBox, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + + /* + * Gets a readonly pointer to the sections mesh data. + * To be able to edit the section data use BegineMeshSectionUpdate() + */ + void GetSectionMesh(int32 SectionIndex, const IRuntimeMeshVerticesBuilder*& Vertices, const FRuntimeMeshIndicesBuilder*& Indices); + + + + + + /** + * Create/replace a section. + * @param SectionIndex Index of the section to create or replace. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + */ + void CreateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, + const TArray& UV0, const TArray& Colors, const TArray& Tangents, bool bCreateCollision = false, + EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + /** + * Create/replace a section. + * @param SectionIndex Index of the section to create or replace. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param UV1 Optional array of texture co-ordinates for each vertex (UV Channel 1). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + */ + void CreateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, + const TArray& UV0, const TArray& UV1, const TArray& Colors, const TArray& Tangents, + bool bCreateCollision = false, EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + + /** + * Updates a section. This is faster than CreateMeshSection. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV1 Optional array of texture co-ordinates for each vertex (UV Channel 1). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + */ + void UpdateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Normals, const TArray& UV0, + const TArray& Colors, const TArray& Tangents, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + /** + * Updates a section. This is faster than CreateMeshSection. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param UV1 Optional array of texture co-ordinates for each vertex (UV Channel 1). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + */ + void UpdateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Normals, const TArray& UV0, + const TArray& UV1, const TArray& Colors, const TArray& Tangents, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + /** + * Updates a section. This is faster than CreateMeshSection. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + */ + void UpdateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, + const TArray& UV0, const TArray& Colors, const TArray& Tangents, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + /** + * Updates a section. This is faster than CreateMeshSection. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param UV1 Optional array of texture co-ordinates for each vertex (UV Channel 1). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + */ + void UpdateMeshSection(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, + const TArray& UV0, const TArray& UV1, const TArray& Colors, const TArray& Tangents, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + + + /** + * Create/replace a section. + * @param SectionIndex Index of the section to create or replace. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param UV1 Optional array of texture co-ordinates for each vertex (UV Channel 1). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param bCalculateNormalTangent Indicates whether normal/tangent information should be calculated automatically. This can add significant cost. + * @param bGenerateTessellationTriangles Indicates whether tessellation supporting triangles should be calculated. This can add significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh", meta = (DisplayName = "Create Mesh Section", AutoCreateRefTerm = "Normals,Tangents,UV0,UV1,Colors")) + void CreateMeshSection_Blueprint(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, + const TArray& Tangents, const TArray& UV0, const TArray& UV1, const TArray& Colors, + bool bCreateCollision, bool bCalculateNormalTangent, bool bGenerateTessellationTriangles, EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average); + + /** + * Updates a section. This is faster than CreateMeshSection. If you change the vertices count, you must update the other components. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer of all vertex positions to use for this mesh section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param Normals Optional array of normal vectors for each vertex. If supplied, must be same length as Vertices array. + * @param Tangents Optional array of tangent vector for each vertex. If supplied, must be same length as Vertices array. + * @param UV0 Optional array of texture co-ordinates for each vertex (UV Channel 0). If supplied, must be same length as Vertices array. + * @param UV1 Optional array of texture co-ordinates for each vertex (UV Channel 1). If supplied, must be same length as Vertices array. + * @param Colors Optional array of colors for each vertex. If supplied, must be same length as Vertices array. + * @param bCalculateNormalTangent Indicates whether normal/tangent information should be calculated automatically. This can add significant cost. + * @param bGenerateTessellationTriangles Indicates whether tessellation supporting triangles should be calculated. This can add significant cost. + */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh", meta = (DisplayName = "Update Mesh Section", AutoCreateRefTerm = "Triangles,Normals,Tangents,UV0,UV1,Colors")) + void UpdateMeshSection_Blueprint(int32 SectionIndex, const TArray& Vertices, const TArray& Triangles, const TArray& Normals, + const TArray& Tangents, const TArray& UV0, const TArray& UV1, const TArray& Colors, bool bCalculateNormalTangent, bool bGenerateTessellationTriangles); + + + + /** + * Create/replace a section. + * @param SectionIndex Index of the section to create or replace. + * @param Vertices Vertex buffer all vertex data for this section. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param bCreateCollision Indicates whether collision should be created for this section. This adds significant cost. + * @param UpdateFrequency Indicates how frequently the section will be updated. Allows the RMC to optimize itself to a particular use. + * @param UpdateFlags Flags pertaining to this particular update. + */ + void CreateMeshSection(int32 SectionIndex, IRuntimeMeshVerticesBuilder& Vertices, FRuntimeMeshIndicesBuilder& Indices, bool bCreateCollision = false, + EUpdateFrequency UpdateFrequency = EUpdateFrequency::Average, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + + /** + * Updates a section. This is faster than CreateMeshSection. If this is a dual buffer section, you cannot change the length of the vertices. + * @param SectionIndex Index of the section to update. + * @param Vertices Vertex buffer all vertex data for this section, or in the case of dual buffer section it contains everything but position. + * @param Triangles Index buffer indicating which vertices make up each triangle. Length must be a multiple of 3. + * @param UpdateFlags Flags pertaining to this particular update. + */ + void UpdateMeshSection(int32 SectionIndex, IRuntimeMeshVerticesBuilder& Vertices, FRuntimeMeshIndicesBuilder& Indices, ESectionUpdateFlags UpdateFlags = ESectionUpdateFlags::None); + + + + + /** Clear a section of the procedural mesh. */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void ClearMeshSection(int32 SectionIndex); + + /** Clear all mesh sections and reset to empty state */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void ClearAllMeshSections(); + + + /** Sets the tessellation triangles needed to correctly support tessellation on a section. */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void SetSectionTessellationTriangles(int32 SectionIndex, const TArray& TessellationTriangles, bool bShouldMoveArray = false); + + + + + + + /** Gets the bounding box of a specific section */ + bool GetSectionBoundingBox(int32 SectionIndex, FBox& OutBoundingBox); + + + /** Control visibility of a particular section */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void SetMeshSectionVisible(int32 SectionIndex, bool bNewVisibility); + + /** Returns whether a particular section is currently visible */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + bool IsMeshSectionVisible(int32 SectionIndex) const; + + + /** Control whether a particular section casts a shadow */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void SetMeshSectionCastsShadow(int32 SectionIndex, bool bNewCastsShadow); + + /** Returns whether a particular section is currently casting shadows */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + bool IsMeshSectionCastingShadows(int32 SectionIndex) const; + + + /** Control whether a particular section has collision */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void SetMeshSectionCollisionEnabled(int32 SectionIndex, bool bNewCollisionEnabled); + + /** Returns whether a particular section has collision */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + bool IsMeshSectionCollisionEnabled(int32 SectionIndex); + + + /** Returns number of sections currently created for this component */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + int32 GetNumSections() const; + + /** Returns whether a particular section currently exists */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + bool DoesSectionExist(int32 SectionIndex) const; + + /** Returns first available section index */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + int32 FirstAvailableMeshSectionIndex() const; + + /** Returns the last in use section index */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + int32 GetLastSectionIndex() const; + + + /** Sets the geometry for a collision only section */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void SetMeshCollisionSection(int32 CollisionSectionIndex, const TArray& Vertices, const TArray& Triangles); + + /** Clears the geometry for a collision only section */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void ClearMeshCollisionSection(int32 CollisionSectionIndex); + + /** Clears the geometry for ALL collision only sections */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void ClearAllMeshCollisionSections(); + + + + /** Add simple collision convex to this component */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void AddCollisionConvexMesh(TArray ConvexVerts); + + /** Add simple collision convex to this component */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void ClearCollisionConvexMeshes(); + + /** Function to replace _all_ simple collision in one go */ + void SetCollisionConvexMeshes(const TArray< TArray >& ConvexMeshes); + + + /** Begins a batch of updates, delays updates until you call EndBatchUpdates() */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void BeginBatchUpdates() + { + BatchState.StartBatch(); + } + + /** Ends a batch of updates started with BeginBatchUpdates() */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void EndBatchUpdates(); + + /** Runs any pending collision cook (Not required to call this. This is only if you need to make sure all changes are cooked before doing something)*/ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + void CookCollisionNow(); + + + + /** + * Controls whether the complex (Per poly) geometry should be treated as 'simple' collision. + * Should be set to false if this component is going to be given simple collision and simulated. + */ + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "RuntimeMesh") + bool bUseComplexAsSimpleCollision; + + /** + * Controls whether the mesh data should be serialized with the component. + */ + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "RuntimeMesh") + bool bShouldSerializeMeshData; + + /* + * The current mode of the collision cooker + * WARNING: This feature will only work in engine version 4.14 or above! + */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RuntimeMesh") + ERuntimeMeshCollisionCookingMode CollisionMode; + + /** Collision data */ + UPROPERTY(Instanced) + class UBodySetup* BodySetup; + + /* Serialize the entire RMC to the supplied archive. */ + void SerializeRMC(FArchive& Ar); + + /* Serialize the designated section into the supplied archive. */ + void SerializeRMCSection(FArchive& Ar, int32 SectionIndex); + +private: + + + //~ Begin Interface_CollisionDataProvider Interface + virtual bool GetPhysicsTriMeshData(struct FTriMeshCollisionData* CollisionData, bool InUseAllTriData) override; + virtual bool ContainsPhysicsTriMeshData(bool InUseAllTriData) const override; + virtual bool WantsNegXTriMesh() override { return false; } + //~ End Interface_CollisionDataProvider Interface + + + //~ Begin USceneComponent Interface. + virtual FBoxSphereBounds CalcBounds(const FTransform& LocalToWorld) const override; + virtual bool IsSupportedForNetworking() const override + { + return true; + } + //~ Begin USceneComponent Interface. + + //~ Begin UPrimitiveComponent Interface. + virtual FPrimitiveSceneProxy* CreateSceneProxy() override; + virtual class UBodySetup* GetBodySetup() override; + //~ End UPrimitiveComponent Interface. + + //~ Begin UMeshComponent Interface. + virtual int32 GetNumMaterials() const override; + //~ End UMeshComponent Interface. + + + + /** Update LocalBounds member from the local box of each section */ + void UpdateLocalBounds(bool bMarkRenderTransform = true); + /** Ensure ProcMeshBodySetup is allocated and configured */ + void EnsureBodySetupCreated(); + /** Mark collision data as dirty, and re-create on instance if necessary */ + void UpdateCollision(); + + /* Marks the collision for an end of frame update */ + void MarkCollisionDirty(); + + /* Cooks the new collision mesh updating the body */ + void BakeCollision(); + + void UpdateNavigation(); + + + /* Serializes this component */ + virtual void Serialize(FArchive& Ar) override; + void SerializeInternal(FArchive& Ar, bool bForceSaveAll = false); + void SerializeLegacy(FArchive& Ar); + + /* Does post load fixups */ + virtual void PostLoad() override; + + /* Registers the pre-physics tick function used to cook new meshes when necessary */ + virtual void RegisterComponentTickFunctions(bool bRegister) override; + + + /* Current state of a batch update. */ + FRuntimeMeshBatchUpdateState BatchState; + + /* Is the collision in need of a recook? */ + bool bCollisionDirty; + + /** Array of sections of mesh */ + TArray MeshSections; + + /* Array of collision only mesh sections*/ + UPROPERTY(Transient) + TArray MeshCollisionSections; + + /** Convex shapes used for simple collision */ + UPROPERTY(Transient) + TArray ConvexCollisionSections; + + /** Local space bounds of mesh */ + UPROPERTY(Transient) + FBoxSphereBounds LocalBounds; + + /* Tick function used to cook collision when needed*/ + UPROPERTY(Transient) + FRuntimeMeshComponentPrePhysicsTickFunction PrePhysicsTick; + + + friend class FRuntimeMeshSceneProxy; + friend struct FRuntimeMeshComponentPrePhysicsTickFunction; +}; diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshComponentPlugin.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshComponentPlugin.h new file mode 100644 index 000000000..c213ca9ae --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshComponentPlugin.h @@ -0,0 +1,38 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "ModuleManager.h" + +/** +* The public interface to this module +*/ +class IRuntimeMeshComponentPlugin : public IModuleInterface +{ + +public: + + /** + * Singleton-like access to this module's interface. This is just for convenience! + * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. + * + * @return Returns singleton instance, loading the module on demand if needed + */ + static inline IRuntimeMeshComponentPlugin& Get() + { + return FModuleManager::LoadModuleChecked< IRuntimeMeshComponentPlugin >("RuntimeMeshComponentPlugin"); + } + + /** + * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. + * + * @return True if the module is loaded and ready to use + */ + static inline bool IsAvailable() + { + return FModuleManager::Get().IsModuleLoaded("RuntimeMeshComponentPlugin"); + } +}; + + +DECLARE_LOG_CATEGORY_EXTERN(RuntimeMeshLog, Log, All); \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshCore.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshCore.h new file mode 100644 index 000000000..76c126c35 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshCore.h @@ -0,0 +1,422 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "Engine.h" +#include "Components/MeshComponent.h" +#include "RuntimeMeshProfiling.h" +#include "RuntimeMeshVersion.h" +#include "Runtime/Launch/Resources/Version.h" +#include "RuntimeMeshCore.generated.h" + +class FRuntimeMeshVertexFactory; + + +template +struct FRuntimeMeshVertexTraits +{ +private: + template struct ChT; + + struct FallbackPosition { FVector Position; }; + struct DerivedPosition : T, FallbackPosition { }; + template static char(&PositionCheck(ChT*))[1]; + template static char(&PositionCheck(...))[2]; + + struct FallbackNormal { FPackedRGBA16N Normal; }; + struct DerivedNormal : T, FallbackNormal { }; + template static char(&NormalCheck(ChT*))[1]; + template static char(&NormalCheck(...))[2]; + + struct FallbackTangent { FPackedRGBA16N Tangent; }; + struct DerivedTangent : T, FallbackTangent { }; + template static char(&TangentCheck(ChT*))[1]; + template static char(&TangentCheck(...))[2]; + + struct FallbackColor { FColor Color; }; + struct DerivedColor : T, FallbackColor { }; + template static char(&ColorCheck(ChT*))[1]; + template static char(&ColorCheck(...))[2]; + + struct FallbackUV0 { FVector2D UV0; }; + struct DerivedUV0 : T, FallbackUV0 { }; + template static char(&UV0Check(ChT*))[1]; + template static char(&UV0Check(...))[2]; + + struct FallbackUV1 { FVector2D UV1; }; + struct DerivedUV1 : T, FallbackUV1 { }; + template static char(&UV1Check(ChT*))[1]; + template static char(&UV1Check(...))[2]; + + struct FallbackUV2 { FVector2D UV2; }; + struct DerivedUV2 : T, FallbackUV2 { }; + template static char(&UV2Check(ChT*))[1]; + template static char(&UV2Check(...))[2]; + + struct FallbackUV3 { FVector2D UV3; }; + struct DerivedUV3 : T, FallbackUV3 { }; + template static char(&UV3Check(ChT*))[1]; + template static char(&UV3Check(...))[2]; + + struct FallbackUV4 { FVector2D UV4; }; + struct DerivedUV4 : T, FallbackUV4 { }; + template static char(&UV4Check(ChT*))[1]; + template static char(&UV4Check(...))[2]; + + struct FallbackUV5 { FVector2D UV5; }; + struct DerivedUV5 : T, FallbackUV5 { }; + template static char(&UV5Check(ChT*))[1]; + template static char(&UV5Check(...))[2]; + + struct FallbackUV6 { FVector2D UV6; }; + struct DerivedUV6 : T, FallbackUV6 { }; + template static char(&UV6Check(ChT*))[1]; + template static char(&UV6Check(...))[2]; + + struct FallbackUV7 { FVector2D UV7; }; + struct DerivedUV7 : T, FallbackUV7 { }; + template static char(&UV7Check(ChT*))[1]; + template static char(&UV7Check(...))[2]; + + template + struct IsSameType + { + static const bool Value = false; + }; + + template + struct IsSameType + { + static const bool Value = true; + }; + + template + struct TangentBasisHighPrecisionDetector + { + static const bool Value = false; + }; + + template + struct TangentBasisHighPrecisionDetector + { + static const bool Value = IsSameType().Normal), FPackedRGBA16N>::Value; + }; + + template + struct TangentBasisHighPrecisionDetector + { + static const bool Value = IsSameType().Tangent), FPackedRGBA16N>::Value; + }; + + template + struct UVChannelHighPrecisionDetector + { + static const bool Value = false; + }; + + template + struct UVChannelHighPrecisionDetector + { + static const bool Value = IsSameType().UV0), FVector2D>::Value; + }; + + +public: + static const bool HasPosition = sizeof(PositionCheck(0)) == 2; + static const bool HasNormal = sizeof(NormalCheck(0)) == 2; + static const bool HasTangent = sizeof(TangentCheck(0)) == 2; + static const bool HasColor = sizeof(ColorCheck(0)) == 2; + static const bool HasUV0 = sizeof(UV0Check(0)) == 2; + static const bool HasUV1 = sizeof(UV1Check(0)) == 2; + static const bool HasUV2 = sizeof(UV2Check(0)) == 2; + static const bool HasUV3 = sizeof(UV3Check(0)) == 2; + static const bool HasUV4 = sizeof(UV4Check(0)) == 2; + static const bool HasUV5 = sizeof(UV5Check(0)) == 2; + static const bool HasUV6 = sizeof(UV6Check(0)) == 2; + static const bool HasUV7 = sizeof(UV7Check(0)) == 2; + static const int32 NumUVChannels = + (HasUV0 ? 1 : 0) + + (HasUV1 ? 1 : 0) + + (HasUV2 ? 1 : 0) + + (HasUV3 ? 1 : 0) + + (HasUV4 ? 1 : 0) + + (HasUV5 ? 1 : 0) + + (HasUV6 ? 1 : 0) + + (HasUV7 ? 1 : 0); + + + + static const bool HasHighPrecisionNormals = TangentBasisHighPrecisionDetector::Value; + static const bool HasHighPrecisionUVs = UVChannelHighPrecisionDetector::Value; +}; + + + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 12 +/** Structure definition of a vertex */ +using RuntimeMeshVertexStructure = FLocalVertexFactory::FDataType; +#else +/** Structure definition of a vertex */ +using RuntimeMeshVertexStructure = FLocalVertexFactory::DataType; +#endif + +#define RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, VertexType, Member, MemberType) \ + STRUCTMEMBER_VERTEXSTREAMCOMPONENT(&VertexBuffer, VertexType, Member, MemberType) + +/* Update frequency for a section. Used to optimize for update or render speed*/ +UENUM(BlueprintType) +enum class EUpdateFrequency : uint8 +{ + /* Tries to skip recreating the scene proxy if possible. */ + Average UMETA(DisplayName = "Average"), + /* Tries to skip recreating the scene proxy if possible and optimizes the buffers for frequent updates. */ + Frequent UMETA(DisplayName = "Frequent"), + /* If the component is static it will try to use the static rendering path (this will force a recreate of the scene proxy) */ + Infrequent UMETA(DisplayName = "Infrequent") +}; + +/* Control flags for update actions */ +enum class ESectionUpdateFlags +{ + None = 0x0, + + /** + * This will use move-assignment when copying the supplied vertices/triangles into the section. + * This is faster as it doesn't require copying the data. + * + * CAUTION: This means that your copy of the arrays will be cleared! + */ + MoveArrays = 0x1, + + /** + * Should the normals and tangents be calculated automatically? + * To do this manually see RuntimeMeshLibrary::CalculateTangentsForMesh() + */ + CalculateNormalTangent = 0x2, + + /** + * Should the tessellation indices be calculated to support tessellation? + * To do this manually see RuntimeMeshLibrary::GenerateTessellationIndexBuffer() + */ + CalculateTessellationIndices = 0x4, + +}; +ENUM_CLASS_FLAGS(ESectionUpdateFlags) + +/** +* Struct used to specify a tangent vector for a vertex +* The Y tangent is computed from the cross product of the vertex normal (Tangent Z) and the TangentX member. +*/ +USTRUCT(BlueprintType) +struct FRuntimeMeshTangent +{ + GENERATED_USTRUCT_BODY() + + /** Direction of X tangent for this vertex */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Tangent) + FVector TangentX; + + /** Bool that indicates whether we should flip the Y tangent when we compute it using cross product */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Tangent) + bool bFlipTangentY; + + FRuntimeMeshTangent() + : TangentX(1.f, 0.f, 0.f) + , bFlipTangentY(false) + {} + + FRuntimeMeshTangent(float X, float Y, float Z, bool bInFlipTangentY = false) + : TangentX(X, Y, Z) + , bFlipTangentY(bInFlipTangentY) + {} + + FRuntimeMeshTangent(FVector InTangentX, bool bInFlipTangentY = false) + : TangentX(InTangentX) + , bFlipTangentY(bInFlipTangentY) + {} + + void AdjustNormal(FPackedNormal& Normal) const + { + Normal.Vector.W = bFlipTangentY ? 0 : 255; + } + + void AdjustNormal(FPackedRGBA16N& Normal) const + { + Normal.W = bFlipTangentY ? 0 : 65535; + } +}; + +/* +* Configuration flag for the collision cooking to prioritize cooking speed or collision performance. +*/ +UENUM(BlueprintType) +enum class ERuntimeMeshCollisionCookingMode : uint8 +{ + /* + * Favors runtime collision performance of cooking speed. + * This means that cooking a new mesh will be slower, but collision will be faster. + */ + CollisionPerformance UMETA(DisplayName = "Collision Performance"), + + /* + * Favors cooking speed over collision performance. + * This means that cooking a new mesh will be faster, but collision will be slower. + */ + CookingPerformance UMETA(DisplayName = "Cooking Performance"), +}; + +/* The different buffers within the Runtime Mesh Component */ +enum class ERuntimeMeshBuffer +{ + None = 0x0, + Vertices = 0x1, + Triangles = 0x2, + Positions = 0x4 +}; +ENUM_CLASS_FLAGS(ERuntimeMeshBuffer) + + +USTRUCT() +struct FRuntimeMeshCollisionSection +{ + GENERATED_BODY() + + UPROPERTY() + TArray VertexBuffer; + + UPROPERTY() + TArray IndexBuffer; + + void Reset() + { + VertexBuffer.Empty(); + IndexBuffer.Empty(); + } + + friend FArchive& operator <<(FArchive& Ar, FRuntimeMeshCollisionSection& Section) + { + Ar << Section.VertexBuffer; + Ar << Section.IndexBuffer; + return Ar; + } +}; + +USTRUCT() +struct FRuntimeConvexCollisionSection +{ + GENERATED_BODY() + + UPROPERTY() + TArray VertexBuffer; + + UPROPERTY() + FBox BoundingBox; + + void Reset() + { + VertexBuffer.Empty(); + BoundingBox.Init(); + } + + friend FArchive& operator <<(FArchive& Ar, FRuntimeConvexCollisionSection& Section) + { + Ar << Section.VertexBuffer; + Ar << Section.BoundingBox; + return Ar; + } +}; + + + + + + +struct RUNTIMEMESHCOMPONENT_API FRuntimeMeshVertexTypeInfo +{ + const FString TypeName; + const FGuid TypeGuid; + + FRuntimeMeshVertexTypeInfo(FString Name, FGuid Guid) : TypeName(Name), TypeGuid(Guid) { } + + virtual bool Equals(const FRuntimeMeshVertexTypeInfo* Other) const + { + return TypeGuid == Other->TypeGuid; + } + + template + void EnsureEquals() const + { + if (!Equals(&Type::TypeInfo)) + { + ThrowMismatchException(Type::TypeInfo.TypeName); + } + } + + virtual class FRuntimeMeshSectionInterface* CreateSection(bool bInNeedsPositionOnlyBuffer) const = 0; +protected: + + void ThrowMismatchException(const FString& OtherName) const + { + UE_LOG(RuntimeMeshLog, Fatal, TEXT("Vertex Type Mismatch: %s and %s"), *TypeName, *OtherName); + } +}; + + +/* +* Internal container used to track known vertex types, for serialization and other purposes. +*/ +class RUNTIMEMESHCOMPONENT_API FRuntimeMeshVertexTypeRegistrationContainer +{ + struct VertexRegistration + { + const FRuntimeMeshVertexTypeInfo* const TypeInfo; + uint32 ReferenceCount; + + VertexRegistration(const FRuntimeMeshVertexTypeInfo* const InTypeInfo) + : TypeInfo(InTypeInfo), ReferenceCount(1) { } + }; + TMap Registrations; + +public: + + static FRuntimeMeshVertexTypeRegistrationContainer& GetInstance(); + + void Register(const FRuntimeMeshVertexTypeInfo* InType); + + void UnRegister(const FRuntimeMeshVertexTypeInfo* InType); + + const FRuntimeMeshVertexTypeInfo* GetVertexType(FGuid Key) const; + +}; + + +template +class FRuntimeMeshVertexTypeRegistration : FNoncopyable +{ +public: + FRuntimeMeshVertexTypeRegistration() + { + FRuntimeMeshVertexTypeRegistrationContainer::GetInstance().Register(&VertexType::TypeInfo); + } + + ~FRuntimeMeshVertexTypeRegistration() + { + FRuntimeMeshVertexTypeRegistrationContainer::GetInstance().UnRegister(&VertexType::TypeInfo); + } +}; + + + + +#define DECLARE_RUNTIMEMESH_CUSTOMVERTEX_TYPEINFO(TypeName, Guid) \ + struct FRuntimeMeshVertexTypeInfo_##TypeName : public FRuntimeMeshVertexTypeInfo \ + { \ + FRuntimeMeshVertexTypeInfo_##TypeName() : FRuntimeMeshVertexTypeInfo(TEXT(#TypeName), Guid) { } \ + }; \ + static const FRuntimeMeshVertexTypeInfo_##TypeName TypeInfo; + +#define DEFINE_RUNTIMEMESH_CUSTOMVERTEX_TYPEINFO(TypeName) \ + const TypeName::FRuntimeMeshVertexTypeInfo_##TypeName TypeName::TypeInfo = TypeName::FRuntimeMeshVertexTypeInfo_##TypeName(); \ + FRuntimeMeshVertexTypeRegistration<##TypeName> FRuntimeMeshVertexTypeInfoRegistration_##TypeName(&##TypeName::TypeInfo); + + diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshGenericVertex.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshGenericVertex.h new file mode 100644 index 000000000..b50e6824c --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshGenericVertex.h @@ -0,0 +1,1270 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "RuntimeMeshCore.h" + +////////////////////////////////////////////////////////////////////////// +// +// This file contains a generic vertex structure capable of efficiently representing a vertex +// with any combination of position, normal, tangent, color, and 0-8 uv channels. +// +// To get around an issue with MSVC and potentially other compilers not performing +// empty base class optimizations (EBO) to children in multiple inheritance, +// this vertex is built via a tree of inheritance using partial specializations. +// +// At each tier of this tree partial specialization will choose which components +// we need to add in, thereby removing entire inherited classes when we don't need them. +// +// Structure: +// FRuntimeMeshVertex +// / \ +// FRuntimeMeshPositionNormalTangentComponentCombiner FRuntimeMeshColorUVComponentCombiner +// / \ / \ +// FRuntimeMeshPositionComponent \ FRuntimeMeshColorComponent \ +// \ \ +// FRuntimeMeshNormalTangentComponents FRuntimeMeshUVComponents +// +// +// +// +// +// Example use: (This defines a vertex with all components and 1 UV with default precision for normal/tangent and UV) +// +// using MyVertex = FRuntimeMeshVertex; +// +// MyVertex Vertex; +// Vertex.Position = FVector(0,0,0); +// Vertex.Normal = FVector(0,0,0); +// Vertex.UV0 = FVector2D(0,0); +// +// +////////////////////////////////////////////////////////////////////////// + + +template +RuntimeMeshVertexStructure CreateVertexStructure(const FVertexBuffer& VertexBuffer); + + +////////////////////////////////////////////////////////////////////////// +// Texture Component Type Selector +////////////////////////////////////////////////////////////////////////// + +enum class ERuntimeMeshVertexUVType +{ + Default = 1, + HighPrecision = 2, +}; + +template +struct FRuntimeMeshVertexUVsTypeSelector; + +template<> +struct FRuntimeMeshVertexUVsTypeSelector +{ + typedef FVector2DHalf UVsType; + static const EVertexElementType VertexElementType1Channel = VET_Half2; + static const EVertexElementType VertexElementType2Channel = VET_Half4; + +}; + +template<> +struct FRuntimeMeshVertexUVsTypeSelector +{ + typedef FVector2D UVsType; + static const EVertexElementType VertexElementType1Channel = VET_Float2; + static const EVertexElementType VertexElementType2Channel = VET_Float4; +}; + +////////////////////////////////////////////////////////////////////////// +// Texture Component +////////////////////////////////////////////////////////////////////////// + +/* Defines the UV coordinates for a vertex (Defaulted to 0 channels) */ +template struct FRuntimeMeshUVComponents +{ + static_assert(TextureChannels >= 0 && TextureChannels <= 8, "You must have between 0 and 8 (inclusive) UV channels"); +}; + +/* Defines the UV coordinates for a vertex (Specialized to 0 channels) */ +template struct FRuntimeMeshUVComponents<0, UVType> +{ + FRuntimeMeshUVComponents() { } + FRuntimeMeshUVComponents(EForceInit) { } +}; + +/* Defines the UV coordinates for a vertex (Specialized to 1 channels) */ +template struct FRuntimeMeshUVComponents<1, UVType> +{ + UVType UV0; + + FRuntimeMeshUVComponents() { } + FRuntimeMeshUVComponents(EForceInit) : UV0(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0) : UV0(InUV0) { } +}; + +/* Defines the UV coordinates for a vertex (Specialized to 2 channels) */ +template struct FRuntimeMeshUVComponents<2, UVType> +{ + UVType UV0; + UVType UV1; + + FRuntimeMeshUVComponents() { } + FRuntimeMeshUVComponents(EForceInit) : UV0(0, 0), UV1(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0) : UV0(InUV0), UV1(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1) : UV0(InUV0), UV1(InUV1) { } +}; + +/* Defines the UV coordinates for a vertex (Specialized to 3 channels) */ +template struct FRuntimeMeshUVComponents<3, UVType> +{ + UVType UV0; + UVType UV1; + UVType UV2; + + FRuntimeMeshUVComponents() { } + FRuntimeMeshUVComponents(EForceInit) : + UV0(0, 0), UV1(0, 0), UV2(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0) : + UV0(InUV0), UV1(0, 0), UV2(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1) : + UV0(InUV0), UV1(InUV1), UV2(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2) : + UV0(InUV0), UV1(InUV1), UV2(InUV2) { } +}; + +/* Defines the UV coordinates for a vertex (Specialized to 4 channels) */ +template struct FRuntimeMeshUVComponents<4, UVType> +{ + UVType UV0; + UVType UV1; + UVType UV2; + UVType UV3; + + FRuntimeMeshUVComponents() { } + FRuntimeMeshUVComponents(EForceInit) : + UV0(0, 0), UV1(0, 0), UV2(0, 0), UV3(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0) : + UV0(InUV0), UV1(0, 0), UV2(0, 0), UV3(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1) : + UV0(InUV0), UV1(InUV1), UV2(0, 0), UV3(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3) { } +}; + +/* Defines the UV coordinates for a vertex (Specialized to 5 channels) */ +template struct FRuntimeMeshUVComponents<5, UVType> +{ + UVType UV0; + UVType UV1; + UVType UV2; + UVType UV3; + UVType UV4; + + FRuntimeMeshUVComponents() { } + FRuntimeMeshUVComponents(EForceInit) : + UV0(0, 0), UV1(0, 0), UV2(0, 0), UV3(0, 0), UV4(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0) : + UV0(InUV0), UV1(0, 0), UV2(0, 0), UV3(0, 0), UV4(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1) : + UV0(InUV0), UV1(InUV1), UV2(0, 0), UV3(0, 0), UV4(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(0, 0), UV4(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3, + const FVector2D& InUV4) : UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(InUV4) { } +}; + +/* Defines the UV coordinates for a vertex (Specialized to 6 channels, Half Precision) */ +template struct FRuntimeMeshUVComponents<6, UVType> +{ + UVType UV0; + UVType UV1; + UVType UV2; + UVType UV3; + UVType UV4; + UVType UV5; + + FRuntimeMeshUVComponents() { } + FRuntimeMeshUVComponents(EForceInit) : + UV0(0, 0), UV1(0, 0), UV2(0, 0), UV3(0, 0), UV4(0, 0), UV5(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0) : + UV0(InUV0), UV1(0, 0), UV2(0, 0), UV3(0, 0), UV4(0, 0), UV5(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1) : + UV0(InUV0), UV1(InUV1), UV2(0, 0), UV3(0, 0), UV4(0, 0), UV5(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(0, 0), UV4(0, 0), UV5(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(0, 0), UV5(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3, + const FVector2D& InUV4) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(InUV4), UV5(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3, + const FVector2D& InUV4, const FVector2D& InUV5) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(InUV4), UV5(InUV5) { } +}; + +/* Defines the UV coordinates for a vertex (Specialized to 7 channels) */ +template struct FRuntimeMeshUVComponents<7, UVType> +{ + UVType UV0; + UVType UV1; + UVType UV2; + UVType UV3; + UVType UV4; + UVType UV5; + UVType UV6; + + FRuntimeMeshUVComponents() { } + FRuntimeMeshUVComponents(EForceInit) : + UV0(0, 0), UV1(0, 0), UV2(0, 0), UV3(0, 0), UV4(0, 0), UV5(0, 0), UV6(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0) : + UV0(InUV0), UV1(0, 0), UV2(0, 0), UV3(0, 0), UV4(0, 0), UV5(0, 0), UV6(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1) : + UV0(InUV0), UV1(InUV1), UV2(0, 0), UV3(0, 0), UV4(0, 0), UV5(0, 0), UV6(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(0, 0), UV4(0, 0), UV5(0, 0), UV6(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(0, 0), UV5(0, 0), UV6(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3, + const FVector2D& InUV4) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(InUV4), UV5(0, 0), UV6(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3, + const FVector2D& InUV4, const FVector2D& InUV5) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(InUV4), UV5(InUV5), UV6(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3, + const FVector2D& InUV4, const FVector2D& InUV5, const FVector2D& InUV6) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(InUV4), UV5(InUV5), UV6(InUV6) { } +}; + +/* Defines the UV coordinates for a vertex (Specialized to 8 channels) */ +template struct FRuntimeMeshUVComponents<8, UVType> +{ + UVType UV0; + UVType UV1; + UVType UV2; + UVType UV3; + UVType UV4; + UVType UV5; + UVType UV6; + UVType UV7; + + FRuntimeMeshUVComponents() { } + FRuntimeMeshUVComponents(EForceInit) : + UV0(0, 0), UV1(0, 0), UV2(0, 0), UV3(0, 0), UV4(0, 0), UV5(0, 0), UV6(0, 0), UV7(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0) : + UV0(InUV0), UV1(0, 0), UV2(0, 0), UV3(0, 0), UV4(0, 0), UV5(0, 0), UV6(0, 0), UV7(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1) : + UV0(InUV0), UV1(InUV1), UV2(0, 0), UV3(0, 0), UV4(0, 0), UV5(0, 0), UV6(0, 0), UV7(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(0, 0), UV4(0, 0), UV5(0, 0), UV6(0, 0), UV7(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(0, 0), UV5(0, 0), UV6(0, 0), UV7(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3, + const FVector2D& InUV4) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(InUV4), UV5(0, 0), UV6(0, 0), UV7(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3, + const FVector2D& InUV4, const FVector2D& InUV5) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(InUV4), UV5(InUV5), UV6(0, 0), UV7(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3, + const FVector2D& InUV4, const FVector2D& InUV5, const FVector2D& InUV6) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(InUV4), UV5(InUV5), UV6(InUV6), UV7(0, 0) { } + FRuntimeMeshUVComponents(const FVector2D& InUV0, const FVector2D& InUV1, const FVector2D& InUV2, const FVector2D& InUV3, + const FVector2D& InUV4, const FVector2D& InUV5, const FVector2D& InUV6, const FVector2D& InUV7) : + UV0(InUV0), UV1(InUV1), UV2(InUV2), UV3(InUV3), UV4(InUV4), UV5(InUV5), UV6(InUV6), UV7(InUV7) { } +}; + + +////////////////////////////////////////////////////////////////////////// +// Tangent Basis Component Type Selector +////////////////////////////////////////////////////////////////////////// + +enum class ERuntimeMeshVertexTangentBasisType +{ + Default = 1, + HighPrecision = 2, +}; + +template +struct FRuntimeMeshVertexTangentTypeSelector; + +template<> +struct FRuntimeMeshVertexTangentTypeSelector +{ + typedef FPackedNormal TangentType; + static const EVertexElementType VertexElementType = VET_PackedNormal; +}; + +template<> +struct FRuntimeMeshVertexTangentTypeSelector +{ + typedef FPackedRGBA16N TangentType; + static const EVertexElementType VertexElementType = VET_UShort4N; +}; + + +////////////////////////////////////////////////////////////////////////// +// Tangent Basis Components +////////////////////////////////////////////////////////////////////////// + +template +struct FRuntimeMeshNormalTangentComponents; + +struct RuntimeMeshNormalUtil +{ + static void SetNormalW(FPackedNormal& Target, float Determinant) + { + Target.Vector.W = Determinant < 0.0f ? 0 : 255; + } + + static void SetNormalW(FPackedRGBA16N& Target, float Determinant) + { + Target.W = Determinant < 0.0f ? 0 : 65535; + } +}; + +template +struct FRuntimeMeshNormalTangentComponents +{ + TangentType Normal; + + FRuntimeMeshNormalTangentComponents() { } + FRuntimeMeshNormalTangentComponents(EForceInit) : Normal(FVector4(0.0f, 0.0f, 1.0f, 1.0f)) { } + + void SetNormalAndTangent(const FVector& InNormal, const FRuntimeMeshTangent& InTangent) + { + Normal = InNormal; + + InTangent.AdjustNormal(Normal); + } + + void SetNormalAndTangent(const FVector& InTangentX, const FVector& InTangentY, const FVector& InTangentZ) + { + Normal = InTangentZ; + + // store determinant of basis in w component of normal vector + RuntimeMeshNormalUtil::SetNormalW(Normal, GetBasisDeterminantSign(InTangentX, InTangentY, InTangentZ)); + } +}; + +template +struct FRuntimeMeshNormalTangentComponents +{ + TangentType Tangent; + + FRuntimeMeshNormalTangentComponents() { } + FRuntimeMeshNormalTangentComponents(EForceInit) : Tangent(FVector(1.0f, 0.0f, 0.0f)) { } + + void SetNormalAndTangent(const FVector& InNormal, const FRuntimeMeshTangent& InTangent) + { + Tangent = InTangent.TangentX; + } + + void SetNormalAndTangent(const FVector& InTangentX, const FVector& InTangentY, const FVector& InTangentZ) + { + Tangent = InTangentX; + } +}; + +template +struct FRuntimeMeshNormalTangentComponents +{ + TangentType Normal; + TangentType Tangent; + + FRuntimeMeshNormalTangentComponents() { } + FRuntimeMeshNormalTangentComponents(EForceInit) : Normal(FVector4(0.0f, 0.0f, 1.0f, 1.0f)), Tangent(FVector(1.0f, 0.0f, 0.0f)) { } + + void SetNormalAndTangent(const FVector& InNormal, const FRuntimeMeshTangent& InTangent) + { + Normal = InNormal; + Tangent = InTangent.TangentX; + + InTangent.AdjustNormal(Normal); + } + + void SetNormalAndTangent(const FVector& InTangentX, const FVector& InTangentY, const FVector& InTangentZ) + { + Normal = InTangentZ; + Tangent = InTangentX; + + // store determinant of basis in w component of normal vector + RuntimeMeshNormalUtil::SetNormalW(Normal, GetBasisDeterminantSign(InTangentX, InTangentY, InTangentZ)); + } +}; + + + +////////////////////////////////////////////////////////////////////////// +// Position Component +////////////////////////////////////////////////////////////////////////// + +template +struct FRuntimeMeshPositionComponent; + +template<> +struct FRuntimeMeshPositionComponent +{ + FVector Position; + + FRuntimeMeshPositionComponent() { } + FRuntimeMeshPositionComponent(EForceInit) : Position(0.0f, 0.0f, 0.0f) { } +}; + + + +////////////////////////////////////////////////////////////////////////// +// Color Component +////////////////////////////////////////////////////////////////////////// + +template +struct FRuntimeMeshColorComponent; + +template<> +struct FRuntimeMeshColorComponent +{ + FColor Color; + + FRuntimeMeshColorComponent() { } + FRuntimeMeshColorComponent(EForceInit) : Color(FColor::White) { } +}; + + + + +////////////////////////////////////////////////////////////////////////// +// Position Normal Tangent Combiner +////////////////////////////////////////////////////////////////////////// + +template +struct FRuntimeMeshPositionNormalTangentComponentCombiner : + public FRuntimeMeshPositionComponent, + public FRuntimeMeshNormalTangentComponents +{ + FRuntimeMeshPositionNormalTangentComponentCombiner() { } + FRuntimeMeshPositionNormalTangentComponentCombiner(EForceInit) + : FRuntimeMeshPositionComponent(EForceInit::ForceInit) + , FRuntimeMeshNormalTangentComponents(EForceInit::ForceInit) + { } +}; + +template +struct FRuntimeMeshPositionNormalTangentComponentCombiner : + public FRuntimeMeshPositionComponent +{ + FRuntimeMeshPositionNormalTangentComponentCombiner() { } + FRuntimeMeshPositionNormalTangentComponentCombiner(EForceInit) + : FRuntimeMeshPositionComponent(EForceInit::ForceInit) + { } +}; + +template +struct FRuntimeMeshPositionNormalTangentComponentCombiner : + public FRuntimeMeshNormalTangentComponents +{ + FRuntimeMeshPositionNormalTangentComponentCombiner() { } + FRuntimeMeshPositionNormalTangentComponentCombiner(EForceInit) + : FRuntimeMeshNormalTangentComponents(EForceInit::ForceInit) + { } +}; + +template +struct FRuntimeMeshPositionNormalTangentComponentCombiner; + + + +////////////////////////////////////////////////////////////////////////// +// Color UV Combiner +////////////////////////////////////////////////////////////////////////// + +template +struct FRuntimeMeshColorUVComponentCombiner : + public FRuntimeMeshColorComponent, + public FRuntimeMeshUVComponents +{ + FRuntimeMeshColorUVComponentCombiner() { } + FRuntimeMeshColorUVComponentCombiner(EForceInit) + : FRuntimeMeshColorComponent(EForceInit::ForceInit) + , FRuntimeMeshUVComponents(EForceInit::ForceInit) + { } +}; + +template +struct FRuntimeMeshColorUVComponentCombiner : + public FRuntimeMeshUVComponents +{ + FRuntimeMeshColorUVComponentCombiner() { } + FRuntimeMeshColorUVComponentCombiner(EForceInit) + : FRuntimeMeshUVComponents(EForceInit::ForceInit) + { } +}; + +template +struct FRuntimeMeshColorUVComponentCombiner : + public FRuntimeMeshColorComponent +{ + FRuntimeMeshColorUVComponentCombiner() { } + FRuntimeMeshColorUVComponentCombiner(EForceInit) + : FRuntimeMeshColorComponent(EForceInit::ForceInit) + { } +}; + +template +struct FRuntimeMeshColorUVComponentCombiner; + + + + + + + +////////////////////////////////////////////////////////////////////////// +// Template Vertex Type Info Structure +////////////////////////////////////////////////////////////////////////// + +template +struct FRuntimeMeshVertexTypeInfo_GenericVertex : public FRuntimeMeshVertexTypeInfo +{ + FRuntimeMeshVertexTypeInfo_GenericVertex(FString VertexName) : + FRuntimeMeshVertexTypeInfo( + FString::Printf(TEXT("RuntimeMeshVertex<%d, %d, %d, %d, %d, %d, %d>"), WantsPosition, WantsNormal, WantsTangent, WantsColor, NumWantedUVChannels, (int32)NormalTangentType, (int32)UVType), + GetVertexGuid(VertexName)) { } + + static FGuid GetVertexGuid(FString VertexName) + { + uint32 TypeID = 0; + TypeID = (TypeID << 1) | (WantsPosition ? 1 : 0); + TypeID = (TypeID << 1) | (WantsNormal ? 1 : 0); + TypeID = (TypeID << 1) | (WantsTangent ? 1 : 0); + TypeID = (TypeID << 3) | (uint32)NormalTangentType; + TypeID = (TypeID << 1) | (WantsColor ? 1 : 0); + TypeID = (TypeID << 6) | (NumWantedUVChannels & 0xFF); + TypeID = (TypeID << 3) | (uint32)UVType; + + FGuid Guid = FGuid(0x00FFEB44, 0x31094597, /*0x93918032*/ GetTypeHash(VertexName), (0x78C3 << 16) | TypeID); + return Guid; + } +}; + +////////////////////////////////////////////////////////////////////////// +// Macros to create a custom vertex type based on the generic vertex and implement some common constructors +////////////////////////////////////////////////////////////////////////// + + + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_POSITION_true Position = FVector(0.0f, 0.0f, 0.0f); +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_POSITION_false +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_POSITION(HasPosition) RUNTIMEMESH_VERTEX_DEFAULTINIT_POSITION_##HasPosition + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_NORMAL_true Normal = FVector4(0.0f, 0.0f, 1.0f, 1.0f); +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_NORMAL_false +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_NORMAL(HasNormal) RUNTIMEMESH_VERTEX_DEFAULTINIT_NORMAL_##HasNormal + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_TANGENT_true Tangent = FVector(1.0f, 0.0f, 0.0f); +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_TANGENT_false +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_TANGENT(HasTangent) RUNTIMEMESH_VERTEX_DEFAULTINIT_TANGENT_##HasTangent + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_COLOR_true Color = FColor::White; +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_COLOR_false +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_COLOR(HasColor) RUNTIMEMESH_VERTEX_DEFAULTINIT_COLOR_##HasColor + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_0 + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_1 \ + UV0 = FVector2D(0.0f, 0.0f); + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_2 \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_1 \ + UV1 = FVector2D(0.0f, 0.0f); + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_3 \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_2 \ + UV2 = FVector2D(0.0f, 0.0f); + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_4 \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_3 \ + UV3 = FVector2D(0.0f, 0.0f); + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_5 \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_4 \ + UV4 = FVector2D(0.0f, 0.0f); + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_6 \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_5 \ + UV5 = FVector2D(0.0f, 0.0f); + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_7 \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_6 \ + UV6 = FVector2D(0.0f, 0.0f); + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_8 \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_7 \ + UV7 = FVector2D(0.0f, 0.0f); + +#define RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNELS(NumChannels) RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNEL_##NumChannels + + + + +#define RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_0 +#define RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_1 , const FVector2D& InUV0 = FVector2D::ZeroVector +#define RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_2 RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_1 , const FVector2D& InUV1 = FVector2D::ZeroVector +#define RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_3 RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_2 , const FVector2D& InUV2 = FVector2D::ZeroVector +#define RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_4 RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_3 , const FVector2D& InUV3 = FVector2D::ZeroVector +#define RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_5 RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_4 , const FVector2D& InUV4 = FVector2D::ZeroVector +#define RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_6 RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_5 , const FVector2D& InUV5 = FVector2D::ZeroVector +#define RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_7 RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_6 , const FVector2D& InUV6 = FVector2D::ZeroVector +#define RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_8 RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_7 , const FVector2D& InUV7 = FVector2D::ZeroVector + +#define RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNELS(NumChannels) RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNEL_##NumChannels + + + + +#define RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_0 + +#define RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_1 \ + UV0 = InUV0; + +#define RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_2 \ + RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_1 \ + UV1 = InUV1; + +#define RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_3 \ + RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_2 \ + UV2 = InUV2; + +#define RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_4 \ + RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_3 \ + UV3 = InUV3; + +#define RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_5 \ + RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_4 \ + UV4 = InUV4; + +#define RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_6 \ + RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_5 \ + UV5 = InUV5; + +#define RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_7 \ + RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_6 \ + UV6 = InUV6; + +#define RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_8 \ + RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_7 \ + UV7 = InUV7; + +#define RUNTIMEMESH_VERTEX_INIT_UVCHANNELS(NumChannels) RUNTIMEMESH_VERTEX_INIT_UVCHANNEL_##NumChannels + + + +#define RUNTIMEMESH_VERTEX_PARAMETER_POSITION_true const FVector& InPosition, +#define RUNTIMEMESH_VERTEX_PARAMETER_POSITION_false +#define RUNTIMEMESH_VERTEX_PARAMETER_POSITION(NeedsPosition) RUNTIMEMESH_VERTEX_PARAMETER_POSITION_##NeedsPosition + +#define RUNTIMEMESH_VERTEX_INIT_POSITION_true Position = InPosition; +#define RUNTIMEMESH_VERTEX_INIT_POSITION_false +#define RUNTIMEMESH_VERTEX_INIT_POSITION(NeedsPosition) RUNTIMEMESH_VERTEX_INIT_POSITION_##NeedsPosition + + +// PreProcessor IF with pass through for all the constructor arguments +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, Condition, IfTrue) \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF_##Condition(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, IfTrue) +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF_false(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, IfTrue) +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF_true(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, IfTrue) IfTrue + + +// Implementation of Position only Constructor +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + VertexName(const FVector& InPosition) \ + { \ + RUNTIMEMESH_VERTEX_INIT_POSITION(NeedsPosition) \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_NORMAL(NeedsNormal) \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_TANGENT(NeedsTangent) \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_COLOR(NeedsColor) \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNELS(UVChannelCount) \ + } + +// Defines the Position Constuctor if it's wanted +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsPosition, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + ) + +// Implementation of Position/Normal Constructor +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + VertexName(RUNTIMEMESH_VERTEX_PARAMETER_POSITION(NeedsPosition) const FVector& InNormal) \ + { \ + RUNTIMEMESH_VERTEX_INIT_POSITION(NeedsPosition) \ + Normal = InNormal; \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_TANGENT(NeedsTangent) \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_COLOR(NeedsColor) \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNELS(UVChannelCount) \ + } + +// Defines the Position/Normal Constuctor if it's wanted +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsNormal, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + ) + +// Implementation of Position/Color Constructor +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_COLOR_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + VertexName(RUNTIMEMESH_VERTEX_PARAMETER_POSITION(NeedsPosition) const FColor& InColor) \ + { \ + RUNTIMEMESH_VERTEX_INIT_POSITION(NeedsPosition) \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_NORMAL(NeedsNormal) \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_TANGENT(NeedsTangent) \ + Color = InColor; \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_UVCHANNELS(UVChannelCount) \ + } + +// Defines the Position/Color Constructor if it's wanted +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_COLOR(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsColor, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_COLOR_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + ) + + + + + + + + +// Implementation of Position/Normal/Tangent Constructor +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL_TANGENT_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + VertexName(RUNTIMEMESH_VERTEX_PARAMETER_POSITION(NeedsPosition) const FVector& InNormal, const FRuntimeMeshTangent& InTangent RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNELS(UVChannelCount)) \ + { \ + RUNTIMEMESH_VERTEX_INIT_POSITION(NeedsPosition) \ + Normal = InNormal; \ + Tangent = InTangent.TangentX; \ + InTangent.AdjustNormal(Normal); \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_COLOR(NeedsColor) \ + RUNTIMEMESH_VERTEX_INIT_UVCHANNELS(UVChannelCount) \ + } + +// Defines the Position/Normal/Tangent Constructor if it's wanted +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL_TANGENT(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsNormal, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsTangent, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL_TANGENT_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + ) \ + ) + + +// Implementation of Position/TangentX/TangentY/TangentZ Constructor +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_TANGENTX_TANGENTY_TANGENTZ_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + VertexName(RUNTIMEMESH_VERTEX_PARAMETER_POSITION(NeedsPosition) const FVector& InTangentX, const FVector& InTangentY, const FVector& InTangentZ RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNELS(UVChannelCount)) \ + { \ + RUNTIMEMESH_VERTEX_INIT_POSITION(NeedsPosition) \ + SetNormalAndTangent(InTangentX, InTangentY, InTangentZ); \ + RUNTIMEMESH_VERTEX_DEFAULTINIT_COLOR(NeedsColor) \ + RUNTIMEMESH_VERTEX_INIT_UVCHANNELS(UVChannelCount) \ + } + +// Defines the Position/TangentX/TangentY/TangentZ Constructor if it's wanted +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_TANGENTX_TANGENTY_TANGENTZ(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsNormal, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsTangent, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_TANGENTX_TANGENTY_TANGENTZ_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + ) \ + ) + + + + + + + +// Implementation of Position/Normal/Tangent Constructor +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL_TANGENT_COLOR_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + VertexName(RUNTIMEMESH_VERTEX_PARAMETER_POSITION(NeedsPosition) const FVector& InNormal, const FRuntimeMeshTangent& InTangent, const FColor& InColor RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNELS(UVChannelCount)) \ + { \ + RUNTIMEMESH_VERTEX_INIT_POSITION(NeedsPosition) \ + Normal = InNormal; \ + Tangent = InTangent.TangentX; \ + InTangent.AdjustNormal(Normal); \ + Color = InColor; \ + RUNTIMEMESH_VERTEX_INIT_UVCHANNELS(UVChannelCount) \ + } + +// Defines the Position/Normal/Tangent Constructor if it's wanted +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL_TANGENT_COLOR(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsNormal, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsTangent, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsColor, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL_TANGENT_COLOR_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + ) \ + ) \ + ) + + +// Implementation of Position/TangentX/TangentY/TangentZ Constructor +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_TANGENTX_TANGENTY_TANGENTZ_COLOR_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + VertexName(RUNTIMEMESH_VERTEX_PARAMETER_POSITION(NeedsPosition) const FVector& InTangentX, const FVector& InTangentY, const FVector& InTangentZ, const FColor& InColor RUNTIMEMESH_VERTEX_PARAMETER_UVCHANNELS(UVChannelCount)) \ + { \ + RUNTIMEMESH_VERTEX_INIT_POSITION(NeedsPosition) \ + SetNormalAndTangent(InTangentX, InTangentY, InTangentZ); \ + Color = InColor; \ + RUNTIMEMESH_VERTEX_INIT_UVCHANNELS(UVChannelCount) \ + } + +// Defines the Position/TangentX/TangentY/TangentZ Constructor if it's wanted +#define RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_TANGENTX_TANGENTY_TANGENTZ_COLOR(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsNormal, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsTangent, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_DEFINITION_IF(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, NeedsColor, \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_TANGENTX_TANGENTY_TANGENTZ_COLOR_IMPLEMENTATION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + ) \ + ) \ + ) + + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_POSITION_true Ar << V.Position; +#define RUNTIMEMESH_VERTEX_SERIALIZATION_POSITION_false +#define RUNTIMEMESH_VERTEX_SERIALIZATION_POSITION(NeedsPosition) RUNTIMEMESH_VERTEX_SERIALIZATION_POSITION_##NeedsPosition + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_NORMAL_true Ar << V.Normal; +#define RUNTIMEMESH_VERTEX_SERIALIZATION_NORMAL_false +#define RUNTIMEMESH_VERTEX_SERIALIZATION_NORMAL(NeedsNormal) RUNTIMEMESH_VERTEX_SERIALIZATION_NORMAL_##NeedsNormal + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_TANGENT_true Ar << V.Tangent; +#define RUNTIMEMESH_VERTEX_SERIALIZATION_TANGENT_false +#define RUNTIMEMESH_VERTEX_SERIALIZATION_TANGENT(NeedsTangent) RUNTIMEMESH_VERTEX_SERIALIZATION_TANGENT_##NeedsTangent + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_COLOR_true Ar << V.Color; +#define RUNTIMEMESH_VERTEX_SERIALIZATION_COLOR_false +#define RUNTIMEMESH_VERTEX_SERIALIZATION_COLOR(NeedsColor) RUNTIMEMESH_VERTEX_SERIALIZATION_COLOR_##NeedsColor + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_0 + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_1 \ + Ar << V.UV0; + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_2 \ + RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_1 \ + Ar << V.UV1; + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_3 \ + RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_2 \ + Ar << V.UV2; + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_4 \ + RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_3 \ + Ar << V.UV3; + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_5 \ + RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_4 \ + Ar << V.UV4; + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_6 \ + RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_5 \ + Ar << V.UV5; + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_7 \ + RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_6 \ + Ar << V.UV6; + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_8 \ + RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_7 \ + Ar << V.UV7; + +#define RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNELS(NumChannels) RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNEL_##NumChannels + +#define RUNTIMEMESH_VERTEX_SERIALIZER(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount) \ + friend FArchive& operator<<(FArchive& Ar, VertexName & V) \ + { \ + RUNTIMEMESH_VERTEX_SERIALIZATION_POSITION(NeedsPosition) \ + RUNTIMEMESH_VERTEX_SERIALIZATION_NORMAL(NeedsNormal) \ + RUNTIMEMESH_VERTEX_SERIALIZATION_TANGENT(NeedsTangent) \ + RUNTIMEMESH_VERTEX_SERIALIZATION_COLOR(NeedsColor) \ + RUNTIMEMESH_VERTEX_SERIALIZATION_UVCHANNELS(UVChannelCount) \ + return Ar; \ + } + + + +#define DECLARE_RUNTIME_MESH_VERTEXINTERNAL(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, APIQUALIFIER) \ + struct APIQUALIFIER FRuntimeMeshVertexTypeInfo_##VertexName \ + : public FRuntimeMeshVertexTypeInfo_GenericVertex \ + { \ + FRuntimeMeshVertexTypeInfo_##VertexName() \ + : FRuntimeMeshVertexTypeInfo_GenericVertex(TEXT("")) { } \ + \ + virtual class FRuntimeMeshSectionInterface* CreateSection(bool bInNeedsPositionOnlyBuffer) const override; \ + }; \ + struct APIQUALIFIER VertexName : public FRuntimeMeshVertex \ + { \ + static const FRuntimeMeshVertexTypeInfo_##VertexName TypeInfo; \ + \ + typedef FRuntimeMeshVertex Super; \ + \ + VertexName() { } \ + \ + VertexName(EForceInit) : Super(EForceInit::ForceInit) { } \ + \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_COLOR(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL_TANGENT(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_TANGENTX_TANGENTY_TANGENTZ(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_NORMAL_TANGENT_COLOR(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + \ + RUNTIMEMESH_VERTEX_CONSTRUCTOR_POSITION_TANGENTX_TANGENTY_TANGENTZ_COLOR(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + \ + RUNTIMEMESH_VERTEX_SERIALIZER(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount) \ + }; + +#define DECLARE_RUNTIME_MESH_VERTEX(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType) \ + DECLARE_RUNTIME_MESH_VERTEXINTERNAL(VertexName, NeedsPosition, NeedsNormal, NeedsTangent, NeedsColor, UVChannelCount, TangentsType, UVChannelType, /**/) + +/* Used only for the generic vertex to create the type registration */ +#define DEFINE_RUNTIME_MESH_VERTEX(VertexName) \ + const FRuntimeMeshVertexTypeInfo_##VertexName VertexName::TypeInfo; \ + FRuntimeMeshVertexTypeRegistration< VertexName > FRuntimeMeshVertexTypeInfoRegistration_##VertexName; \ + FRuntimeMeshSectionInterface* FRuntimeMeshVertexTypeInfo_##VertexName::CreateSection(bool bInNeedsPositionOnlyBuffer) const \ + { \ + return new FRuntimeMeshSection< VertexName >(bInNeedsPositionOnlyBuffer); \ + } + +////////////////////////////////////////////////////////////////////////// +// Template Vertex +////////////////////////////////////////////////////////////////////////// + +// This version uses both sub combiners since there's at least 1 thing we need from both. +template +struct FRuntimeMeshVertex : + public FRuntimeMeshPositionNormalTangentComponentCombiner::TangentType>, + public FRuntimeMeshColorUVComponentCombiner::UVsType> +{ + // Make sure something is enabled + static_assert((WantsPosition || WantsNormal || WantsTangent || WantsColor || NumWantedUVChannels > 0), "Invalid configuration... You must have at least 1 component enabled."); + + // Get vertex structure + static RuntimeMeshVertexStructure GetVertexStructure(const FVertexBuffer& VertexBuffer); + + FRuntimeMeshVertex() { } + FRuntimeMeshVertex(EForceInit) + : FRuntimeMeshPositionNormalTangentComponentCombiner::TangentType>(EForceInit::ForceInit) + , FRuntimeMeshColorUVComponentCombiner::UVsType>(EForceInit::ForceInit) + { } +}; + +// This version only uses the position/normal/tangent combiner as we don't need anything from the other +template +struct FRuntimeMeshVertex : + public FRuntimeMeshPositionNormalTangentComponentCombiner::TangentType> +{ + // Get vertex structure + static RuntimeMeshVertexStructure GetVertexStructure(const FVertexBuffer& VertexBuffer); + + FRuntimeMeshVertex() { } + FRuntimeMeshVertex(EForceInit) + : FRuntimeMeshPositionNormalTangentComponentCombiner::TangentType>(EForceInit::ForceInit) + { } +}; + +// This version only uses the color/uv combiner as we don't need anything from the other +template +struct FRuntimeMeshVertex : + public FRuntimeMeshColorUVComponentCombiner::UVsType> +{ + // Get vertex structure + static RuntimeMeshVertexStructure GetVertexStructure(const FVertexBuffer& VertexBuffer); + + FRuntimeMeshVertex() { } + FRuntimeMeshVertex(EForceInit) + : FRuntimeMeshColorUVComponentCombiner::UVsType>(EForceInit::ForceInit) + { } +}; + + + +////////////////////////////////////////////////////////////////////////// +// Vertex Structure Generator +////////////////////////////////////////////////////////////////////////// + +struct FRuntimeMeshVertexUtilities +{ + ////////////////////////////////////////////////////////////////////////// + // Position Component + ////////////////////////////////////////////////////////////////////////// + template + struct FRuntimeMeshPositionComponentUtilities + { + static void AddComponent(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.PositionComponent = RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, Position, VET_Float3); + } + + }; + + template + struct FRuntimeMeshPositionComponentUtilities + { + static void AddComponent(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + } + }; + + ////////////////////////////////////////////////////////////////////////// + // Normal/Tangent Components + ////////////////////////////////////////////////////////////////////////// + template + struct FRuntimeMeshNormalTangentComponentVertexStructure + { + static void AddComponent(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.TangentBasisComponents[1] = RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, Normal, + FRuntimeMeshVertexTangentTypeSelector::VertexElementType); + VertexStructure.TangentBasisComponents[0] = RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, Tangent, + FRuntimeMeshVertexTangentTypeSelector::VertexElementType); + } + }; + + template + struct FRuntimeMeshNormalTangentComponentVertexStructure + { + static void AddComponent(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.TangentBasisComponents[1] = RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, Normal, + FRuntimeMeshVertexTangentTypeSelector::VertexElementType); + } + }; + + template + struct FRuntimeMeshNormalTangentComponentVertexStructure + { + static void AddComponent(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.TangentBasisComponents[0] = RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, Tangent, + FRuntimeMeshVertexTangentTypeSelector::VertexElementType); + } + }; + + template + struct FRuntimeMeshNormalTangentComponentVertexStructure + { + static void AddComponent(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + } + }; + + ////////////////////////////////////////////////////////////////////////// + // Color Component + ////////////////////////////////////////////////////////////////////////// + template + struct FRuntimeMeshColorComponentVertexStructure + { + static void AddComponent(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.ColorComponent = RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, Color, VET_Color); + } + }; + + template + struct FRuntimeMeshColorComponentVertexStructure + { + static void AddComponent(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + } + }; + + + ////////////////////////////////////////////////////////////////////////// + // UV Components + ////////////////////////////////////////////////////////////////////////// + template + struct FRuntimeMeshTextureChannelsVertexStructure + { + static void AddChannels(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + } + }; + + template + struct FRuntimeMeshTextureChannelsVertexStructure + { + static void AddChannels(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV0, FRuntimeMeshVertexUVsTypeSelector::VertexElementType1Channel)); + } + }; + + template + struct FRuntimeMeshTextureChannelsVertexStructure + { + static void AddChannels(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV0, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + } + }; + + template + struct FRuntimeMeshTextureChannelsVertexStructure + { + static void AddChannels(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV0, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV2, FRuntimeMeshVertexUVsTypeSelector::VertexElementType1Channel)); + } + }; + + template + struct FRuntimeMeshTextureChannelsVertexStructure + { + static void AddChannels(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV0, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV2, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + } + }; + + template + struct FRuntimeMeshTextureChannelsVertexStructure + { + static void AddChannels(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV0, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV2, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV4, FRuntimeMeshVertexUVsTypeSelector::VertexElementType1Channel)); + } + }; + + template + struct FRuntimeMeshTextureChannelsVertexStructure + { + static void AddChannels(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV0, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV2, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV4, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + } + }; + + template + struct FRuntimeMeshTextureChannelsVertexStructure + { + static void AddChannels(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV0, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV2, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV4, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV6, FRuntimeMeshVertexUVsTypeSelector::VertexElementType1Channel)); + } + }; + + template + struct FRuntimeMeshTextureChannelsVertexStructure + { + static void AddChannels(const FVertexBuffer& VertexBuffer, RuntimeMeshVertexStructure& VertexStructure) + { + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV0, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV2, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV4, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + VertexStructure.TextureCoordinates.Add(RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, RuntimeVertexType, UV6, FRuntimeMeshVertexUVsTypeSelector::VertexElementType2Channel)); + } + }; + + + + ////////////////////////////////////////////////////////////////////////// + // Vertex Structure Helper + ////////////////////////////////////////////////////////////////////////// + template + static RuntimeMeshVertexStructure CreateVertexStructure(const FVertexBuffer& VertexBuffer) + { + typedef FRuntimeMeshVertex RuntimeVertexType; + + RuntimeMeshVertexStructure VertexStructure; + + // Add Position component if necessary + FRuntimeMeshPositionComponentUtilities::AddComponent(VertexBuffer, VertexStructure); + + // Add normal and tangent components if necessary + FRuntimeMeshNormalTangentComponentVertexStructure::AddComponent(VertexBuffer, VertexStructure); + + // Add color component if necessary + FRuntimeMeshColorComponentVertexStructure::AddComponent(VertexBuffer, VertexStructure); + + // Add all texture channels + FRuntimeMeshTextureChannelsVertexStructure::AddChannels(VertexBuffer, VertexStructure); + + return VertexStructure; + } +}; + + + + + + + + + + + + +// These need to be declared after FRuntimemeshVertexStructureHelper and RuntimeMeshVertexStructure to fix circular dependencies between the two +template +RuntimeMeshVertexStructure FRuntimeMeshVertex::GetVertexStructure(const FVertexBuffer& VertexBuffer) +{ + return FRuntimeMeshVertexUtilities::CreateVertexStructure(VertexBuffer); +} + +template +RuntimeMeshVertexStructure FRuntimeMeshVertex::GetVertexStructure(const FVertexBuffer& VertexBuffer) +{ + return FRuntimeMeshVertexUtilities::CreateVertexStructure(VertexBuffer); +} + +template +RuntimeMeshVertexStructure FRuntimeMeshVertex::GetVertexStructure(const FVertexBuffer& VertexBuffer) +{ + return FRuntimeMeshVertexUtilities::CreateVertexStructure(VertexBuffer); +} + + + +////////////////////////////////////////////////////////////////////////// +// Name Vertex Configurations +////////////////////////////////////////////////////////////////////////// + +/** Simple vertex with 1 UV channel */ +DECLARE_RUNTIME_MESH_VERTEXINTERNAL(FRuntimeMeshVertexSimple, true, true, true, true, 1, ERuntimeMeshVertexTangentBasisType::Default, ERuntimeMeshVertexUVType::HighPrecision, RUNTIMEMESHCOMPONENT_API) + +/** Simple vertex with 2 UV channels */ +DECLARE_RUNTIME_MESH_VERTEXINTERNAL(FRuntimeMeshVertexDualUV, true, true, true, true, 2, ERuntimeMeshVertexTangentBasisType::Default, ERuntimeMeshVertexUVType::HighPrecision, RUNTIMEMESHCOMPONENT_API) + +/** Simple vertex with 1 UV channel and NO position component (Meant to be used with separate position buffer) */ +DECLARE_RUNTIME_MESH_VERTEXINTERNAL(FRuntimeMeshVertexNoPosition, false, true, true, true, 1, ERuntimeMeshVertexTangentBasisType::Default, ERuntimeMeshVertexUVType::HighPrecision, RUNTIMEMESHCOMPONENT_API) + +/** Simple vertex with 2 UV channels and NO position component (Meant to be used with separate position buffer) */ +DECLARE_RUNTIME_MESH_VERTEXINTERNAL(FRuntimeMeshVertexNoPositionDualUV, false, true, true, true, 2, ERuntimeMeshVertexTangentBasisType::Default, ERuntimeMeshVertexUVType::HighPrecision, RUNTIMEMESHCOMPONENT_API) + +/** Simple vertex with 1 UV channel */ +DECLARE_RUNTIME_MESH_VERTEXINTERNAL(FRuntimeMeshVertexHiPrecisionNormals, true, true, true, true, 1, ERuntimeMeshVertexTangentBasisType::HighPrecision, ERuntimeMeshVertexUVType::HighPrecision, RUNTIMEMESHCOMPONENT_API) + +/** Simple vertex with 2 UV channels */ +DECLARE_RUNTIME_MESH_VERTEXINTERNAL(FRuntimeMeshVertexDualUVHiPrecisionNormals, true, true, true, true, 2, ERuntimeMeshVertexTangentBasisType::HighPrecision, ERuntimeMeshVertexUVType::HighPrecision, RUNTIMEMESHCOMPONENT_API) + +/** Simple vertex with 1 UV channel and NO position component (Meant to be used with separate position buffer) */ +DECLARE_RUNTIME_MESH_VERTEXINTERNAL(FRuntimeMeshVertexNoPositionHiPrecisionNormals, false, true, true, true, 1, ERuntimeMeshVertexTangentBasisType::HighPrecision, ERuntimeMeshVertexUVType::HighPrecision, RUNTIMEMESHCOMPONENT_API) + +/** Simple vertex with 2 UV channels and NO position component (Meant to be used with separate position buffer) */ +DECLARE_RUNTIME_MESH_VERTEXINTERNAL(FRuntimeMeshVertexNoPositionDualUVHiPrecisionNormals, false, true, true, true, 2, ERuntimeMeshVertexTangentBasisType::HighPrecision, ERuntimeMeshVertexUVType::HighPrecision, RUNTIMEMESHCOMPONENT_API) + + diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshLibrary.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshLibrary.h new file mode 100644 index 000000000..d822690d3 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshLibrary.h @@ -0,0 +1,129 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "Kismet/BlueprintFunctionLibrary.h" +#include "RuntimeMeshComponent.h" +#include "RuntimeMeshLibrary.generated.h" + +class RuntimeMeshComponent; + +UCLASS() +class RUNTIMEMESHCOMPONENT_API URuntimeMeshLibrary : public UBlueprintFunctionLibrary +{ + GENERATED_UCLASS_BODY() + + /** Add a quad, specified by four indices, to a triangle index buffer as two triangles. */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + static void ConvertQuadToTriangles(UPARAM(ref) TArray& Triangles, int32 Vert0, int32 Vert1, int32 Vert2, int32 Vert3); + + /** + * Generate an index buffer for a grid of quads. + * @param NumX Number of vertices in X direction (must be >= 2) + * @param NumY Number of vertices in y direction (must be >= 2) + * @param bWinding Reverses winding of indices generated for each quad + * @out Triangles Output index buffer + */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + static void CreateGridMeshTriangles(int32 NumX, int32 NumY, bool bWinding, TArray& Triangles); + + /** Generate vertex and index buffer for a simple box, given the supplied dimensions. Normals, UVs and tangents are also generated for each vertex. */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + static void CreateBoxMesh(FVector BoxRadius, TArray& Vertices, TArray& Triangles, TArray& Normals, TArray& UVs, TArray& Tangents); + + + + /** + * Automatically generate normals and tangent vectors for a mesh + * UVs are required for correct tangent generation. + */ + static void CalculateTangentsForMesh(IRuntimeMeshVerticesBuilder* Vertices, const FRuntimeMeshIndicesBuilder* Triangles); + + /** + * Automatically generate normals and tangent vectors for a mesh + * UVs are required for correct tangent generation. + */ + template + static void CalculateTangentsForMesh(TArray& Vertices, const TArray& Triangles) + { + FRuntimeMeshPackedVerticesBuilder VerticesBuilder(&Vertices); + FRuntimeMeshIndicesBuilder IndicesBuilder(const_cast*>(&Triangles)); + + CalculateTangentsForMesh(&VerticesBuilder, &IndicesBuilder); + } + + /** + * Automatically generate normals and tangent vectors for a mesh + * UVs are required for correct tangent generation. + */ + template + static void CalculateTangentsForMesh(TArray& Positions, TArray& Vertices, const TArray& Triangles) + { + FRuntimeMeshPackedVerticesBuilder VerticesBuilder(&Vertices, &Positions); + FRuntimeMeshIndicesBuilder IndicesBuilder(const_cast*>(&Triangles)); + + CalculateTangentsForMesh(&VerticesBuilder, &IndicesBuilder); + } + + /** + * Automatically generate normals and tangent vectors for a mesh + * UVs are required for correct tangent generation. + */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh", meta = (AutoCreateRefTerm = "UVs")) + static void CalculateTangentsForMesh(const TArray& Vertices, const TArray& Triangles, const TArray& UVs, TArray& Normals, TArray& Tangents); + + + + /** + * Generates the tessellation indices needed to support tessellation in materials + */ + static void GenerateTessellationIndexBuffer(const IRuntimeMeshVerticesBuilder* Vertices, const FRuntimeMeshIndicesBuilder* Indices, FRuntimeMeshIndicesBuilder* OutTessellationIndices); + + /** + * Generates the tessellation indices needed to support tessellation in materials + */ + template + static void GenerateTessellationIndexBuffer(TArray& Vertices, const TArray& Triangles, TArray& OutTessTriangles) + { + FRuntimeMeshPackedVerticesBuilder VerticesBuilder(&Vertices); + FRuntimeMeshIndicesBuilder IndicesBuilder(const_cast*>(&Triangles)); + FRuntimeMeshIndicesBuilder OutIndicesBuilder(&OutTessTriangles); + + GenerateTessellationIndexBuffer(&VerticesBuilder, &IndicesBuilder, &OutIndicesBuilder); + } + + /** + * Generates the tessellation indices needed to support tessellation in materials + */ + template + static void GenerateTessellationIndexBuffer(TArray& Positions, TArray& Vertices, const TArray& Triangles, TArray& OutTessTriangles) + { + FRuntimeMeshPackedVerticesBuilder VerticesBuilder(&Vertices, &Positions); + FRuntimeMeshIndicesBuilder IndicesBuilder(const_cast*>(&Triangles)); + FRuntimeMeshIndicesBuilder OutIndicesBuilder(&OutTessTriangles); + + GenerateTessellationIndexBuffer(&VerticesBuilder, &IndicesBuilder, &OutIndicesBuilder); + } + + /** + * Generates the tessellation indices needed to support tessellation in materials + */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh", meta = (AutoCreateRefTerm = "UVs")) + static void GenerateTessellationIndexBuffer(const TArray& Vertices, const TArray& Triangles, const TArray& UVs, TArray& Normals, TArray& Tangents, TArray& OutTessTriangles); + + + + /** Grab geometry data from a StaticMesh asset. */ + static void GetSectionFromStaticMesh(UStaticMesh* InMesh, int32 LODIndex, int32 SectionIndex, + IRuntimeMeshVerticesBuilder* Vertices, FRuntimeMeshIndicesBuilder* Triangles, FRuntimeMeshIndicesBuilder* AdjacencyTriangles); + + /** Grab geometry data from a StaticMesh asset. */ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + static void GetSectionFromStaticMesh(UStaticMesh* InMesh, int32 LODIndex, int32 SectionIndex, TArray& Vertices, TArray& Triangles, TArray& Normals, TArray& UVs, TArray& Tangents); + + /* Copies an entire Static Mesh to a Runtime Mesh. Includes all materials, and sections.*/ + UFUNCTION(BlueprintCallable, Category = "Components|RuntimeMesh") + static void CopyRuntimeMeshFromStaticMeshComponent(UStaticMeshComponent* StaticMeshComp, int32 LODIndex, URuntimeMeshComponent* RuntimeMeshComp, bool bShouldCreateCollision); + + +}; \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshProfiling.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshProfiling.h new file mode 100644 index 000000000..2debbd343 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshProfiling.h @@ -0,0 +1,74 @@ +// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "RuntimeMeshComponent.h" + +DECLARE_STATS_GROUP(TEXT("RuntimeMesh"), STATGROUP_RuntimeMesh, STATCAT_Advanced); + +// Scene Proxy Profiling +DECLARE_CYCLE_STAT(TEXT("Create Section (RT)"), STAT_RuntimeMesh_CreateSection_RenderThread, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Update Section (RT)"), STAT_RuntimeMesh_UpdateSection_RenderThread, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Update Section - Position Only (RT)"), STAT_RuntimeMesh_UpdateSectionPositionOnly_RenderThread, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Update Section Properties (RT)"), STAT_RuntimeMesh_UpdateSectionProperties_RenderThread, STATGROUP_RuntimeMesh); + +DECLARE_CYCLE_STAT(TEXT("Apply Batch Update (RT)"), STAT_RuntimeMesh_ApplyBatchUpdate_RenderThread, STATGROUP_RuntimeMesh); + +DECLARE_CYCLE_STAT(TEXT("On Transform Changed (RT)"), STAT_RuntimeMesh_OnTransformChanged, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Draw Static Elements (RT)"), STAT_RuntimeMesh_DrawStaticElements, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Get Dynamic Mesh Elements (RT)"), STAT_RuntimeMesh_GetDynamicMeshElements, STATGROUP_RuntimeMesh); + +// RuntimeMeshComponent Profiling + +DECLARE_CYCLE_STAT(TEXT("CreateMeshSection (GT)"), STAT_RuntimeMesh_CreateMeshSection_VertexType, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("CreateMeshSection (With Bounding Box) (GT)"), STAT_RuntimeMesh_CreateMeshSection_VertexType_WithBoundingBox, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("CreateMeshSectionDualBuffer (GT)"), STAT_RuntimeMesh_CreateMeshSectionDualBuffer_VertexType, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("CreateMeshSectionDualBuffer (With Bounding Box) (GT)"), STAT_RuntimeMesh_CreateMeshSectionDualBuffer_VertexType_WithBoundingBox, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("CreateMeshSection (From Mesh Builder) (GT)"), STAT_RuntimeMesh_CreateMeshSection_VertexType_FromMeshBuilder, STATGROUP_RuntimeMesh); + + + +DECLARE_CYCLE_STAT(TEXT("CreateMeshSection (GT)"), STAT_RuntimeMesh_CreateMeshSection, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("CreateMeshSection (GT)"), STAT_RuntimeMesh_CreateMeshSection_DualUV, STATGROUP_RuntimeMesh); + +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSection (GT)"), STAT_RuntimeMesh_UpdateMeshSection_VertexType, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSection (With Bounding Box) (GT)"), STAT_RuntimeMesh_UpdateMeshSection_VertexType_WithBoundingBox, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSection (With Triangles) (GT)"), STAT_RuntimeMesh_UpdateMeshSection_VertexType_WithTriangles, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSection (With Triangles and Bounding Box) (GT)"), STAT_RuntimeMesh_UpdateMeshSection_VertexType_WithTrianglesAndBoundinBox, STATGROUP_RuntimeMesh); + +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSection (Dual) (GT)"), STAT_RuntimeMesh_UpdateMeshSection_Dual_VertexType, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSection (Dual) (With Bounding Box) (GT)"), STAT_RuntimeMesh_UpdateMeshSection_Dual_VertexType_WithBoundingBox, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSection (Dual) (With Triangles) (GT)"), STAT_RuntimeMesh_UpdateMeshSection_Dual_VertexType_WithTriangles, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSection (Dual) (With Triangles and Bounding Box) (GT)"), STAT_RuntimeMesh_UpdateMeshSection_Dual_VertexType_WithTrianglesAndBoundinBox, STATGROUP_RuntimeMesh); + +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSection (GT)"), STAT_RuntimeMesh_UpdateMeshSection, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSection (GT)"), STAT_RuntimeMesh_UpdateMeshSection_DualUV, STATGROUP_RuntimeMesh); + + + + + + + +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSectionPositionsImmediate (GT)"), STAT_RuntimeMesh_UpdateMeshSectionPositionsImmediate, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("UpdateMeshSectionPositionsImmediate (With Bounding Box) (GT)"), STAT_RuntimeMesh_UpdateMeshSectionPositionsImmediate_WithBoundinBox, STATGROUP_RuntimeMesh); + +DECLARE_CYCLE_STAT(TEXT("Finish Create Section (GT)"), STAT_RuntimeMesh_FinishCreateSectionInternal, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Finish Update Section (GT)"), STAT_RuntimeMesh_FinishUpdateSectionInternal, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Clear Mesh Section (GT)"), STAT_RuntimeMesh_ClearMeshSection, STATGROUP_RuntimeMesh); + + +DECLARE_CYCLE_STAT(TEXT("Set Mesh Collision Section (GT)"), STAT_RuntimeMesh_SetMeshCollisionSection, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Clear Mesh Collision Section (GT)"), STAT_RuntimeMesh_ClearMeshCollisionSection, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Clear All Mesh Collision Sections (GT)"), STAT_RuntimeMesh_ClearAllMeshCollisionSections, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Add Collision Convex Mesh (GT)"), STAT_RuntimeMesh_AddCollisionConvexMesh, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Clear Collision Convex Mesh (GT)"), STAT_RuntimeMesh_ClearCollisionConvexMeshes, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Set Collision Convex Meshes (GT)"), STAT_RuntimeMesh_SetCollisionConvexMeshes, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Create Scene Proxy (GT)"), STAT_RuntimeMesh_CreateSceneProxy, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Get Physics TriMesh Data (GT)"), STAT_RuntimeMesh_GetPhysicsTriMeshData, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Update Collision (GT)"), STAT_RuntimeMesh_UpdateCollision, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Update Local Bounds (GT)"), STAT_RuntimeMesh_UpdateLocalBounds, STATGROUP_RuntimeMesh); +DECLARE_CYCLE_STAT(TEXT("Serialize"), STAT_RuntimeMesh_Serialize, STATGROUP_RuntimeMesh); + + + diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshRendering.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshRendering.h new file mode 100644 index 000000000..3960b727e --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshRendering.h @@ -0,0 +1,187 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "Engine.h" +#include "RuntimeMeshCore.h" + + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 12 +/** Structure definition of a vertex */ +using RuntimeMeshVertexStructure = FLocalVertexFactory::FDataType; +#else +/** Structure definition of a vertex */ +using RuntimeMeshVertexStructure = FLocalVertexFactory::DataType; +#endif + +#define RUNTIMEMESH_VERTEXCOMPONENT(VertexBuffer, VertexType, Member, MemberType) \ + STRUCTMEMBER_VERTEXSTREAMCOMPONENT(&VertexBuffer, VertexType, Member, MemberType) + + +/* + * Defines an interface for the proxy sections so that + * the vertex factory can query for section visibility + */ +class FRuntimeMeshVisibilityInterface +{ +public: + virtual bool ShouldRender() = 0; +}; + + +/** Vertex Buffer for one section. Templated to support different vertex types */ +template +class FRuntimeMeshVertexBuffer : public FVertexBuffer +{ +public: + + FRuntimeMeshVertexBuffer(EUpdateFrequency SectionUpdateFrequency) : VertexCount(0) + { + UsageFlags = SectionUpdateFrequency == EUpdateFrequency::Frequent ? BUF_Dynamic : BUF_Static; + } + + virtual void InitRHI() override + { + // Create the vertex buffer + FRHIResourceCreateInfo CreateInfo; + VertexBufferRHI = RHICreateVertexBuffer(sizeof(VertexType) * VertexCount, UsageFlags, CreateInfo); + } + + /* Get the size of the vertex buffer */ + int32 Num() { return VertexCount; } + + /* Set the size of the vertex buffer */ + void SetNum(int32 NewVertexCount) + { + check(NewVertexCount != 0); + + // Make sure we're not already the right size + if (NewVertexCount != VertexCount) + { + VertexCount = NewVertexCount; + + // Rebuild resource + ReleaseResource(); + InitResource(); + } + } + + /* Set the data for the vertex buffer */ + void SetData(const TArray& Data) + { + check(Data.Num() == VertexCount); + + // Lock the vertex buffer + void* Buffer = RHILockVertexBuffer(VertexBufferRHI, 0, Data.Num() * sizeof(VertexType), RLM_WriteOnly); + + // Write the vertices to the vertex buffer + FMemory::Memcpy(Buffer, Data.GetData(), Data.Num() * sizeof(VertexType)); + + // Unlock the vertex buffer + RHIUnlockVertexBuffer(VertexBufferRHI); + } + +private: + + /* The number of vertices this buffer is currently allocated to hold */ + int32 VertexCount; + /* The buffer configuration to use */ + EBufferUsageFlags UsageFlags; +}; + +/** Index Buffer */ +class FRuntimeMeshIndexBuffer : public FIndexBuffer +{ +public: + + FRuntimeMeshIndexBuffer(EUpdateFrequency SectionUpdateFrequency) : IndexCount(0) + { + UsageFlags = SectionUpdateFrequency == EUpdateFrequency::Frequent ? BUF_Dynamic : BUF_Static; + } + + virtual void InitRHI() override + { + // Create the index buffer + FRHIResourceCreateInfo CreateInfo; + IndexBufferRHI = RHICreateIndexBuffer(sizeof(int32), IndexCount * sizeof(int32), BUF_Dynamic, CreateInfo); + } + + /* Get the size of the index buffer */ + int32 Num() { return IndexCount; } + + /* Set the size of the index buffer */ + void SetNum(int32 NewIndexCount) + { + check(NewIndexCount != 0); + + // Make sure we're not already the right size + if (NewIndexCount != IndexCount) + { + IndexCount = NewIndexCount; + + // Rebuild resource + ReleaseResource(); + InitResource(); + } + } + + /* Set the data for the index buffer */ + void SetData(const TArray& Data) + { + check(Data.Num() == IndexCount); + + // Lock the index buffer + void* Buffer = RHILockIndexBuffer(IndexBufferRHI, 0, IndexCount * sizeof(int32), RLM_WriteOnly); + + // Write the indices to the vertex buffer + FMemory::Memcpy(Buffer, Data.GetData(), Data.Num() * sizeof(int32)); + + // Unlock the index buffer + RHIUnlockIndexBuffer(IndexBufferRHI); + } + +private: + + /* The number of indices this buffer is currently allocated to hold */ + int32 IndexCount; + /* The buffer configuration to use */ + EBufferUsageFlags UsageFlags; +}; + +/** Vertex Factory */ +class FRuntimeMeshVertexFactory : public FLocalVertexFactory +{ +public: + + FRuntimeMeshVertexFactory(FRuntimeMeshVisibilityInterface* InSectionParent) : SectionParent(InSectionParent) { } + + /** Init function that can be called on any thread, and will do the right thing (enqueue command if called on main thread) */ + void Init(const RuntimeMeshVertexStructure VertexStructure) + { + if (IsInRenderingThread()) + { + SetData(VertexStructure); + } + else + { + // Send the command to the render thread + ENQUEUE_UNIQUE_RENDER_COMMAND_TWOPARAMETER( + InitRuntimeMeshVertexFactory, + FRuntimeMeshVertexFactory*, VertexFactory, this, + const RuntimeMeshVertexStructure, VertexStructure, VertexStructure, + { + VertexFactory->Init(VertexStructure); + }); + } + } + + /* Gets the section visibility for static sections */ + virtual uint64 GetStaticBatchElementVisibility(const class FSceneView& View, const struct FMeshBatch* Batch) const override + { + return SectionParent->ShouldRender(); + } + +private: + /* Interface to the parent section for checking visibility.*/ + FRuntimeMeshVisibilityInterface* SectionParent; +}; diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshSection.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshSection.h new file mode 100644 index 000000000..6d4856e2b --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshSection.h @@ -0,0 +1,812 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "Engine.h" +#include "Components/MeshComponent.h" +#include "RuntimeMeshProfiling.h" +#include "RuntimeMeshVersion.h" +#include "RuntimeMeshSectionProxy.h" +#include "RuntimeMeshBuilder.h" +#include "RuntimeMeshLibrary.h" + +/** Interface class for a single mesh section */ +class FRuntimeMeshSectionInterface +{ +protected: + const bool bNeedsPositionOnlyBuffer; + +public: + /** Position only vertex buffer for this section */ + TArray PositionVertexBuffer; + + /** Index buffer for this section */ + TArray IndexBuffer; + + /** Index buffer used for tessellation containing the needed adjacency info */ + TArray TessellationIndexBuffer; + + /** Local bounding box of section */ + FBox LocalBoundingBox; + + /** Should we build collision data for triangles in this section */ + bool CollisionEnabled; + + /** Should we display this section */ + bool bIsVisible; + + /** Should this section cast a shadow */ + bool bCastsShadow; + + /** If this section is currently using an adjacency index buffer */ + bool bShouldUseAdjacencyIndexBuffer; + + /** Update frequency of this section */ + EUpdateFrequency UpdateFrequency; + + FRuntimeMeshSectionInterface(bool bInNeedsPositionOnlyBuffer) : + bNeedsPositionOnlyBuffer(bInNeedsPositionOnlyBuffer), + LocalBoundingBox(0), + CollisionEnabled(false), + bIsVisible(true), + bCastsShadow(true), + bIsLegacySectionType(false) + {} + + virtual ~FRuntimeMeshSectionInterface() { } + +protected: + + /** Is this an internal section type. */ + bool bIsLegacySectionType; + + bool IsDualBufferSection() const { return bNeedsPositionOnlyBuffer; } + + /* Updates the vertex position buffer, returns whether we have a new bounding box */ + bool UpdateVertexPositionBuffer(TArray& Positions, const FBox* BoundingBox, bool bShouldMoveArray) + { + // Holds the new bounding box after this update. + FBox NewBoundingBox(0); + + if (bShouldMoveArray) + { + // Move buffer data + PositionVertexBuffer = MoveTemp(Positions); + + // Calculate the bounding box if one doesn't exist. + if (BoundingBox == nullptr) + { + for (int32 VertexIdx = 0; VertexIdx < PositionVertexBuffer.Num(); VertexIdx++) + { + NewBoundingBox += PositionVertexBuffer[VertexIdx]; + } + } + else + { + // Copy the supplied bounding box instead of calculating it. + NewBoundingBox = *BoundingBox; + } + } + else + { + if (BoundingBox == nullptr) + { + // Copy the buffer and calculate the bounding box at the same time + int32 NumVertices = Positions.Num(); + PositionVertexBuffer.SetNumUninitialized(NumVertices); + for (int32 VertexIdx = 0; VertexIdx < NumVertices; VertexIdx++) + { + NewBoundingBox += Positions[VertexIdx]; + PositionVertexBuffer[VertexIdx] = Positions[VertexIdx]; + } + } + else + { + // Copy the buffer + PositionVertexBuffer = Positions; + + // Copy the supplied bounding box instead of calculating it. + NewBoundingBox = *BoundingBox; + } + } + + // Update the bounding box if necessary and alert our caller if we did + if (!(LocalBoundingBox == NewBoundingBox)) + { + LocalBoundingBox = NewBoundingBox; + return true; + } + + return false; + } + + virtual void UpdateVertexBuffer(IRuntimeMeshVerticesBuilder& Vertices, const FBox* BoundingBox, bool bShouldMoveArray) = 0; + + void UpdateIndexBuffer(TArray& Triangles, bool bShouldMoveArray) + { + if (bShouldMoveArray) + { + IndexBuffer = MoveTemp(Triangles); + } + else + { + IndexBuffer = Triangles; + } + } + + void UpdateIndexBuffer(FRuntimeMeshIndicesBuilder& Triangles, bool bShouldMoveArray) + { + if (bShouldMoveArray) + { + IndexBuffer = MoveTemp(*Triangles.GetIndices()); + Triangles.Reset(); + } + else + { + IndexBuffer = *Triangles.GetIndices(); + } + } + + void UpdateTessellationIndexBuffer(TArray& Triangles, bool bShouldMoveArray) + { + if (bShouldMoveArray) + { + TessellationIndexBuffer = MoveTemp(Triangles); + } + else + { + TessellationIndexBuffer = Triangles; + } + } + + virtual FRuntimeMeshSectionCreateDataInterface* GetSectionCreationData(FSceneInterface* InScene, UMaterialInterface* InMaterial) const = 0; + + virtual FRuntimeMeshRenderThreadCommandInterface* GetSectionUpdateData(bool bIncludePositionVertices, bool bIncludeVertices, bool bIncludeIndices) const = 0; + + virtual FRuntimeMeshRenderThreadCommandInterface* GetSectionPositionUpdateData() const = 0; + + virtual void RecalculateBoundingBox() = 0; + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 13 + virtual int32 GetCollisionInformation(TArray& Positions, TArray>& UVs, bool bIncludeUVs) = 0; +#else + virtual int32 GetCollisionInformation(TArray& Positions) = 0; +#endif + + virtual void GetInternalVertexComponents(int32& NumUVChannels, bool& WantsHalfPrecisionUVs) { } + + // This is only meant for internal use for supporting the old style create/update sections + virtual bool UpdateVertexBufferInternal(const TArray& Positions, const TArray& Normals, const TArray& Tangents, const TArray& UV0, const TArray& UV1, const TArray& Colors) { return false; } + + virtual void GetSectionMesh(IRuntimeMeshVerticesBuilder*& Vertices, FRuntimeMeshIndicesBuilder*& Indices) = 0; + + virtual const FRuntimeMeshVertexTypeInfo* GetVertexType() const = 0; + + virtual void GenerateNormalTangent() = 0; + + virtual void GenerateTessellationIndices() = 0; + + + virtual void Serialize(FArchive& Ar) + { + if (Ar.CustomVer(FRuntimeMeshVersion::GUID) >= FRuntimeMeshVersion::SerializationV2) + { + if (bNeedsPositionOnlyBuffer) + { + Ar << PositionVertexBuffer; + } + Ar << IndexBuffer; + Ar << TessellationIndexBuffer; + Ar << LocalBoundingBox; + Ar << CollisionEnabled; + Ar << bIsVisible; + Ar << bCastsShadow; + Ar << bShouldUseAdjacencyIndexBuffer; + + // Serialize the update frequency as an int32 + int32 UpdateFreq = (int32)UpdateFrequency; + Ar << UpdateFreq; + UpdateFrequency = (EUpdateFrequency)UpdateFreq; + + Ar << bIsLegacySectionType; + } + else + { + if (Ar.CustomVer(FRuntimeMeshVersion::GUID) >= FRuntimeMeshVersion::DualVertexBuffer) + { + Ar << PositionVertexBuffer; + } + Ar << IndexBuffer; + Ar << LocalBoundingBox; + Ar << CollisionEnabled; + Ar << bIsVisible; + int32 UpdateFreq = (int32)UpdateFrequency; + Ar << UpdateFreq; + UpdateFrequency = (EUpdateFrequency)UpdateFreq; + } + } + + + + friend class FRuntimeMeshSceneProxy; + friend class URuntimeMeshComponent; +}; + +namespace RuntimeMeshSectionInternal +{ + template + static typename TEnableIf::HasPosition, int32>::Type + GetAllVertexPositions(const TArray& VertexBuffer, const TArray& PositionVertexBuffer, TArray& Positions) + { + int32 VertexCount = VertexBuffer.Num(); + for (int32 VertIdx = 0; VertIdx < VertexCount; VertIdx++) + { + Positions.Add(VertexBuffer[VertIdx].Position); + } + return VertexCount; + } + + template + static typename TEnableIf::HasPosition, int32>::Type + GetAllVertexPositions(const TArray& VertexBuffer, const TArray& PositionVertexBuffer, TArray& Positions) + { + Positions.Append(PositionVertexBuffer); + return PositionVertexBuffer.Num(); + } + + + + template + static typename TEnableIf::HasPosition, bool>::Type + UpdateVertexBufferInternal(TArray& VertexBuffer, FBox& LocalBoundingBox, TArray& Vertices, const FBox* BoundingBox, bool bShouldMoveArray) + { + // Holds the new bounding box after this update. + FBox NewBoundingBox(0); + + if (bShouldMoveArray) + { + // Move buffer data + VertexBuffer = MoveTemp(Vertices); + + // Calculate the bounding box if one doesn't exist. + if (BoundingBox == nullptr) + { + for (int32 VertexIdx = 0; VertexIdx < VertexBuffer.Num(); VertexIdx++) + { + NewBoundingBox += VertexBuffer[VertexIdx].Position; + } + } + else + { + // Copy the supplied bounding box instead of calculating it. + NewBoundingBox = *BoundingBox; + } + } + else + { + if (BoundingBox == nullptr) + { + // Copy the buffer and calculate the bounding box at the same time + int32 NumVertices = Vertices.Num(); + VertexBuffer.SetNumUninitialized(NumVertices); + for (int32 VertexIdx = 0; VertexIdx < NumVertices; VertexIdx++) + { + NewBoundingBox += Vertices[VertexIdx].Position; + VertexBuffer[VertexIdx] = Vertices[VertexIdx]; + } + } + else + { + // Copy the buffer + VertexBuffer = Vertices; + + // Copy the supplied bounding box instead of calculating it. + NewBoundingBox = *BoundingBox; + } + } + + // Update the bounding box if necessary and alert our caller if we did + if (!(LocalBoundingBox == NewBoundingBox)) + { + LocalBoundingBox = NewBoundingBox; + return true; + } + + return false; + } + + template + static typename TEnableIf::HasPosition, bool>::Type + UpdateVertexBufferInternal(TArray& VertexBuffer, FBox& LocalBoundingBox, TArray& Vertices, const FBox* BoundingBox, bool bShouldMoveArray) + { + if (bShouldMoveArray) + { + VertexBuffer = MoveTemp(Vertices); + } + else + { + VertexBuffer = Vertices; + } + return false; + } + + + template + static typename TEnableIf::HasPosition>::Type RecalculateBoundingBox(TArray& VertexBuffer, FBox& BoundingBox) + { + for (int32 Index = 0; Index < VertexBuffer.Num(); Index++) + { + BoundingBox += VertexBuffer[Index].Position; + } + } + + template + static typename TEnableIf::HasPosition>::Type RecalculateBoundingBox(TArray& VertexBuffer, FBox& BoundingBox) + { + } + +} + +/** Templated class for a single mesh section */ +template +class FRuntimeMeshSection : public FRuntimeMeshSectionInterface +{ + +public: + /** Vertex buffer for this section */ + TArray VertexBuffer; + + FRuntimeMeshSection(bool bInNeedsPositionOnlyBuffer) : FRuntimeMeshSectionInterface(bInNeedsPositionOnlyBuffer) { } + virtual ~FRuntimeMeshSection() override { } + + +protected: + bool UpdateVertexBuffer(TArray& Vertices, const FBox* BoundingBox, bool bShouldMoveArray) + { + return RuntimeMeshSectionInternal::UpdateVertexBufferInternal(VertexBuffer, LocalBoundingBox, Vertices, BoundingBox, bShouldMoveArray); + } + + virtual void UpdateVertexBuffer(IRuntimeMeshVerticesBuilder& Vertices, const FBox* BoundingBox, bool bShouldMoveArray) override + { + if (Vertices.GetBuilderType() == ERuntimeMeshVerticesBuilderType::Component) + { + FRuntimeMeshComponentVerticesBuilder* VerticesBuilder = static_cast(&Vertices); + + TArray* Positions = VerticesBuilder->GetPositions(); + TArray* Normals = VerticesBuilder->GetNormals(); + TArray* Tangents = VerticesBuilder->GetTangents(); + TArray* Colors = VerticesBuilder->GetColors(); + TArray* UV0s = VerticesBuilder->GetUV0s(); + TArray* UV1s = VerticesBuilder->GetUV1s(); + + + UpdateVertexBufferInternal( + Positions ? *Positions : TArray(), + Normals ? *Normals : TArray(), + Tangents ? *Tangents : TArray(), + UV0s ? *UV0s : TArray(), + UV1s ? *UV1s : TArray(), + Colors ? *Colors : TArray()); + + if (BoundingBox) + { + LocalBoundingBox = *BoundingBox; + } + else + { + LocalBoundingBox = FBox(*Positions); + } + + if (bShouldMoveArray) + { + // This is just to keep similar behavior to the packed vertices builder. + Vertices.Reset(); + } + } + else + { + // Make sure section type is the same + Vertices.GetVertexType()->EnsureEquals(); + + FRuntimeMeshPackedVerticesBuilder* VerticesBuilder = static_cast*>(&Vertices); + + RuntimeMeshSectionInternal::UpdateVertexBufferInternal(VertexBuffer, LocalBoundingBox, *VerticesBuilder->GetVertices(), BoundingBox, bShouldMoveArray); + + if (BoundingBox == nullptr && VerticesBuilder->WantsSeparatePositionBuffer()) + { + LocalBoundingBox = FBox(*VerticesBuilder->GetPositions()); + } + } + } + + virtual FRuntimeMeshSectionCreateDataInterface* GetSectionCreationData(FSceneInterface* InScene, UMaterialInterface* InMaterial) const override + { + auto UpdateData = new FRuntimeMeshSectionCreateData(); + + FMaterialRelevance MaterialRelevance = (InMaterial != nullptr) + ? InMaterial->GetRelevance(InScene->GetFeatureLevel()) + : UMaterial::GetDefaultMaterial(MD_Surface)->GetRelevance(InScene->GetFeatureLevel()); + + // Create new section proxy based on whether we need separate position buffer + if (IsDualBufferSection()) + { + UpdateData->NewProxy = new FRuntimeMeshSectionProxy(InScene, UpdateFrequency, bIsVisible, bCastsShadow, InMaterial, MaterialRelevance); + UpdateData->PositionVertexBuffer = PositionVertexBuffer; + } + else + { + UpdateData->NewProxy = new FRuntimeMeshSectionProxy(InScene, UpdateFrequency, bIsVisible, bCastsShadow, InMaterial, MaterialRelevance); + } + const_cast(this)->bShouldUseAdjacencyIndexBuffer = UpdateData->NewProxy->ShouldUseAdjacencyIndexBuffer(); + + UpdateData->VertexBuffer = VertexBuffer; + + // Switch between normal/tessellation indices + + if (bShouldUseAdjacencyIndexBuffer && TessellationIndexBuffer.Num() > 0) + { + UpdateData->IndexBuffer = TessellationIndexBuffer; + UpdateData->bIsAdjacencyIndexBuffer = true; + } + else + { + UpdateData->IndexBuffer = IndexBuffer; + UpdateData->bIsAdjacencyIndexBuffer = false; + } + + return UpdateData; + } + + virtual FRuntimeMeshRenderThreadCommandInterface* GetSectionUpdateData(bool bIncludePositionVertices, bool bIncludeVertices, bool bIncludeIndices) const override + { + auto UpdateData = new FRuntimeMeshSectionUpdateData(); + UpdateData->bIncludeVertexBuffer = bIncludeVertices; + UpdateData->bIncludePositionBuffer = bIncludePositionVertices; + UpdateData->bIncludeIndices = bIncludeIndices; + + if (bIncludePositionVertices) + { + UpdateData->PositionVertexBuffer = PositionVertexBuffer; + } + + if (bIncludeVertices) + { + UpdateData->VertexBuffer = VertexBuffer; + } + + if (bIncludeIndices) + { + if (bShouldUseAdjacencyIndexBuffer && TessellationIndexBuffer.Num() > 0) + { + UpdateData->IndexBuffer = TessellationIndexBuffer; + UpdateData->bIsAdjacencyIndexBuffer = true; + } + else + { + UpdateData->IndexBuffer = IndexBuffer; + UpdateData->bIsAdjacencyIndexBuffer = false; + } + } + + return UpdateData; + } + + virtual FRuntimeMeshRenderThreadCommandInterface* GetSectionPositionUpdateData() const override + { + auto UpdateData = new FRuntimeMeshSectionPositionOnlyUpdateData(); + + UpdateData->PositionVertexBuffer = PositionVertexBuffer; + + return UpdateData; + } + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 13 + virtual int32 GetCollisionInformation(TArray& Positions, TArray>& UVs, bool bIncludeUVs) override +#else + virtual int32 GetCollisionInformation(TArray& Positions) override +#endif + { + FRuntimeMeshPackedVerticesBuilder VerticesBuilder(&VertexBuffer, bNeedsPositionOnlyBuffer ? &PositionVertexBuffer : nullptr); + + int32 PositionStart = Positions.Num(); + Positions.SetNum(PositionStart + VerticesBuilder.Length()); + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 13 + if (bIncludeUVs) + { + UVs[0].SetNumZeroed(PositionStart + VerticesBuilder.Length()); + } +#endif + + for (int VertexIdx = 0; VertexIdx < VerticesBuilder.Length(); VertexIdx++) + { + Positions[PositionStart + VertexIdx] = VerticesBuilder.GetPosition(VertexIdx); + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 13 + if (bIncludeUVs && VerticesBuilder.HasUVComponent(0)) + { + UVs[0][PositionStart + VertexIdx] = VerticesBuilder.GetUV(0); + } +#endif + } + + return VerticesBuilder.Length(); + } + + virtual void GetSectionMesh(IRuntimeMeshVerticesBuilder*& Vertices, FRuntimeMeshIndicesBuilder*& Indices) override + { + Vertices = new FRuntimeMeshPackedVerticesBuilder(&VertexBuffer); + Indices = new FRuntimeMeshIndicesBuilder(&IndexBuffer); + } + + virtual const FRuntimeMeshVertexTypeInfo* GetVertexType() const { return &VertexType::TypeInfo; } + + virtual void GenerateNormalTangent() + { + if (IsDualBufferSection()) + { + URuntimeMeshLibrary::CalculateTangentsForMesh(PositionVertexBuffer, VertexBuffer, IndexBuffer); + } + else + { + URuntimeMeshLibrary::CalculateTangentsForMesh(VertexBuffer, IndexBuffer); + } + } + + virtual void GenerateTessellationIndices() + { + TArray TessellationIndices; + if (IsDualBufferSection()) + { + URuntimeMeshLibrary::GenerateTessellationIndexBuffer(PositionVertexBuffer, VertexBuffer, IndexBuffer, TessellationIndices); + } + else + { + URuntimeMeshLibrary::GenerateTessellationIndexBuffer(VertexBuffer, IndexBuffer, TessellationIndices); + } + UpdateTessellationIndexBuffer(TessellationIndices, true); + } + + virtual void RecalculateBoundingBox() override + { + LocalBoundingBox.Init(); + + if (IsDualBufferSection()) + { + for (int32 Index = 0; Index < PositionVertexBuffer.Num(); Index++) + { + LocalBoundingBox += PositionVertexBuffer[Index]; + } + } + else + { + RuntimeMeshSectionInternal::RecalculateBoundingBox(VertexBuffer, LocalBoundingBox); + } + } + + virtual void GetInternalVertexComponents(int32& NumUVChannels, bool& WantsHalfPrecisionUVs) override + { + NumUVChannels = FRuntimeMeshVertexTraits::NumUVChannels; + WantsHalfPrecisionUVs = !FRuntimeMeshVertexTraits::HasHighPrecisionUVs; + } + + virtual bool UpdateVertexBufferInternal(const TArray& Positions, const TArray& Normals, const TArray& Tangents, const TArray& UV0, const TArray& UV1, const TArray& Colors) override + { + // Check existence of data components + const bool HasPositions = Positions.Num() > 0; + + int32 NewVertexCount = HasPositions ? Positions.Num() : VertexBuffer.Num(); + int32 OldVertexCount = FMath::Min(VertexBuffer.Num(), NewVertexCount); + + // Size the vertex buffer correctly + if (NewVertexCount != VertexBuffer.Num()) + { + VertexBuffer.SetNumZeroed(NewVertexCount); + } + + // Clear the bounding box if we have new positions + if (HasPositions) + { + LocalBoundingBox.Init(); + } + + FRuntimeMeshPackedVerticesBuilder VerticesBuilder(&VertexBuffer); + + // Loop through existing range to update data + for (int32 VertexIdx = 0; VertexIdx < OldVertexCount; VertexIdx++) + { + VerticesBuilder.Seek(VertexIdx); + + // Update position and bounding box + if (HasPositions) + { + VerticesBuilder.SetPosition(Positions[VertexIdx]); + LocalBoundingBox += Positions[VertexIdx]; + } + + // see if we have a new normal and/or tangent + bool HasNormal = Normals.Num() > VertexIdx; + bool HasTangent = Tangents.Num() > VertexIdx; + + // Update normal and tangent together + if (HasNormal && HasTangent) + { + FVector4 NewNormal(Normals[VertexIdx], Tangents[VertexIdx].bFlipTangentY ? -1.0f : 1.0f); + VerticesBuilder.SetNormal(NewNormal); + VerticesBuilder.SetTangent(Tangents[VertexIdx].TangentX); + } + // Else update only normal keeping the W component + else if (HasNormal) + { + float W = VerticesBuilder.GetNormal().W; + VerticesBuilder.SetNormal(FVector4(Normals[VertexIdx], W)); + } + // Else update tangent updating the normals W component + else if (HasTangent) + { + FVector4 Normal = VerticesBuilder.GetNormal(); + Normal.W = Tangents[VertexIdx].bFlipTangentY ? -1.0f : 1.0f; + VerticesBuilder.SetNormal(Normal); + VerticesBuilder.SetTangent(Tangents[VertexIdx].TangentX); + } + + // Update color + if (Colors.Num() > VertexIdx) + { + VerticesBuilder.SetColor(Colors[VertexIdx]); + } + + // Update UV0 + if (UV0.Num() > VertexIdx) + { + VerticesBuilder.SetUV(0, UV0[VertexIdx]); + } + + // Update UV1 if needed + if (UV1.Num() > VertexIdx && VerticesBuilder.HasUVComponent(1)) + { + VerticesBuilder.SetUV(1, UV1[VertexIdx]); + } + } + + // Loop through additional range to add new data + for (int32 VertexIdx = OldVertexCount; VertexIdx < NewVertexCount; VertexIdx++) + { + VerticesBuilder.Seek(VertexIdx); + + // Set position + VerticesBuilder.SetPosition(Positions[VertexIdx]); + + // Update bounding box + LocalBoundingBox += Positions[VertexIdx]; + + // see if we have a new normal and/or tangent + bool HasNormal = Normals.Num() > VertexIdx; + bool HasTangent = Tangents.Num() > VertexIdx; + + // Set normal and tangent both + if (HasNormal && HasTangent) + { + FVector4 NewNormal(Normals[VertexIdx], Tangents[VertexIdx].bFlipTangentY ? -1.0f : 1.0f); + VerticesBuilder.SetNormal(NewNormal); + VerticesBuilder.SetTangent(Tangents[VertexIdx].TangentX); + } + // Set normal and default tangent + else if (HasNormal) + { + VerticesBuilder.SetNormal(FVector4(Normals[VertexIdx], 1.0f)); + VerticesBuilder.SetTangent(FVector(1.0f, 0.0f, 0.0f)); + } + // Default normal and set tangent + else if (HasTangent) + { + VerticesBuilder.SetNormal(FVector4(0.0f, 0.0f, 1.0f, Tangents[VertexIdx].bFlipTangentY ? -1.0f : 1.0f)); + VerticesBuilder.SetTangent(Tangents[VertexIdx].TangentX); + } + // Default normal and tangent + else + { + VerticesBuilder.SetNormal(FVector4(0.0f, 0.0f, 1.0f, 1.0f)); + VerticesBuilder.SetTangent(FVector(1.0f, 0.0f, 0.0f)); + } + + // Set color or default + VerticesBuilder.SetColor(Colors.Num() > VertexIdx ? Colors[VertexIdx] : FColor::White); + + // Update UV0 + VerticesBuilder.SetUV(0, UV0.Num() > VertexIdx ? UV0[VertexIdx] : FVector2D::ZeroVector); + + // Update UV1 if needed + if (VerticesBuilder.HasUVComponent(1)) + { + VerticesBuilder.SetUV(1, UV1.Num() > VertexIdx ? UV1[VertexIdx] : FVector2D::ZeroVector); + } + } + + return true; + } + +private: + void SerializeLegacy(FArchive& Ar) + { + int32 VertexBufferLength = VertexBuffer.Num(); + Ar << VertexBufferLength; + + if (Ar.IsLoading()) + { + VertexBuffer.SetNum(VertexBufferLength); + FRuntimeMeshPackedVerticesBuilder VerticesBuilder(&VertexBuffer); + + for (int32 Index = 0; Index < VertexBufferLength; Index++) + { + VerticesBuilder.Seek(Index); + + FVector TempPosition; + Ar << TempPosition; + VerticesBuilder.SetPosition(TempPosition); + + FPackedNormal TempNormal; + Ar << TempNormal; + VerticesBuilder.SetNormal(TempNormal); + + Ar << TempNormal; + VerticesBuilder.SetTangent(TempNormal); + + FColor TempColor; + Ar << TempColor; + VerticesBuilder.SetColor(TempColor); + + if (FRuntimeMeshVertexTraits::HasHighPrecisionUVs) + { + FVector2D TempUV; + Ar << TempUV; + VerticesBuilder.SetUV(0, TempUV); + + if (FRuntimeMeshVertexTraits::NumUVChannels > 1) + { + Ar << TempUV; + VerticesBuilder.SetUV(1, TempUV); + } + } + else + { + FVector2DHalf TempUV; + Ar << TempUV; + VerticesBuilder.SetUV(0, TempUV); + + if (FRuntimeMeshVertexTraits::NumUVChannels > 1) + { + Ar << TempUV; + VerticesBuilder.SetUV(1, TempUV); + } + } + } + } + else + { + check(false && "Cannot use legacy save."); + } + } + +public: + virtual void Serialize(FArchive& Ar) override + { + + if (Ar.CustomVer(FRuntimeMeshVersion::GUID) >= FRuntimeMeshVersion::SerializationV2) + { + Ar << VertexBuffer; + FRuntimeMeshSectionInterface::Serialize(Ar); + } + else + { + FRuntimeMeshSectionInterface::Serialize(Ar); + SerializeLegacy(Ar); + } + } + + friend class URuntimeMeshComponent; +}; + + +/** Smart pointer to a Runtime Mesh Section */ +using RuntimeMeshSectionPtr = TSharedPtr; diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshSectionProxy.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshSectionProxy.h new file mode 100644 index 000000000..8f07025c3 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshSectionProxy.h @@ -0,0 +1,228 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "Engine.h" +#include "Components/MeshComponent.h" +#include "RuntimeMeshProfiling.h" +#include "RuntimeMeshVersion.h" +#include "RuntimeMeshCore.h" +#include "RuntimeMeshRendering.h" +#include "RuntimeMeshUpdateCommands.h" + + +/** Interface class for the RT proxy of a single mesh section */ +class FRuntimeMeshSectionProxyInterface : public FRuntimeMeshVisibilityInterface +{ +public: + + FRuntimeMeshSectionProxyInterface() {} + virtual ~FRuntimeMeshSectionProxyInterface() {} + + virtual bool ShouldRender() = 0; + virtual bool WantsToRenderInStaticPath() const = 0; + + virtual bool ShouldUseAdjacencyIndexBuffer() const = 0; + + virtual FMaterialRelevance GetMaterialRelevance() const = 0; + + virtual void CreateMeshBatch(FMeshBatch& MeshBatch, FMaterialRenderProxy* WireframeMaterial, bool bIsSelected) = 0; + + + virtual void FinishCreate_RenderThread(FRuntimeMeshSectionCreateDataInterface* UpdateData) = 0; + virtual void FinishUpdate_RenderThread(FRuntimeMeshRenderThreadCommandInterface* UpdateData) = 0; + virtual void FinishPositionUpdate_RenderThread(FRuntimeMeshRenderThreadCommandInterface* UpdateData) = 0; + virtual void FinishPropertyUpdate_RenderThread(FRuntimeMeshRenderThreadCommandInterface* UpdateData) = 0; + +}; + +/** Templated class for the RT proxy of a single mesh section */ +template +class FRuntimeMeshSectionProxy : public FRuntimeMeshSectionProxyInterface +{ +protected: + /** Whether this section is currently visible */ + bool bIsVisible; + + /** Should this section cast a shadow */ + bool bCastsShadow; + + /** Whether this section should be using an adjacency index buffer */ + bool bShouldUseAdjacency; + + /** Whether this section is using a tessellation adjacency index buffer */ + bool bIsUsingAdjacency; + + /** Update frequency of this section */ + const EUpdateFrequency UpdateFrequency; + + /** Material applied to this section */ + UMaterialInterface* Material; + + FMaterialRelevance MaterialRelevance; + + FRuntimeMeshVertexBuffer* PositionVertexBuffer; + + /** Vertex buffer for this section */ + FRuntimeMeshVertexBuffer VertexBuffer; + + /** Index buffer for this section */ + FRuntimeMeshIndexBuffer IndexBuffer; + + /** Vertex factory for this section */ + FRuntimeMeshVertexFactory VertexFactory; + +public: + FRuntimeMeshSectionProxy(FSceneInterface* InScene, EUpdateFrequency InUpdateFrequency, bool bInIsVisible, bool bInCastsShadow, UMaterialInterface* InMaterial, FMaterialRelevance InMaterialRelevance) : + bIsVisible(bInIsVisible), bCastsShadow(bInCastsShadow), UpdateFrequency(InUpdateFrequency), Material(InMaterial), MaterialRelevance(InMaterialRelevance), + PositionVertexBuffer(nullptr), VertexBuffer(InUpdateFrequency), IndexBuffer(InUpdateFrequency), VertexFactory(this) + { + bShouldUseAdjacency = RequiresAdjacencyInformation(InMaterial, VertexFactory.GetType(), InScene->GetFeatureLevel()); + } + + virtual ~FRuntimeMeshSectionProxy() override + { + VertexBuffer.ReleaseResource(); + IndexBuffer.ReleaseResource(); + VertexFactory.ReleaseResource(); + + if (PositionVertexBuffer) + { + PositionVertexBuffer->ReleaseResource(); + delete PositionVertexBuffer; + } + } + + + virtual bool ShouldRender() override { return bIsVisible && VertexBuffer.Num() > 0 && IndexBuffer.Num() > 0; } + + virtual bool WantsToRenderInStaticPath() const override { return UpdateFrequency == EUpdateFrequency::Infrequent; } + + virtual bool ShouldUseAdjacencyIndexBuffer() const override { return bShouldUseAdjacency; } + + virtual FMaterialRelevance GetMaterialRelevance() const { return MaterialRelevance; } + + virtual void CreateMeshBatch(FMeshBatch& MeshBatch, FMaterialRenderProxy* WireframeMaterial, bool bIsSelected) override + { + MeshBatch.VertexFactory = &VertexFactory; + MeshBatch.bWireframe = WireframeMaterial != nullptr; + MeshBatch.MaterialRenderProxy = MeshBatch.bWireframe ? WireframeMaterial : Material->GetRenderProxy(bIsSelected); + + if (bIsUsingAdjacency && WireframeMaterial == nullptr) + { + MeshBatch.Type = PT_12_ControlPointPatchList; + } + else + { + MeshBatch.Type = PT_TriangleList; + } + + MeshBatch.DepthPriorityGroup = SDPG_World; + MeshBatch.CastShadow = bCastsShadow; + + FMeshBatchElement& BatchElement = MeshBatch.Elements[0]; + BatchElement.IndexBuffer = &IndexBuffer; + BatchElement.FirstIndex = 0; + BatchElement.NumPrimitives = bIsUsingAdjacency? IndexBuffer.Num() / 12 : IndexBuffer.Num() / 3; + BatchElement.MinVertexIndex = 0; + BatchElement.MaxVertexIndex = VertexBuffer.Num() - 1; + } + + + virtual void FinishCreate_RenderThread(FRuntimeMeshSectionCreateDataInterface* UpdateData) override + { + check(IsInRenderingThread()); + + auto* SectionUpdateData = UpdateData->As>(); + check(SectionUpdateData); + + if (NeedsPositionOnlyBuffer) + { + // Initialize the position buffer + PositionVertexBuffer = new FRuntimeMeshVertexBuffer(UpdateFrequency); + + // Get and adjust the vertex structure + auto VertexStructure = VertexType::GetVertexStructure(VertexBuffer); + VertexStructure.PositionComponent = FVertexStreamComponent(PositionVertexBuffer, 0, sizeof(FVector), VET_Float3); + VertexFactory.Init(VertexStructure); + } + else + { + // Get and submit the vertex structure + auto VertexStructure = VertexType::GetVertexStructure(VertexBuffer); + VertexFactory.Init(VertexStructure); + } + + // Initialize the vertex factory + VertexFactory.InitResource(); + + auto& Vertices = SectionUpdateData->VertexBuffer; + VertexBuffer.SetNum(Vertices.Num()); + VertexBuffer.SetData(Vertices); + + if (NeedsPositionOnlyBuffer) + { + auto& PositionVertices = SectionUpdateData->PositionVertexBuffer; + PositionVertexBuffer->SetNum(PositionVertices.Num()); + PositionVertexBuffer->SetData(PositionVertices); + } + + auto& Indices = SectionUpdateData->IndexBuffer; + IndexBuffer.SetNum(Indices.Num()); + IndexBuffer.SetData(Indices); + bIsUsingAdjacency = SectionUpdateData->bIsAdjacencyIndexBuffer; + } + + virtual void FinishUpdate_RenderThread(FRuntimeMeshRenderThreadCommandInterface* UpdateData) override + { + check(IsInRenderingThread()); + + auto* SectionUpdateData = UpdateData->As>(); + check(SectionUpdateData); + + if (SectionUpdateData->bIncludeVertexBuffer) + { + auto& VertexBufferData = SectionUpdateData->VertexBuffer; + VertexBuffer.SetNum(VertexBufferData.Num()); + VertexBuffer.SetData(VertexBufferData); + } + + if (NeedsPositionOnlyBuffer && SectionUpdateData->bIncludePositionBuffer) + { + auto& PositionVertices = SectionUpdateData->PositionVertexBuffer; + PositionVertexBuffer->SetNum(PositionVertices.Num()); + PositionVertexBuffer->SetData(PositionVertices); + } + + if (SectionUpdateData->bIncludeIndices) + { + auto& IndexBufferData = SectionUpdateData->IndexBuffer; + IndexBuffer.SetNum(IndexBufferData.Num()); + IndexBuffer.SetData(IndexBufferData); + bIsUsingAdjacency = SectionUpdateData->bIsAdjacencyIndexBuffer; + } + } + + virtual void FinishPositionUpdate_RenderThread(FRuntimeMeshRenderThreadCommandInterface* UpdateData) override + { + check(IsInRenderingThread()); + + // Get the Position Only update data + auto* SectionUpdateData = UpdateData->As>(); + check(SectionUpdateData); + + // Copy the new data to the gpu + PositionVertexBuffer->SetData(SectionUpdateData->PositionVertexBuffer); + } + + virtual void FinishPropertyUpdate_RenderThread(FRuntimeMeshRenderThreadCommandInterface* UpdateData) override + { + auto* SectionUpdateData = UpdateData->As(); + check(SectionUpdateData); + + // Copy visibility/shadow + bIsVisible = SectionUpdateData->bIsVisible; + bCastsShadow = SectionUpdateData->bCastsShadow; + } + +}; diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshUpdateCommands.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshUpdateCommands.h new file mode 100644 index 000000000..81be8d216 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshUpdateCommands.h @@ -0,0 +1,257 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "Engine.h" +#include "Components/MeshComponent.h" +#include "RuntimeMeshProfiling.h" +#include "RuntimeMeshVersion.h" + + + + +/* Base class for all render thread command information */ +class FRuntimeMeshRenderThreadCommandInterface +{ +public: + + FRuntimeMeshRenderThreadCommandInterface() { } + virtual ~FRuntimeMeshRenderThreadCommandInterface() { } + + virtual void SetTargetSection(int32 InTargetSection) { TargetSection = InTargetSection; } + virtual int32 GetTargetSection() { return TargetSection; } + + /* Cast the update data to the specific type of update data */ + template + Type* As() + { + return static_cast(this); + } + +private: + /* Section index that this creation data applies to */ + int32 TargetSection; +}; + +/* Base class for section creation data. Allows the non templated SceneProxy to get the section proxy;*/ +class FRuntimeMeshSectionCreateDataInterface : public FRuntimeMeshRenderThreadCommandInterface +{ +public: + /* The new proxy to be used for section creation */ + class FRuntimeMeshSectionProxyInterface* NewProxy; + + + FRuntimeMeshSectionCreateDataInterface() { } + virtual ~FRuntimeMeshSectionCreateDataInterface() override { } + +}; + +/** Templated class for update data sent to the RT for updating a single mesh section */ +template +class FRuntimeMeshSectionCreateData : public FRuntimeMeshSectionCreateDataInterface +{ +public: + /* Updated position vertex buffer for the section */ + TArray PositionVertexBuffer; + + /* Updated vertex buffer for the section */ + TArray VertexBuffer; + + /* Whether the supplied index buffer contains adjacency info */ + bool bIsAdjacencyIndexBuffer; + + /* Updated index buffer for the section */ + TArray IndexBuffer; + + + FRuntimeMeshSectionCreateData() {} + virtual ~FRuntimeMeshSectionCreateData() override { } + +}; + +/** Templated class for update data sent to the RT for updating a single mesh section */ +template +class FRuntimeMeshSectionUpdateData : public FRuntimeMeshRenderThreadCommandInterface +{ +public: + /* Updated position vertex buffer for the section */ + TArray PositionVertexBuffer; + + /* Updated vertex buffer for the section */ + TArray VertexBuffer; + + /* Updated index buffer for the section */ + TArray IndexBuffer; + + /* Should we apply the position buffer */ + bool bIncludePositionBuffer; + + /* Should we apply the vertex buffer */ + bool bIncludeVertexBuffer; + + /* Should we apply the indices as an update */ + bool bIncludeIndices; + + /* Whether the supplied index buffer contains adjacency info */ + bool bIsAdjacencyIndexBuffer; + + FRuntimeMeshSectionUpdateData() {} + virtual ~FRuntimeMeshSectionUpdateData() override { } +}; + +/** Templated class for update data sent to the RT for updating a single mesh section */ +template +class FRuntimeMeshSectionPositionOnlyUpdateData : public FRuntimeMeshRenderThreadCommandInterface +{ +public: + /* Updated position vertex buffer for the section */ + TArray PositionVertexBuffer; + + FRuntimeMeshSectionPositionOnlyUpdateData() {} + virtual ~FRuntimeMeshSectionPositionOnlyUpdateData() override { } +}; + +/** Property update for a single section */ +class FRuntimeMeshSectionPropertyUpdateData : public FRuntimeMeshRenderThreadCommandInterface +{ +public: + /* Is this section visible */ + bool bIsVisible; + + /* Is this section casting shadows */ + bool bCastsShadow; + + FRuntimeMeshSectionPropertyUpdateData() {} + virtual ~FRuntimeMeshSectionPropertyUpdateData() override { } +}; + +enum class ERuntimeMeshSectionBatchUpdateType +{ + None = 0x0, + Create = 0x1, + Destroy = 0x2, + PositionsUpdate = 0x4, + VerticesUpdate = 0x8, + IndicesUpdate = 0x10, + PropertyUpdate = 0x20, +}; + +ENUM_CLASS_FLAGS(ERuntimeMeshSectionBatchUpdateType) + + +/* Struct carrying all update data for a batch update sent to the render thread */ +struct FRuntimeMeshBatchUpdateData +{ + TArray CreateSections; + TArray DestroySections; + TArray UpdateSections; + TArray PropertyUpdateSections; +}; + + + +struct FRuntimeMeshBatchUpdateState +{ + void StartBatch() { bIsPending = true; } + + void ResetBatch() + { + bIsPending = false; + bRequiresSceneProxyReCreate = false; + bRequiresBoundsUpdate = false; + bRequiresCollisionUpdate = false; + + SectionUpdates.Empty(); + } + + + + + bool IsBatchPending() { return bIsPending; } + + void MarkSectionCreated(int32 SectionIndex, bool bPromoteToProxyRecreate) + { + // Flag recreate instead of individual section + if (bPromoteToProxyRecreate) + { + bRequiresSceneProxyReCreate = true; + return; + } + + EnsureUpdateLength(SectionIndex); + + // Clear destroyed flag and set created + SectionUpdates[SectionIndex] &= ~ERuntimeMeshSectionBatchUpdateType::Destroy; + SectionUpdates[SectionIndex] |= ERuntimeMeshSectionBatchUpdateType::Create; + } + + void MarkUpdateForSection(int32 SectionIndex, ERuntimeMeshSectionBatchUpdateType UpdateType) + { + EnsureUpdateLength(SectionIndex); + + // Add update type + SectionUpdates[SectionIndex] |= UpdateType; + } + + void MarkSectionDestroyed(int32 SectionIndex, bool bPromoteToProxyRecreate) + { + // Flag recreate instead of individual section + if (bPromoteToProxyRecreate) + { + bRequiresSceneProxyReCreate = true; + return; + } + + EnsureUpdateLength(SectionIndex); + + // Clear destroyed flag and set created + SectionUpdates[SectionIndex] &= ~ERuntimeMeshSectionBatchUpdateType::Create; + SectionUpdates[SectionIndex] |= ERuntimeMeshSectionBatchUpdateType::Destroy; + } + + void MarkRenderStateDirty() { bRequiresSceneProxyReCreate = true; } + + void MarkCollisionDirty() { bRequiresCollisionUpdate = true; } + + void MarkBoundsDirty() { bRequiresBoundsUpdate = true; } + + + + bool HasAnyFlagSet(int32 SectionIndex) { return SectionUpdates[SectionIndex] != ERuntimeMeshSectionBatchUpdateType::None; } + + bool HasFlagSet(int32 SectionIndex, ERuntimeMeshSectionBatchUpdateType UpdateType) + { + return (SectionUpdates[SectionIndex] & UpdateType) == UpdateType; + } + + bool RequiresSceneProxyRecreate() { return bRequiresSceneProxyReCreate; } + + bool RequiresBoundsUpdate() { return bRequiresBoundsUpdate; } + + bool RequiresCollisionUpdate() { return bRequiresCollisionUpdate; } + + int32 GetMaxSection() { return SectionUpdates.Num() - 1; } + +private: + + void EnsureUpdateLength(int32 SectionIndex) + { + if (SectionIndex < SectionUpdates.Num()) + { + return; + } + + SectionUpdates.AddZeroed((SectionIndex + 1) - SectionUpdates.Num()); + } + + + bool bIsPending; + bool bRequiresSceneProxyReCreate; + bool bRequiresBoundsUpdate; + bool bRequiresCollisionUpdate; + TArray SectionUpdates; + + + + +}; diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshVersion.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshVersion.h new file mode 100644 index 000000000..042e64229 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/Public/RuntimeMeshVersion.h @@ -0,0 +1,27 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "RuntimeMeshComponentPlugin.h" + + +// Custom version for runtime mesh serialization +namespace FRuntimeMeshVersion +{ + enum Type + { + Initial = 0, + TemplatedVertexFix = 1, + SerializationOptional = 2, + DualVertexBuffer = 3, + + SerializationV2 = 4, + + // ------------------------------------------------------ + VersionPlusOne, + LatestVersion = VersionPlusOne - 1 + }; + + // The GUID for this custom version + const static FGuid GUID = FGuid(0xEE48714B, 0x8A2C4652, 0x98BE40E6, 0xCB7EF0E6); +}; diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/RuntimeMeshComponent.Build.cs b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/RuntimeMeshComponent.Build.cs new file mode 100644 index 000000000..53cc6d659 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponent/RuntimeMeshComponent.Build.cs @@ -0,0 +1,24 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +using UnrealBuildTool; + +public class RuntimeMeshComponent : ModuleRules +{ + public RuntimeMeshComponent(TargetInfo Target) + { + PrivateIncludePaths.Add("RuntimeMeshComponent/Private"); + PublicIncludePaths.Add("RuntimeMeshComponent/Public"); + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "RenderCore", + "ShaderCore", + "RHI" + } + ); + } +} diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentDetails.cpp b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentDetails.cpp new file mode 100644 index 000000000..81c3d5ae1 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentDetails.cpp @@ -0,0 +1,265 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#include "RuntimeMeshComponentEditorPrivatePCH.h" +#include "RuntimeMeshComponentDetails.h" +#include "RuntimeMeshComponent.h" + +#include "DlgPickAssetPath.h" +#include "IAssetTools.h" +#include "AssetToolsModule.h" +#include "AssetRegistryModule.h" +#include "PhysicsEngine/PhysicsSettings.h" +#include "PhysicsEngine/BodySetup.h" + +#define LOCTEXT_NAMESPACE "RuntimeMeshComponentDetails" + +TSharedRef FRuntimeMeshComponentDetails::MakeInstance() +{ + return MakeShareable(new FRuntimeMeshComponentDetails); +} + +void FRuntimeMeshComponentDetails::CustomizeDetails( IDetailLayoutBuilder& DetailBuilder ) +{ + IDetailCategoryBuilder& RuntimeMeshCategory = DetailBuilder.EditCategory("RuntimeMesh"); + + const FText ConvertToStaticMeshText = LOCTEXT("ConvertToStaticMesh", "Create StaticMesh"); + + // Cache set of selected things + SelectedObjectsList = DetailBuilder.GetDetailsView().GetSelectedObjects(); + + RuntimeMeshCategory.AddCustomRow(ConvertToStaticMeshText, false) + .NameContent() + [ + SNullWidget::NullWidget + ] + .ValueContent() + .VAlign(VAlign_Center) + .MaxDesiredWidth(250) + [ + SNew(SButton) + .VAlign(VAlign_Center) + .ToolTipText(LOCTEXT("ConvertToStaticMeshTooltip", "Create a new StaticMesh asset using current geometry from this RuntimeMeshComponent. Does not modify instance.")) + .OnClicked(this, &FRuntimeMeshComponentDetails::ClickedOnConvertToStaticMesh) + .IsEnabled(this, &FRuntimeMeshComponentDetails::ConvertToStaticMeshEnabled) + .Content() + [ + SNew(STextBlock) + .Text(ConvertToStaticMeshText) + ] + ]; +} + +URuntimeMeshComponent* FRuntimeMeshComponentDetails::GetFirstSelectedRuntimeMeshComp() const +{ + // Find first selected valid RuntimeMeshComp + URuntimeMeshComponent* RuntimeMeshComp = nullptr; + for (const TWeakObjectPtr& Object : SelectedObjectsList) + { + URuntimeMeshComponent* TestRuntimeComp = Cast(Object.Get()); + // See if this one is good + if (TestRuntimeComp != nullptr && !TestRuntimeComp->IsTemplate()) + { + RuntimeMeshComp = TestRuntimeComp; + break; + } + } + + return RuntimeMeshComp; +} + + +bool FRuntimeMeshComponentDetails::ConvertToStaticMeshEnabled() const +{ + return GetFirstSelectedRuntimeMeshComp() != nullptr; +} + + +FReply FRuntimeMeshComponentDetails::ClickedOnConvertToStaticMesh() +{ + // Find first selected RuntimeMeshComp + URuntimeMeshComponent* RuntimeMeshComp = GetFirstSelectedRuntimeMeshComp(); + if (RuntimeMeshComp != nullptr) + { + FString NewNameSuggestion = FString(TEXT("RuntimeMeshComp")); + FString PackageName = FString(TEXT("/Game/Meshes/")) + NewNameSuggestion; + FString Name; + FAssetToolsModule& AssetToolsModule = FModuleManager::LoadModuleChecked("AssetTools"); + AssetToolsModule.Get().CreateUniqueAssetName(PackageName, TEXT(""), PackageName, Name); + + TSharedPtr PickAssetPathWidget = + SNew(SDlgPickAssetPath) + .Title(LOCTEXT("ConvertToStaticMeshPickName", "Choose New StaticMesh Location")) + .DefaultAssetPath(FText::FromString(PackageName)); + + if (PickAssetPathWidget->ShowModal() == EAppReturnType::Ok) + { + // Get the full name of where we want to create the physics asset. + FString UserPackageName = PickAssetPathWidget->GetFullAssetPath().ToString(); + FName MeshName(*FPackageName::GetLongPackageAssetName(UserPackageName)); + + // Check if the user inputed a valid asset name, if they did not, give it the generated default name + if (MeshName == NAME_None) + { + // Use the defaults that were already generated. + UserPackageName = PackageName; + MeshName = *Name; + } + + // Raw mesh data we are filling in + FRawMesh RawMesh; + + // Unique Materials to apply to new mesh +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 14 + TArray Materials; +#else + TArray Materials; +#endif + + bool bUseHighPrecisionTangents = false; + bool bUseFullPrecisionUVs = false; + + const int32 NumSections = RuntimeMeshComp->GetNumSections(); + int32 VertexBase = 0; + for (int32 SectionIdx = 0; SectionIdx < NumSections; SectionIdx++) + { + const IRuntimeMeshVerticesBuilder* Vertices; + const FRuntimeMeshIndicesBuilder* Indices; + RuntimeMeshComp->GetSectionMesh(SectionIdx, Vertices, Indices); + + if (Vertices->HasHighPrecisionNormals()) + { + bUseHighPrecisionTangents = true; + } + if (Vertices->HasHighPrecisionUVs()) + { + bUseFullPrecisionUVs = true; + } + + // Copy verts + Vertices->Seek(-1); + while (Vertices->MoveNext() < Vertices->Length()) + { + RawMesh.VertexPositions.Add(Vertices->GetPosition()); + } + + // Copy 'wedge' info + Indices->Seek(0); + while (Indices->HasRemaining()) + { + int32 Index = Indices->ReadOne(); + + RawMesh.WedgeIndices.Add(Index + VertexBase); + + + Vertices->Seek(Index); + + FVector TangentX = Vertices->GetTangent(); + FVector TangentZ = Vertices->GetNormal(); + FVector TangentY = (TangentX ^ TangentZ).GetSafeNormal() * Vertices->GetNormal().W; + + RawMesh.WedgeTangentX.Add(TangentX); + RawMesh.WedgeTangentY.Add(TangentY); + RawMesh.WedgeTangentZ.Add(TangentZ); + + for (int UVIndex = 0; UVIndex < 8; UVIndex++) + { + if (!Vertices->HasUVComponent(UVIndex)) + { + break; + } + RawMesh.WedgeTexCoords[UVIndex].Add(Vertices->GetUV(UVIndex)); + } + + RawMesh.WedgeColors.Add(Vertices->GetColor()); + } + + // Find a material index for this section. + UMaterialInterface* Material = RuntimeMeshComp->GetMaterial(SectionIdx); + +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 14 + int32 MaterialIndex = Materials.AddUnique(FStaticMaterial(Material)); +#else + int32 MaterialIndex = Materials.AddUnique(Material); +#endif + + + // copy face info + int32 NumTris = Indices->Length() / 3; + for (int32 TriIdx=0; TriIdx < NumTris; TriIdx++) + { + // Set the face material + RawMesh.FaceMaterialIndices.Add(MaterialIndex); + + RawMesh.FaceSmoothingMasks.Add(0); // Assume this is ignored as bRecomputeNormals is false + } + + // Update offset for creating one big index/vertex buffer + VertexBase += Vertices->Length(); + } + + // If we got some valid data. + if (RawMesh.VertexPositions.Num() >= 3 && RawMesh.WedgeIndices.Num() >= 3) + { + // Then find/create it. + UPackage* Package = CreatePackage(NULL, *UserPackageName); + check(Package); + + // Create StaticMesh object + UStaticMesh* StaticMesh = NewObject(Package, MeshName, RF_Public | RF_Standalone); + StaticMesh->InitResources(); + + StaticMesh->LightingGuid = FGuid::NewGuid(); + + // Add source to new StaticMesh + FStaticMeshSourceModel* SrcModel = new (StaticMesh->SourceModels) FStaticMeshSourceModel(); + SrcModel->BuildSettings.bRecomputeNormals = false; + SrcModel->BuildSettings.bRecomputeTangents = false; + SrcModel->BuildSettings.bRemoveDegenerates = false; + SrcModel->BuildSettings.bUseHighPrecisionTangentBasis = bUseHighPrecisionTangents; + SrcModel->BuildSettings.bUseFullPrecisionUVs = bUseFullPrecisionUVs; + SrcModel->BuildSettings.bGenerateLightmapUVs = true; + SrcModel->BuildSettings.SrcLightmapIndex = 0; + SrcModel->BuildSettings.DstLightmapIndex = 1; + SrcModel->RawMeshBulkData->SaveRawMesh(RawMesh); + + // Set the materials used for this static mesh +#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION >= 14 + StaticMesh->StaticMaterials = Materials; + int32 NumMaterials = StaticMesh->StaticMaterials.Num(); +#else + StaticMesh->Materials = Materials; + int32 NumMaterials = StaticMesh->Materials.Num(); +#endif + + // Set up the SectionInfoMap to enable collision + for (int32 SectionIdx = 0; SectionIdx < NumMaterials; SectionIdx++) + { + FMeshSectionInfo Info = StaticMesh->SectionInfoMap.Get(0, SectionIdx); + Info.MaterialIndex = SectionIdx; + Info.bEnableCollision = true; + StaticMesh->SectionInfoMap.Set(0, SectionIdx, Info); + } + + // Configure body setup for working collision. + StaticMesh->CreateBodySetup(); + StaticMesh->BodySetup->CollisionTraceFlag = CTF_UseComplexAsSimple; + + // Build mesh from source + StaticMesh->Build(false); + + // Make package dirty. + StaticMesh->MarkPackageDirty(); + + StaticMesh->PostEditChange(); + + // Notify asset registry of new asset + FAssetRegistryModule::AssetCreated(StaticMesh); + } + } + } + + return FReply::Handled(); +} + + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentDetails.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentDetails.h new file mode 100644 index 000000000..04f14cf77 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentDetails.h @@ -0,0 +1,27 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once +#include "IDetailCustomization.h" +#include "DetailLayoutBuilder.h" + +class FRuntimeMeshComponentDetails : public IDetailCustomization +{ +public: + /** Makes a new instance of this detail layout class for a specific detail view requesting it */ + static TSharedRef MakeInstance(); + + /** IDetailCustomization interface */ + virtual void CustomizeDetails( IDetailLayoutBuilder& DetailBuilder ) override; + + /** Handle clicking the convert button */ + FReply ClickedOnConvertToStaticMesh(); + + /** Is the convert button enabled */ + bool ConvertToStaticMeshEnabled() const; + + /** Util to get the RuntimeMeshComponent we want to convert */ + class URuntimeMeshComponent* GetFirstSelectedRuntimeMeshComp() const; + + /** Cached array of selected objects */ + TArray< TWeakObjectPtr > SelectedObjectsList; +}; \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentEditorPlugin.cpp b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentEditorPlugin.cpp new file mode 100644 index 000000000..72490df17 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentEditorPlugin.cpp @@ -0,0 +1,31 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#include "RuntimeMeshComponentEditorPrivatePCH.h" + + + + +class FRuntimeMeshComponentEditorPlugin : public IRuntimeMeshComponentEditorPlugin +{ + /** IModuleInterface implementation */ + virtual void StartupModule() override; + virtual void ShutdownModule() override; +}; + +IMPLEMENT_MODULE( FRuntimeMeshComponentEditorPlugin, RuntimeMeshComponentEditor ) + + + +void FRuntimeMeshComponentEditorPlugin::StartupModule() +{ + { + FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked("PropertyEditor"); + PropertyModule.RegisterCustomClassLayout(URuntimeMeshComponent::StaticClass()->GetFName(), FOnGetDetailCustomizationInstance::CreateStatic(&FRuntimeMeshComponentDetails::MakeInstance)); + } +} + + +void FRuntimeMeshComponentEditorPlugin::ShutdownModule() +{ + +} diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentEditorPrivatePCH.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentEditorPrivatePCH.h new file mode 100644 index 000000000..016248ccb --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentEditorPrivatePCH.h @@ -0,0 +1,15 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#include "UnrealEd.h" +#include "PropertyEditorModule.h" +#include "DetailLayoutBuilder.h" +#include "DetailCategoryBuilder.h" +#include "DetailWidgetRow.h" +#include "IDetailsView.h" +#include "PhysicsEngine/ConvexElem.h" +#include "RuntimeMeshComponent.h" +#include "Engine/StaticMesh.h" +#include "RawMesh.h" + +#include "IRuntimeMeshComponentEditorPlugin.h" +#include "RuntimeMeshComponentDetails.h" \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Public/IRuntimeMeshComponentEditorPlugin.h b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Public/IRuntimeMeshComponentEditorPlugin.h new file mode 100644 index 000000000..0de7c97b1 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/Public/IRuntimeMeshComponentEditorPlugin.h @@ -0,0 +1,36 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +#pragma once + +#include "ModuleManager.h" + + +/** +* The public interface to this module +*/ +class IRuntimeMeshComponentEditorPlugin : public IModuleInterface +{ + +public: + + /** + * Singleton-like access to this module's interface. This is just for convenience! + * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. + * + * @return Returns singleton instance, loading the module on demand if needed + */ + static inline IRuntimeMeshComponentEditorPlugin& Get() + { + return FModuleManager::LoadModuleChecked< IRuntimeMeshComponentEditorPlugin >("RuntimeMeshComponentEditorPlugin"); + } + + /** + * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. + * + * @return True if the module is loaded and ready to use + */ + static inline bool IsAvailable() + { + return FModuleManager::Get().IsModuleLoaded("RuntimeMeshComponentEditorPlugin"); + } +}; \ No newline at end of file diff --git a/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/RuntimeMeshComponentEditor.Build.cs b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/RuntimeMeshComponentEditor.Build.cs new file mode 100644 index 000000000..3d774a8d1 --- /dev/null +++ b/spine-ue4/Plugins/UE4RuntimeMeshComponent/Source/RuntimeMeshComponentEditor/RuntimeMeshComponentEditor.Build.cs @@ -0,0 +1,33 @@ +// Copyright 2016 Chris Conway (Koderz). All Rights Reserved. + +namespace UnrealBuildTool.Rules +{ + public class RuntimeMeshComponentEditor : ModuleRules + { + public RuntimeMeshComponentEditor(TargetInfo Target) + { + PrivateIncludePaths.Add("RuntimeMeshComponentEditor/Private"); + PublicIncludePaths.Add("RuntimeMeshComponentEditor/Public"); + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Slate", + "SlateCore", + "Engine", + "UnrealEd", + "PropertyEditor", + "RenderCore", + "ShaderCore", + "RHI", + "RuntimeMeshComponent", + "RawMesh", + "AssetTools", + "AssetRegistry" + } + ); + } + } +} \ No newline at end of file