Beispiel #1
0
        public override void UpdateCombinedImage(FSNCombinedImage combimg)
        {
            if (combimg == null)
            {
                return;
            }

            var sprdata = combimg.spriteData;

            var subsprites = sprdata.subSprites;

            if (subsprites.Length > 0)                                                                          // 서브 스프라이트가 존재하는 경우
            {
                var sourceUVRect = subsprites[0].sourceUVRect;
                var vSourceUV    = new Vector4()
                {
                    x = sourceUVRect.xMin,
                    y = sourceUVRect.yMin,
                    z = sourceUVRect.xMax,
                    w = sourceUVRect.yMax
                };

                var targetUVRect = subsprites[0].targetUVRect;
                var vTargetUV    = new Vector4()
                {
                    x = targetUVRect.xMin,
                    y = targetUVRect.yMin,
                    z = targetUVRect.xMax,
                    w = targetUVRect.yMax
                };

                m_image.material = new Material(m_parentImageModule.combinedImageMaterial); // 조합 이미지 전용 마테리얼로 세팅
                //m_image.material	= m_parentImageModule.combinedImageMaterial;		// 조합 이미지 전용 마테리얼로 세팅
                m_image.material.renderQueue = 2450;                                        // 강제 렌더큐 설정 (Depth Write를 작동시키기 위해)

                //m_matPropBlock		= new MaterialPropertyBlock();
                m_image.material.SetVector("_SubTexSourceUVs1", vSourceUV);                                                                     // 서브 이미지 UV값들 보내기
                m_image.material.SetVector("_SubTexTargetUVs1", vTargetUV);
                //m_matPropBlock.SetVector("_SubTexSourceUVs1", vSourceUV);								// 서브 이미지 UV값들 보내기
                //m_matPropBlock.SetVector("_SubTexTargetUVs1", vTargetUV);
            }
            else
            {                                                                                                                           // 서브 스프라이트가 없을 땐 일반 마테리얼을 그대로 사용한다.
                //m_image.material	= new Material(m_parentImageModule.imageMaterial);
                m_image.material             = m_parentImageModule.imageMaterial;
                m_image.material.renderQueue = 2450;                    // 강제 렌더큐 설정 (Depth Write를 작동시키기 위해)

                //m_matPropBlock		= null;
            }

            m_image.texture = sprdata.texture;
            m_image.uvRect  = sprdata.baseUVRect;

            m_rectTrans.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, sprdata.pixelWidth);
            m_rectTrans.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, sprdata.pixelHeight);
        }
    /// <summary>
    /// json 파일을 통해 생성하기
    /// </summary>
    /// <param name="path"></param>
    /// <returns></returns>
    public static FSNCombinedImage CreateFromResource(string path)
    {
        var res = Resources.Load <TextAsset>(path);

        if (res)
        {
            var combined = new FSNCombinedImage();
            var sprdata  = new Data();
            combined.spriteData = sprdata;

            var json = new JSONObject(res.text);                                                // JSON 파싱하기

            var sprpath  = json[c_json_spriteSheet].str;                                        // 스프라이트 시트
            var sprsheet = FSNResourceCache.Load <SpriteSheet>(FSNResourceCache.Category.Script, sprpath);

            var baseimage = json.GetField(c_json_baseSprite).str;               // 바탕 이미지
            sprdata.SetBaseSprite(sprsheet[baseimage]);

            json.GetField(c_json_subSprite, (subsprarr) =>                              // 서브 스프라이트
            {
                var list  = subsprarr.list;
                var count = list.Count;
                for (int i = 0; i < count; i++)
                {
                    var subspr  = subsprarr[i];
                    var sprname = subspr[c_json_subSprite_name].str;
                    var poslist = subspr[c_json_subSprite_pos].list;

                    sprdata.AddSubSprite(sprsheet[sprname], (int)poslist[0].n, (int)poslist[1].n);
                }
            });

            sprdata.BuildSubSpriteInfo();                                                               // 서브 스프라이트 데이터 빌드


            return(combined);
        }
        else
        {
            Debug.LogError("[FSNCombinedImage.CreateFromResource] Cannot load " + path);
            return(null);
        }
    }
 /// <summary>
 /// 조합 이미지로 변경
 /// </summary>
 /// <param name="combimg"></param>
 public abstract void UpdateCombinedImage(FSNCombinedImage combimg);
 public override void UpdateCombinedImage(FSNCombinedImage combimg)
 {
     throw new System.NotImplementedException();
 }
    /// <summary>
    /// json 파일을 통해 생성하기
    /// </summary>
    /// <param name="path"></param>
    /// <returns></returns>
    public static FSNCombinedImage CreateFromResource(string path)
    {
        var res				= Resources.Load<TextAsset>(path);
        if (res)
        {
            var combined	= new FSNCombinedImage();
            var sprdata		= new Data();
            combined.spriteData	= sprdata;

            var json		= new JSONObject(res.text);				// JSON 파싱하기

            var sprpath		= json[c_json_spriteSheet].str;			// 스프라이트 시트
            var sprsheet	= FSNResourceCache.Load<SpriteSheet>(FSNResourceCache.Category.Script, sprpath);

            var baseimage	= json.GetField(c_json_baseSprite).str;	// 바탕 이미지
            sprdata.SetBaseSprite(sprsheet[baseimage]);

            json.GetField(c_json_subSprite, (subsprarr) =>			// 서브 스프라이트
                {
                    var list	= subsprarr.list;
                    var count	= list.Count;
                    for(int i = 0; i < count; i++)
                    {
                        var subspr	= subsprarr[i];
                        var sprname	= subspr[c_json_subSprite_name].str;
                        var poslist	= subspr[c_json_subSprite_pos].list;

                        sprdata.AddSubSprite(sprsheet[sprname], (int)poslist[0].n, (int)poslist[1].n);
                    }
                });

            sprdata.BuildSubSpriteInfo();							// 서브 스프라이트 데이터 빌드

            return combined;
        }
        else
        {
            Debug.LogError("[FSNCombinedImage.CreateFromResource] Cannot load " + path);
            return null;
        }
    }
 public object LoadResource(string path)
 {
     return(FSNCombinedImage.CreateFromResource(path));
 }
Beispiel #7
0
    public override void Initialize()
    {
        FSNCombinedImage.InstallLoaders();              // 조합 이미지 관련 초기화

        linkedCanvas = ObjectRoot.GetComponent <FSNNewUICanvas>();
    }