From 5509764fc2b793db31110cf610ff76d0cff3263a Mon Sep 17 00:00:00 2001 From: Roman <69218254+amzn-rhhong@users.noreply.github.com> Date: Wed, 2 Feb 2022 11:46:00 -0800 Subject: [PATCH] Make atom render viewport the default for animation editor. (#7282) * Make atom render viewport the default for animation editor. Signed-off-by: rhhong * Fixed the automated test problem caused by making atom vp the default Signed-off-by: rhhong * Fix another test failure Signed-off-by: rhhong * fix failed test Signed-off-by: rhhong * more fix to the automation test Signed-off-by: rhhong * we don't need to manuelly call init on the ragdoll plugin anymore Signed-off-by: rhhong --- .../Code/Tools/EMStudio/AtomRenderPlugin.cpp | 2 +- .../Assets/Editor/Layouts/AnimGraph.layout | Bin 7200 -> 7432 bytes .../Assets/Editor/Layouts/Animation.layout | Bin 3212 -> 3683 bytes .../Assets/Editor/Layouts/Character.layout | Bin 5005 -> 5097 bytes .../Assets/Editor/Layouts/Physics.layout | Bin 4411 -> 4503 bytes .../Editor/Layouts/SimulatedObjects.layout | Bin 7805 -> 7772 bytes .../Source/OpenGLRender/OpenGLRenderPlugin.h | 2 +- .../Code/Tests/Mocks/AtomRenderPlugin.h | 52 ++++++++++++++++++ .../Ragdoll/CanCopyPasteColliders.cpp | 10 +--- .../Ragdoll/CanCopyPasteJointLimits.cpp | 8 +-- .../Code/Tests/UI/CanAddToSimulatedObject.cpp | 15 +---- .../Code/Tests/UI/ClothColliderTests.cpp | 25 +++++---- .../Code/Tests/UI/RagdollEditTests.cpp | 15 ++--- Gems/EMotionFX/Code/Tests/UI/UIFixture.cpp | 24 ++++++++ Gems/EMotionFX/Code/Tests/UI/UIFixture.h | 6 ++ .../Code/emotionfx_editor_tests_files.cmake | 1 + 16 files changed, 110 insertions(+), 50 deletions(-) create mode 100644 Gems/EMotionFX/Code/Tests/Mocks/AtomRenderPlugin.h diff --git a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AtomRenderPlugin.cpp b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AtomRenderPlugin.cpp index c39012d303..131cbd7053 100644 --- a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AtomRenderPlugin.cpp +++ b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AtomRenderPlugin.cpp @@ -51,7 +51,7 @@ namespace EMStudio const char* AtomRenderPlugin::GetName() const { - return "Atom Render Window (Preview)"; + return "Atom Render Window"; } uint32 AtomRenderPlugin::GetClassID() const diff --git a/Gems/EMotionFX/Assets/Editor/Layouts/AnimGraph.layout b/Gems/EMotionFX/Assets/Editor/Layouts/AnimGraph.layout index e85d6054a3e54df86030125994f050171e52f622..62c9e1bb4e0333cc3bbf2dfd8801bb22db42bd09 100644 GIT binary patch literal 7432 zcmc&%TWl0n82+bAfnbc7l6W^`1Omn;bKe;>N~KW1wlrKcBqp%ZP1(@ht=mN;K_!6) z5HvhU;+q=rLF0ol1~lIA#TPa4fy5Uv*hs<)KIoeu`h92S)Sb55jB&}F&CHoOd(QWt z|NAfJpY=oA2K#ny*|Gh*i8Bi%ZktOr(+N$-avb>^Egqfvctw}U$dN%_Ikd&_ojO1np?VgkJ|+HBbcZ0^*Her z&O6VYIe|aT-eHBS@n+7~@8>a}>kfYv_rENR_kZ}w2NfRiFXGbktsj~%asKX}7+=qC z$A{jZUO)3)%fGbqfWp;y8eb&lw{`uJ1Y}*kS}oN^%_m9?v5t?c_1`XgVT$}~ynpwl zC5t?aM?L?@>YtCc&gU%Zr{(GO8tYLViZ=8Nb$a|J9mj}nU!@#woB1o|PAU7V&_0N}U%}L429~`fU1mQcOZMlx*!NXvE%zV01 z8?7IZ9C>gpJ8~UzVcT9Y4<7pVFfPoEmC0tkaZqx~4}R$TxSYsyijoTt+bh+w`BbG0 zcgT?k_(K>vZsd`Q$jL81Y%3!w^79AV@k0<1I#CqZk_Qini+aNxD%DD3<%Z-H7j`l7 zY{w4Z4}ll>Iru|gtx`1y8l{Q7k|z(YXBTbTcfp0_74zVsS+AN~%eB#RL!TRxLmlM> zL1f#-V%UpQ!?i*?=nadW9ooJZ%FV8$mfg-us^?Wy+xOr>)%JhkAt~Jos0Rzzud^yF zT*GaHjL4wukOA2w!(xkvgFcW5PqrY-ODMev?V?!X;tDYuU?jwdhiAU~cnXs$lj!mY zYdT`Dnt|;D!2_CubuJJbB?riQ^+7CBjjQ`*mz1R{b!kck_nJ)NX}^rBw@LK-FvD#5 z*$U57$QJeq8PK|b&lTe~^mhUDM_iD$;7`Q@IWex|c0XV7{35rm$XSfn0xH!4YII{< z4RiJq?(CtIUgU+6-GnFVNA|dnfSN7CbrhFsT)#ZE-Ul1L`mrY`Q2Xp6;K~#rb1^~rBh`eAK!;68Gy}d7x4Cufnn%*cl%!s4m0K?29^mfb*NbNt z>RUc{gQ*#|`93PA9c z7B?cMor9XwptK1?C+3TN5OZ)GOPa}Ynz*nEFTdmZGHv2CZ0vKffn6m)drl-yLalK^ z!*-fl9dn3#Wqdl;G_~6pD{~RyDjJHQfjNWGLPD4k=nt$(Ti2(PfkS?=l39s95(gmIr_Juex-EJw zoUi*%yj)TP%!5pL>X6u&NyP!EScP)yKw3>1r4E&;bZf+@bhul|z>NxbF6uQkaY!&c zR02kJ@4i<{gqmG{;EL3MPWLK}X7dhOlBt5K(w42tb%#JbtwnWKITMz&U`rQvWV*!} z3L7qlV#ZXf#I>1>wF?@wkDTs05LakaP___Ng>e-FQ`1MGqO5baGpUeD3v_t8thSxO z^5tEX4q-PKQytkKrSoG}ttaNQ-Ukr$z1F(()?*Aa0(l(csD$;>v{GVLJ!}d_Gx=ICBh7zd8&2Rf5~QC#PREZr?xI9m3mqzd+LVDSzU|Kvy^7jh4?}^ zlfk2&lWuAPNeoUoS>vj0Rs=@Ill4DHYa7MD=wO5ajjfYhvw%%yvxIBb3|YBun~Q<* zzcLn;MeC%#vpy$Ud~0SNny2K)uF_t_>@?@c8fK<(=dA>1&1N>_XUClNHfA%2c9Nf2 b-vkLil#|wD-ftJo&h&NM2DQysIA+T~j?<=s literal 7200 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 diff --git a/Gems/EMotionFX/Assets/Editor/Layouts/Character.layout b/Gems/EMotionFX/Assets/Editor/Layouts/Character.layout index 5d42b49035b76325479b317cb411fc2f558bdb5e..cfaf839c85ec218de323e2c76086752c1c845171 100644 GIT binary patch literal 5097 zcmc&%U1%It6h7HqV-IU+DON1Zo!=dbh1A;En#5odr6A~MQRRj^LFA6FYDTN}4g7}~h_Q3}QE3qK>;)_V3m`1E2-?@eK#x8#E8&4W> z(|WkkPU6-JQVxA z#ENH<{f#Czh=R@w6-3p@QP?I_P^|_9)J0zsPg#%En-lfc(mmq;zdv|z-isWRMpfC4 z@2POB@_d{kw(A9Qqwfz_*YO6i;dPN-7Xy8#y^2A{l|^KMv!1{4+9^*-U8W?KL>hQE zQAml*$b_D?(LVpy>v*y14JT}UgPg0N2@^e>E0P`b#?iz4L(t?Q-*EZxB=zU<;< zXMq>85|`0>Kf>z+y-dsWaz+gcmZ)j)W*L?N8Iyk5EkhFEUgEs_OZ+`Dqzq^4ya=m{BZt>R4peXLUE zR=hp!4YkG%qT9iyktF}!IeuD0 zkCe91(QnuX&eH98-UNeg5@oIo{@2#OdL0mRCS!!%cT*q(U?%<1t>X}>Jy>H zd=!XF0BU*~!eb&wEJN|YU9N-Su;E6;dp}0Hjp&C-#M~-hFVuk;29g1xF$yyV7a@R9 z*$9680ZALvh?%(w{Y!|)Vw%Sk+8q@}HqyA#JH!%VZ5`hbVk@V?@-`mb$iJ4@GM20g z>eDzu;}RIQt|&OM16qH?^F`i~e2F2!wHy2kVC#oz?`v$zp8=b*+5^1S+6lAkFdj^7 z7TS^%Bc>Sc%q6p@Z4BXbmKFd)r!pgWq|?&8mn?7k7wCX7SRs7O%HVtOz0%2>Ps+69 zh)NX_(xePvuP-(%E<50SZ+UJe1#^!4^pbhUa!ma#T?Qxj){e$al>4jR({*na%Grm! zeUwY9xTO#kS8HL`vuN^vJvq-Bzpcsf06DXGmX0E=6dwEu4-Q>Bin{A(gm8`Bl` oBv7-hB`VhyaE1!e&-<|KCIiZDAJXFBdBxK--L_diEMT;M0l>5i6951J literal 5005 zcmc&%OK2Qr9RFu`i>U~T4=O3jASJYlFyFlA)@UWIY|_#;TJgDNmvqtWESp`_`aCFB zQ7RIODAfc#cu)^k^y;m65F-dZcvTR+iD=cB`1^e`Uy|KyBtp{pFEiik|9;K4ca0q@ zkKA{7;`p*iNm3YTwk#{M9NV$Qy6VLRqP>QGEiLE2T(~gb?|g}ZG9ccG-TSmZd->1#AM1U? zpCmg;0Jt-mo~|^i)*Y4BI{CyS&XYsF*3a-iw)=FspFRfP$a~}T@)tv(zrXX>gT&u^ zbIQkzuWMvh$J6BEmtP-PG-rpKwZ>@KI$CQ~Yc1>EdZU^=Va|+Q+wTY04ppqez>7jB zj`Q%t$YeWdS!0z(WvbSa-24!z(24BWQ-SN-dHA86Oqndm(GN%kH&9+2M@ogZlC&S~ z&l2-;)CKaPo;0k3^%>;FQ<76%#Bm(B%2syh_^#yPhw-FZvqoD}29Fo%2?OIpp7*6~Vfs@9&7yz;@bRTwHi^devK@xw^FU70*NU2DJ#`T4;`Nd#yR zLFg-A^2mp~lX|0VC7t%;^#&ScPW?dzaTGfWy;22H6kO)Im>*NyB0HC$#E_P?gLj*2xx~q^;1aV41Sw=!oK5l^aXtp|0PNtkhKl{o-TSyrc_0I@ZcNvg0gTEo;N|M zfs!BCL`d6Gkw;}x2b}Xd0$-EXhM}gl3^n~)Sb&hvQ+XomJr%=K)RC5ku-L=M*o5NI z(i$kAHq?m9;Pr_8&v<@ZiGLsWJ77a+M_@%|6jls?EiRY}dEio?LY8Z#B9%7{cf*E#L^9%8cN1 zYc=h*k|jv{0v#|0D};?%8GHk}SJu+@mM;s2UWvdVP09fJ`eH-lq613(cb**9r!+eq zbB^@1l6l8+OzkcF4x(97t^yk!d!X*SdSq5|!mQ-jtsnVPE95g~h@6(ftY^`nj{`XN z0ME9hg@eyCcve0aS|}9#6&9RY{apNyu9j(9IF(JZVc;H2_@|c-zg2^D48VLrN-x7l zJ~!}eYrSPYr6S$INc(f&WC89bk{MW=OkH61`t(0~60iwd>6LW_oOy-b@3vvXCIie~ T8`9!n$$7dpv3OWMEMUODiL86- diff --git a/Gems/EMotionFX/Assets/Editor/Layouts/Physics.layout b/Gems/EMotionFX/Assets/Editor/Layouts/Physics.layout index 2e59ab6b0ec6dd6ed6a7fd4e54bc1eac851c8e83..ffde15b36772368017a0688a788efd60a635a65e 100644 GIT binary patch literal 4503 zcmc&%TWDNG82-DPrhQQY?VBh^snx2%nK{?R2T4;~D@hxBK?I@MCQDtq*@fgpizXFm zkt&Ks>IFrJ`XmT~l!D|%p{P*ABKoGKEeJj+76e}!qu)2@j6Ekc(n9J^IA<>B|NhH2 z|38y`Xn6O~z~ejj?sc|8SG3<)Z63U=K7>uI=%TY<2bYa&_(j^^j-1GSr)ku zLnnV^)48KXc}h`_v*++m->+WF?(^CC_l}JW?cKJ0htah_`8xFd*aU%`nE8?VkLUgQ zPk%V&c%<&R+dsGVettR27p~D>-*?BqD9XL{`b*Xhzq9p8o`us}Hc{UB#cu;+X=lnqjwA1!>PN%JA8(efFAGA@SuT2~pR#(q$%B|26?DBa*; zu+>SQ^aha<&GE+Mlys*qf+*6;Pn3=WC0*fRAnie8?nNQSdAlmHXE73v@p~g6Z26 zvQHW^AstDjiFaG3Fq)QeJDWm(5c9h1mofX5<0hmUsP=v0E%V2?v_!DjgKSv!Jq+FK zEN&=8LpgG&;c0{j_=fL5R&K@fT9Jnv;VbvfdP|FEVeM4WVtL>vIjvYWfQQ z1E8x7AfI(;Q2tCHa)_=0OO3KSh4b(7o5~!jxObVux5+6!sJ#^sT&a5$UT`d$U zhf1%`u@FkhC8Gwyw$gdPy<~3E9&*~UvxE$geFnDYt$o%yW3AAU za#5qCY#1ySWgn(JQXBHsPr%Jds{yZ-4#K523DhVhmS)c-IC*c;;vJ=AW~niqnbbBd zK!i=mrq;`7A zxX4jplezpe2?~mh7FP14x~iJ;pJ@Eub{*RR>1!k(lGjA_zu4z}lcf?jgd4+~Ej!mC bj<%A_xDxeX#ojkLGu+mt%>2ilOSk?8kGW@{ literal 4411 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 literal 7805 zcmc&&TWl0n82-20ZZQa=KumnlAzlK;;LgnM&Q871f>29J+fXZDjO~_AV9R!QZMR-X z)I_3*5ie1y#3ziJ7!!jJCM3cGi9RU45CSIfps3M^#v4yw3ibQW%yf6#Y29Avp3R&y zGkebW-@fyoGiT$L&eo)X-%N#eLhGe=;P}vG3x#v1de< zEN}RbEncbOKcD<->=a+{eJReek5=Ed7caFVznvnE-~W7r`^+&%S$QQ2eF#FF(n5TW z*N)tJ<}S473u_dvk2kTu|IGdz*LdLEX|~@+T>U$4xbzgCSxj7h|7hm(ca$7)@%{c& z`9lGejGy@I%kQcALgD&&nujmq`q!7w@%0|ahTOnFD%+>6PYp`G*R|uz7598V|ND4F zy?n_cIo$gF_pN!qv9v#X(LP_EKih`>oZEn@JI@vyFP}`Qy_T?Uz1^0s)wRBsz60xLZ*mgDi(7DISIE7qRYacFT(phIv zs^JISh{jFbu;PYc#w}YGo)24cg>)`EB-QnUVHt5tPwG)yPuNMbYJSi0j1pL!ZXy9YhAlAkV7{7kVVfnQW?(Sa68dDst$ghywGT$Ew}H7clq zT(=L1VJz5Kbwd~CimU@Qj$e#AFN4k_E^_$X+>xUagVu2%*Ix(ZCAfN_`z( zUZyu<%Fjz4g}#VqEyMiQ>~z){GvHb9MHKjmC3Ifg0+KunecuG~6S%NxslUu(N+?x<&NRm)1aHVmnLf9K2xeM)k zfW54w)zGrlWw565hpRie7xRSJViOc4)b6$-9Q|+w%q~a@A=;^U&-*m^@5taJ#*>dU z#8y%f6Hg+YA^pl3FyS$%@Gf2)D>vh|GBe@;Nx(ZcykUcggpK*0!QjwARI1Fc5yi=6 zLMA2qZYxHV67Q8JI3bOc&oG~mBBxU3JZVxJuT%OjEG;K)5d zz+4r1o)t?_AZb6@06st$5F1ZP>IAoj&tT9aYN$85oLz=uRvfjiMymvb@iv}Jjwg}E zeF%1iKSgK`!?ByjNgKc}3t=E#sT5~~sg$FeEXEoP4QXf}BnC|?SBhB$Ghbm)!MMUP zIa;|n)C3*QV%UhsmB=svU%-pnqEeg*$Qw1UqebGz1fyi7Yrk}=kPIUbDdcAd&Tj{E z`*F7u&)e{C9|Gjy-VIPU@;HMy)rc0A>GR(B9Kz@Y5Hjm-hFmD1o3r-bHtbFQqfB~GC11j3gR>jEGaPst&7#I2-j^)bUMzEomXHp&*+B->@}3?|3_^_^~7gf2n{b;d(IX!YF{d2y?n zWSnBmm}TKw2awG~V*%Z34xoh?l(PAMOW6_O>@AQ2>U3nkuPkyDyI25<1zUM?dUMYeGV0gF4d&|(i<+0$4NdNM*yP^ zr)!}*akJh>-CUthcU2U#x(nd(N*^CBipq05-@-mq7O`b+XAUxF*_(#Z1Eg6z!Z3K0^#JQT1@v z@X0Gd*7{%Zkxwv)teUyC#qW&qk9gn&F*r1UseiU;ZDkCea&PCE72-C#wDjO1$X5Sc zA@V2w{{@}qV(a*^0&s#DOk2Yzinh+3!Qm4SRZ`S48Dyt_%2EF`?95`s-0buYIe>E< z*CYn_l-s$$yEJITGSN5OY6o(_Kc}f5!k`~H64(4~{K<+52M6BDHF?RK=6C}-vCN-d y0UsnKdQ~T8^J$%*gT_xfJnI(RenderPlugin::CLASS_ID); } const char* GetCreatorName() const override { return "O3DE"; } float GetVersion() const override { return 1.0f; } diff --git a/Gems/EMotionFX/Code/Tests/Mocks/AtomRenderPlugin.h b/Gems/EMotionFX/Code/Tests/Mocks/AtomRenderPlugin.h new file mode 100644 index 0000000000..5be74a5d41 --- /dev/null +++ b/Gems/EMotionFX/Code/Tests/Mocks/AtomRenderPlugin.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include + +namespace EMStudio +{ + // The Mock version of AtomRenderPlugin. It have the same name, class_id and type of the actual version. + // The actual implementation of the AtomRenderPlugin is defined outside of EMotionFX gem. This Mock version + // exists so we could load the default layouts without errors. + class MockAtomRenderPlugin + : public DockWidgetPlugin + { + enum + { + CLASS_ID = 0x32b0c04d + }; + + // Plugin information + const char* GetName() const override + { + return "Atom Render Window"; + }; + uint32 GetClassID() const override + { + return CLASS_ID; + }; + + bool Init() override + { + return true; + }; + + EMStudioPlugin* Clone() + { + return new MockAtomRenderPlugin(); + }; + + EMStudioPlugin::EPluginType GetPluginType() const override + { + return EMStudioPlugin::PLUGINTYPE_RENDERING; + }; + }; + +} diff --git a/Gems/EMotionFX/Code/Tests/ProvidesUI/Ragdoll/CanCopyPasteColliders.cpp b/Gems/EMotionFX/Code/Tests/ProvidesUI/Ragdoll/CanCopyPasteColliders.cpp index 17f07b2180..5e3eff1453 100644 --- a/Gems/EMotionFX/Code/Tests/ProvidesUI/Ragdoll/CanCopyPasteColliders.cpp +++ b/Gems/EMotionFX/Code/Tests/ProvidesUI/Ragdoll/CanCopyPasteColliders.cpp @@ -40,11 +40,6 @@ namespace EMotionFX UIFixture::SetUp(); - AZ::SerializeContext* serializeContext = GetSerializeContext(); - - Physics::MockPhysicsSystem::Reflect(serializeContext); // Required by Ragdoll plugin to fake PhysX Gem is available - D6JointLimitConfiguration::Reflect(serializeContext); - EXPECT_CALL(m_jointHelpers, GetSupportedJointTypeIds) .WillRepeatedly(testing::Return(AZStd::vector{ azrtti_typeid() })); @@ -68,7 +63,9 @@ namespace EMotionFX { return AZStd::make_unique(); }); } - private: + protected: + virtual bool ShouldReflectPhysicSystem() override { return true; } + Physics::MockPhysicsSystem m_physicsSystem; Physics::MockPhysicsInterface m_physicsInterface; Physics::MockJointHelpersInterface m_jointHelpers; @@ -116,7 +113,6 @@ namespace EMotionFX auto* ragdollPlugin = EMStudio::GetPluginManager()->FindActivePlugin(); ASSERT_TRUE(ragdollPlugin) << "Ragdoll plugin not found."; - ragdollPlugin->Init(); auto* skeletonOutlinerPlugin = EMStudio::GetPluginManager()->FindActivePlugin(); ASSERT_TRUE(skeletonOutlinerPlugin) << "Skeleton outliner plugin not found."; diff --git a/Gems/EMotionFX/Code/Tests/ProvidesUI/Ragdoll/CanCopyPasteJointLimits.cpp b/Gems/EMotionFX/Code/Tests/ProvidesUI/Ragdoll/CanCopyPasteJointLimits.cpp index 3f475c7916..6ff00e4e1b 100644 --- a/Gems/EMotionFX/Code/Tests/ProvidesUI/Ragdoll/CanCopyPasteJointLimits.cpp +++ b/Gems/EMotionFX/Code/Tests/ProvidesUI/Ragdoll/CanCopyPasteJointLimits.cpp @@ -31,6 +31,8 @@ namespace EMotionFX { class CopyPasteRagdollJointLimitsFixture : public UIFixture { + protected: + virtual bool ShouldReflectPhysicSystem() override { return true; } }; #if AZ_TRAIT_DISABLE_FAILED_EMOTION_FX_EDITOR_TESTS @@ -41,16 +43,10 @@ namespace EMotionFX { using testing::_; - AZ::SerializeContext* serializeContext = GetSerializeContext(); - - Physics::MockPhysicsSystem::Reflect(serializeContext); // Required by Ragdoll plugin to fake PhysX Gem is available - D6JointLimitConfiguration::Reflect(serializeContext); - EMStudio::GetMainWindow()->ApplicationModeChanged("Physics"); auto ragdollPlugin = static_cast(EMStudio::GetPluginManager()->FindActivePlugin(EMotionFX::RagdollNodeInspectorPlugin::CLASS_ID)); ASSERT_TRUE(ragdollPlugin) << "Ragdoll plugin not found."; - ragdollPlugin->Init(); Physics::MockPhysicsSystem physicsSystem; Physics::MockPhysicsInterface physicsInterface; diff --git a/Gems/EMotionFX/Code/Tests/UI/CanAddToSimulatedObject.cpp b/Gems/EMotionFX/Code/Tests/UI/CanAddToSimulatedObject.cpp index a10ba352d2..de4eb001c3 100644 --- a/Gems/EMotionFX/Code/Tests/UI/CanAddToSimulatedObject.cpp +++ b/Gems/EMotionFX/Code/Tests/UI/CanAddToSimulatedObject.cpp @@ -34,19 +34,8 @@ namespace EMotionFX class CanAddToSimulatedObjectFixture : public UIFixture { - public: - void SetUp() override - { - SetupQtAndFixtureBase(); - - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationBus::Events::GetSerializeContext); - - Physics::MockPhysicsSystem::Reflect(serializeContext); // Required by Ragdoll plugin to fake PhysX Gem is available - D6JointLimitConfiguration::Reflect(serializeContext); - - SetupPluginWindows(); - } + protected: + virtual bool ShouldReflectPhysicSystem() override { return true; } }; TEST_F(CanAddToSimulatedObjectFixture, CanAddExistingJointsAndUnaddedChildren) diff --git a/Gems/EMotionFX/Code/Tests/UI/ClothColliderTests.cpp b/Gems/EMotionFX/Code/Tests/UI/ClothColliderTests.cpp index d87c35a4fa..59066ca1b8 100644 --- a/Gems/EMotionFX/Code/Tests/UI/ClothColliderTests.cpp +++ b/Gems/EMotionFX/Code/Tests/UI/ClothColliderTests.cpp @@ -49,18 +49,6 @@ namespace EMotionFX class ClothColliderTestsFixture : public UIFixture { public: - void SetUp() override - { - SetupQtAndFixtureBase(); - - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationBus::Events::GetSerializeContext); - - SystemComponent::Reflect(serializeContext); - - SetupPluginWindows(); - } - void TearDown() override { QApplication::processEvents(QEventLoop::ExcludeUserInputEvents); @@ -86,6 +74,19 @@ namespace EMotionFX } protected: + bool ShouldReflectPhysicSystem() override { return true; } + + void ReflectMockedSystems() override + { + UIFixture::ReflectMockedSystems(); + + // Reflect the mocked version of the cloth system. + AZ::SerializeContext* serializeContext = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationBus::Events::GetSerializeContext); + + SystemComponent::Reflect(serializeContext); + } + QModelIndexList m_indexList; ReselectingTreeView* m_treeView; EMotionFX::SkeletonOutlinerPlugin* m_skeletonOutliner; diff --git a/Gems/EMotionFX/Code/Tests/UI/RagdollEditTests.cpp b/Gems/EMotionFX/Code/Tests/UI/RagdollEditTests.cpp index d097e67d15..94b659ab91 100644 --- a/Gems/EMotionFX/Code/Tests/UI/RagdollEditTests.cpp +++ b/Gems/EMotionFX/Code/Tests/UI/RagdollEditTests.cpp @@ -31,18 +31,12 @@ namespace EMotionFX { class RagdollEditTestsFixture : public UIFixture { - public: + public: void SetUp() override { - using ::testing::_; - - SetupQtAndFixtureBase(); - - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationBus::Events::GetSerializeContext); + UIFixture::SetUp(); - Physics::MockPhysicsSystem::Reflect(serializeContext); // Required by Ragdoll plugin to fake PhysX Gem is available - D6JointLimitConfiguration::Reflect(serializeContext); + using ::testing::_; EXPECT_CALL(m_jointHelpers, GetSupportedJointTypeIds) .WillRepeatedly(testing::Return(AZStd::vector{ azrtti_typeid() })); @@ -67,7 +61,6 @@ namespace EMotionFX return AZStd::make_unique(); }); - SetupPluginWindows(); } void TearDown() override @@ -95,6 +88,8 @@ namespace EMotionFX } protected: + virtual bool ShouldReflectPhysicSystem() override { return true; } + QModelIndexList m_indexList; ReselectingTreeView* m_treeView; EMotionFX::SkeletonOutlinerPlugin* m_skeletonOutliner; diff --git a/Gems/EMotionFX/Code/Tests/UI/UIFixture.cpp b/Gems/EMotionFX/Code/Tests/UI/UIFixture.cpp index ea1f1c9148..2a1c7b190d 100644 --- a/Gems/EMotionFX/Code/Tests/UI/UIFixture.cpp +++ b/Gems/EMotionFX/Code/Tests/UI/UIFixture.cpp @@ -8,6 +8,9 @@ #include #include +#include +#include +#include #include #include @@ -69,6 +72,7 @@ namespace EMotionFX // Set ignore visibilty so that the visibility check can be ignored in plugins EMStudio::GetManager()->SetIgnoreVisibility(true); } + void UIFixture::SetupPluginWindows() { // Plugins have to be created after both the QApplication object and @@ -81,11 +85,30 @@ namespace EMotionFX } } + void UIFixture::ReflectMockedSystems() + { + if (ShouldReflectPhysicSystem()) + { + AZ::SerializeContext* serializeContext = GetSerializeContext(); + + Physics::MockPhysicsSystem::Reflect(serializeContext); // Required by Ragdoll plugin to fake PhysX Gem is available + D6JointLimitConfiguration::Reflect(serializeContext); + } + } + + void UIFixture::OnRegisterPlugin() + { + EMStudio::PluginManager* pluginManager = EMStudio::EMStudioManager::GetInstance()->GetPluginManager(); + pluginManager->RegisterPlugin(new EMStudio::MockAtomRenderPlugin()); + } void UIFixture::SetUp() { + Integration::SystemNotificationBus::Handler::BusConnect(); + using namespace testing; SetupQtAndFixtureBase(); + ReflectMockedSystems(); SetupPluginWindows(); m_animGraphPlugin = static_cast(EMStudio::GetPluginManager()->FindActivePlugin(EMStudio::AnimGraphPlugin::CLASS_ID)); @@ -97,6 +120,7 @@ namespace EMotionFX void UIFixture::TearDown() { m_assetSystemRequestMock.BusDisconnect(); + Integration::SystemNotificationBus::Handler::BusDisconnect(); CloseAllNotificationWindows(); DeselectAllAnimGraphNodes(); diff --git a/Gems/EMotionFX/Code/Tests/UI/UIFixture.h b/Gems/EMotionFX/Code/Tests/UI/UIFixture.h index 7d22f0ce58..59b517ee33 100644 --- a/Gems/EMotionFX/Code/Tests/UI/UIFixture.h +++ b/Gems/EMotionFX/Code/Tests/UI/UIFixture.h @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -68,6 +69,7 @@ namespace EMotionFX class UIFixture : public MakeQtApplicationBase , public UIFixtureBase + , private Integration::SystemNotificationBus::Handler { public: void SetUp() override; @@ -108,6 +110,10 @@ namespace EMotionFX SimulatedObjectColliderWidget* GetSimulatedObjectColliderWidget() const; protected: + virtual bool ShouldReflectPhysicSystem() { return false; } + virtual void ReflectMockedSystems(); + + void OnRegisterPlugin(); void SetupQtAndFixtureBase(); void SetupPluginWindows(); diff --git a/Gems/EMotionFX/Code/emotionfx_editor_tests_files.cmake b/Gems/EMotionFX/Code/emotionfx_editor_tests_files.cmake index c7e0e57256..ee71677f9a 100644 --- a/Gems/EMotionFX/Code/emotionfx_editor_tests_files.cmake +++ b/Gems/EMotionFX/Code/emotionfx_editor_tests_files.cmake @@ -99,5 +99,6 @@ set(FILES Tests/EMotionFXBuilderFixture.cpp Tests/TestAssetCode/TestActorAssets.h Tests/TestAssetCode/TestActorAssets.cpp + Tests/Mocks/AtomRenderPlugin.h Tests/Mocks/PhysicsSystem.h )