| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 | 
							- #if FAIRYGUI_SPINE
 
- using UnityEngine;
 
- using Spine.Unity;
 
- namespace FairyGUI
 
- {
 
-     /// <summary>
 
-     /// 
 
-     /// </summary>
 
-     public partial class GLoader3D : GObject
 
-     {
 
-         SkeletonAnimation _spineAnimation;
 
-         /// <summary>
 
-         /// 
 
-         /// </summary>
 
-         /// <value></value>
 
-         public SkeletonAnimation spineAnimation
 
-         {
 
-             get { return _spineAnimation; }
 
-         }
 
-         /// <summary>
 
-         /// 
 
-         /// </summary>
 
-         /// <param name="asset"></param>
 
-         /// <param name="width"></param>
 
-         /// <param name="height"></param>
 
-         /// <param name="anchor"></param>
 
-         public void SetSpine(SkeletonDataAsset asset, int width, int height, Vector2 anchor)
 
-         {
 
-             SetSpine(asset, width, height, anchor, true);
 
-         }
 
-         /// <summary>
 
-         /// 
 
-         /// </summary>
 
-         /// <param name="asset"></param>
 
-         /// <param name="width"></param>
 
-         /// <param name="height"></param>
 
-         /// <param name="anchor"></param>
 
-         /// <param name="cloneMaterial"></param>
 
-         public void SetSpine(SkeletonDataAsset asset, int width, int height, Vector2 anchor, bool cloneMaterial)
 
-         {
 
-             if (_spineAnimation != null)
 
-                 FreeSpine();
 
-             _spineAnimation = SkeletonRenderer.NewSpineGameObject<SkeletonAnimation>(asset);
 
-             _spineAnimation.gameObject.name = asset.name;
 
-             Spine.SkeletonData dat = asset.GetSkeletonData(false);
 
-             _spineAnimation.gameObject.transform.localScale = new Vector3(1 / asset.scale, 1 / asset.scale, 1);
 
-             _spineAnimation.gameObject.transform.localPosition = new Vector3(anchor.x, -anchor.y, 0);
 
-             SetWrapTarget(_spineAnimation.gameObject, cloneMaterial, width, height);
 
-             _spineAnimation.skeleton.R = _color.r;
 
-             _spineAnimation.skeleton.G = _color.g;
 
-             _spineAnimation.skeleton.B = _color.b;
 
-             OnChangeSpine(null);
 
-         }
 
-         protected void LoadSpine()
 
-         {
 
-             SkeletonDataAsset asset = (SkeletonDataAsset)_contentItem.skeletonAsset;
 
-             if (asset == null)
 
-                 return;
 
-             SetSpine(asset, _contentItem.width, _contentItem.height, _contentItem.skeletonAnchor);
 
-         }
 
-         protected void OnChangeSpine(string propertyName)
 
-         {
 
-             if (_spineAnimation == null)
 
-                 return;
 
-             if (propertyName == "color")
 
-             {
 
-                 _spineAnimation.skeleton.R = _color.r;
 
-                 _spineAnimation.skeleton.G = _color.g;
 
-                 _spineAnimation.skeleton.B = _color.b;
 
-                 return;
 
-             }
 
-             var skeletonData = _spineAnimation.skeleton.Data;
 
-             var state = _spineAnimation.AnimationState;
 
-             Spine.Animation animationToUse = !string.IsNullOrEmpty(_animationName) ? skeletonData.FindAnimation(_animationName) : null;
 
-             if (animationToUse != null)
 
-             {
 
-                 var trackEntry = state.GetCurrent(0);
 
-                 if (trackEntry == null || trackEntry.Animation.Name != _animationName || trackEntry.IsComplete && !trackEntry.Loop)
 
-                     trackEntry = state.SetAnimation(0, animationToUse, _loop);
 
-                 else
 
-                     trackEntry.Loop = _loop;
 
-                 if (_playing)
 
-                     trackEntry.TimeScale = 1;
 
-                 else
 
-                 {
 
-                     trackEntry.TimeScale = 0;
 
-                     trackEntry.TrackTime = Mathf.Lerp(0, trackEntry.AnimationEnd - trackEntry.AnimationStart, _frame / 100f);
 
-                 }
 
-             }
 
-             else
 
-                 state.ClearTrack(0);
 
-             var skin = !string.IsNullOrEmpty(skinName) ? skeletonData.FindSkin(skinName) : skeletonData.DefaultSkin;
 
-             if (skin == null && skeletonData.Skins.Count > 0)
 
-                 skin = skeletonData.Skins.Items[0];
 
-             if (_spineAnimation.skeleton.Skin != skin)
 
-             {
 
-                 _spineAnimation.skeleton.SetSkin(skin);
 
-                 _spineAnimation.skeleton.SetSlotsToSetupPose();
 
-             }
 
-         }
 
-         protected void FreeSpine()
 
-         {
 
-             if (_spineAnimation != null)
 
-             {
 
-                 if (Application.isPlaying)
 
-                     GameObject.Destroy(_spineAnimation.gameObject);
 
-                 else
 
-                     GameObject.DestroyImmediate(_spineAnimation.gameObject);
 
-             }
 
-         }
 
-         protected void OnUpdateSpine(UpdateContext context)
 
-         {
 
-             if (_spineAnimation != null)
 
-                 _spineAnimation.skeleton.A = context.alpha * _content.alpha;
 
-         }
 
-     }
 
- }
 
- #endif
 
 
  |