Ink.Parsed.Story.FlattenContainersIn C# (CSharp) Method

FlattenContainersIn() private method

private FlattenContainersIn ( Runtime container ) : void
container Runtime
return void
        void FlattenContainersIn (Runtime.Container container)
        {
            // Need to create a collection to hold the inner containers
            // because otherwise we'd end up modifying during iteration
            var innerContainers = new HashSet<Runtime.Container> ();

            foreach (var c in container.content) {
                var innerContainer = c as Runtime.Container;
                if (innerContainer)
                    innerContainers.Add (innerContainer);
            }

            // Can't flatten the named inner containers, but we can at least
            // iterate through their children
            if (container.namedContent != null) {
                foreach (var keyValue in container.namedContent) {
                    var namedInnerContainer = keyValue.Value as Runtime.Container;
                    if (namedInnerContainer)
                        innerContainers.Add (namedInnerContainer);
                }
            }

            foreach (var innerContainer in innerContainers) {
                TryFlattenContainer (innerContainer);
                FlattenContainersIn (innerContainer);
            }
        }