From 97f301580882652797e0a2ce2fc1df271970005d Mon Sep 17 00:00:00 2001 From: LP Date: Fri, 27 Jul 2018 23:03:56 +0100 Subject: [PATCH] Updated EcsRx version and fixed a couple of issues Still have the problem with scene first stuff :( Zenejct issue is next on list. --- .../AutoRegisterSystems/Application.cs | 5 ++++- .../Systems/RandomMovementSystem.cs | 1 + .../auto-register-systems-scene.unity | Bin 18776 -> 18988 bytes .../Systems/CameraFollowSystem.cs | 1 + .../Systems/PlayerControlSystem.cs | 1 + .../UnityApplication.cs | 21 +++++------------- .../custom-game-object-handling.unity | Bin 23228 -> 22372 bytes .../GameObjectBinding/UnityApplication.cs | 1 + .../ViewResolvers/CubeViewResolver.cs | 2 +- .../ViewResolvers/SphereViewResolver.cs | 2 +- .../Systems/CameraFollowSystem.cs | 1 + .../Systems/RandomMovementSystem.cs | 1 + .../UnityApplication.cs | 2 +- .../PluginExample/UnityApplication.cs | 1 + .../Systems/SelfDestructionSystem.cs | 1 + .../PooledViews/Systems/SpawnSystem.cs | 1 + .../SelfDestructionViewResolver.cs | 1 + .../Systems/ColorChangingSystem.cs | 1 + .../Systems/CubeColourChangerSystem.cs | 1 + .../SceneFirstSetup/Application.cs | 1 + .../Systems/CameraFollowSystem.cs | 1 + .../Systems/PlayerControlSystem.cs | 1 + .../SimpleMovement/UnityApplication.cs | 5 ++--- .../Blueprints/PlayerBlueprint.cs | 5 +++-- .../Systems/PlayerReportingSystem.cs | 1 + src/Assets/EcsRx/EcsRx.Infrastructure.dll | Bin 10752 -> 10752 bytes src/Assets/EcsRx/EcsRx.Infrastructure.pdb | Bin 2456 -> 2508 bytes src/Assets/EcsRx/EcsRx.Views.dll | Bin 8704 -> 8704 bytes src/Assets/EcsRx/EcsRx.Views.pdb | Bin 2780 -> 2780 bytes src/Assets/EcsRx/EcsRx.dll | Bin 64000 -> 66048 bytes src/Assets/EcsRx/EcsRx.pdb | Bin 30552 -> 31488 bytes .../ZenjectDependencyContainer.cs | 12 +++++++++- .../EcsRx/Unity/Editor/EntityViewInspector.cs | 9 +++++--- .../Unity/Extensions/GameObjectExtensions.cs | 1 + .../Unity/Extensions/IEntityExtensions.cs | 5 +++-- .../Unity/MonoBehaviours/RegisterAsEntity.cs | 12 +++++----- 36 files changed, 61 insertions(+), 36 deletions(-) diff --git a/src/Assets/EcsRx.Examples/AutoRegisterSystems/Application.cs b/src/Assets/EcsRx.Examples/AutoRegisterSystems/Application.cs index 086bbbe8..29980b41 100644 --- a/src/Assets/EcsRx.Examples/AutoRegisterSystems/Application.cs +++ b/src/Assets/EcsRx.Examples/AutoRegisterSystems/Application.cs @@ -8,6 +8,9 @@ public class Application : EcsRxApplicationBehaviour { protected override void ApplicationStarting() { + // You could optionally use instead of the scene based approach + // this.BindAllSystemsWithinApplicationScope(); + this.RegisterAllBoundSystems(); } @@ -15,7 +18,7 @@ protected override void ApplicationStarted() { var defaultPool = CollectionManager.GetCollection(); var entity = defaultPool.CreateEntity(); - entity.AddComponent(new ViewComponent()); + entity.AddComponents(new ViewComponent()); } } } \ No newline at end of file diff --git a/src/Assets/EcsRx.Examples/AutoRegisterSystems/Systems/RandomMovementSystem.cs b/src/Assets/EcsRx.Examples/AutoRegisterSystems/Systems/RandomMovementSystem.cs index 86bd0ae6..3ad63693 100644 --- a/src/Assets/EcsRx.Examples/AutoRegisterSystems/Systems/RandomMovementSystem.cs +++ b/src/Assets/EcsRx.Examples/AutoRegisterSystems/Systems/RandomMovementSystem.cs @@ -1,5 +1,6 @@ using System; using EcsRx.Entities; +using EcsRx.Extensions; using EcsRx.Groups; using EcsRx.Groups.Observable; using EcsRx.Systems; diff --git a/src/Assets/EcsRx.Examples/AutoRegisterSystems/auto-register-systems-scene.unity b/src/Assets/EcsRx.Examples/AutoRegisterSystems/auto-register-systems-scene.unity index cf2e18c53e8e6d45b42a88526b142e3da1ca7db7..291b2c3f091f0a4adb2622f804ab744fecefdb0a 100644 GIT binary patch delta 2017 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 delta 2797 zcmbW2drXu^5Wsiu;5;AbQIG>Y0eJ`r9CtqMKtwnn2nX^~&=?Gycs?j7a%iBMaHOL6 zZXKd%eYV!B#iBX1Euo1qZQ7=4AW{FYRE=VN#J19E)GE@M{l1g7{?XWlxo_sTvoo{% z?e5q88E-$$!x@{ti?R9bj4^N2PvVn}GZ^FbM!jM2IQFuyua9d^g}3-=S|0uW(a$B; z8t<%##Dwy--$A!uq~bD%q1tZ(tdrV~x7SDY?%AsA-TB9$=Ybfd4#g85XwBpl7v={q zjB02%mbqH|8x?^IpB%dw->E*G5op;})^OzX81!yL;V4x~=+Tb*=df1S5?zpTc+-K7 zojF#&tLep0@|T+LRSZFQ6V!#6RYOse61jd2^5UA7cZ;%*KD+#`qfvD(;B4y#SR0b! z4yg-OLs!V3+Cm(|`uhIE)zuZkdHCjU{klqTM-1MkihgXmS7468q0LyWf?{AZGv?e3 z?}tRF2B3AByW+xD^I8Q?s7Jw^1;{igZ=q1*IPMURSb@3+iVs0-ZoU$A;=Tm2xw!*% z;=>7IbMqS1iTe@6#_3`T5sHGQh)6tE=3#=< z7-{MW$nl@ySrN_6lVwg@mztYr$UH(&=loY4i{y?-(a}GkQsz;_QzU)}3#vy>g^neT zjS>*wE%Ru&7+C}>qO{6tR^zIVvheV}J5LX_O;G+2oA_d@wc*n?BM#e+?rIT0+NGa} zU8+JNpBH`f7G-T0zJo~FQxw92F`cwa$IA(&Li+hcnMaH0#H9kwGN&^_&CSzg9xGwN zX>%2FWx0c^%Z_a%VWk*nR<%fVvu;Q?@BqLz<XmAyR6R&IAx*h=gUR!K#1)*1N0taUG*Haq(|y9#TMJZxOO zceg5etaJ93^{qRXbeBy*uSc(EuJYh%U^GR5X1uR)qKHJ%lq?q~Sc*amVtU0nyNqw> zI@)+8_n9FH>xvguCy1&iiK-Jt)ssclNm%u5*l!*+Jmy(_LEMtuF^}4gE|?X*=OLYl z?_C|{Yf5X5tQI!>2uD<^Nsa8zR=vM`Ek8xUdDF& z{xvV>7Icm;dJxt|mq_I6GrY@T(v(O=2!oO-zj)K_J_zOIu}pCbR)8(pC+RM}-U_6& z9occIXPzfx^dTCIlDUtIldndH1!!XznD4m>Mk>cA6?j8t2a&l8yd^WuF#G_c4?fr#ZD2Y+*gQ07 zb#ay0%!c_n#43+`FbUT0LumFw(R8|P&YM{ zd%8ZJn!zC@(*qt&^W`en!0EqnmnQWJhx;>4P;6DZV$y;+a!1-A<=qMu{V@TA#msSyhdGMzyWHqRj5lPg~`vT2Vd|k6!k|QhP~Nnr-=_ zvSrJc=%q91fF4T(7_1s-%JGG+RJ8}abm&Npglg*$J^;S52Ek#gztGIG?VCY%YzEn} z89~sMOZL83c4i*gUYX base.Group.WithComponent(); - protected override GameObject PrefabTemplate => GameObject.CreatePrimitive(PrimitiveType.Cube); + protected override GameObject PrefabTemplate { get; } = Resources.Load("Cube"); public CubeViewResolver(IEntityCollectionManager collectionManager, IEventSystem eventSystem, IInstantiator instantiator) : base(collectionManager, eventSystem, instantiator) diff --git a/src/Assets/EcsRx.Examples/GameObjectBinding/ViewResolvers/SphereViewResolver.cs b/src/Assets/EcsRx.Examples/GameObjectBinding/ViewResolvers/SphereViewResolver.cs index 8bc1f29e..c26376f1 100644 --- a/src/Assets/EcsRx.Examples/GameObjectBinding/ViewResolvers/SphereViewResolver.cs +++ b/src/Assets/EcsRx.Examples/GameObjectBinding/ViewResolvers/SphereViewResolver.cs @@ -13,7 +13,7 @@ namespace EcsRx.Examples.GameObjectBinding.ViewResolvers public class SphereViewResolver : PrefabViewResolverSystem { public override IGroup Group => base.Group.WithComponent(); - protected override GameObject PrefabTemplate => GameObject.CreatePrimitive(PrimitiveType.Sphere); + protected override GameObject PrefabTemplate { get; } = Resources.Load("Sphere"); public SphereViewResolver(IEntityCollectionManager collectionManager, IEventSystem eventSystem, IInstantiator instantiator) : base(collectionManager, eventSystem, instantiator) { diff --git a/src/Assets/EcsRx.Examples/GameObjectLinking/Systems/CameraFollowSystem.cs b/src/Assets/EcsRx.Examples/GameObjectLinking/Systems/CameraFollowSystem.cs index c28f38fd..b51f1566 100644 --- a/src/Assets/EcsRx.Examples/GameObjectLinking/Systems/CameraFollowSystem.cs +++ b/src/Assets/EcsRx.Examples/GameObjectLinking/Systems/CameraFollowSystem.cs @@ -1,4 +1,5 @@ using EcsRx.Entities; +using EcsRx.Extensions; using EcsRx.Groups; using EcsRx.Systems; using EcsRx.Views.Components; diff --git a/src/Assets/EcsRx.Examples/ManuallyRegisterSystems/Systems/RandomMovementSystem.cs b/src/Assets/EcsRx.Examples/ManuallyRegisterSystems/Systems/RandomMovementSystem.cs index f4bd32d1..20a9475e 100644 --- a/src/Assets/EcsRx.Examples/ManuallyRegisterSystems/Systems/RandomMovementSystem.cs +++ b/src/Assets/EcsRx.Examples/ManuallyRegisterSystems/Systems/RandomMovementSystem.cs @@ -1,5 +1,6 @@ using System; using EcsRx.Entities; +using EcsRx.Extensions; using EcsRx.Groups; using EcsRx.Groups.Observable; using EcsRx.Systems; diff --git a/src/Assets/EcsRx.Examples/ManuallyRegisterSystems/UnityApplication.cs b/src/Assets/EcsRx.Examples/ManuallyRegisterSystems/UnityApplication.cs index ccb8f646..719fca9f 100644 --- a/src/Assets/EcsRx.Examples/ManuallyRegisterSystems/UnityApplication.cs +++ b/src/Assets/EcsRx.Examples/ManuallyRegisterSystems/UnityApplication.cs @@ -18,7 +18,7 @@ protected override void ApplicationStarted() var defaultPool = CollectionManager.GetCollection(); var entity = defaultPool.CreateEntity(); - entity.AddComponent(new ViewComponent()); + entity.AddComponents(new ViewComponent()); } } } \ No newline at end of file diff --git a/src/Assets/EcsRx.Examples/PluginExample/UnityApplication.cs b/src/Assets/EcsRx.Examples/PluginExample/UnityApplication.cs index 7bc2916d..41b5b5d9 100644 --- a/src/Assets/EcsRx.Examples/PluginExample/UnityApplication.cs +++ b/src/Assets/EcsRx.Examples/PluginExample/UnityApplication.cs @@ -1,4 +1,5 @@ using EcsRx.Examples.PluginExample.HelloWorldPlugin.components; +using EcsRx.Extensions; using EcsRx.Unity; using EcsRx.Unity.Extensions; diff --git a/src/Assets/EcsRx.Examples/PooledViews/Systems/SelfDestructionSystem.cs b/src/Assets/EcsRx.Examples/PooledViews/Systems/SelfDestructionSystem.cs index 81e1d3e5..cb905f70 100644 --- a/src/Assets/EcsRx.Examples/PooledViews/Systems/SelfDestructionSystem.cs +++ b/src/Assets/EcsRx.Examples/PooledViews/Systems/SelfDestructionSystem.cs @@ -2,6 +2,7 @@ using EcsRx.Collections; using EcsRx.Entities; using EcsRx.Examples.PooledViews.Components; +using EcsRx.Extensions; using EcsRx.Groups; using EcsRx.Systems; using EcsRx.Views.Components; diff --git a/src/Assets/EcsRx.Examples/PooledViews/Systems/SpawnSystem.cs b/src/Assets/EcsRx.Examples/PooledViews/Systems/SpawnSystem.cs index 155143e3..57384022 100644 --- a/src/Assets/EcsRx.Examples/PooledViews/Systems/SpawnSystem.cs +++ b/src/Assets/EcsRx.Examples/PooledViews/Systems/SpawnSystem.cs @@ -3,6 +3,7 @@ using EcsRx.Entities; using EcsRx.Examples.PooledViews.Blueprints; using EcsRx.Examples.PooledViews.Components; +using EcsRx.Extensions; using EcsRx.Groups; using EcsRx.Systems; using EcsRx.Views.Components; diff --git a/src/Assets/EcsRx.Examples/PooledViews/ViewResolvers/SelfDestructionViewResolver.cs b/src/Assets/EcsRx.Examples/PooledViews/ViewResolvers/SelfDestructionViewResolver.cs index 1fdc2bd0..b2ed08c2 100644 --- a/src/Assets/EcsRx.Examples/PooledViews/ViewResolvers/SelfDestructionViewResolver.cs +++ b/src/Assets/EcsRx.Examples/PooledViews/ViewResolvers/SelfDestructionViewResolver.cs @@ -2,6 +2,7 @@ using EcsRx.Entities; using EcsRx.Events; using EcsRx.Examples.PooledViews.Components; +using EcsRx.Extensions; using EcsRx.Groups; using EcsRx.Unity.Systems; using EcsRx.Views.Components; diff --git a/src/Assets/EcsRx.Examples/RandomReactions/Systems/ColorChangingSystem.cs b/src/Assets/EcsRx.Examples/RandomReactions/Systems/ColorChangingSystem.cs index c5dd720d..58a32c06 100644 --- a/src/Assets/EcsRx.Examples/RandomReactions/Systems/ColorChangingSystem.cs +++ b/src/Assets/EcsRx.Examples/RandomReactions/Systems/ColorChangingSystem.cs @@ -1,6 +1,7 @@ using System; using EcsRx.Entities; using EcsRx.Examples.RandomReactions.Components; +using EcsRx.Extensions; using EcsRx.Groups; using EcsRx.Groups.Observable; using EcsRx.Systems; diff --git a/src/Assets/EcsRx.Examples/RandomReactions/Systems/CubeColourChangerSystem.cs b/src/Assets/EcsRx.Examples/RandomReactions/Systems/CubeColourChangerSystem.cs index 1a3dabb5..21e71e38 100644 --- a/src/Assets/EcsRx.Examples/RandomReactions/Systems/CubeColourChangerSystem.cs +++ b/src/Assets/EcsRx.Examples/RandomReactions/Systems/CubeColourChangerSystem.cs @@ -1,6 +1,7 @@ using System; using EcsRx.Entities; using EcsRx.Examples.RandomReactions.Components; +using EcsRx.Extensions; using EcsRx.Groups; using EcsRx.Systems; using EcsRx.Views.Components; diff --git a/src/Assets/EcsRx.Examples/SceneFirstSetup/Application.cs b/src/Assets/EcsRx.Examples/SceneFirstSetup/Application.cs index eb56ae03..7c2f27fc 100644 --- a/src/Assets/EcsRx.Examples/SceneFirstSetup/Application.cs +++ b/src/Assets/EcsRx.Examples/SceneFirstSetup/Application.cs @@ -1,4 +1,5 @@ using EcsRx.Examples.SceneFirstSetup.Components; +using EcsRx.Extensions; using EcsRx.Unity; using EcsRx.Unity.Extensions; using EcsRx.Views.Components; diff --git a/src/Assets/EcsRx.Examples/SimpleMovement/Systems/CameraFollowSystem.cs b/src/Assets/EcsRx.Examples/SimpleMovement/Systems/CameraFollowSystem.cs index e19935aa..433bbb0f 100644 --- a/src/Assets/EcsRx.Examples/SimpleMovement/Systems/CameraFollowSystem.cs +++ b/src/Assets/EcsRx.Examples/SimpleMovement/Systems/CameraFollowSystem.cs @@ -1,6 +1,7 @@ using System; using EcsRx.Entities; using EcsRx.Examples.SimpleMovement.Components; +using EcsRx.Extensions; using EcsRx.Groups; using EcsRx.Groups.Observable; using EcsRx.Systems; diff --git a/src/Assets/EcsRx.Examples/SimpleMovement/Systems/PlayerControlSystem.cs b/src/Assets/EcsRx.Examples/SimpleMovement/Systems/PlayerControlSystem.cs index 0d7ea46a..34006d66 100644 --- a/src/Assets/EcsRx.Examples/SimpleMovement/Systems/PlayerControlSystem.cs +++ b/src/Assets/EcsRx.Examples/SimpleMovement/Systems/PlayerControlSystem.cs @@ -1,6 +1,7 @@ using System; using EcsRx.Entities; using EcsRx.Examples.SimpleMovement.Components; +using EcsRx.Extensions; using EcsRx.Groups; using EcsRx.Groups.Observable; using EcsRx.Systems; diff --git a/src/Assets/EcsRx.Examples/SimpleMovement/UnityApplication.cs b/src/Assets/EcsRx.Examples/SimpleMovement/UnityApplication.cs index 14ac6c22..68366a3f 100644 --- a/src/Assets/EcsRx.Examples/SimpleMovement/UnityApplication.cs +++ b/src/Assets/EcsRx.Examples/SimpleMovement/UnityApplication.cs @@ -18,9 +18,8 @@ protected override void ApplicationStarted() { var defaultPool = CollectionManager.GetCollection(); var viewEntity = defaultPool.CreateEntity(); - viewEntity.AddComponent(new ViewComponent()); - viewEntity.AddComponent(new PlayerControlledComponent()); - viewEntity.AddComponent(new CameraFollowsComponent()); + viewEntity.AddComponents(new ViewComponent(), + new PlayerControlledComponent(), new CameraFollowsComponent()); } } } \ No newline at end of file diff --git a/src/Assets/EcsRx.Examples/UsingBlueprints/Blueprints/PlayerBlueprint.cs b/src/Assets/EcsRx.Examples/UsingBlueprints/Blueprints/PlayerBlueprint.cs index b7540b14..336ff1c5 100644 --- a/src/Assets/EcsRx.Examples/UsingBlueprints/Blueprints/PlayerBlueprint.cs +++ b/src/Assets/EcsRx.Examples/UsingBlueprints/Blueprints/PlayerBlueprint.cs @@ -1,6 +1,7 @@ using EcsRx.Blueprints; using EcsRx.Entities; using EcsRx.Examples.UsingBlueprints.Components; +using EcsRx.Extensions; namespace EcsRx.Examples.UsingBlueprints.Blueprints { @@ -17,8 +18,8 @@ public PlayerBlueprint(string name, float defaultHealth = 100.0f) public void Apply(IEntity entity) { - entity.AddComponent(new HasName { Name = Name }); - entity.AddComponent(new WithHealthComponent { CurrentHealth = DefaultHealth, MaxHealth = DefaultHealth}); + entity.AddComponents(new HasName { Name = Name }, + new WithHealthComponent { CurrentHealth = DefaultHealth, MaxHealth = DefaultHealth}); } } } \ No newline at end of file diff --git a/src/Assets/EcsRx.Examples/UsingBlueprints/Systems/PlayerReportingSystem.cs b/src/Assets/EcsRx.Examples/UsingBlueprints/Systems/PlayerReportingSystem.cs index 0742392f..2818a9c1 100644 --- a/src/Assets/EcsRx.Examples/UsingBlueprints/Systems/PlayerReportingSystem.cs +++ b/src/Assets/EcsRx.Examples/UsingBlueprints/Systems/PlayerReportingSystem.cs @@ -1,6 +1,7 @@ using EcsRx.Entities; using EcsRx.Examples.UsingBlueprints.Components; using EcsRx.Examples.UsingBlueprints.Groups; +using EcsRx.Extensions; using EcsRx.Groups; using EcsRx.Systems; using UnityEngine; diff --git a/src/Assets/EcsRx/EcsRx.Infrastructure.dll b/src/Assets/EcsRx/EcsRx.Infrastructure.dll index b9da44b6719839b0107ad4cbb03aa425a1fb3056..fb25149996dce22ea777d3187d427534c1f5b29a 100644 GIT binary patch delta 3114 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 IiDjYx0|Ke%yZ`_I diff --git a/src/Assets/EcsRx/EcsRx.Infrastructure.pdb b/src/Assets/EcsRx/EcsRx.Infrastructure.pdb index 2efa3a1a9d1fffe54195cdfa1405bece32f48ebf..ae35423864d568ec6d98b4738cf7b680cf3d20af 100644 GIT binary patch delta 1013 zcmYk5O-NKx6vxlG?@sfk#?<)`b*7w}nVhi?)HErjMs4zgRM4yzf+j^6kslc%h)zyP zivov7Sb>WmN{C1+!4`@ep@l8lw3vkmVIUMPqD=(#zvQvP>-HS#*#$vF;Bma~`wtarwOW*ObtdU7Zt2ClTBa=R=5SzVdxBW0lE!6fu2HB!uZ6lkf2Gt6_G}rQll=Y z2O5Bep}Ww1XhLGK$5>@MWU(^6LB99K51t&^h0S)nI^(CV1}M$M>QT~7oD0q{@j-B= ziPOOj6Ze9hU~Mb@KCla{GU6Jc-MG8|8<3nR%f!m>B|Wu)7QlNU>sCNjPF3C%tGfG4 zto$me*}s3AYc~7g-!>3Z5d}=F0t8W`Q~)oy2#=HEo#0|)NsHE=(r{A#^;zv+H(=>8Oqfrj~rkdMtEhQGB@8*0Dd)J!h z&r~Yo%2x(o70GNEVq=zUCJ%ZI`w1KKWub?O z<)Af(DMUk?jtDlOn`zikkc*?j)i9I`-7eZB)l-R1IV!hg7q{Cyi296UYwX664FS#V+*6e zaJ+>@7!-X-dQsGc6iEH=lMM!=bZOEXU2NlI=rW~ zO(Aj&5FJyAnhADOpyzzo*C(NQ4XTcHh*Wp%D4rg{=|PGJft zf_AD*RmNW4wSAe9f+!27EzoYr4Ru0;&=7P}7@yeY6m$(=M5Iu?s*n$Ag-$~qkRQ4P zMN}l`nV9Zjk4MHI9u3x^$b!$sF0vlyAWDkk3~+KB7lBjaI2oK8$A0i8u(G;dF4zi| zJIG%WWLxJTCBl)m?)aCGN%~sB6yn*CX>|d4m+}f@ti#TUV;Q%{v5d<@#PVf)+ZtCA zwn97C95Rt84|ftP$O4z(I5FM`E;YU>wVonHgDrb0YnXzn8MBNhKyO(gtC+`FDC`2w zz^Kwm;ldaZZHh|2(K4e;9k3rE_hXmn_CAS}eQoge&5bplx;P!3s(m?WzvW+Od}CO& z2AjY7qjxF)^5n>J^!VgV!uQ#OH?F_v)_OQ7Kc9D)0gUtwlGBlH4dwa=8!pF diff --git a/src/Assets/EcsRx/EcsRx.Views.dll b/src/Assets/EcsRx/EcsRx.Views.dll index cfd46f267360c2cd065767b14234b4c8152f2082..71ca1acf4440fde8a63c019099293624890bfd9c 100644 GIT binary patch delta 1902 zcmZ9Ndu&ui6vn?Zd+(jwmUi2vkEL7bZWmazO~EWe8>9%W&m<71nw{&)_+pu;scr+IP7Jo)t zTdBMM^ipV~?sgB9YoYPJo7TB9uZ>X!XB;=Q0I1bvySlhuA z);ugR*=0_R3c0nkO|`o7eKGl-I^@O@xfDScX-!c95oS;!jYFSP!jUJaob@%T;P^$3 z6V7nWWSqu0D#lbiz)D7+W_55;77!nkN80{H#<|`bY5Sc=wkXcL)*kwrb{02 z7Z9gWxM650YnHX0N`VU9tjE=7Ersh5SN5ng*|8`0$-Oih*GzPXibWljDzLzd@$L>EtKHBJ zG@y@jYciC>6vd_tJ&Qi|aZV`FM`L+oe$M1=6_{*kALcvu;`{{h+j6(p5rK!ys(U?U z>b(y4X75}@D>J3_rcsO0iDvujj^1)Hdx6)@QSPj{GJITuSMRA8zf08zBlac!M5$~< zA@mni20?L*VgEd`Xt_wT#>CsKf5?7RnRtZi?60_Tx^<4@ke66jvzB2CcZgsWz84WZ zg|ng>IXF($7>P7%h+o)hL~(_+5;dHSqe)aJ_^n;YP>=Un=imry3r@1Ov(7N>W|(#> zj9+1V()jL->dj6Wf68Pp7=OWdB7GntT@x`rVtmy2dYY%xCk=#s+CO4+xzTrxp7hkx z*+HYQwGSJefLhd}6)Q1_Tk6HUQT1=}EibY6vwmtFWG%FHWRLyfaQw2<&wjf&!uptX zY&iRk)R95iuP)^+scgr3bl?Q6q`vPv$2ooi`1*&3rJnKMKm9V_{5^46!%rxX1&M5) zF*IWW-oS%A<2Ncb#|qyiVsl!wV%#!dG6&EvtD{w{CNC& z-G233Nn=dr6TiQKHY=L~VOxqoSU5$2trQ4KX}M*AppZp@WVdP#2Ho9U$*@~(3>MG5 z4IFcGxygNAj!`ez%MAkgBuLkL%k=*VJIp_0aHNm>mW|}RwO75$(ghkz)R-OolpA Td1e3j#MiZ{g78)9ohbhYxvN!e delta 1888 zcmZuyZERCj7=GT<-j8jr-MV#jYu#G9Q4BCjCLhb3Ft+d^f{a1NTnNmC4@E(yKp>6| z2MYp;%rjBJ1Wm*QG?P&y_(6oYRR4%kQ27Bw6o-)j#uyz&65n%fZ4f=ldG7PP?{nVs z_MYB*yBfM0_Uv%~JTP#*cXx;m_a17dW=Rw?PEG-)$cPv#TPQ|H;}F*$ojmzX~rljBi2iFMZRy1$@$RqV1coeaY){_jFfR)OeB#}eO3**F+a?K1bXZ| zV=BwVN+OljVl=RFMk=@8J)2cWSm|wnBk7NRL^ql!fDI zwZUqq9Q>r!5VaetDHnD`Els3oHcJmiY3VfMRT&S9`L5t~_E zaTMQxI2B`9tD&qJ?gW(pBUP~;TlHE3+fnT7mS1Pb%DSzcREpnpbcl*X4V9rUs#Xk< zDdIAiQ#|f~wSmHjmaAxwowPQy8k<&&`K%(iH?7*NxNOS_(jM8F6HN5cNUYGAZseek zqF9$!8(Ed(8D|yuVxj`u)468ORq#&4|CfJIV3J$$FrTLr7r1^~*5L{TqB_nzal7DU zj>#!;hxLD*6Lg_Ejd8vG52o6FF>`^Jbt|`f&TFUBwDJcD&N3(QFO&m!y_gt)ZOuX< z)b9^LP!-CVZv@dY(a9JS`x!4<{TQp`#dNnhVTPzo@FUvDq8XoX?BfHea*yQjZ(u%UZqd-O!v3*+QpBW5M|IYuem z+2jiwmhgpz>Gy3SU%;~5cE}e{vQtUFZ@FM;gaw5Hfjkm^U)Oeipfi`{q7*{a3Hbh# zwR7``?#`IGSl4roF(xQefn%jG!u;ieX}Nf_PyttRRwb_mex;&!SKZhLnmb?p{G~jH z`O`OCB7ZL#nfK7Hny+dX{xbdb=P#6ZUOl!#jthRq zw)Q`^j=z1h-?2*VTaTWMFFjuz2C`$pyM|E}K}ABl?iGl&}ne4#s4;)mK7uvlKkA?BY4 zSD33S?gwxt$Ap#M#aGdmm+%q0kwX$Qg*QAyxg|1` zM}mjsqdkoFINC4Je(x5Az0D?tHou(lnAjlaJx#by>RKeY(LiWr zx&{#j1|Tb$^hiv|J=*5RYk_ts%ub|ZU+)K|LJRA=zrB_Rl4=OA9MsyHL+DJRGxNWy zQ&p;KlUBCQWa6jp}R2S3$$oHF95F2xIw2w8Gv&+>bNao2`Sf4B#O!aV zANrb}q77gc`o22*qktbv>d-m3nJpBNV*|g2NauB8LecA?*_Zok2O_Q1+-Z+|v^eDOz}tYb#a-y*}tLfLDquE@tuR8y!9 zqB@M~T~r@y2}M@FleWryvjQ|t1Q#=Ds>effMVFj67Gtq=D?VH+w<}I8mkmm}yUP(+ z|KP)u*ibMO+u3zJoXyw@*SyjVt@5T)SzCaq45l6~u}tN3OS^8l(XrH0n+m$j2mugw zYNatiV?~b)nl_+cMogP|vhR!>Hr4M*_I-79dM{=yO|Lh-$9FZ~6B7qZwzVDq|7D-P zEnl~+t|y*o?FiPkM`O0C=J?+3U{!abH5zX}7L8l9_WHfpUxuk%+HY<~K5+W79Lx*< E1K_NWBme*a diff --git a/src/Assets/EcsRx/EcsRx.dll b/src/Assets/EcsRx/EcsRx.dll index 2fab035d66b1c579dd21b5fe697d33490c838a32..80327abf925efe8d43dac0f609d18134ff887795 100644 GIT binary patch literal 66048 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 CTJenl delta 11207 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 diff --git a/src/Assets/EcsRx/Unity/Dependencies/ZenjectDependencyContainer.cs b/src/Assets/EcsRx/Unity/Dependencies/ZenjectDependencyContainer.cs index 4724bfbd..d30a08a3 100644 --- a/src/Assets/EcsRx/Unity/Dependencies/ZenjectDependencyContainer.cs +++ b/src/Assets/EcsRx/Unity/Dependencies/ZenjectDependencyContainer.cs @@ -11,6 +11,11 @@ public class ZenjectDependencyContainer : IDependencyContainer public ZenjectDependencyContainer(DiContainer container) { _container = container; } + public void LoadModule(IDependencyModule module) + { + module.Setup(this); + } + public object NativeContainer => _container; public void Bind(BindingConfiguration configuration = null) where TTo : TFrom @@ -59,13 +64,18 @@ public T Resolve(string name = null) return _container.ResolveId(name); } + public void Unbind() + { + _container.Unbind(); + } + public IEnumerable ResolveAll() { return _container.ResolveAll(); } public void LoadModule() where T : IDependencyModule, new() { var module = new T(); - module.Setup(this); + LoadModule(module); } } } \ No newline at end of file diff --git a/src/Assets/EcsRx/Unity/Editor/EntityViewInspector.cs b/src/Assets/EcsRx/Unity/Editor/EntityViewInspector.cs index 65509990..6ce882c6 100644 --- a/src/Assets/EcsRx/Unity/Editor/EntityViewInspector.cs +++ b/src/Assets/EcsRx/Unity/Editor/EntityViewInspector.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using EcsRx.Components; +using EcsRx.Extensions; using EcsRx.Unity.Extensions; using EcsRx.Unity.MonoBehaviours; using EcsRx.Unity.UIAspects; @@ -91,11 +92,13 @@ private void ComponentListings() EditorGUILayout.EndVertical(); - for (var i = 0; i < componentsToRemove.Count(); i++) + var componentArray = new Type[componentsToRemove.Count]; + for (var i = 0; i < componentsToRemove.Count; i++) { var component = _entityView.Entity.Components.ElementAt(i); - _entityView.Entity.RemoveComponent(component); + componentArray[i] = component.GetType(); } + _entityView.Entity.RemoveComponents(componentArray); } public static Type GetTypeWithAssembly(string typeName) @@ -125,7 +128,7 @@ private void ComponentSelectionSection() if (index >= 0) { var component = (IComponent)Activator.CreateInstance(availableTypes[index]); - _entityView.Entity.AddComponent(component); + _entityView.Entity.AddComponents(component); } }); } diff --git a/src/Assets/EcsRx/Unity/Extensions/GameObjectExtensions.cs b/src/Assets/EcsRx/Unity/Extensions/GameObjectExtensions.cs index 639977bf..961634fc 100644 --- a/src/Assets/EcsRx/Unity/Extensions/GameObjectExtensions.cs +++ b/src/Assets/EcsRx/Unity/Extensions/GameObjectExtensions.cs @@ -1,6 +1,7 @@ using System; using EcsRx.Collections; using EcsRx.Entities; +using EcsRx.Extensions; using EcsRx.Unity.MonoBehaviours; using EcsRx.Views.Components; using UnityEngine; diff --git a/src/Assets/EcsRx/Unity/Extensions/IEntityExtensions.cs b/src/Assets/EcsRx/Unity/Extensions/IEntityExtensions.cs index 25b26ea5..458d6425 100644 --- a/src/Assets/EcsRx/Unity/Extensions/IEntityExtensions.cs +++ b/src/Assets/EcsRx/Unity/Extensions/IEntityExtensions.cs @@ -1,5 +1,6 @@ using System; using EcsRx.Entities; +using EcsRx.Extensions; using EcsRx.Views.Components; using UnityEngine; @@ -7,7 +8,7 @@ namespace EcsRx.Unity.Extensions { public static class IEntityExtensions { - public static T GetComponent(this IEntity entity) where T : MonoBehaviour + public static T GetUnityComponent(this IEntity entity) where T : MonoBehaviour { if(!entity.HasComponent()) { return null; } @@ -21,7 +22,7 @@ public static T GetComponent(this IEntity entity) where T : MonoBehaviour return castView.GetComponent(); } - public static T AddComponent(this IEntity entity) where T : MonoBehaviour + public static T AddUnityComponent(this IEntity entity) where T : MonoBehaviour { if (!entity.HasComponent()) { throw new Exception("Entity has no ViewComponent, ensure a valid ViewComponent is applied with an active View"); } diff --git a/src/Assets/EcsRx/Unity/MonoBehaviours/RegisterAsEntity.cs b/src/Assets/EcsRx/Unity/MonoBehaviours/RegisterAsEntity.cs index e5f39ec9..058f18ae 100644 --- a/src/Assets/EcsRx/Unity/MonoBehaviours/RegisterAsEntity.cs +++ b/src/Assets/EcsRx/Unity/MonoBehaviours/RegisterAsEntity.cs @@ -11,6 +11,7 @@ namespace EcsRx.Unity.MonoBehaviours { + // TODO: Zenject inject issue timing public class RegisterAsEntity : MonoBehaviour { [Inject] @@ -40,7 +41,7 @@ public void RegisterEntity() { collectionToUse = CollectionManager.GetCollection(CollectionName); } var createdEntity = collectionToUse.CreateEntity(); - createdEntity.AddComponent(new ViewComponent { View = gameObject }); + createdEntity.AddComponents(new ViewComponent { View = gameObject }); SetupEntityBinding(createdEntity, collectionToUse); SetupEntityComponents(createdEntity); @@ -56,7 +57,8 @@ private void SetupEntityBinding(IEntity entity, IEntityCollection entityCollecti private void SetupEntityComponents(IEntity entity) { - for (var i = 0; i < Components.Count(); i++) + var componentsToRegister = new IComponent[Components.Count]; + for (var i = 0; i < Components.Count; i++) { var typeName = Components[i]; var type = Type.GetType(typeName); @@ -65,12 +67,12 @@ private void SetupEntityComponents(IEntity entity) var component = (IComponent)Activator.CreateInstance(type); var componentProperties = JSON.Parse(ComponentEditorState[i]); component.DeserializeComponent(componentProperties); - - entity.AddComponent(component); + componentsToRegister[i] = component; } + entity.AddComponents(componentsToRegister); } - public IEntityCollection GetPool() + public IEntityCollection GetCollection() { return CollectionManager.GetCollection(CollectionName); }