// Update is called once per frame
    void Update()
    {
        if (SendOnEnter == true)
        {
            foreach (GameObject EnteredObject in Sender.GetInteractors(TriggerState.Enter))
            {
                EnteredObject.GetComponent <Transform>().SetPositionAndRotation(Destination.transform.position, Destination.transform.rotation);
                ResetVelocity(EnteredObject);
            }
        }

        if (SendOnStay == true)
        {
            foreach (GameObject EnteredObject in Sender.GetInteractors(TriggerState.Stay))
            {
                EnteredObject.GetComponent <Transform>().SetPositionAndRotation(Destination.transform.position, Destination.transform.rotation);
                ResetVelocity(EnteredObject);
            }
        }
        if (SendOnExit == true)
        {
            foreach (GameObject EnteredObject in Sender.GetInteractors(TriggerState.Exit))
            {
                EnteredObject.GetComponent <Transform>().SetPositionAndRotation(Destination.transform.position, Destination.transform.rotation);
                ResetVelocity(EnteredObject);
            }
        }
    }
        private object GetInstance(EnteredObject registeredObject)
        {
            object instance = registeredObject.SingletonInstance;

            if (instance == null)
            {
                var parameters = ResolveConstructorParameters(registeredObject);
                instance = registeredObject.CreateInstance(parameters.ToArray());
            }
            return(instance);
        }
        private IEnumerable <object> ResolveConstructorParameters(EnteredObject registeredObject)
        {
            var constructorInfo = registeredObject.LiveType.GetTypeInfo().DeclaredConstructors.First();

            return(constructorInfo.GetParameters().Select(parameter => ResolveObject(parameter.ParameterType)));
        }