From 1d8b693ccac37deaf6397208e2e2990e077f1d47 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sun, 10 Mar 2024 10:24:58 +0800 Subject: [PATCH] update connectors --- src/Connectors/EcsEntityConnect.cs | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/Connectors/EcsEntityConnect.cs b/src/Connectors/EcsEntityConnect.cs index d05b886..b7d2a02 100644 --- a/src/Connectors/EcsEntityConnect.cs +++ b/src/Connectors/EcsEntityConnect.cs @@ -9,12 +9,27 @@ namespace DCFApixels.DragonECS public static class EcsConnect { [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void Connect(GameObject go, entlong entity, bool applyTemplates) + public static void Connect(this Component cmp, entlong entity, bool applyTemplates) + { + Connect(entity, cmp, applyTemplates); + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Connect(this entlong entity, Component cmp, bool applyTemplates) + { + if (cmp.TryGetComponent(out EcsEntityConnect connect) == false) + { + connect = cmp.gameObject.AddComponent(); + } + connect.ConnectWith(entity, applyTemplates); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Connect(this GameObject go, entlong entity, bool applyTemplates) { Connect(entity, go, applyTemplates); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void Connect(entlong entity, GameObject go, bool applyTemplates) + public static void Connect(this entlong entity, GameObject go, bool applyTemplates) { if (go.TryGetComponent(out EcsEntityConnect connect) == false) { @@ -22,17 +37,19 @@ namespace DCFApixels.DragonECS } connect.ConnectWith(entity, applyTemplates); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void Connect(EcsEntityConnect connect, entlong entity, bool applyTemplates) + public static void Connect(this EcsEntityConnect connect, entlong entity, bool applyTemplates) { Connect(entity, connect, applyTemplates); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void Connect(entlong entity, EcsEntityConnect connect, bool applyTemplates) + public static void Connect(this entlong entity, EcsEntityConnect connect, bool applyTemplates) { connect.ConnectWith(entity, applyTemplates); } } + [DisallowMultipleComponent] public class EcsEntityConnect : MonoBehaviour {