Exemplo n.º 1
0
            private IClipContainer EnsureContainerFor(string childId)
            {
                ParseId(childId, out string containerId, out string localId);
                if (string.IsNullOrEmpty(containerId))
                {
                    return(null);
                }
                IClipContainer clipContainer = GetContainer(containerId);

                if (clipContainer == null)
                {
                    SampleContainerChildType childType = GetChildType(localId);
                    clipContainer           = CreateContainer(containerId, childType);
                    containers[containerId] = clipContainer;
                    IClipContainer clipContainer2 = EnsureContainerFor(containerId);
                    if (clipContainer2 == null)
                    {
                        root = clipContainer;
                    }
                    else
                    {
                        ParseId(containerId, out string _, out string localId2);
                        clipContainer2.SetChild(localId2, clipContainer);
                    }
                    if (clipContainer is LoopContainer)
                    {
                        isLoop = true;
                    }
                    if (clipContainer is SwitchContainer)
                    {
                        isSwitch = true;
                    }
                }
                return(clipContainer);
            }
Exemplo n.º 2
0
            public SerializedClip GetClip(string currentId, char choice, SampleContainerChildType loopType)
            {
                IClip clip;

                switch (loopType)
                {
                case SampleContainerChildType.Start:
                    clip = start;
                    break;

                case SampleContainerChildType.Stop:
                    clip = stop;
                    break;

                default:
                    clip = loop;
                    break;
                }
                if (clip == null)
                {
                    return(null);
                }
                if (clip is SerializedClip)
                {
                    return(clip as SerializedClip);
                }
                return((clip as IClipContainer).GetClip(currentId, choice, loopType));
            }
Exemplo n.º 3
0
            public SerializedClip GetClip(string currentId, char choice, SampleContainerChildType loopType)
            {
                IClip clip = null;

                if (string.IsNullOrEmpty(currentId) || !currentId.StartsWith(id))
                {
                    clip = list[UnityEngine.Random.Range(0, list.Count)];
                }
                else
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        if (currentId.StartsWith(list[i].id))
                        {
                            clip = list[i];
                            break;
                        }
                    }
                }
                if (clip is SerializedClip)
                {
                    return(clip as SerializedClip);
                }
                return((clip as IClipContainer).GetClip(currentId, choice, loopType));
            }
Exemplo n.º 4
0
 public SerializedClip GetClip(SerializedClip currentClip, char choice, SampleContainerChildType loopType)
 {
     if (root == null)
     {
         return(null);
     }
     if (root is SerializedClip)
     {
         return(root as SerializedClip);
     }
     return((root as IClipContainer).GetClip(currentClip?.id, choice, loopType));
 }
Exemplo n.º 5
0
            public SerializedClip GetClip(string currentId, char choice, SampleContainerChildType loopType)
            {
                IClip value = null;

                while (value == null && choice >= 'A')
                {
                    choices.TryGetValue(choice--, out value);
                }
                if (value == null)
                {
                    return(null);
                }
                if (value is SerializedClip)
                {
                    return(value as SerializedClip);
                }
                return((value as IClipContainer).GetClip(currentId, choice, loopType));
            }
Exemplo n.º 6
0
            private IClipContainer CreateContainer(string containerId, SampleContainerChildType childType)
            {
                switch (childType)
                {
                case SampleContainerChildType.Random:
                {
                    RandomContainer randomContainer = new RandomContainer();
                    randomContainer.id = containerId;
                    return(randomContainer);
                }

                case SampleContainerChildType.Choice:
                {
                    SwitchContainer switchContainer = new SwitchContainer();
                    switchContainer.id = containerId;
                    return(switchContainer);
                }

                case SampleContainerChildType.Start:
                case SampleContainerChildType.Loop:
                case SampleContainerChildType.Stop:
                {
                    LoopContainer loopContainer = new LoopContainer();
                    loopContainer.id = containerId;
                    return(loopContainer);
                }

                case SampleContainerChildType.None:
                {
                    RandomContainer randomContainer = new RandomContainer();
                    randomContainer.id = containerId;
                    return(randomContainer);
                }

                default:
                    throw new InvalidOperationException();
                }
            }