Exemplo n.º 1
0
                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;
                }
Exemplo n.º 2
0
                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);
                    }
                }
Exemplo n.º 3
0
                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);
                    }
                }