using CommonLang; using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; using CSpriteMeta = CommonUI.Cell.Game.CSpriteMeta; using CSpriteController = CommonUI.Cell.Game.CSpriteController; using CSpriteEventHandler = CommonUI.Cell.Game.CSpriteEventHandler; using CommonUI_Unity3D.Impl; using UnityEngine.UI; namespace CommonUnity3D.UGUI { public class CPJSprite : DisplayNode { private readonly CPJSpriteGraphics mGraphics; private CSpriteController mSprite; private CommonUI.Cell.Game.CCD mVisibleBounds; public CPJSprite(string name) : base(name) { this.Enable = false; this.EnableChildren = false; this.mGraphics = mGameObject.AddComponent<CPJSpriteGraphics>(); } public CPJSprite(CSpriteMeta meta) : this(meta.Data.Name) { this.SpriteMeta = meta; } protected override void OnDispose() { if (mSprite != null) mSprite.Dispose(); base.OnDispose(); } public void SetPreferredBounds() { if (mSprite != null) { this.Size2D = new Vector2(mVisibleBounds.Width, mVisibleBounds.Height); Vector2 pivot = new Vector2( CMath.getRate(0, mVisibleBounds.X1, mVisibleBounds.X2), 1f - CMath.getRate(0, mVisibleBounds.Y1, mVisibleBounds.Y2)); this.mTransform.pivot = pivot; } } public CSpriteMeta SpriteMeta { get { return mSprite.Meta; } set { if (mSprite != null) mSprite.Dispose(); this.mSprite = new CSpriteController(value); this.mGraphics.SetSpriteMeta(this); this.mVisibleBounds = mSprite.Meta.getVisibleBounds(); } } public CPJSpriteGraphics Graphics { get { return mGraphics; } } public CSpriteController Controller { get { return mSprite; } } public CommonUI.Cell.Game.CCD VisibleBounds { get { return mVisibleBounds; } } protected override void OnUpdate() { base.OnUpdate(); if (this.mSprite != null) { this.mGraphics.SetFrame(mSprite.CurrentAnimate, mSprite.CurrentFrame); this.mSprite.Update(); } } } }