Example #1
0
        public PlaytimePainter Paint(StrokeVector stroke, PlaytimePainter pntr)
        {
            var id = pntr.ImgData;

            if (id == null)
            {
                pntr.InitIfNotInited();
                id = pntr.ImgData;
                if (id == null)
                {
                    return(pntr);
                }
            }


            var cpu = id.TargetIsTexture2D();
            var t   = Type(cpu);

            BlitMode.PrePaint(pntr, this, stroke);

            if (cpu)
            {
                pntr.RecordingMGMT();
                t.PaintToTexture2D(pntr, this, stroke);
            }
            else
            {
                var md = pntr.MatDta;

                if (id.renderTexture == null && !TexMGMT.materialsUsingTendTex.Contains(md))
                {
                    TexMGMT.ChangeBufferTarget(id, md, pntr.MaterialTexturePropertyName, pntr);
                    //materialsUsingTendTex.Add(md);
                    pntr.SetTextureOnMaterial(id);
                    //Debug.Log("Adding RT target");
                }

                bool rendered = false;

                foreach (var pl in TexMGMT.Plugins)
                {
                    if (pl.PaintRenderTexture(stroke, id, this, pntr))
                    {
                        rendered = true;
                        break;
                    }
                }

                if ((pntr.terrain != null) && (!t.SupportedForTerrain_RT))
                {
                    return(pntr);
                }

                pntr.RecordingMGMT();

                if (!rendered)
                {
                    t.PaintRenderTexture(pntr, this, stroke);
                }
            }

            return(pntr);
        }