コード例 #1
0
    public virtual T AttachRenderTarget <T>(ResourceRenderTarget obj, Resource.ResourceGroup rg) where T : UnityEngine.UI.Graphic
    {
        var target = obj.GetComponent <ResourceRenderTarget>();

        target.renderer      = this;
        target.resourceGroup = rg;
        return(null);
    }
コード例 #2
0
    public override T AttachRenderTarget <T>(ResourceRenderTarget target, Resource.ResourceGroup rg)
    {
        base.AttachRenderTarget <T>(target, rg);
        System.Type type = Content.GetType();
        var         dst  = target.GetComponent(type) as T;

        if (!dst)
        {
            dst = target.gameObject.AddComponent(type) as T;
        }

        var fields = type.GetFields();

        foreach (var field in fields)
        {
            if (field.IsStatic)
            {
                continue;
            }
            field.SetValue(dst, field.GetValue(Content));
        }

        var props = type.GetProperties();

        foreach (var prop in props)
        {
            if (!prop.CanWrite || !prop.CanWrite || prop.Name == "name")
            {
                continue;
            }
            prop.SetValue(dst, prop.GetValue(Content, null), null);
        }
        target.transform.localPosition = Vector3.zero;
        RectTransform rect = target.GetComponent <RectTransform>();

        rect.anchoredPosition = rectTranfrom.anchoredPosition;
        var cont = target.gameObject.AddComponent <ContentSizeFitter> ();

        cont.verticalFit   = ContentSizeFitter.FitMode.PreferredSize;
        cont.horizontalFit = ContentSizeFitter.FitMode.PreferredSize;
        target.SetTarget(rg);
        return(dst);
    }
コード例 #3
0
    public void OnTravel(ResourceGroup group)
    {
        group.SortGroup();
        if (group.ActivateState[0] == true)
        {
            int layer = 0;
            for (int i = 0; i < group.ResourceRefs.Count; i++)
            {
                var resource = group.ResourceRefs[i].Resources;
                var rend     = RendererContainor.Instance.PVWRender(resource, group.IsAfterTransition);
                ResourceRenderTarget target = null;
                if (group.IsAfterTransition)
                {
                    target = ResourceRenderTarget.Create(ResourceDisplayList.Instance.PVWPostRender.gameObject, layer);
                }
                else
                {
                    target = ResourceRenderTarget.Create(ResourceDisplayList.Instance.PVWPreRender.gameObject, layer);
                }
                if (resource.GetType() == ResourceType.Image)
                {
                    ((ImageRenderer)rend).AttachRenderTarget <UnityEngine.UI.RawImage>(target, group);
                }
                else if (resource.GetType() == ResourceType.Text)
                {
                    ((TextRenderer)rend).AttachRenderTarget <UnityEngine.UI.Text>(target, group);
                }
                layer++;
            }
        }
        else if (group.ActivateState[1] == true)
        {
            int layer = 0;
            for (int j = 0; j < group.ResourceRefs.Count; j++)
            {
                var resource = group.ResourceRefs[j].Resources;
                var rend     = RendererContainor.Instance.PGMRender(resource, group.IsAfterTransition);
                ResourceRenderTarget target = null;
                if (group.IsAfterTransition)
                {
                    target = ResourceRenderTarget.Create(ResourceDisplayList.Instance.PGMPostRender.gameObject, layer);
                }
                else
                {
                    target = ResourceRenderTarget.Create(ResourceDisplayList.Instance.PGMPreRender.gameObject, layer);
                }
                if (resource.GetType() == ResourceType.Image)
                {
                    ((ImageRenderer)rend).AttachRenderTarget <UnityEngine.UI.RawImage>(target, group);
                }
                else if (resource.GetType() == ResourceType.Text)
                {
                    ((TextRenderer)rend).AttachRenderTarget <UnityEngine.UI.Text>(target, group);
                }
                layer++;
            }
        }
        else if (group.ActivateState[2] == true)
        {
            //TODO : add logic in this toggle.
        }
        else
        {
            for (int j = 0; j < group.ResourceRefs.Count; j++)
            {
                var resource = group.ResourceRefs[j].Resources;
                var rend     = RendererContainor.Instance[resource.GUID + "@PGM"];
                if (rend != null)
                {
                    if (group.IsAfterTransition)
                    {
                        ResourceDisplayList.Instance.ReFlushComponent(rend, group, ResourceDisplayList.Instance.PGMPostRender);
                    }
                    else
                    {
                        ResourceDisplayList.Instance.ReFlushComponent(rend, group, ResourceDisplayList.Instance.PGMPreRender);
                    }
                }

                rend = RendererContainor.Instance[resource.GUID + "@PVW"];
                if (rend != null)
                {
                    if (group.IsAfterTransition)
                    {
                        ResourceDisplayList.Instance.ReFlushComponent(rend, group, ResourceDisplayList.Instance.PVWPostRender);
                    }
                    else
                    {
                        ResourceDisplayList.Instance.ReFlushComponent(rend, group, ResourceDisplayList.Instance.PVWPreRender);
                    }
                }
            }
        }

        if (ResourceChange != null)
        {
            ResourceChange();
        }
    }