public ProcessorElement(int level, KeyValuePair <Type, ProcessorAttribute> desc, Action <ProcessorElement> spawncallback)
            {
                this.level = level;

                content      = new GUIContent(EditorGUIUtility.IconContent("SceneViewFx"));
                content.text = desc.Value.name;

                m_Desc = desc.Value;
                m_ProcessorSettingType = desc.Key;
                m_SpawnCallback        = spawncallback;
            }
        public void AddProcessor(ProcessorElement element)
        {
            var settingType = element.m_ProcessorSettingType;

            // Add Element
            Undo.RecordObject(m_CurrentAsset, "Add Processor");

            ProcessingNode processor = null;

            // Reflection Stuff here
            ProcessorAttribute attribute = m_ProcessingNodeStack.settingsDefinitions[settingType];

            var info = ProcessorInfo.CreateDefault(attribute.name, true, settingType);

            processor = (ProcessingNode)Activator.CreateInstance(typeof(ProcessingNode), m_ProcessingNodeStack, info);

            if (processor != null)
            {
                m_ProcessingNodeStack.AddProcessor(processor, m_CurrentAsset);
                m_ProcessingNodeStack.InvalidateAll();
            }
        }