/// <summary>
        /// Removes a Controller from the Emitter.
        /// </summary>
        /// <param name="controller">Controller to be removed.</param>
        /// <returns>True if the Controller was successfully removed, else false.</returns>
        public bool RemoveController(Controller controller)
        {
            if (!_controllers.Contains(controller)) { return false; }

            _controllers.Remove(controller);
            controller.UnSubscribe(this);
            return true;
        }
        /// <summary>
        /// Applies a Controller to the Emitter.
        /// </summary>
        /// <param name="controller">Controller to apply.</param>
        /// <returns>True if the Controller was successfully applied, else false.</returns>
        /// <remarks>The engine is smart enough to prevent the same Controller being applied
        /// multiple times.</remarks>
        public bool ApplyController(Controller controller)
        {
            if (_controllers.Contains(controller)) { return false; }

            _controllers.Add(controller);
            controller.Subscribe(this);
            return true;
        }