Ejemplo n.º 1
0
    private UISpriteData ClipAtlasSprite(UISpriteData originSprite)
    {
        if (isLoadHeroHead)
        {
            return(null);
        }

        if (originSprite == null)
        {
            return(null);
        }

        if (mClipType != eClipType.None && type == Type.Simple)
        {
            UISpriteData clip_sprite = mSwapSprite;
            clip_sprite.CopyFrom(originSprite);
            clip_sprite.SetBorder(0, 0, 0, 0);
            clip_sprite.SetPadding(0, 0, 0, 0);
            if (mClipType == eClipType.Horizontally)
            {
                int keep_aspect_width = Mathf.RoundToInt((float)width / height * clip_sprite.height);
                int w = clip_sprite.width - keep_aspect_width;
                if (w < 0)
                {
                    clip_sprite.SetRect(clip_sprite.x, clip_sprite.y, clip_sprite.width, clip_sprite.height);
                    int padding = -w / 2;
                    clip_sprite.SetPadding(padding, 0, padding, 0);
                }
                else
                {
                    clip_sprite.SetRect(clip_sprite.x + w / 2, clip_sprite.y, keep_aspect_width, clip_sprite.height);
                }
            }
            else if (mClipType == eClipType.Vertically)
            {
                int keep_aspect_height = Mathf.RoundToInt((float)height / width * clip_sprite.width);
                int h = clip_sprite.height - keep_aspect_height;
                if (h < 0)
                {
                    clip_sprite.SetRect(clip_sprite.x, clip_sprite.y, clip_sprite.width, clip_sprite.height);
                    int padding = -h / 2;
                    clip_sprite.SetPadding(padding, 0, padding, 0);
                }
                else
                {
                    clip_sprite.SetRect(clip_sprite.x, clip_sprite.y + h / 2, clip_sprite.width, keep_aspect_height);
                }
            }

            return(clip_sprite);
        }
        else
        {
            UISpriteData clip_sprite = mSwapSprite;
            clip_sprite.CopyFrom(originSprite);
            return(clip_sprite);
        }
    }
Ejemplo n.º 2
0
    public static int SetRect(IntPtr l)
    {
        int result;

        try
        {
            UISpriteData uISpriteData = (UISpriteData)LuaObject.checkSelf(l);
            int          x;
            LuaObject.checkType(l, 2, out x);
            int y;
            LuaObject.checkType(l, 3, out y);
            int width;
            LuaObject.checkType(l, 4, out width);
            int height;
            LuaObject.checkType(l, 5, out height);
            uISpriteData.SetRect(x, y, width, height);
            LuaObject.pushValue(l, true);
            result = 1;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
Ejemplo n.º 3
0
        /// <summary>
        /// 加载的贴图
        /// </summary>
        /// <param name="tex">Tex.</param>
        public void ImageLoad(Texture2D tex)
        {
            if (tex == null)
            {
                return;
            }
            if (tex.name == m_img.spriteName)
            {
                return;
            }
            //准备对象和材质球
            if (m_uiAtlas == null)
            {
                Material mat;
                Shader   shader = Shader.Find("Unlit/Transparent Colored");
                mat       = new Material(shader);
                m_uiAtlas = this.gameObject.AddComponent <UIAtlas>();
                m_uiAtlas.spriteMaterial = mat;
            }
            //设定贴图
            m_uiAtlas.spriteMaterial.mainTexture = tex;
            //为对应UISprite接口,给Atlas加对象
            UISpriteData sprite = new UISpriteData();

            sprite.name = tex.name;
            sprite.SetRect(0, 0, tex.width, tex.height);
            m_uiAtlas.spriteList.Clear();
            m_uiAtlas.spriteList.Add(sprite);
            //设置完成
            m_img.atlas      = m_uiAtlas;
            m_img.spriteName = tex.name;
        }
Ejemplo n.º 4
0
    public void CreateSpriteInAtlas(Rect spriteRect)
    {
        _id += 1;
        UISpriteData spriteData = new UISpriteData();

        spriteData.name = "pencil" + _id;
        spriteData.SetRect((int)spriteRect.x, (int)spriteRect.y, (int)spriteRect.width, (int)spriteRect.height);
        UIAtlas.spriteList.Add(spriteData);
    }
Ejemplo n.º 5
0
    static UISpriteData AddSprite(List <UISpriteData> sprites, SpriteEntry se)
    {
        UISpriteData sprite = null;

        // See if this sprite already exists
        foreach (UISpriteData sp in sprites)
        {
            if (sp.name == se.tex.name)
            {
                sprite = sp;
                break;
            }
        }

        if (sprite != null)
        {
            //float x0 = sprite.inner.xMin - sprite.outer.xMin;
            //float y0 = sprite.inner.yMin - sprite.outer.yMin;
            //float x1 = sprite.outer.xMax - sprite.inner.xMax;
            //float y1 = sprite.outer.yMax - sprite.inner.yMax;

            //sprite.outer = se.rect;
            //sprite.inner = se.rect;

            //sprite.inner.xMin = Mathf.Max(sprite.inner.xMin + x0, sprite.outer.xMin);
            //sprite.inner.yMin = Mathf.Max(sprite.inner.yMin + y0, sprite.outer.yMin);
            //sprite.inner.xMax = Mathf.Min(sprite.inner.xMax - x1, sprite.outer.xMax);
            //sprite.inner.yMax = Mathf.Min(sprite.inner.yMax - y1, sprite.outer.yMax);

            sprite.SetRect((int)se.rect.x, (int)se.rect.y, (int)se.rect.width, (int)se.rect.height);
        }
        else
        {
            sprite      = new UISpriteData();
            sprite.name = se.tex.name;
            sprite.SetRect((int)se.rect.x, (int)se.rect.y, (int)se.rect.width, (int)se.rect.height);
            sprites.Add(sprite);
        }

        //float width = Mathf.Max(1f, sprite.outer.width);
        //float height = Mathf.Max(1f, sprite.outer.height);

        //// Sprite's padding values are relative to width and height
        //sprite.paddingLeft = se.minX / width;
        //sprite.paddingRight = se.maxX / width;
        //sprite.paddingTop = se.maxY / height;
        //sprite.paddingBottom = se.minY / height;
        return(sprite);
    }
Ejemplo n.º 6
0
 static int SetRect(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 5);
         UISpriteData obj  = (UISpriteData)ToLua.CheckObject(L, 1, typeof(UISpriteData));
         int          arg0 = (int)LuaDLL.luaL_checknumber(L, 2);
         int          arg1 = (int)LuaDLL.luaL_checknumber(L, 3);
         int          arg2 = (int)LuaDLL.luaL_checknumber(L, 4);
         int          arg3 = (int)LuaDLL.luaL_checknumber(L, 5);
         obj.SetRect(arg0, arg1, arg2, arg3);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Ejemplo n.º 7
0
 static public int SetRect(IntPtr l)
 {
     try {
         UISpriteData self = (UISpriteData)checkSelf(l);
         System.Int32 a1;
         checkType(l, 2, out a1);
         System.Int32 a2;
         checkType(l, 3, out a2);
         System.Int32 a3;
         checkType(l, 4, out a3);
         System.Int32 a4;
         checkType(l, 5, out a4);
         self.SetRect(a1, a2, a3, a4);
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Ejemplo n.º 8
0
 public UIAtlas AddPreviewSprite(UISprite uiSprite, string spriteName, bool isDrag)
 {
     if (null == uiSprite)
     {
         Debug.LogError("uiSprite is null");
         return(null);
     }
     GetPreviewAtlas();
     if ((mPreviewAtlas != null) && (mPreviewAtlas.GetSprite(spriteName) == null))
     {
         UISpriteData item = new UISpriteData
         {
             name          = "preview",
             paddingLeft   = 0,
             paddingRight  = 0,
             paddingBottom = 0,
             paddingTop    = 0
         };
         item.SetRect(0, 0, mTargetSprite.width, mTargetSprite.height);
         mPreviewAtlas.spriteList.Clear();
         mPreviewAtlas.spriteList.Add(item);
     }
     return(mPreviewAtlas);
 }