public PostProcessingBehaviour getComponentPostProcessingBehaviour()
    {
        ADDITIONAL_COMPONENT_TYPE type = ADDITIONAL_COMPONENT_TYPE.POST_PROCESSING_BEHAVIOUR;

        if (m_additionalComponents.ContainsKey(type) == false)
        {
            PostProcessingBehaviour pp = m_mainCamera.gameObject.AddComponent <PostProcessingBehaviour> ();
            pp.profile = new PostProcessingProfile();
            ReferenceCountBase value = new AdditionalComponent <PostProcessingBehaviour> (pp);
            m_additionalComponents.Add(type, value);
        }
        var obj = m_additionalComponents [type] as AdditionalComponent <PostProcessingBehaviour>;

        return(obj.getObject());
    }
    public ScreenOverlay getComponentScreenOverlayBehaviour()
    {
        ADDITIONAL_COMPONENT_TYPE type = ADDITIONAL_COMPONENT_TYPE.SCREEN_OVERLAY;

        if (m_additionalComponents.ContainsKey(type) == false)
        {
            ScreenOverlay so = m_mainCamera.gameObject.AddComponent <ScreenOverlay> ();

            ReferenceCountBase value = new AdditionalComponent <ScreenOverlay> (so);
            m_additionalComponents.Add(type, value);
        }

        var obj = m_additionalComponents [type] as AdditionalComponent <ScreenOverlay>;

        return(obj.getObject());
    }