Artemis.Engine.AbstractFixin.Kill C# (CSharp) Метод

Kill() приватный Метод

private Kill ( bool detach ) : void
detach bool
Результат void
        internal void Kill(bool detach)
        {
            if (detach)
            {
                _form.DetachFixin(Name);
                _form = null;
            }

            Kill();
        }

Usage Example

Пример #1
0
        private void DetachFixin(AbstractFixin fixin, string fixinName)
        {
            if (fixin == null && fixinName == null)
            {
                throw new ArgumentNullException(
                          String.Format(
                              "When detaching a fixin from form '{0}', both parameters " +
                              "('fixin' and 'fixinName') can't be null.", Anonymous ? (object)this : Name));
            }
            if (fixin == null)
            {
                fixin = UpdateFixins.ContainsKey(fixinName) ? UpdateFixins[fixinName]
                  : RenderFixins.ContainsKey(fixinName) ? RenderFixins[fixinName]
                  : null;
                if (fixin == null)
                {
                    return;
                }
            }
            else if (fixinName == null)
            {
                fixinName = fixin.Name;
            }

            var type = fixin.FixinType;

            // There's probably a simpler if statement for this...
            if (type == FixinType.Update && _midUpdateFixins ||
                type == FixinType.Render && _midRenderFixins ||
                type == (FixinType.Update | FixinType.Render) && (_midRenderFixins || _midUpdateFixins))
            {
                _fixinsToRemove.Add(fixinName);
            }
            else
            {
                switch (type)
                {
                case FixinType.Update:
                    UpdateFixins.Remove(fixinName);
                    break;

                case FixinType.Render:
                    RenderFixins.Remove(fixinName);
                    break;

                case FixinType.Update | FixinType.Render:
                    UpdateFixins.Remove(fixinName);
                    RenderFixins.Remove(fixinName);
                    break;
                }
                fixin.Kill(false);
            }
        }