123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- using System.Collections.Generic;
- namespace DragonBones
- {
- /**
- * @language zh_CN
- * @beta
- * 动画配置,描述播放一个动画所需要的全部信息。
- * @see DragonBones.AnimationState
- * @version DragonBones 5.0
- */
- public class AnimationConfig : BaseObject
- {
- /**
- * @language zh_CN
- * 是否暂停淡出的动画。
- * @default true
- * @version DragonBones 5.0
- */
- public bool pauseFadeOut;
- /**
- * @language zh_CN
- * 淡出模式。
- * @default dragonBones.AnimationFadeOutMode.All
- * @see DragonBones.AnimationFadeOutMode
- * @version DragonBones 5.0
- */
- public AnimationFadeOutMode fadeOutMode;
- /**
- * @language zh_CN
- * 淡出时间。 [-1: 与淡入时间同步, [0~N]: 淡出时间] (以秒为单位)
- * @default -1
- * @version DragonBones 5.0
- */
- public float fadeOutTime;
- /**
- * @language zh_CN
- * 淡出缓动方式。
- * @default 0
- * @version DragonBones 5.0
- */
- public float fadeOutEasing;
- /**
- * @language zh_CN
- * 是否以增加的方式混合。
- * @default false
- * @version DragonBones 5.0
- */
- public bool additiveBlending;
- /**
- * @language zh_CN
- * 是否对插槽的显示对象有控制权。
- * @default true
- * @version DragonBones 5.0
- */
- public bool displayControl;
- /**
- * @language zh_CN
- * 是否暂停淡入的动画,直到淡入过程结束。
- * @default true
- * @version DragonBones 5.0
- */
- public bool pauseFadeIn;
- /**
- * @language zh_CN
- * 否能触发行为。
- * @default true
- * @version DragonBones 5.0
- */
- public bool actionEnabled;
- /**
- * @language zh_CN
- * 播放次数。 [-1: 使用动画数据默认值, 0: 无限循环播放, [1~N]: 循环播放 N 次]
- * @default -1
- * @version DragonBones 5.0
- */
- public int playTimes;
- /**
- * @language zh_CN
- * 混合图层,图层高会优先获取混合权重。
- * @default 0
- * @version DragonBones 5.0
- */
- public int layer;
- /**
- * @language zh_CN
- * 开始时间。 (以秒为单位)
- * @default 0
- * @version DragonBones 5.0
- */
- public float position;
- /**
- * @language zh_CN
- * 持续时间。 [-1: 使用动画数据默认值, 0: 动画停止, (0~N]: 持续时间] (以秒为单位)
- * @default -1
- * @version DragonBones 5.0
- */
- public float duration;
- /**
- * @language zh_CN
- * 播放速度。 [(-N~0): 倒转播放, 0: 停止播放, (0~1): 慢速播放, 1: 正常播放, (1~N): 快速播放]
- * @default 1
- * @version DragonBones 3.0
- */
- public float timeScale;
- /**
- * @language zh_CN
- * 淡入时间。 [-1: 使用动画数据默认值, [0~N]: 淡入时间] (以秒为单位)
- * @default -1
- * @version DragonBones 5.0
- */
- public float fadeInTime;
- /**
- * @language zh_CN
- * 自动淡出时间。 [-1: 不自动淡出, [0~N]: 淡出时间] (以秒为单位)
- * @default -1
- * @version DragonBones 5.0
- */
- public float autoFadeOutTime;
- /**
- * @language zh_CN
- * 淡入缓动方式。
- * @default 0
- * @version DragonBones 5.0
- */
- public float fadeInEasing;
- /**
- * @language zh_CN
- * 权重。
- * @default 1
- * @version DragonBones 5.0
- */
- public float weight;
- /**
- * @language zh_CN
- * 动画状态名。
- * @version DragonBones 5.0
- */
- public string name;
- /**
- * @language zh_CN
- * 动画数据名。
- * @version DragonBones 5.0
- */
- public string animationName;
- /**
- * @language zh_CN
- * 混合组,用于动画状态编组,方便控制淡出。
- * @version DragonBones 5.0
- */
- public string group;
- /**
- * @language zh_CN
- * 骨骼遮罩。
- * @version DragonBones 5.0
- */
- public readonly List<string> boneMask = new List<string>();
- /**
- * @private
- */
- public AnimationConfig()
- {
- }
- /**
- * @private
- */
- protected override void _onClear()
- {
- pauseFadeOut = true;
- fadeOutMode = AnimationFadeOutMode.All;
- fadeOutTime = -1.0f;
- fadeOutEasing = 0.0f;
- additiveBlending = false;
- displayControl = true;
- pauseFadeIn = true;
- actionEnabled = true;
- playTimes = -1;
- layer = 0;
- position = 0.0f;
- duration = -1.0f;
- timeScale = -100.0f;
- fadeInTime = -1.0f;
- autoFadeOutTime = -1.0f;
- fadeInEasing = 0.0f;
- weight = 1.0f;
- name = null;
- animationName = null;
- group = null;
- boneMask.Clear();
- }
- public void Clear()
- {
- _onClear();
- }
- public void CopyFrom(AnimationConfig value)
- {
- pauseFadeOut = value.pauseFadeOut;
- fadeOutMode = value.fadeOutMode;
- autoFadeOutTime = value.autoFadeOutTime;
- fadeOutEasing = value.fadeOutEasing;
- additiveBlending = value.additiveBlending;
- displayControl = value.displayControl;
- pauseFadeIn = value.pauseFadeIn;
- actionEnabled = value.actionEnabled;
- playTimes = value.playTimes;
- layer = value.layer;
- position = value.position;
- duration = value.duration;
- timeScale = value.timeScale;
- fadeInTime = value.fadeInTime;
- fadeOutTime = value.fadeOutTime;
- fadeInEasing = value.fadeInEasing;
- weight = value.weight;
- name = value.name;
- animationName = value.animationName;
- group = value.group;
- DragonBones.ResizeList(boneMask, value.boneMask.Count, null);
- for (int i = 0, l = boneMask.Count; i < l; ++i)
- {
- boneMask[i] = value.boneMask[i];
- }
- }
- public bool ContainsBoneMask(string name)
- {
- return boneMask.Count == 0 || boneMask.Contains(name);
- }
- public void AddBoneMask(Armature armature, string name, bool recursive = false)
- {
- var currentBone = armature.GetBone(name);
- if (currentBone == null)
- {
- return;
- }
- if (!boneMask.Contains(name)) // Add mixing
- {
- boneMask.Add(name);
- }
- if (recursive) // Add recursive mixing.
- {
- var bones = armature.GetBones();
- for (int i = 0, l = bones.Count; i < l; ++i)
- {
- var bone = bones[i];
- if (!boneMask.Contains(bone.name) && currentBone.Contains(bone))
- {
- boneMask.Add(bone.name);
- }
- }
- }
- }
- public void RemoveBoneMask(Armature armature, string name, bool recursive = true)
- {
- if (boneMask.Contains(name)) // Remove mixing.
- {
- boneMask.Remove(name);
- }
- if (recursive)
- {
- var currentBone = armature.GetBone(name);
- if (currentBone != null)
- {
- var bones = armature.GetBones();
- if (boneMask.Count > 0) // Remove recursive mixing.
- {
- for (int i = 0, l = bones.Count; i < l; ++i)
- {
- var bone = bones[i];
- if (boneMask.Contains(bone.name) && currentBone.Contains(bone))
- {
- boneMask.Remove(bone.name);
- }
- }
- }
- else // Add unrecursive mixing.
- {
- for (int i = 0, l = bones.Count; i < l; ++i)
- {
- var bone = bones[i];
- if (!currentBone.Contains(bone))
- {
- boneMask.Add(bone.name);
- }
- }
- }
- }
- }
- }
- }
- }
|