public void SetChannelData(int channel, ChannelAnimationData primaryAnimation, params ChannelAnimationData[] backroundAnimations) { ChannelData channelData = null; foreach (ChannelData c in _channelData) { if (c._channel == channel) { channelData = c; break; } } if (channelData == null) { channelData = new ChannelData(); channelData._channel = channel; _channelData.Add(channelData); _channelData.Sort((x, y) => x._channel.CompareTo(y._channel)); } channelData._primaryAnimation = primaryAnimation; channelData._backgroundAnimations = backroundAnimations; }
private void PlayAnimation(Spine3DAnimationSet animationSet, AnimationState animationState, TrackEntry[] trackEntries, int trackIndex, ChannelAnimationData animation) { //Proxy Animation if (animation._proxyAnimation != null) { //Valid for this animation set (matches orientations) if ((animationSet._orientation & animation._proxyAnimationOrientations) != 0) { TrackEntry trackEntry = trackEntries[trackIndex]; if (trackEntry == null || trackEntry.Animation != animation._proxyAnimation) { animationState.ClearTrack(trackIndex); trackEntry = animationState.SetAnimation(trackIndex, animation._proxyAnimation, true); } if (trackEntry != null) { trackEntry.TrackTime = animation._animationTime * animation._animationSpeed; trackEntry.Alpha = animation._animationWeight; trackEntry.TimeScale = animation._animationSpeed; } } else { animationState.ClearTrack(trackIndex); } } //Normal animation else if (!string.IsNullOrEmpty(animation._animationId)) { string animationId = _trackBinding.GetAnimNameForAnimationSet(animationSet, animation._animationId); TrackEntry trackEntry = trackEntries[trackIndex]; if (trackEntry == null || trackEntry.Animation == null || trackEntry.Animation.Name != animationId) { animationState.ClearTrack(trackIndex); Animation anim = animationState.Data.SkeletonData.FindAnimation(animationId); if (anim != null) { trackEntry = animationState.SetAnimation(trackIndex, anim, true); } } if (trackEntry != null) { trackEntry.TrackTime = animation._animationTime * animation._animationSpeed; trackEntry.Alpha = animation._animationWeight; trackEntry.TimeScale = animation._animationSpeed; } } //Nothing playing else { animationState.ClearTrack(trackIndex); } }
private void PlayAnimation(TrackEntry[] trackEntries, int trackIndex, ChannelAnimationData animation) { if (animation._animation != null) { TrackEntry trackEntry = trackEntries[trackIndex]; if (trackEntry == null || trackEntry.Animation != animation._animation) { _animationState.ClearTrack(trackIndex); trackEntry = _animationState.SetAnimation(trackIndex, animation._animation, true); } if (trackEntry != null) { trackEntry.TrackTime = animation._animationTime * animation._animationSpeed; trackEntry.Alpha = animation._animationWeight; trackEntry.TimeScale = animation._animationSpeed; } } else { _animationState.ClearTrack(trackIndex); } }