示例#1
0
    public void SetPalette(Palette palette)
    {
        uPixelCanvasOp setPaletteOp = new uPixelCanvasOp();

        setPaletteOp.type    = uPixelCanvasOp.OpType.PaletteSet;
        setPaletteOp.palette = palette;
        DoCanvasOperation(setPaletteOp);
    }
示例#2
0
    public void SetFrame(int frame)
    {
        uPixelCanvasOp setFrame = new uPixelCanvasOp();

        setFrame.soft  = true;
        setFrame.frame = frame;
        setFrame.type  = uPixelCanvasOp.OpType.SelectFrame;
        DoCanvasOperation(setFrame);
    }
示例#3
0
    public void Resize(Vector2Int newSize)
    {
        uPixelCanvasOp resizeOp = new uPixelCanvasOp();

        resizeOp.type        = uPixelCanvasOp.OpType.Resize;
        resizeOp.resize      = new uPixelCanvasOp.ResizeData();
        resizeOp.resize.size = newSize;
        DoCanvasOperation(resizeOp);
    }
示例#4
0
    public void AddFrame(int insertAfter, bool duplicate = false)
    {
        uPixelCanvasOp addFrameOp = new uPixelCanvasOp();

        addFrameOp.type      = uPixelCanvasOp.OpType.AddFrame;
        addFrameOp.frame     = insertAfter;
        addFrameOp.duplicate = duplicate;
        DoCanvasOperation(addFrameOp);
    }
示例#5
0
    public void DoBlit(Vector2Int offset, Vector2Int size, Color32[] pixels, int frameIndex)
    {
        uPixelCanvasOp blitOp = new uPixelCanvasOp();

        blitOp.type                = uPixelCanvasOp.OpType.BlitOp;
        blitOp.blitData            = new uPixelCanvasOp.BlitData();
        blitOp.blitData.size       = size;
        blitOp.blitData.offset     = offset;
        blitOp.blitData.pixels     = pixels;
        blitOp.blitData.frameIndex = frameIndex;
        DoCanvasOperation(blitOp);
    }
示例#6
0
    public void DoCanvasOperation(uPixelCanvasOp op)
    {
        List <uPixelCanvasOp> rebaseFuture = null;

        // if a Redo history exists, calling this destroys this
        if (CanvasOps.Count > CanvasOpsTip)
        {
            if (FreezeFuture)
            {
                rebaseFuture = CanvasOps.GetRange(CanvasOpsTip, CanvasOps.Count - CanvasOpsTip);
            }

            CanvasOps.RemoveRange(CanvasOpsTip, CanvasOps.Count - CanvasOpsTip);
            TrimKeyFrames();
        }
        // Soft ops replace each other
        if (op.soft && CanvasOps[CanvasOps.Count - 1].soft)
        {
            CanvasOps.RemoveAt(CanvasOps.Count - 1);
        }
        CanvasOps.Add(op);

        UnityEditor.Undo.RecordObject(this, string.Format("uPixelCanvas: {0}", op.GetType().ToString()));
        ExecuteCanvasOps(CanvasOpsTip, CanvasOpsTip + 1);
        if (CanvasOps.Count > 1)
        {
            if (CanvasOps[CanvasOps.Count - 2].soft)
            {
                CanvasOps.RemoveAt(CanvasOps.Count - 2);
            }
        }

        CanvasOpsTip      = CanvasOps.Count;
        ShadowCanvasOpTip = CanvasOpsTip;

        if (CanvasOpsTip % KEYFRAME_RATE == 0 && CanvasOpsTip > 0)
        {
            GenerateKeyFrameNow();
        }

        if (rebaseFuture != null)
        {
            CanvasOps.AddRange(rebaseFuture);
        }
    }
示例#7
0
 protected virtual void OnMouseUp(MouseUpEvent e)
 {
     if (!m_Active || !target.HasMouseCapture() || !CanStopManipulation(e))
     {
         return;
     }
     m_Active = false;
     //uPixel.FlushBuffer();
     pixelOp.positions = uPixel.GetBrush();
     pixelOp.value     = (byte)uPixel.paletteIndex;
     pixelOp.frame     = uPixel.pixelAsset.FrameIndex;
     if (pixelOp.positions.Count > 0)
     {
         uPixel.pixelAsset.DoCanvasOperation(pixelOp);
         uPixel.m_HistoryCache.ClearCache(uPixel.pixelAsset.GetHistoryLength() - 1);
         pixelOp = new uPixelCanvasOp();
     }
     uPixel.RefreshInspector();
     target.ReleaseMouse();
     e.StopPropagation();
 }