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); }