Ejemplo n.º 1
0
            public bool Inspect(IPainterManagerModuleBrush module)
            {
                var changed = false;

                Inspect();

                if (AllSetUp)
                {
                    var id          = InspectedImageMeta;
                    var cpuBlit     = id == null ? InspectedBrush.targetIsTex2D : id.destination == TexTarget.Texture2D;
                    var brushType   = InspectedBrush.GetBrushType(cpuBlit);
                    var blitMode    = InspectedBrush.GetBlitMode(cpuBlit);
                    var usingDecals = (!cpuBlit) && brushType.IsUsingDecals;

                    pegi.nl();

                    if (!cpuBlit)
                    {
                        MsgPainter.Hardness.GetText()
                        .edit("Makes edges more rough.", 70, ref InspectedBrush.hardness, 1f, 22f).nl(ref changed);
                    }

                    var txt = (usingDecals ? "Tint alpha" : MsgPainter.Speed.GetText());

                    txt.write(txt.ApproximateLengthUnsafe());

                    InspectedBrush._dSpeed.Inspect().nl(ref changed);

                    MsgPainter.Scale.Write();

                    if (InspectedBrush.IsA3DBrush(InspectedPainter))
                    {
                        var m = PlaytimePainter.inspected.GetMesh();

                        var maxScale = (m ? m.bounds.max.magnitude : 1) * (!PlaytimePainter.inspected
                                           ? 1
                                           : PlaytimePainter.inspected.transform.lossyScale.magnitude);

                        pegi.edit(ref InspectedBrush.brush3DRadius, 0.001f * maxScale, maxScale * 0.5f)
                        .changes(ref changed);
                    }
                    else
                    {
                        if (!brushType.IsPixelPerfect)
                        {
                            pegi.edit(ref InspectedBrush.brush2DRadius, cpuBlit ? 1 : 0.1f,
                                      usingDecals ? 128 : id?.width * 0.5f ?? 256).changes(ref changed);
                        }
                        else
                        {
                            var val = (int)InspectedBrush.brush2DRadius;
                            pegi.edit(ref val, (int)(cpuBlit ? 1 : 0.1f),
                                      (int)(usingDecals ? 128 : id?.width * 0.5f ?? 256)).changes(ref changed);
                            InspectedBrush.brush2DRadius = val;
                        }
                    }

                    pegi.nl();

                    if (blitMode.UsingSourceTexture && (id == null || id.TargetIsRenderTexture()))
                    {
                        MsgPainter.CopyFrom.GetText().selectOrAdd(70, ref InspectedBrush.selectedSourceTexture,
                                                                  ref TexMGMTdata.sourceTextures)
                        .nl(ref changed);
                    }
                }


                pegi.newLine();

                return(changed);
            }
Ejemplo n.º 2
0
        public bool Mode_Type_PEGI()
        {
            var p  = PlaytimePainter.inspected;
            var id = p ? p.TexMeta : null;

            IPainterManagerModuleBrush cameraModule = null;

            foreach (var b in CameraModuleBase.BrushPlugins)
            {
                if (b.IsEnabledFor(p, id, this))
                {
                    cameraModule = b;
                    break;
                }
            }

            BrushTypes.Base.AllTypes.ClampIndexToCount(ref _inCpuBrushType);
            BrushTypes.Base.AllTypes.ClampIndexToCount(ref _inGpuBrushType);

            _inspectedBrush = this;
            var changed = false;
            var cpu     = p ? id.TargetIsTexture2D() : targetIsTex2D;

            var blitMode  = GetBlitMode(cpu);
            var brushType = GetBrushType(cpu);

            pegi.nl();

            MsgPainter.BlitMode.Write("How final color will be calculated");

            if (pegi.select(ref blitMode, BlitModes.Base.AllModes).changes(ref changed))
            {
                SetBlitMode(cpu, blitMode);
            }

            if (DocsEnabled && blitMode != null && pegi.FullWindowService.DocumentationClick("About {0} mode".F(blitMode.NameForDisplayPEGI())))
            {
                pegi.FullWindowService.DocumentationOpen(blitMode.ToolTip);
            }

            if (showAdvanced)
            {
                pegi.nl();
            }

            pegi.toggle(ref showAdvanced, icon.FoldedOut, icon.Create, "Brush Options", 25);

            if (showAdvanced)
            {
                "Advanced options: (if any)".write();
            }


            pegi.nl();

            if (!cpu)
            {
                MsgPainter.BrushType.Write();
                pegi.select_Index(ref _inGpuBrushType, BrushTypes.Base.AllTypes).changes(ref changed);

                if (DocsEnabled && brushType != null && pegi.FullWindowService.DocumentationClick("About {0} brush type".F(brushType.NameForDisplayPEGI())))
                {
                    pegi.FullWindowService.DocumentationOpen(brushType.ToolTip);
                }

                if (!brushType.ShowInDropdown())
                {
                    pegi.nl();
                    "Selected brush type is not supported in context of this Painter".writeWarning();
                }

                pegi.nl();
            }

            cameraModule?.BrushConfigPEGI(this);

            if (p)
            {
                foreach (var pl in p.Modules)
                {
                    pl.BrushConfigPEGI().nl(ref changed);
                }


                if (id != null)
                {
                    foreach (var mod in id.Modules)
                    {
                        mod.BrushConfigPEGI(p).nl(ref changed);
                    }
                }
            }

            brushType.Inspect().nl(ref changed);

            if (blitMode.AllSetUp)
            {
                if (blitMode.UsingSourceTexture)
                {
                    "Texture Color".editEnum(120, ref srcColorUsage).nl(ref changed);

                    if (InspectAdvanced)
                    {
                        "Clamp".toggleIcon(ref clampSourceTexture).nl(ref changed);
                        "Multiply by Alpha".toggleIcon(ref ignoreSrcTextureTransparency).changes(ref changed);
                        pegi.FullWindowService.DocumentationClickOpen("Ignore transparency of the source texture. To only paint parts of the texture which are visible").nl();
                    }
                }

                if (!cpu && brushType.SupportsAlphaBufferPainting && blitMode.SupportsAlphaBufferPainting && (useAlphaBuffer || InspectAdvanced))
                {
                    "Alpha Buffer".toggleIcon(ref useAlphaBuffer, true).changes(ref changed);

                    if (useAlphaBuffer)
                    {
                        var txt = MsgPainter.Opacity.GetText();

                        txt.edit(
                            "This is the kind of alpha you see in standard painting software. But it is only available when using Alpha Buffer",
                            txt.ApproximateLength(), ref alphaLimitForAlphaBuffer, 0.01f, 1f).changes(ref changed);

                        if (p && p.NotUsingPreview)
                        {
                            MsgPainter.PreviewRecommended.DocumentationWarning();
                        }
                    }

                    MsgPainter.AlphaBufferBlit.DocumentationClick().nl();

                    pegi.nl();
                }
            }


            if (blitMode.ShowInDropdown())
            {
                blitMode.Inspect(cameraModule).nl(ref changed);
                showingSize = true;
            }

            _inspectedBrush = null;

            return(changed);
        }