コード例 #1
0
        protected override IEnumerator CoUpdateLipSync()
        {
            while (IsPlaying)
            {
                string pattern = AvatarData.ToPatternName(Avator.AvatarPattern.GetPatternName(LipTag));
                if (string.IsNullOrEmpty(pattern))
                {
                    break;
                }

                foreach (var data in AnimationData.DataList)
                {
                    Avator.ChangePattern(LipTag, data.ComvertName(pattern));
                    yield return(TimeUtil.WaitForSeconds(UnscaledTime, data.Duration));

                    while (IsPausing)
                    {
                        yield return(null);
                    }
                }
                Avator.ChangePattern(LipTag, pattern);
                if (!IsPlaying)
                {
                    break;
                }
                yield return(TimeUtil.WaitForSeconds(UnscaledTime, Interval));

                while (IsPausing)
                {
                    yield return(null);
                }
            }
            coLypSync = null;
            yield break;
        }
コード例 #2
0
            //すべてのパターン名を取得
            public HashSet <string> GetAllPatternNames()
            {
                HashSet <string> set = new HashSet <string>();

                this.Sprites.ForEach(x => set.Add(AvatarData.ToPatternName(x)));
                return(set);
            }
コード例 #3
0
        public List <Sprite> MakeSortedSprites(AvatarPattern pattern)
        {
            List <Sprite> sprites = new List <Sprite>();

            foreach (var category in categories)
            {
                if (category.Tag != optionTag)
                {
                    //アクセサリなどのオプションではないので
                    //パターンデータに一致するスプライトを追加していく
                    foreach (var data in pattern.DataList)
                    {
                        //カテゴリタグがあうものを取得
                        if (category.Tag != data.tag)
                        {
                            continue;
                        }
                        //パタ―ン名が一致する一つだけを取得
                        sprites.Add(category.GetSprite(data.patternName));
                    }
                }
                else
                {
                    //アクセサリなどのオプションの場合は、パターン名に一致するものはすべて取得
                    foreach (var optionPattern in pattern.OptionPatternNameList)
                    {
                        sprites.AddRange(category.Sprites.FindAll(x => AvatarData.ToPatternName(x) == optionPattern));
                    }
                }
            }
            return(sprites);
        }
コード例 #4
0
ファイル: AvatarData.cs プロジェクト: Gpg16375001/BlueApple
        bool CheckPatternError(AvatarPattern pattern, AvatarPattern.PartternData patternData)
        {
            if (string.IsNullOrEmpty(patternData.patternName))
            {
                return(false);
            }

            foreach (var category in categories)
            {
                if (category.Tag != optionTag)
                {
                    if (category.Tag != patternData.tag)
                    {
                        continue;
                    }
                    if (category.GetSprite(patternData.patternName) != null)
                    {
                        return(false);
                    }
                }
                else
                {
                    foreach (var optionPattern in pattern.OptionPatternNameList)
                    {
                        if (category.Sprites.Exists(x => AvatarData.ToPatternName(x) == optionPattern))
                        {
                            return(false);
                        }
                    }
                }
            }
            return(true);
        }
コード例 #5
0
        protected override void OnStopLipSync()
        {
            base.OnStopLipSync();
            string pattern = AvatarData.ToPatternName(Avator.AvatarPattern.GetPatternName(LipTag));

            if (string.IsNullOrEmpty(pattern))
            {
                return;
            }
            Avator.ChangePattern(LipTag, pattern);
        }
コード例 #6
0
            //パターン名からスプライトを取得
            public Sprite GetSprite(string pattern)
            {
                //パタ―ン名が一致する一つだけを取得
                Sprite sprite = Sprites.Find(x => AvatarData.ToPatternName(x) == pattern);

                if (sprite == null)
                {
                    //パターン名で一致しない場合は、直接スプライト名を検索
                    sprite = Sprites.Find(x => x != null && x.name == pattern);
                }
                if (sprite == null)
                {
                    //それでも一致しない場合は、パターン名のほうが正規化されてない可能性があるので
                    sprite = Sprites.Find(x => x != null && x.name == AvatarData.ToPatternName(pattern));
                }
                return(sprite);
            }
コード例 #7
0
        protected override IEnumerator CoEyeBlink(Action onComplete)
        {
            string pattern = AvatarData.ToPatternName(Avator.AvatarPattern.GetPatternName(EyeTag));

            if (string.IsNullOrEmpty(pattern))
            {
                if (onComplete != null)
                {
                    onComplete();
                }
                yield break;
            }
            foreach (var data in AnimationData.DataList)
            {
                Avator.ChangePattern(EyeTag, data.ComvertName(pattern));
                yield return(new WaitForSeconds(data.Duration));
            }
            Avator.ChangePattern(EyeTag, pattern);
            if (onComplete != null)
            {
                onComplete();
            }
            yield break;
        }