123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- using System;
- using System.Collections.Generic;
- using CommonUI.Data;
- using UnityEngine;
- using UnityEngine.UI;
- using CommonUI_Unity3D.Impl;
- namespace CommonUnity3D.UGUI
- {
- public class ImageGraphics : Image
- {
- private static Material s_DefaultImageMaterial;
- public static Material DefaultImageMaterial
- {
- get
- {
- if (s_DefaultImageMaterial == null)
- {
- if(UnityShaders.UI_Image_Shader != null)
- {
- s_DefaultImageMaterial = new Material(UnityShaders.UI_Image_Shader);
- }
- else
- {
- s_DefaultImageMaterial = new Material(Shader.Find("MFUGUI/Image"));
- }
- s_DefaultImageMaterial.mainTextureScale = new Vector2(1, 1);
- s_DefaultImageMaterial.color = UnityEngine.Color.white;
- //ret.SetFloat("_Gray", 1);
- s_DefaultImageMaterial.SetPass(0);
- }
- return s_DefaultImageMaterial;
- }
- }
- private DisplayNode mBinding;
- public DisplayNode Binding { get { return mBinding; } }
- private CommonUI_Unity3D.Impl.UnityImage mSrc;
- private Rect mClip;
- private Vector2 mPivot;
- public ImageGraphics()
- {
- this.material = ImageGraphics.DefaultImageMaterial;
- }
- protected override void Start()
- {
- this.mBinding = DisplayNode.AsDisplayNode(gameObject);
- base.Start();
- }
- public override bool Raycast(Vector2 sp, Camera eventCamera)
- {
- if (mBinding != null && mBinding.Enable && mBinding.EnableTouchInParents)
- {
- return base.Raycast(sp, eventCamera);
- }
- return false;
- }
- public void SetImage(CommonUI_Unity3D.Impl.UnityImage src)
- {
- if (base.sprite != null)
- {
- Sprite.Destroy(sprite);
- }
- this.mSrc = src;
- this.mClip = new Rect(0, 0, src.Width, src.Height);
- this.mPivot = new Vector2(.5f, .5f);
- this.sprite = UIUtils.CreateSprite(mSrc, mClip, mPivot);
- this.material = mSrc.TextureMaterial;
- }
- public void SetImage(CommonUI_Unity3D.Impl.UnityImage src, Rect clip, Vector2 pivot)
- {
- if (base.sprite != null)
- {
- Sprite.Destroy(sprite);
- }
- this.mSrc = src;
- this.mClip = clip;
- this.mPivot = pivot;
- this.sprite = UIUtils.CreateSprite(src, clip, pivot);
- this.material = mSrc.TextureMaterial;
- }
- public void SetImage(CommonUI_Unity3D.Impl.UnityImage src, CommonUI.Gemo.Rectangle2D clip, Vector2 pivot)
- {
- if (base.sprite != null)
- {
- Sprite.Destroy(sprite);
- }
- this.mSrc = src;
- this.mClip = new Rect(clip.x, src.Texture.height - clip.y - clip.height, clip.width, clip.height);
- this.mPivot = pivot;
- this.sprite = Sprite.Create(mSrc.Texture2D, mClip, mPivot);
- this.material = mSrc.TextureMaterial;
- }
- protected override void OnDestroy()
- {
- if (base.sprite != null)
- {
- Sprite.Destroy(sprite);
- }
- base.OnDestroy();
- }
- private void ResetTexture()
- {
- if (this.mSrc != null && sprite != null && this.mSrc.Texture2D != sprite.texture)
- {
- if (base.sprite != null)
- {
- Sprite.Destroy(sprite);
- }
- this.sprite = UIUtils.CreateSprite(mSrc, mClip, mPivot);
- this.material = mSrc.TextureMaterial;
- this.SetAllDirty();
- }
- }
- protected override void OnEnable()
- {
- base.OnEnable();
- ResetTexture();
- }
- void Update()
- {
- ResetTexture();
- }
- }
- }
|