Example #1
0
        /// <summary>
        /// Take two game objects and figure out the relative scene navigation path between them.
        /// </summary>
        /// <returns>The name.</returns>
        /// <param name="to">  To.</param>
        /// <param name="from">From.</param>
        public static string RelativeName(this GameObject to, GameObject from)
        {
            var fromName  = from.FullName();
            var toName    = to.FullName();
            var fromParts = fromName
                            .NormalizePath()
                            .Split(Path.DirectorySeparatorChar)
                            .ToList();
            var toParts = toName
                          .NormalizePath()
                          .Split(Path.DirectorySeparatorChar)
                          .ToList();

            while (fromParts.Count > 0 && toParts.Count > 0 && fromParts[0] == toParts[0])
            {
                fromParts.RemoveAt(0);
                toParts.RemoveAt(0);
            }

            var parts = new List <string>(5);

            foreach (var part in fromParts)
            {
                parts.Add("..");
            }

            foreach (var part in toParts)
            {
                parts.Add(part);
            }

            return(parts.ToArray().Join());
        }