public void Intercept(ResolveInvocation invocation)
        {
            Releasing releasing = null;

            if (resolvers.Count > 0)
            {
                foreach (var resolver in resolvers)
                {
                    var releaser = resolver(kernel, invocation.Context);
                    if (releaser != null)
                    {
                        if (releasing == null)
                        {
                            releasing = new Releasing(resolvers.Count, kernel);
                            invocation.RequireDecommission();
                        }
                        releasing.Add(releaser);
                    }
                }
            }

            invocation.Proceed();

            if (releasing == null)
            {
                return;
            }
            var burden = invocation.Burden;

            if (burden == null)
            {
                return;
            }
            burden.Releasing += releasing.Invoked;
        }
		public void Intercept(ResolveInvocation invocation)
		{
			Releasing releasing = null;
			if (resolvers.Count > 0)
			{
				foreach (var resolver in resolvers)
				{
					var releaser = resolver(kernel, invocation.Context);
					if (releaser != null)
					{
						if (releasing == null)
						{
							releasing = new Releasing(resolvers.Count, kernel);
							invocation.RequireDecommission();
						}
						releasing.Add(releaser);
					}
				}
			}

			invocation.Proceed();

			if (releasing == null)
			{
				return;
			}
			var burden = invocation.Burden;
			if (burden == null)
			{
				return;
			}
			burden.Releasing += releasing.Invoked;
		}
        /// <summary>
        ///     Отпустить шайбу
        /// </summary>
        public void Release()
        {
            Releasing?.Invoke(null, null);

            _inHand                = false;
            _playerTransform       = null;
            _targetJoint.enabled   = false;
            _rigidbody.constraints = RigidbodyConstraints2D.None;

            gameObject.layer = _puckLayer;

            Released?.Invoke(null, null);
        }
Esempio n. 4
0
File: Pool.cs Progetto: GF47/GRT
        /// <summary>
        /// 将实例释放,返还给池
        /// </summary>
        /// <param name="target">被释放的实例</param>
        /// <param name="callback">实例被返还回池时对其进行必要的处理</param>
        public void Release(T target, Action <T> callback = null)
        {
            if (target == null)
            {
#if DEBUG
                throw new ArgumentNullException("target", "将空值放入了池中");
#else
                return;
#endif
            }
            callback?.Invoke(target);
            Releasing?.Invoke(target);
            _queue.Enqueue(target);
        }
Esempio n. 5
0
        private void ReleaseGrip()
        {
            if (IsGripping)
            {
                //release the constraint
                if (ProducesConstraint)
                {
                    //restore gripped objects values
                    if (!_gripping.IsDeleted)
                    {
                        _grippingBody.Kinematic = _grippingKinematic;
                        _gripping.Parent        = _grippingParent;
                    }
                    _grippingBody   = null;
                    _grippingParent = null;

                    //call event
                    Releasing?.Invoke(_gripping);
                }

                _gripping = null;
            }
        }
 protected virtual void OnReleasing()
 {
     Releasing?.Invoke(this, EventArgs.Empty);
 }